Использование YOLO26 с SAHI для нарезанного вывода#
Это руководство показывает, как использовать 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 SAHI | YOLO26 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]Пакетное предсказание#
Для пакетного предсказания в каталоге изображений:
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, следуй этим рекомендациям:
- Установи необходимые библиотеки: убедись, что у тебя установлены последние версии ultralytics и sahi.
- Настрой инференс по фрагментам: определи оптимальные размеры фрагментов и коэффициенты перекрытия для своего проекта.
- Запускай пакетные предсказания: используй возможности 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, )Более подробные шаги приведены в разделе пакетного предсказания.

