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

Ultralytics Docs: Using YOLO11 with SAHI for Sliced Inference

Welcome to the Ultralytics documentation on how to use YOLO11 with SAHI (Slicing Aided Hyper Inference). This comprehensive guide aims to furnish you with all the essential knowledge you'll need to implement SAHI alongside YOLO11. We'll deep-dive into what SAHI is, why sliced inference is critical for large-scale applications, and how to integrate these functionalities with YOLO11 for enhanced object detection performance.

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

Введение в SAHI

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



Смотри: Inference with SAHI (Slicing Aided Hyper Inference) using Ultralytics YOLO11

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

  • Бесшовная интеграция: SAHI без особых усилий интегрируется с моделями YOLO , а это значит, что ты можешь приступать к нарезке и детектированию без особых модификаций кода.
  • Эффективность использования ресурсов: Разбивая большие изображения на более мелкие части, SAHI оптимизирует использование памяти, позволяя тебе запускать высококачественное обнаружение на оборудовании с ограниченными ресурсами.
  • High Accuracy: SAHI maintains the detection accuracy by employing smart algorithms to merge overlapping detection boxes during the stitching process.

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

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

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

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

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

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

YOLO11 without SAHIYOLO11 with SAHI
YOLO11 without SAHIYOLO11 with SAHI

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

Установка

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

pip install -U ultralytics sahi

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

Here's how to import the necessary modules and download a YOLO11 model and some test images:

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

# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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",
)

Standard Inference with YOLO11

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

You can instantiate a YOLO11 model for object detection like this:

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

Sliced Inference with 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="yolov8",
    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,
)

That's it! Now you're equipped to use YOLO11 with SAHI for both standard and sliced inference.

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

Если ты используешь 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}
}

We extend our thanks to the SAHI research group for creating and maintaining this invaluable resource for the computer vision community. For more information about SAHI and its creators, visit the SAHI GitHub repository.

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

How can I integrate YOLO11 with SAHI for sliced inference in object detection?

Integrating Ultralytics YOLO11 with SAHI (Slicing Aided Hyper Inference) for sliced inference optimizes your object detection tasks on high-resolution images by partitioning them into manageable slices. This approach improves memory usage and ensures high detection accuracy. To get started, you need to install the ultralytics and sahi libraries:

pip install -U ultralytics sahi

Then, download a YOLO11 model and test images:

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

# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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.

Why should I use SAHI with YOLO11 for object detection on large images?

Using SAHI with Ultralytics YOLO11 for object detection on large images offers several benefits:

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

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

Can I visualize prediction results when using YOLO11 with SAHI?

Yes, you can visualize prediction results when using YOLO11 with SAHI. Here's how you can export and visualize the results:

from IPython.display import Image

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

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

What features does SAHI offer for improving YOLO11 object detection?

SAHI (Slicing Aided Hyper Inference) offers several features that complement Ultralytics YOLO11 for object detection:

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

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

How do I handle large-scale inference projects using YOLO11 and SAHI?

To handle large-scale inference projects using YOLO11 and SAHI, follow these best practices:

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

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

from sahi.predict import predict

predict(
    model_type="yolov8",
    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,
)

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

📅 Created 11 months ago ✏️ Updated 23 days ago

Комментарии