Перейти к содержимому

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

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

Обзор нарезного умозаключения SAHI

Введение в SAHI

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



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

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

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

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

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

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

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

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

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

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

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

Установка

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

pip install -U ultralytics sahi

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

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

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_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",
)

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

Создай модель

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

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="yolov8",
    model_path=yolov8_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 = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

Визуализируй результаты

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

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

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

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

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="yolov8",
    model_path="path/to/yolov8n.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,
)

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

ВОПРОСЫ И ОТВЕТЫ

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

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

pip install -U ultralytics sahi

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

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_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 с YOLOv8 для обнаружения объектов на больших изображениях?

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

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

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

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

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

result.export_visuals(export_dir="demo_data/")
from IPython.display import Image

Image("demo_data/prediction_visual.png")

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

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

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

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

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

Как справиться с крупномасштабными проектами по созданию выводов, используя YOLOv8 и SAHI?

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

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

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

from sahi.predict import predict

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

Более подробные шаги ты найдешь в нашем разделе, посвященном пакетному предсказанию.



Создано 2023-11-12, Обновлено 2024-07-05
Авторы: glenn-jocher (7), RizwanMunawar (1)

Комментарии