Документация Ultralytics: Использование YOLO11 с SAHI для Sliced Inference
Добро пожаловать в документацию Ultralytics по использованию YOLO11 с SAHI (Slicing Aided Hyper Inference). Это подробное руководство призвано предоставить вам все необходимые знания для реализации SAHI вместе с YOLO11. Мы подробно рассмотрим, что такое SAHI, почему логический вывод со срезами имеет решающее значение для крупномасштабных приложений и как интегрировать эти функции с YOLO11 для повышения производительности обнаружения объектов.
Введение в SAHI
SAHI (Slicing Aided Hyper Inference) — это инновационная библиотека, разработанная для оптимизации алгоритмов обнаружения объектов для крупномасштабных изображений с высоким разрешением. Ее основная функциональность заключается в разделении изображений на управляемые фрагменты, запуске обнаружения объектов на каждом фрагменте и последующем объединении результатов. SAHI совместима с рядом моделей обнаружения объектов, включая серию YOLO, что обеспечивает гибкость и гарантирует оптимизированное использование вычислительных ресурсов.
Смотреть: Инференс с SAHI (Slicing Aided Hyper Inference) с использованием Ultralytics YOLO11
Ключевые особенности SAHI
- Бесшовная интеграция: SAHI легко интегрируется с моделями YOLO, а это значит, что вы можете начать нарезку и обнаружение без значительных изменений кода.
- Эффективность использования ресурсов: Разбивая большие изображения на более мелкие части, SAHI оптимизирует использование памяти, позволяя выполнять высококачественное обнаружение на оборудовании с ограниченными ресурсами.
- Высокая точность: SAHI поддерживает высокую точность обнаружения, используя интеллектуальные алгоритмы для объединения перекрывающихся ограничивающих рамок во время процесса сшивания.
Что такое Sliced Inference?
Раздельное обнаружение (Sliced Inference) относится к практике разделения большого изображения или изображения с высоким разрешением на более мелкие сегменты (фрагменты), проведения обнаружения объектов на этих фрагментах, а затем повторной компиляции фрагментов для восстановления местоположения объектов на исходном изображении. Этот метод неоценим в сценариях, когда вычислительные ресурсы ограничены или при работе с изображениями чрезвычайно высокого разрешения, которые в противном случае могут привести к проблемам с памятью.
Преимущества Sliced Inference
-
Снижение вычислительной нагрузки: Меньшие фрагменты изображений обрабатываются быстрее и потребляют меньше памяти, что обеспечивает более плавную работу на оборудовании более низкого класса.
-
Сохранение качества обнаружения: Поскольку каждый фрагмент обрабатывается независимо, качество обнаружения объектов не снижается, при условии, что фрагменты достаточно велики, чтобы захватить интересующие объекты.
-
Улучшенная масштабируемость: Этот метод позволяет легче масштабировать обнаружение объектов для изображений разных размеров и разрешений, что делает его идеальным для широкого спектра приложений, от спутниковых снимков до медицинской диагностики.
YOLO11 без SAHI | YOLO11 с SAHI |
---|---|
![]() |
![]() |
Установка и подготовка
Установка
Для начала установите последние версии 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
from sahi.utils.cv import read_image
# 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)
Визуализация результатов
Экспорт и визуализация прогнозируемых ограничивающих рамок и масок:
from IPython.display import Image
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) для sliced 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, следуйте этим рекомендациям:
- Установите необходимые библиотеки: Убедитесь, что у вас установлены последние версии ultralytics и sahi.
- Настройка сегментированного вывода: Определите оптимальные размеры сегментов и коэффициенты перекрытия для вашего конкретного проекта.
- Запуск пакетных прогнозов: Используйте возможности 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,
)
Для получения более подробных инструкций посетите наш раздел по Пакетному прогнозированию.