Использование YOLO26 с SAHI для инференса по фрагментам#
В этом руководстве показано, как использовать YOLO26 с SAHI (Slicing Aided Hyper Inference). Мы подробно разберём, что такое SAHI, почему инференс по фрагментам важен для крупномасштабных приложений и как интегрировать эти функции с YOLO26 для повышения эффективности обнаружения объектов.
Введение в SAHI#
SAHI (Slicing Aided Hyper Inference) — это инновационная библиотека, предназначенная для оптимизации алгоритмов обнаружения объектов при работе с изображениями большого размера и высокого разрешения. Её основная функция — разделять изображения на удобные для обработки фрагменты, выполнять обнаружение объектов на каждом фрагменте, а затем объединять результаты. SAHI совместима с различными моделями обнаружения объектов, включая серию YOLO, что обеспечивает гибкость и оптимальное использование вычислительных ресурсов.
Смотри: Как использовать SAHI с Ultralytics YOLO26 для обнаружения небольших объектов | Инференс с разбиением на фрагменты 🚀
Основные возможности SAHI#
- Простая интеграция: SAHI легко интегрируется с моделями YOLO, поэтому можно начать нарезать изображения и обнаруживать объекты без существенных изменений кода.
- Эффективное использование ресурсов: Разделение больших изображений на более мелкие фрагменты оптимизирует использование памяти и позволяет выполнять качественное обнаружение на оборудовании с ограниченными ресурсами.
- Высокая точность: SAHI сохраняет точность обнаружения, используя интеллектуальные алгоритмы для объединения перекрывающихся рамок объектов при склейке фрагментов.
Что такое инференс по фрагментам?#
Инференс по фрагментам — это метод, при котором большое изображение или изображение высокого разрешения делят на небольшие части (фрагменты), выполняют обнаружение объектов на этих фрагментах, а затем объединяют их, чтобы восстановить расположение объектов на исходном изображении. Этот метод незаменим, когда вычислительные ресурсы ограничены или используются изображения очень высокого разрешения, обработка которых иначе могла бы привести к нехватке памяти.
Преимущества инференса по фрагментам#
-
Снижение вычислительной нагрузки: Небольшие фрагменты изображений обрабатываются быстрее и занимают меньше памяти, что обеспечивает более стабильную работу на маломощном оборудовании.
-
Сохранение качества обнаружения: Поскольку каждый фрагмент обрабатывается отдельно, качество обнаружения объектов не снижается, если фрагменты достаточно велики, чтобы захватить нужные объекты.
-
Повышенная масштабируемость: Этот метод упрощает масштабирование обнаружения объектов для изображений разных размеров и разрешений, что делает его подходящим для широкого спектра задач — от обработки спутниковых снимков до медицинской диагностики.
| YOLO26 без SAHI | YOLO26 с SAHI |
|---|---|
![]() | ![]() |
Установка и подготовка#
Установка#
Для начала установи последние версии SAHI и Ultralytics:
pip install -U ultralytics sahiИмпорт модулей и загрузка ресурсов#
Вот как загрузить несколько тестовых изображений:
from sahi.utils.file import download_from_url
# Загрузка тестовых изображений
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", # или '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
# Открытие предсказанного изображения
processed_image = Image.open("demo_data/prediction_visual.png")
# Отображение предсказанного изображения
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,
)
# Экспорт результатов
result.export_visuals(export_dir="demo_data/", hide_conf=True)
# Открытие предсказанного изображения
processed_image = Image.open("demo_data/prediction_visual.png")
# Отображение предсказанного изображения
processed_image.show()Обработка результатов предсказания#
SAHI предоставляет объект PredictionResult, который можно преобразовать в различные форматы аннотаций:
# Доступ к списку предсказанных объектов
object_prediction_list = result.object_prediction_list
# Преобразование в форматы аннотаций COCO и предсказаний COCO
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", # или '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 (Slicing Aided Hyper Inference) для инференса по фрагментам оптимизирует обнаружение объектов на изображениях высокого разрешения, разделяя их на удобные для обработки части. Такой подход эффективнее использует память и обеспечивает высокую точность обнаружения. Для начала установи библиотеки ultralytics и sahi:
pip install -U ultralytics sahiЗатем загрузи тестовые изображения:
from sahi.utils.file import download_from_url # Загрузка тестовых изображений 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, следуй этим рекомендациям:
- Установи необходимые библиотеки: убедись, что у тебя установлены последние версии ultralytics и sahi.
- Настрой инференс по фрагментам: подбери оптимальные размеры фрагментов и коэффициенты перекрытия для своего проекта.
- Запускай пакетные предсказания: используй возможности SAHI для пакетного выполнения предсказаний на изображениях из каталога — это повысит эффективность.
Пример пакетного предсказания:
from sahi.predict import predict predict( model_type="ultralytics", model_path="path/to/yolo26n.pt", model_device="cpu", # или '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, )Подробные инструкции смотри в разделе Пакетное предсказание.

