Link to this sectionПредсказание моделей с помощью Ultralytics YOLO#
Link to this sectionВведение#
В мире machine learning и computer vision процесс интерпретации визуальных данных часто называют инференсом или предсказанием. Ultralytics YOLO26 предлагает мощную функцию, известную как режим предсказания (predict mode), разработанную для высокопроизводительного инференса в реальном времени на широком спектре источников данных.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Link to this sectionПрименение в реальных условиях#
| Производство | Спорт | Безопасность |
|---|---|---|
![]() | ![]() | ![]() |
| Детекция запасных частей автомобиля | Детекция футболистов | Детекция падения людей |
Link to this sectionПочему стоит использовать Ultralytics YOLO для инференса?#
Вот почему тебе стоит рассмотреть режим предсказания YOLO26 для твоих задач инференса:
- Универсальность: возможность запуска инференса на изображениях, видео и даже прямых трансляциях.
- Производительность: разработано для обработки в реальном времени с высокой скоростью без ущерба для accuracy.
- Простота использования: интуитивно понятные интерфейсы Python и CLI для быстрого развертывания и тестирования.
- Высокая настраиваемость: различные настройки и параметры позволяют адаптировать поведение инференса модели под твои конкретные требования.
- Готовность к продакшену: развертывай модели как API-эндпоинты на Ultralytics Platform с автоматическим масштабированием и мониторингом или запускай инференс локально.
Link to this sectionОсновные особенности режима предсказания#
Режим предсказания YOLO26 спроектирован надежным и универсальным, обладающим следующими функциями:
- Совместимость с несколькими источниками данных: будь то отдельные изображения, коллекции изображений, видеофайлы или потоковое видео в реальном времени — режим предсказания справится со всем.
- Потоковый режим (Streaming Mode): используй функцию потоковой передачи для создания экономичного с точки зрения памяти генератора объектов
Results. Включи это, установивstream=Trueв методе вызова предиктора. - Пакетная обработка: обрабатывай несколько изображений или кадров видео за один пакет (batch), что дополнительно сокращает общее время инференса.
- Дружелюбность к интеграции: легкая интеграция с существующими конвейерами данных и другими программными компонентами благодаря гибкому API.
Модели Ultralytics YOLO возвращают либо список объектов Results на Python, либо экономичный генератор объектов Results, если при инференсе модели передан параметр stream=True:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # pretrained YOLO26n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"]) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to diskLink to this sectionИсточники инференса#
YOLO26 может обрабатывать различные типы входных источников для инференса, как показано в таблице ниже. Источники включают статические изображения, видеопотоки и различные форматы данных. В таблице также указано, можно ли использовать каждый источник в потоковом режиме с аргументом stream=True ✅. Потоковый режим полезен для обработки видео или прямых трансляций, так как он создает генератор результатов вместо загрузки всех кадров в память.
Используй stream=True для обработки длинных видео или больших наборов данных, чтобы эффективно управлять памятью. Когда stream=False, результаты для всех кадров или точек данных хранятся в памяти, что может быстро привести к нехватке оперативной памяти для больших входных данных. В отличие от этого, stream=True использует генератор, который хранит в памяти только результаты текущего кадра или точки данных, что значительно снижает потребление памяти и предотвращает ошибки переполнения.
| Источник | Пример | Тип | Примечания |
|---|---|---|---|
| изображение | 'image.jpg' | str или Path | Один файл изображения. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL на изображение. |
| скриншот | 'screen' | str | Захват скриншота. |
| PIL | Image.open('image.jpg') | PIL.Image | Формат HWC с каналами RGB. |
| OpenCV | cv2.imread('image.jpg') | np.ndarray | Формат HWC с каналами BGR uint8 (0-255). |
| NumPy | np.zeros((640,1280,3)) | np.ndarray | Формат HWC с каналами BGR uint8 (0-255). |
| torch | torch.zeros(16,3,320,640) | torch.Tensor | Формат BCHW с каналами RGB float32 (0.0-1.0). |
| CSV | 'sources.csv' | str или Path | CSV-файл, содержащий пути к изображениям, видео или директориям. |
| видео ✅ | 'video.mp4' | str или Path | Видеофайл в форматах, таких как MP4, AVI и т.д. |
| директория ✅ | 'path/' | str или Path | Путь к директории, содержащей изображения или видео. |
| glob ✅ | 'path/*.jpg' | str | Шаблон glob для сопоставления нескольких файлов. Используй символ * в качестве подстановочного знака. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | URL на видео YouTube. |
| поток ✅ | 'rtsp://example.com/media.mp4' | str | URL для потоковых протоколов, таких как RTSP, RTMP, TCP, или IP-адрес. |
| мульти-поток ✅ | 'list.streams' | str или Path | Текстовый файл *.streams с одним URL потока в строке, например, 8 потоков будут работать с batch-size 8. |
| веб-камера ✅ | 0 | int | Индекс подключенного устройства камеры для запуска инференса. |
Ниже приведены примеры кода для использования каждого типа источника:
Запуск инференса на файле изображения.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objectsLink to this sectionАргументы вывода (Inference Arguments)#
model.predict() принимает несколько аргументов, которые можно передать во время вывода, чтобы переопределить настройки по умолчанию:
Link to this sectionФиксированный размер против минимального прямоугольника (rect)#
По умолчанию для предсказания используется rect=True, что при возможности включает заполнение до минимального прямоугольника. Изображение масштабируется так, чтобы поместиться в imgsz, и дополняется только до ближайшего кратного шагу сетки (stride), поэтому итоговый тензор может быть меньше, чем imgsz. Заполнение до минимального прямоугольника используется только тогда, когда все изображения в пакете имеют одинаковую форму, и бэкенд поддерживает это (PyTorch .pt или динамические ONNX / Triton). В противном случае изображения дополняются до полного целевого размера imgsz.
Используй rect=False, чтобы всегда дополнять изображение до полного целевого размера imgsz. Это рекомендуется, когда тебе нужен фиксированный размер входных данных для соответствия экспортированным моделям (ONNX, TensorRT и т. д.).
Целое число против кортежа imgsz
- Целое число
imgsz=640превращается в квадратную целевую форму(640, 640)после округления с учетом шага сетки (stride). - Кортеж
imgsz=(384, 672)задает прямоугольную целевую форму. Приrect=Trueиauto=Trueфактический тензор может быть меньше этой целевой формы.
Обучение против предсказания/экспорта
Обучение принимает только одно целое число imgsz (список [h, w] приводится к большему значению). Предсказание и экспорт принимают либо целое число, либо кортеж (height, width).
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)Аргументы инференса:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
source | str или int или None | None | Указывает источник данных для инференса. Это может быть путь к изображению, видеофайл, директория, URL или ID устройства для прямых трансляций. Если пропущено, записывается предупреждение, и модель переключается на встроенные демо-ресурсы (ultralytics/assets или демо URL для OBB). Поддерживает широкий спектр форматов и источников, обеспечивая гибкое применение для различных типов входных данных. |
conf | float | 0.25 | Устанавливает минимальный порог уверенности для обнаружений. Объекты, обнаруженные с уверенностью ниже этого порога, будут игнорироваться. Настройка этого значения может помочь снизить количество ложноположительных результатов. |
iou | float | 0.7 | Порог Intersection Over Union (IoU) для немаксимального подавления (NMS). Меньшие значения приводят к меньшему количеству обнаружений за счет устранения перекрывающихся рамок, что полезно для уменьшения дубликатов. |
imgsz | int или tuple | 640 | Цель Letterbox. Целое число дает квадрат N×N; кортеж дает (height, width). При rect=True фактический тензор может быть меньше этой цели из-за заполнения до минимального прямоугольника. Используй rect=False для фиксированного размера. См. Фиксированная форма против минимального прямоугольника. |
rect | bool | True | Если True, используй заполнение до минимального прямоугольника, когда это возможно (пакет одинаковой формы и поддерживаемый бэкенд). Если False, всегда дополняй до полного imgsz. См. Фиксированная форма против минимального прямоугольника. |
half | bool | False | Включает инференс с полуточностью (FP16), что может ускорить работу модели на поддерживаемых GPU с минимальным влиянием на точность. |
device | str | None | Указывает устройство для инференса (например, cpu, cuda:0, 0, npu или npu:0). Позволяет пользователям выбирать между CPU, конкретным GPU, NPU Huawei Ascend или другими вычислительными устройствами для выполнения модели. |
batch | int | 1 | Указывает размер пакета для инференса (работает только если источник — директория, видеофайл или .txt файл). Больший размер пакета может обеспечить более высокую пропускную способность, сокращая общее время, необходимое для инференса. |
max_det | int | 300 | Максимальное количество разрешенных обнаружений на изображение. Ограничивает общее количество объектов, которые модель может обнаружить за один инференс, предотвращая чрезмерные выходы в плотных сценах. |
vid_stride | int | 1 | Шаг кадров для видеовходов. Позволяет пропускать кадры в видео для ускорения обработки за счет временного разрешения. Значение 1 обрабатывает каждый кадр, большие значения пропускают кадры. |
stream_buffer | bool | False | Определяет, нужно ли ставить в очередь входящие кадры для видеопотоков. Если False, старые кадры отбрасываются, чтобы освободить место для новых (оптимизировано для приложений реального времени). Если True, новые кадры ставятся в очередь, гарантируя, что ни один кадр не будет пропущен, но это вызовет задержку, если FPS инференса ниже, чем FPS потока. |
visualize | bool | False | Активирует визуализацию признаков модели во время инференса, предоставляя понимание того, что «видит» модель. Полезно для отладки и интерпретации модели. |
augment | bool | False | Включает аугментацию во время тестирования (TTA) для предсказаний, что потенциально повышает надежность обнаружения за счет скорости инференса. |
agnostic_nms | bool | False | Включает классово-агностическое немаксимальное подавление (NMS), которое объединяет перекрывающиеся рамки разных классов. Полезно в сценариях многоклассового обнаружения, где часто встречается пересечение классов. Для end-to-end моделей (YOLO26, YOLOv10) это предотвращает появление одного и того же обнаружения с несколькими метками классов (дубликаты IoU=1.0) и не выполняет подавление на основе порога IoU между отдельными рамками. |
classes | list[int] | None | Фильтрует предсказания по набору ID классов. Будут возвращены только обнаружения, принадлежащие указанным классам. Полезно для фокусировки на релевантных объектах в задачах многоклассового обнаружения. |
retina_masks | bool | False | Возвращает маски сегментации высокого разрешения. Возвращаемые маски (masks.data) будут соответствовать исходному размеру изображения, если включено. Если выключено, они имеют размер изображения, использованный во время инференса. |
embed | list[int] | None | Указывает слои, из которых нужно извлекать векторы признаков или эмбеддинги. Полезно для последующих задач, таких как кластеризация или поиск по сходству. |
project | str | None | Имя директории проекта, куда сохраняются выходы предсказаний, если включен save. |
name | str | None | Имя запуска предсказания. Используется для создания поддиректории внутри папки проекта, где сохраняются выходы предсказаний, если включен save. |
stream | bool | False | Включает эффективную с точки зрения памяти обработку для длинных видео или многочисленных изображений, возвращая генератор объектов Results вместо загрузки всех кадров в память одновременно. |
verbose | bool | True | Контролирует отображение подробных логов инференса в терминале, предоставляя обратную связь о процессе предсказания в режиме реального времени. |
compile | bool или str | False | Включает компиляцию графа PyTorch 2.x torch.compile с backend='inductor'. Принимает True → "default", False → отключает, или строковый режим, такой как "default", "reduce-overhead", "max-autotune-no-cudagraphs". При отсутствии поддержки возвращается к режиму eager с предупреждением. |
end2end | bool | None | Переопределяет режим end-to-end в моделях YOLO, которые поддерживают инференс без NMS (YOLO26, YOLOv10). Установка в False позволяет выполнять предсказание с использованием традиционного конвейера NMS, дополнительно позволяя использовать аргумент iou. См. руководство по End-to-End детекции для получения подробностей. |
Аргументы визуализации:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
show | bool | False | Если True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования. |
save | bool | False or True | Включает сохранение аннотированных изображений или видео в файлы. Полезно для документации, дальнейшего анализа или обмена результатами. По умолчанию True при использовании CLI и False при использовании в Python. |
save_frames | bool | False | При обработке видео сохраняет отдельные кадры как изображения. Полезно для извлечения конкретных кадров или детального анализа по кадрам. |
save_txt | bool | False | Сохраняет результаты обнаружения в текстовый файл в формате [class] [x_center] [y_center] [width] [height] [confidence]. Полезно для интеграции с другими инструментами анализа. |
save_conf | bool | False | Включает оценки уверенности в сохраненных текстовых файлах. Увеличивает детализацию, доступную для постобработки и анализа. |
save_crop | bool | False | Сохраняет обрезанные изображения обнаружений. Полезно для аугментации данных, анализа или создания сфокусированных наборов данных для конкретных объектов. |
show_labels | bool | True | Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает быстрое понимание того, какие объекты были обнаружены. |
show_conf | bool | True | Отображает показатель уверенности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели в каждом обнаружении. |
show_boxes | bool | True | Рисует ограничивающие рамки вокруг обнаруженных объектов. Необходимо для визуальной идентификации и определения местоположения объектов на изображениях или кадрах видео. |
line_width | int or None | None | Указывает ширину линии ограничивающих рамок. Если None, ширина линии автоматически подстраивается под размер изображения. Обеспечивает визуальную настройку для ясности. |
Link to this sectionФорматы изображений и видео#
YOLO26 поддерживает различные форматы изображений и видео, как указано в ultralytics/data/utils.py. См. таблицы ниже для получения информации о допустимых суффиксах и примерах команд предсказания.
Link to this sectionИзображения#
В таблице ниже приведены допустимые форматы изображений Ultralytics.
Для форматов HEIC/HEIF требуется pi-heif, который устанавливается автоматически при первом использовании. AVIF поддерживается библиотекой Pillow нативно.
| Суффиксы изображений | Пример команды предсказания | Справочная информация |
|---|---|---|
.avif | yolo predict source=image.avif | Формат файла изображения AV1 |
.bmp | yolo predict source=image.bmp | Формат файла Microsoft BMP |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | High Efficiency Image Format |
.heif | yolo predict source=image.heif | High Efficiency Image Format |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpeg2000 | yolo predict source=image.jpeg2000 | JPEG 2000 |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Multi Picture Object |
.png | yolo predict source=image.png | Portable Network Graphics |
.tif | yolo predict source=image.tif | Tag Image File Format |
.tiff | yolo predict source=image.tiff | Tag Image File Format |
.webp | yolo predict source=image.webp | WebP |
Link to this sectionВидео#
В таблице ниже приведены допустимые форматы видео Ultralytics.
| Суффиксы видео | Пример команды предсказания | Справочная информация |
|---|---|---|
.asf | yolo predict source=video.asf | Advanced Systems Format |
.avi | yolo predict source=video.avi | Audio Video Interleave |
.gif | yolo predict source=video.gif | Graphics Interchange Format |
.m4v | yolo predict source=video.m4v | MPEG-4 Part 14 |
.mkv | yolo predict source=video.mkv | Matroska |
.mov | yolo predict source=video.mov | QuickTime File Format |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Part 14 - Wikipedia |
.mpeg | yolo predict source=video.mpeg | MPEG-1 Part 2 |
.mpg | yolo predict source=video.mpg | MPEG-1 Part 2 |
.ts | yolo predict source=video.ts | MPEG Transport Stream |
.wmv | yolo predict source=video.wmv | Windows Media Video |
.webm | yolo predict source=video.webm | WebM Project |
Link to this sectionРабота с результатами#
Все вызовы Ultralytics predict() возвращают список объектов Results:
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # batch inferenceОбъекты Results имеют следующие атрибуты:
| Атрибут | Тип | Описание |
|---|---|---|
orig_img | np.ndarray | Исходное изображение в виде массива NumPy. |
orig_shape | tuple | Размер исходного изображения в формате (высота, ширина). |
boxes | Boxes, optional | Объект Boxes, содержащий ограничивающие прямоугольники обнаружения. |
masks | Masks, optional | Объект Masks, содержащий маски обнаружения. |
probs | Probs, optional | Объект Probs, содержащий вероятности каждого класса для задачи классификации. |
keypoints | Keypoints, optional | Объект Keypoints, содержащий обнаруженные ключевые точки для каждого объекта. |
obb | OBB, optional | Объект OBB, содержащий ориентированные ограничивающие прямоугольники. |
semantic_mask | SemanticMask, optional | Объект SemanticMask, содержащий плотную карту классов для каждого пикселя. |
speed | dict | Словарь со скоростью предобработки, инференса и постпроцессинга в миллисекундах на изображение. |
names | dict | Словарь, отображающий индексы классов на их названия. |
path | str | Путь к файлу изображения. |
save_dir | str, optional | Директория для сохранения результатов. |
Link to this sectionРезультаты по задачам#
Каждое предсказание возвращает один объект Results на изображение или кадр. Указанные выше общие поля доступны всегда, в то время как специфические для задачи данные предсказаний хранятся в полях ниже. Тензоры координат, достоверности и вероятностей имеют тип torch.float32, если не используется половинная точность, в этом случае torch.float16. После вызова result.numpy() тензоры преобразуются в массивы NumPy с соответствующими типами данных NumPy. Маски экземпляров представляют собой бинарные тензоры torch.uint8, тогда как семантические маски используют наименьший практически применимый целочисленный тип данных для ID классов: torch.uint8, torch.int16 или torch.int32, в зависимости от количества классов.
| Атрибут | Тип | Форма | Описание |
|---|---|---|---|
result.boxes | Boxes | (N) | Прямоугольники обнаружения. |
result.boxes.data | torch.float32 | (N,6/7) | Необработанные [x1,y1,x2,y2,conf,cls], плюс опциональный ID отслеживания. |
result.boxes.xyxy | torch.float32 | (N,4) | Пиксельные прямоугольники xyxy. |
result.boxes.conf | torch.float32 | (N,) | Оценки достоверности. |
result.boxes.cls | torch.float32 | (N,) | ID классов; приведите к int для получения названий. |
Объекты Results имеют следующие методы:
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
update() | None | Обновляет объект Results новыми данными, такими как рамки, маски, вероятности, obb, ключевые точки или семантические маски. |
cpu() | Results | Возвращает копию объекта Results, в которой все тензоры перемещены в память CPU. |
numpy() | Results | Возвращает копию объекта Results, в которой все тензоры преобразованы в массивы NumPy. |
cuda() | Results | Возвращает копию объекта Results, в которой все тензоры перемещены в память GPU. |
to() | Results | Возвращает копию объекта Results с тензорами, перемещенными на указанное устройство и с указанным типом данных. |
new() | Results | Создает новый объект Results с теми же атрибутами изображения, пути, имен и скорости. |
plot() | np.ndarray | Отображает результаты детекции на входном изображении BGR и возвращает аннотированное изображение. |
show() | None | Отображает изображение с аннотированными результатами инференса. |
save() | str | Сохраняет изображение с аннотированными результатами инференса в файл и возвращает имя файла. |
verbose() | str | Возвращает строку лога для каждой задачи, детализирующую результаты детекции и классификации. |
save_txt() | str | Сохраняет результаты детекции в текстовый файл и возвращает путь к сохраненному файлу. |
save_crop() | None | Сохраняет вырезанные изображения объектов детекции в указанную директорию. |
summary() | List[Dict[str, Any]] | Преобразует результаты инференса в обобщенный словарь с опциональной нормализацией. |
to_df() | DataFrame | Преобразует результаты детекции в Polars DataFrame. |
to_csv() | str | Преобразует результаты детекции в формат CSV. |
to_json() | str | Преобразует результаты детекции в формат JSON. |
Для получения дополнительной информации см. документацию класса Results.
Link to this sectionБоксы#
Объект Boxes можно использовать для индексации, манипуляции и преобразования ограничивающих рамок в различные форматы.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.boxes) # print the Boxes object containing the detection bounding boxesНиже представлена таблица методов и свойств класса Boxes, включая их имя, тип и описание:
| Имя | Тип | Описание |
|---|---|---|
cpu() | Метод | Переместить объект в память CPU. |
numpy() | Метод | Преобразовать объект в массив NumPy. |
cuda() | Метод | Переместить объект в память CUDA. |
to() | Метод | Переместить объект на указанное устройство. |
xyxy | Свойство (torch.Tensor) | Возвращает рамки в формате xyxy. |
conf | Свойство (torch.Tensor) | Возвращает значения уверенности для рамок. |
cls | Свойство (torch.Tensor) | Возвращает значения классов для рамок. |
id | Свойство (torch.Tensor) | Возвращает ID трекинга для рамок (если доступны). |
xywh | Свойство (torch.Tensor) | Возвращает рамки в формате xywh. |
xyxyn | Свойство (torch.Tensor) | Возвращает рамки в формате xyxy, нормализованные по размеру исходного изображения. |
xywhn | Свойство (torch.Tensor) | Возвращает рамки в формате xywh, нормализованные по размеру исходного изображения. |
Для получения дополнительной информации см. документацию класса Boxes.
Link to this sectionМаски#
Объект Masks можно использовать для индексации, манипуляции и преобразования масок в сегменты.
from ultralytics import YOLO
# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-seg.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.masks) # print the Masks object containing the detected instance masksНиже представлена таблица методов и свойств класса Masks, включая их имя, тип и описание:
| Имя | Тип | Описание |
|---|---|---|
data | Свойство (torch.Tensor) | Бинарный тензор маски torch.uint8 с формой (N,H,W) и значениями 0 или 1. |
cpu() | Метод | Возвращает тензор масок в памяти CPU. |
numpy() | Метод | Возвращает тензор масок как массив NumPy. |
cuda() | Метод | Возвращает тензор масок в памяти GPU. |
to() | Метод | Возвращает тензор масок для указанного устройства и типа данных. |
xyn | Свойство (list[np.ndarray]) | Список нормализованных полигонов масок. |
xy | Свойство (list[np.ndarray]) | Список полигонов масок в пиксельных координатах. |
Для получения дополнительной информации см. документацию класса Masks.
Link to this sectionSemanticMask#
SemanticMask хранит одну плотную карту классов для результатов семантической сегментации. В отличие от Masks, она не содержит по одной бинарной маске на объект и не предоставляет вспомогательные методы для работы с полигонами.
from ultralytics import YOLO
# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.semantic_mask.data) # print the H x W class-ID map| Имя | Тип | Описание |
|---|---|---|
data | Свойство (torch.Tensor) | Карта ID классов с формой (H,W). Тип данных torch.uint8, torch.int16 или torch.int32 выбирается в зависимости от количества классов. |
shape | Свойство (tuple) | Форма карты классов, обычно соответствующая result.orig_shape. |
cpu() | Метод | Возвращает тензор семантической маски в памяти CPU. |
numpy() | Метод | Возвращает тензор семантической маски как массив NumPy. |
cuda() | Метод | Возвращает тензор семантической маски в памяти GPU. |
to() | Метод | Возвращает тензор семантической маски для указанного устройства и типа данных. |
Link to this sectionКлючевые точки#
Объект Keypoints можно использовать для индексации, манипуляции и нормализации координат.
from ultralytics import YOLO
# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-pose.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.keypoints) # print the Keypoints object containing the detected keypointsНиже представлена таблица методов и свойств класса Keypoints, включая их имя, тип и описание:
| Имя | Тип | Описание |
|---|---|---|
cpu() | Метод | Возвращает тензор ключевых точек в памяти CPU. |
numpy() | Метод | Возвращает тензор ключевых точек как массив NumPy. |
cuda() | Метод | Возвращает тензор ключевых точек в памяти GPU. |
to() | Метод | Возвращает тензор ключевых точек с указанным устройством и типом данных. |
xyn | Свойство (torch.Tensor) | Список нормализованных ключевых точек, представленных в виде тензоров. |
xy | Свойство (torch.Tensor) | Список ключевых точек в пиксельных координатах, представленных в виде тензоров. |
conf | Свойство (torch.Tensor) | Возвращает значения уверенности для ключевых точек, если они доступны, в противном случае None. |
For more details see the Keypoints class documentation.
Link to this sectionProbs#
Объект Probs можно использовать для индексации, получения top1 и top5 индексов и оценок классификации.
from ultralytics import YOLO
# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-cls.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.probs) # print the Probs object containing the detected class probabilitiesНиже приведена таблица с описанием методов и свойств для класса Probs:
| Имя | Тип | Описание |
|---|---|---|
cpu() | Метод | Возвращает копию тензора probs в памяти CPU. |
numpy() | Метод | Возвращает копию тензора probs в виде массива NumPy. |
cuda() | Метод | Возвращает копию тензора probs в памяти GPU. |
to() | Метод | Возвращает копию тензора probs с указанным устройством и типом данных. |
top1 | Свойство (int) | Индекс топ-1 класса. |
top5 | Свойство (list[int]) | Индексы топ-5 классов. |
top1conf | Свойство (torch.Tensor) | Уверенность для топ-1 класса. |
top5conf | Свойство (torch.Tensor) | Уверенность для топ-5 классов. |
For more details see the Probs class documentation.
Link to this sectionOBB#
Объект OBB можно использовать для индексации, манипулирования и конвертации ориентированных ограничивающих рамок в различные форматы.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n-obb.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg") # results list
# View results
for r in results:
print(r.obb) # print the OBB object containing the oriented detection bounding boxesНиже приведена таблица методов и свойств класса OBB, включая их название, тип и описание:
| Имя | Тип | Описание |
|---|---|---|
cpu() | Метод | Переместить объект в память CPU. |
numpy() | Метод | Преобразовать объект в массив NumPy. |
cuda() | Метод | Переместить объект в память CUDA. |
to() | Метод | Переместить объект на указанное устройство. |
conf | Свойство (torch.Tensor) | Возвращает значения уверенности для рамок. |
cls | Свойство (torch.Tensor) | Возвращает значения классов для рамок. |
id | Свойство (torch.Tensor) | Возвращает ID трекинга для рамок (если доступны). |
xyxy | Свойство (torch.Tensor) | Возвращает горизонтальные рамки в формате xyxy. |
xywhr | Свойство (torch.Tensor) | Возвращает повернутые рамки в формате xywhr. |
xyxyxyxy | Свойство (torch.Tensor) | Возвращает повернутые рамки в формате xyxyxyxy. |
xyxyxyxyn | Свойство (torch.Tensor) | Возвращает повернутые рамки в формате xyxyxyxy, нормализованные по размеру изображения. |
For more details see the OBB class documentation.
Link to this sectionВизуализация результатов#
Метод plot() в объектах Results упрощает визуализацию предсказаний путем наложения обнаруженных объектов (таких как ограничивающие рамки, маски, ключевые точки и вероятности) на исходное изображение. Этот метод возвращает аннотированное изображение как массив NumPy, позволяя легко отобразить или сохранить его.
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]) # results list
# Visualize the results
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot() # BGR-order numpy array
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f"results{i}.jpg")Link to this sectionПараметры метода plot()#
Метод plot() поддерживает различные аргументы для настройки вывода:
| Аргумент | Тип | Описание | По умолчанию |
|---|---|---|---|
conf | bool | Включить оценки уверенности детекции. | True |
line_width | float | Толщина линий ограничивающих рамок. Масштабируется в соответствии с размером изображения, если установлено значение None. | None |
font_size | float | Размер шрифта текста. Масштабируется в соответствии с размером изображения, если установлено значение None. | None |
font | str | Название шрифта для текстовых аннотаций. | 'Arial.ttf' |
pil | bool | Возвращает изображение как объект PIL Image. | False |
img | np.ndarray | Альтернативное изображение для отрисовки. Использует исходное изображение, если None. | None |
im_gpu | torch.Tensor | Ускоренное на GPU изображение для более быстрой отрисовки масок. Форма: (1, 3, 640, 640). | None |
kpt_radius | int | Радиус для нарисованных ключевых точек. | 5 |
kpt_line | bool | Соединить ключевые точки линиями. | True |
labels | bool | Включить метки классов в аннотации. | True |
boxes | bool | Наложить ограничивающие рамки на изображение. | True |
masks | bool | Наложить маски на изображение. | True |
probs | bool | Включить вероятности классификации. | True |
show | bool | Отобразить аннотированное изображение напрямую с помощью средства просмотра изображений по умолчанию. | False |
save | bool | Сохранить аннотированное изображение в файл, указанный в filename. | False |
filename | str | Путь и имя файла для сохранения аннотированного изображения, если save равно True. | None |
color_mode | str | Укажи цветовой режим, например, 'instance' или 'class'. | 'class' |
txt_color | tuple[int, int, int] | Цвет текста BGR для ограничивающей рамки и метки классификации изображения. | (255, 255, 255) |
Link to this sectionПотокобезопасный инференс#
Обеспечение потокобезопасности во время инференса критически важно, когда ты запускаешь несколько моделей YOLO параллельно в разных потоках. Потокобезопасный инференс гарантирует, что предсказания каждого потока изолированы и не мешают друг другу, избегая условий состязательности (race conditions) и обеспечивая согласованные и надежные результаты.
При использовании моделей YOLO в многопоточном приложении важно создавать отдельные объекты модели для каждого потока или использовать thread-local хранилище, чтобы предотвратить конфликты:
Создавай одну модель внутри каждого потока для потокобезопасного инференса:
from threading import Thread
from ultralytics import YOLO
def thread_safe_predict(model, image_path):
"""Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
model = YOLO(model)
results = model.predict(image_path)
# Process results
# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()Для углубленного изучения потокобезопасного инференса с моделями YOLO и пошаговых инструкций, пожалуйста, обратись к нашему руководству по потокобезопасному инференсу YOLO. Это руководство предоставит тебе всю необходимую информацию, чтобы избежать типичных ошибок и гарантировать, что твой многопоточный инференс работает корректно.
Link to this sectionПотоковый цикл for#
Вот пример скрипта на Python с использованием OpenCV (cv2) и YOLO для запуска инференса на кадрах видео. Этот скрипт предполагает, что ты уже установил необходимые пакеты (opencv-python и ultralytics).
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.pt")
# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# Loop through the video frames
while cap.isOpened():
# Read a frame from the video
success, frame = cap.read()
if success:
# Run YOLO inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the annotated frame
cv2.imshow("YOLO Inference", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# Break the loop if the end of the video is reached
break
# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()Этот скрипт запустит предсказания на каждом кадре видео, визуализирует результаты и отобразит их в окне. Выйти из цикла можно, нажав 'q'.
Link to this sectionFAQ#
Link to this sectionЧто такое Ultralytics YOLO и режим predict для инференса в реальном времени?#
Ultralytics YOLO — это современная модель для обнаружения объектов, сегментации экземпляров, семантической сегментации и классификации в реальном времени. Её режим predict позволяет пользователям выполнять высокоскоростной инференс на различных источниках данных, таких как изображения, видео и прямые трансляции. Разработанный для производительности и универсальности, он также предлагает пакетную обработку и потоковые режимы. Для получения дополнительной информации о функциях, ознакомься с режимом predict Ultralytics YOLO.
Link to this sectionКак запустить инференс с помощью Ultralytics YOLO на разных источниках данных?#
Ultralytics YOLO может обрабатывать широкий спектр источников данных, включая отдельные изображения, видео, директории, URL-адреса и потоки. Ты можешь указать источник данных в вызове model.predict(). Например, используй 'image.jpg' для локального изображения или 'https://ultralytics.com/images/bus.jpg' для URL-адреса. Ознакомься с подробными примерами для различных источников инференса в документации.
Link to this sectionКак оптимизировать скорость инференса YOLO и использование памяти?#
Чтобы оптимизировать скорость инференса и эффективно управлять памятью, ты можешь использовать потоковый режим, установив stream=True в методе вызова предиктора. Потоковый режим создает эффективный с точки зрения памяти генератор объектов Results вместо загрузки всех кадров в память. Для обработки длинных видео или больших наборов данных потоковый режим особенно полезен. Узнай больше о потоковом режиме.
Link to this sectionКакие аргументы инференса поддерживает Ultralytics YOLO?#
Метод model.predict() в YOLO поддерживает различные аргументы, такие как conf, iou, imgsz, device и другие. Эти аргументы позволяют тебе настроить процесс инференса, задавая параметры, такие как пороги уверенности, размер изображения и устройство, используемое для вычислений. Подробные описания этих аргументов можно найти в разделе аргументы инференса.
Link to this sectionКак визуализировать и сохранить результаты предсказаний YOLO?#
После запуска инференса с YOLO объекты Results содержат методы для отображения и сохранения аннотированных изображений. Ты можешь использовать методы, такие как result.show() и result.save(filename="result.jpg"), чтобы визуализировать и сохранить результаты. Любые отсутствующие родительские директории в пути к файлу будут созданы автоматически (например, result.save("path/to/result.jpg")). Полный список этих методов можно найти в разделе работа с результатами.


