Перейти к содержанию

Ultralytics Документы: Использование YOLO11 вместе с SAHI для получения результатов по фрагментам

Открыть SAHI для нарезки выводов в лаборатории

Добро пожаловать на сайт Ultralytics с документацией по использованию YOLO11 с SAHI (Slicing Aided Hyper Inference). Это исчерпывающее руководство призвано снабдить вас всеми необходимыми знаниями, которые понадобятся вам для внедрения SAHI вместе с YOLO11. Мы подробно рассмотрим, что представляет собой SAHI, почему гипервывод с нарезкой критически важен для крупномасштабных приложений и как интегрировать эти функции с YOLO11 для повышения производительности обнаружения объектов.

Обзор Sliced Inference от SAHI

Введение в SAHI

SAHI (Slicing Aided Hyper Inference) - это инновационная библиотека, предназначенная для оптимизации алгоритмов обнаружения объектов на крупномасштабных изображениях высокого разрешения. Ее основная функциональность заключается в разбиении изображений на управляемые фрагменты, выполнении обнаружения объектов на каждом фрагменте и последующем сшивании результатов вместе. SAHI совместим с целым рядом моделей обнаружения объектов, включая серию YOLO , что обеспечивает гибкость и оптимизацию использования вычислительных ресурсов.



Смотреть: Вывод с помощью SAHI (Slicing Aided Hyper Inference) с использованием Ultralytics YOLO11

Ключевые особенности SAHI

  • Бесшовная интеграция: SAHI легко интегрируется с моделями YOLO , что означает, что вы можете начать нарезку и обнаружение без значительных изменений кода.
  • Эффективность использования ресурсов: Разбивая большие изображения на более мелкие части, SAHI оптимизирует использование памяти, позволяя выполнять высококачественное обнаружение на оборудовании с ограниченными ресурсами.
  • Высокая точность: SAHI поддерживает точность обнаружения, используя интеллектуальные алгоритмы для объединения перекрывающихся блоков обнаружения в процессе сшивки.

Что такое "нарезанное умозаключение"?

Sliced Inference - это практика разбиения большого изображения высокого разрешения на более мелкие сегменты (срезы), обнаружения объектов на этих срезах, а затем перекомпиляции срезов для восстановления местоположения объектов на исходном изображении. Эта техника неоценима в сценариях, где вычислительные ресурсы ограничены или при работе с изображениями очень высокого разрешения, которые в противном случае могут привести к проблемам с памятью.

Преимущества умозаключений по фрагментам

  • Снижение вычислительной нагрузки: Маленькие фрагменты изображений обрабатываются быстрее и занимают меньше памяти, что обеспечивает более плавную работу на низкопроизводительном оборудовании.

  • Сохранение качества обнаружения: Поскольку каждый срез обрабатывается независимо, качество обнаружения объектов не снижается, при условии, что срезы достаточно велики, чтобы захватить интересующие объекты.

  • Улучшенная масштабируемость: Технология позволяет легче масштабировать обнаружение объектов на изображениях разного размера и разрешения, что делает ее идеальной для широкого спектра приложений - от спутниковых снимков до медицинской диагностики.

YOLO11 без САХИ YOLO11 с САХИ
YOLO11 без САХИ YOLO11 с САХИ

Установка и подготовка

Установка

Чтобы начать работу, установите последние версии SAHI и Ultralytics:

pip install -U ultralytics sahi

Импорт модулей и загрузка ресурсов

Вот как импортировать необходимые модули и загрузить модель YOLO11 и несколько тестовых изображений:

from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model

# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_model(model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
    "demo_data/terrain2.png",
)

Стандартное умозаключение с YOLO11

Создание модели

Модель YOLO11 для обнаружения объектов можно создать следующим образом:

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="ultralytics",
    model_path=model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

Выполните стандартное предсказание

Выполните стандартный вывод, используя путь к изображению или numpy-изображение.

from sahi.predict import get_prediction

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result_with_np_image = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

Визуализация результатов

Экспортируйте и визуализируйте предсказанные ограничительные рамки и маски:

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Разрезное умозаключение с YOLO11

Выполните вывод с использованием срезов, указав размеры срезов и коэффициенты перекрытия:

from sahi.predict import get_sliced_prediction

result = get_sliced_prediction(
    "demo_data/small-vehicles1.jpeg",
    detection_model,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Обработка результатов прогнозирования

SAHI предоставляет PredictionResult объект, который может быть преобразован в различные форматы аннотаций:

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]

Пакетное прогнозирование

