Ultralytics YOLO27:

Использование YOLO26 с SAHI для нарезанного вывода#

Open SAHI for Sliced Inference In Colab

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

Введение в SAHI#

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



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

Ключевые возможности SAHI#

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

Что такое инференс по фрагментам?#

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

Преимущества инференса по фрагментам#

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

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

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

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.

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

  • Интеграция Ultralytics YOLO26 с SAHI (инференс с разбиением на фрагменты) оптимизирует задачи обнаружения объектов на изображениях высокого разрешения, разделяя их на удобные для обработки фрагменты. Такой подход улучшает использование памяти и обеспечивает высокую точность обнаружения. Для начала установи библиотеки 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 (инференс с разбиением на фрагменты) предлагает несколько возможностей, дополняющих 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,
    )

    Более подробные шаги приведены в разделе пакетного предсказания.

Комментарии