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

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

Открыть SAHI для Sliced Inference в Colab

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

SAHI-вывод для небольших объектов

Введение в SAHI

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



Смотреть: Инференс с SAHI (Slicing Aided Hyper Inference) с использованием Ultralytics YOLO26

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

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

Что такое Sliced Inference?

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

Преимущества Sliced Inference

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

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

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

YOLO26 без SAHIYOLO26 с SAHI
YOLO26 без SAHIYOLO26 с SAHI

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

Установка

Для начала установите последние версии SAHI и Ultralytics:

pip install -U ultralytics sahi

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

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

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

# Download YOLO26 model
model_path = "models/yolo26n.pt"
download_yolo26n_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",
)

Стандартное инференс с YOLO26

Создание экземпляра модели

Вы можете инстанцировать модель YOLO26 для обнаружения объектов следующим образом:

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")

Инференс с нарезкой с YOLO26

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

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/yolo26n.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,
)

Теперь вы готовы использовать YOLO26 с 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.

Часто задаваемые вопросы

Как интегрировать YOLO26 с SAHI для инференса с нарезкой в задачах обнаружения объектов?

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

pip install -U ultralytics sahi

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

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

# Download YOLO26 model
model_path = "models/yolo26n.pt"
download_yolo26n_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 с YOLO26 для обнаружения объектов на больших изображениях?

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

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

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

Можно ли визуализировать результаты предсказаний при использовании YOLO26 с SAHI?

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

from IPython.display import Image

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

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

Какие функции предлагает SAHI для улучшения обнаружения объектов с помощью YOLO26?

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

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

Для более глубокого понимания ознакомьтесь с ключевыми функциями SAHI.

Как работать с крупномасштабными проектами инференса, используя YOLO26 и SAHI?

Для работы с крупномасштабными проектами инференса с использованием YOLO26 и SAHI следуйте этим рекомендациям:

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

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

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="path/to/yolo26n.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,
)

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



📅 Создано 2 лет назад ✏️ Обновлено 7 дней назад
glenn-jocherRizwanMunawarpderrengerCoderUniUltralyticsAssistantMatthewNoyce

Комментарии