Для пакетного предсказания по каталогу изображений:

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="path/to/yolo11n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Вот и все! Теперь вы можете использовать YOLO11 с SAHI как для стандартных, так и для срезовых выводов.

Цитаты и благодарности

Если вы используете SAHI в своих исследованиях или разработках, пожалуйста, ссылайтесь на оригинальный документ SAHI и указывайте авторов:

@article{akyon2022sahi,
  title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
  author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
  journal={2022 IEEE International Conference on Image Processing (ICIP)},
  doi={10.1109/ICIP46576.2022.9897990},
  pages={966-970},
  year={2022}
}

Мы выражаем благодарность исследовательской группе SAHI за создание и поддержку этого бесценного ресурса для сообщества компьютерного зрения. Для получения дополнительной информации о SAHI и его создателях посетите репозиторий SAHI на GitHub.

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Как можно интегрировать YOLO11 с SAHI для нарезки выводов при обнаружении объектов?

Интеграция Ultralytics YOLO11 с системой SAHI (Slicing Aided Hyper Inference) для создания нарезанных выводов позволяет оптимизировать задачи обнаружения объектов на изображениях высокого разрешения путем разбиения их на управляемые фрагменты. Такой подход позволяет оптимизировать использование памяти и обеспечивает высокую точность обнаружения. Чтобы начать работу, необходимо установить библиотеки ultralytics и sahi:

pip install -U ultralytics sahi

Затем загрузите модель YOLO11 и тестовые изображения:

from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model

# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_model(model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)

Для получения более подробных инструкций обратитесь к нашему руководству по Sliced Inference.

Почему стоит использовать SAHI с YOLO11 для обнаружения объектов на больших изображениях?

Использование SAHI с Ultralytics YOLO11 для обнаружения объектов на больших изображениях дает несколько преимуществ:

  • Снижение вычислительной нагрузки: Маленькие фрагменты обрабатываются быстрее и занимают меньше памяти, что позволяет выполнять высококачественные обнаружения на оборудовании с ограниченными ресурсами.
  • Точность обнаружения: SAHI использует интеллектуальные алгоритмы для объединения перекрывающихся блоков, сохраняя качество обнаружения.
  • Улучшенная масштабируемость: Благодаря масштабированию задач обнаружения объектов на изображениях различных размеров и разрешений, SAHI становится идеальным решением для различных приложений, таких как анализ спутниковых снимков и медицинская диагностика.

Узнайте больше о преимуществах нарезных выводов в нашей документации.

Можно ли визуализировать результаты прогнозирования при использовании YOLO11 с SAHI?

Да, вы можете визуализировать результаты прогнозирования при использовании YOLO11 с SAHI. Вот как можно экспортировать и визуализировать результаты:

from IPython.display import Image

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Эта команда сохранит визуализированные предсказания в указанную директорию, после чего вы сможете загрузить изображение для просмотра в блокноте или приложении. Для получения подробного руководства ознакомьтесь с разделом "Стандартный вывод".

Какие функции предлагает SAHI для улучшения обнаружения объектов YOLO11 ?

SAHI (Slicing Aided Hyper Inference) предлагает несколько функций, которые дополняют Ultralytics YOLO11 для обнаружения объектов:

  • Бесшовная интеграция: SAHI легко интегрируется с моделями YOLO , требуя минимальной корректировки кода.
  • Эффективность использования ресурсов: Он разбивает большие изображения на более мелкие фрагменты, что оптимизирует использование памяти и скорость работы.
  • Высокая точность: Благодаря эффективному объединению перекрывающихся блоков обнаружения в процессе сшивки, SAHI обеспечивает высокую точность обнаружения.

Для более глубокого понимания прочитайте о ключевых особенностях SAHI.

Как работать с крупномасштабными проектами выводов с помощью YOLO11 и SAHI?

Чтобы справиться с крупномасштабными проектами по созданию выводов с помощью YOLO11 и SAHI, следуйте следующим рекомендациям:

  1. Установите необходимые библиотеки: Убедитесь, что у вас есть последние версии ultralytics и sahi.
  2. Настройте Sliced Inference: Определите оптимальные размеры срезов и коэффициенты перекрытия для вашего конкретного проекта.
  3. Выполняйте пакетные прогнозы: Используйте возможности SAHI для выполнения пакетных прогнозов по каталогу изображений, что повышает эффективность.

Пример для пакетного прогнозирования:

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="path/to/yolo11n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Более подробные шаги вы найдете в разделе " Пакетное прогнозирование".

📅 Создано 1 год назад ✏️ Обновлено 20 дней назад

Комментарии