YOLO Vision 2026:

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

Open SAHI for Sliced Inference In Colab

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

Введение в SAHI#

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



Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀

Основные возможности SAHI#

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

Что такое сегментированный вывод (Sliced Inference)?#

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

Преимущества сегментированного вывода#

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

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

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

YOLO26 without SAHIYOLO26 with SAHI
YOLO26 without SAHIYOLO26 with SAHI

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

Установка#

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

pip install -U ultralytics sahi

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

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

from sahi.utils.file import download_from_url

# 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="yolo26n.pt",
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

Выполнение стандартного прогнозирования#

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

from sahi.predict import get_prediction

result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

result.export_visuals(export_dir="demo_data/", hide_conf=True)

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

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

from PIL import Image

# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")

# Display the predicted image
processed_image.show()

Сегментированный вывод с YOLO26#

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

from PIL import Image
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,
)

# Export results
result.export_visuals(export_dir="demo_data/", hide_conf=True)

# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")

# Display the predicted image
processed_image.show()

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

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

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation and COCO prediction formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
Дополнительные форматы экспорта

PredictionResult также может преобразовывать результаты обнаружения в объекты imantics и FiftyOne с помощью result.to_imantics_annotations() и result.to_fiftyone_detections(). Эти методы требуют наличия соответствующих пакетов, поэтому сначала установи их с помощью pip install imantics fiftyone.

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

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

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="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.

FAQ#

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

    pip install -U ultralytics sahi

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

    from sahi.utils.file import download_from_url
    
    # 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",
    )

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

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

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

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

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

    from PIL import Image
    
    result.export_visuals(export_dir="demo_data/", hide_conf=True)
    
    processed_image = Image.open("demo_data/prediction_visual.png")
    
    processed_image.show()

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

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

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

    Для более глубокого понимания почитай об основных функциях 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,
    )

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

Комментарии