Предсказание модели с помощью Ultralytics YOLO
Введение
В мире машинного обучения и компьютерного зрения процесс анализа визуальных данных часто называют инференсом или предсказанием. Ultralytics YOLO26 предлагает мощную функцию, известную как режим предсказания (predict mode), разработанную для высокопроизводительного инференса в реальном времени с использованием широкого спектра источников данных.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Реальные применения
| Производство | Спорт | Безопасность |
|---|---|---|
![]() | ![]() | ![]() |
| Детекция запчастей автомобиля | Детекция футболистов | Детекция падения людей |
Почему стоит использовать Ultralytics YOLO для инференса?
Вот почему тебе стоит рассмотреть режим предсказания YOLO26 для твоих задач по инференсу:
- Универсальность: Возможность запускать инференс на изображениях, видео и даже прямых трансляциях.
- Производительность: Разработано для высокоскоростной обработки в реальном времени без потери точности.
- Простота использования: Интуитивно понятные интерфейсы Python и CLI для быстрого развертывания и тестирования.
- Высокая настраиваемость: Множество настроек и параметров для адаптации поведения инференса модели под твои конкретные требования.
- Готовность к продакшену: Развертывай модели как API-эндпоинты на Ultralytics Platform с автоматическим масштабированием и мониторингом или запускай инференс локально.
Ключевые особенности режима предсказания
Режим предсказания YOLO26 спроектирован как надежный и универсальный, обладающий следующими функциями:
- Совместимость с несколькими источниками данных: Независимо от того, представлены ли твои данные в виде отдельных изображений, коллекции изображений, видеофайлов или потокового видео в реальном времени, режим предсказания справится с этим.
- Потоковый режим: Используй потоковую функцию для создания эффективного с точки зрения памяти генератора объектов
Results. Включи это, установивstream=Trueв методе вызова предиктора. - Пакетная обработка: Обрабатывай несколько изображений или видеокадров в одном пакете (батче), что дополнительно сокращает общее время инференса.
- Дружелюбность к интеграции: Легко интегрируй с существующими конвейерами данных и другими программными компонентами благодаря гибкому API.
Модели Ultralytics YOLO возвращают либо Python-список объектов Results, либо эффективный с точки зрения памяти генератор объектов 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 diskИсточники инференса
YOLO26 может обрабатывать различные типы входных источников для инференса, как показано в таблице ниже. Источники включают статические изображения, видеопотоки и различные форматы данных. Таблица также указывает, можно ли использовать каждый источник в потоковом режиме с аргументом stream=True ✅. Потоковый режим полезен для обработки видео или прямых трансляций, так как он создает генератор результатов вместо загрузки всех кадров в память.
Используй stream=True для обработки длинных видео или больших наборов данных, чтобы эффективно управлять памятью. Когда stream=False, результаты для всех кадров или точек данных хранятся в памяти, что может быстро привести к нехватке памяти и ошибкам при работе с большими объемами данных. В отличие от этого, stream=True использует генератор, который хранит в памяти только результаты текущего кадра или точки данных, что значительно снижает потребление памяти и предотвращает ошибки её нехватки.
| Источник | Пример | Тип | Примечания |
|---|---|---|---|
| image | 'image.jpg' | str или Path | Одиночный файл изображения. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL на изображение. |
| screenshot | '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 ✅ | 'video.mp4' | str или Path | Видеофайл в форматах типа MP4, AVI и др. |
| directory ✅ | 'path/' | str или Path | Путь к директории, содержащей изображения или видео. |
| glob ✅ | 'path/*.jpg' | str | Шаблон glob для соответствия нескольким файлам. Используй символ * как подстановочный знак. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | URL на видео YouTube. |
| stream ✅ | 'rtsp://example.com/media.mp4' | str | URL для потоковых протоколов, таких как RTSP, RTMP, TCP, или IP-адрес. |
| multi-stream ✅ | 'list.streams' | str или Path | Текстовый файл *.streams с одним URL потока на строку, т.е. 8 потоков будут запущены с batch-size 8. |
| webcam ✅ | 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 objectsАргументы инференса
model.predict() принимает несколько аргументов, которые можно передать во время инференса, чтобы переопределить настройки по умолчанию:
Фиксированный размер против минимального прямоугольника (rect)
По умолчанию для предсказания используется rect=True, что активирует дополнение (padding) до минимального прямоугольника, когда это возможно. Изображение масштабируется так, чтобы вписаться в 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)Аргументы вывода (Inference):
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
source | str или int или None | None | Указывает источник данных для вывода. Может быть путем к изображению, видеофайлом, директорией, URL или ID устройства для прямых трансляций. Если опущено, записывается предупреждение, и модель переключается на встроенные демо-активы (ultralytics/assets или демо URL для OBB). Поддерживает широкий спектр форматов и источников, обеспечивая гибкое применение для различных типов ввода. |
conf | float | 0.25 | Устанавливает минимальный порог уверенности для обнаружений. Объекты, обнаруженные с уверенностью ниже этого порога, будут проигнорированы. Настройка этого значения может помочь уменьшить количество ложных срабатываний. |
iou | float | 0.7 | Порог пересечения над объединением (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, Huawei Ascend NPU или другими вычислительными устройствами для выполнения модели. |
batch | int | 1 | Указывает размер пакета для вывода (работает только если источник — это директория, видеофайл или .txt файл). Больший размер пакета может обеспечить более высокую пропускную способность, сокращая общее время, необходимое для вывода. |
max_det | int | 300 | Максимальное количество обнаружений на изображение. Ограничивает общее количество объектов, которые модель может найти за один проход, предотвращая избыточность вывода в перегруженных сценах. |
vid_stride | int | 1 | Шаг кадров для видео. Позволяет пропускать кадры для ускорения обработки ценой потери временного разрешения. Значение 1 обрабатывает каждый кадр, более высокие значения пропускают кадры. |
stream_buffer | bool | False | Определяет, нужно ли ставить входящие кадры в очередь для видеопотоков. Если False, старые кадры отбрасываются ради новых (оптимально для real-time задач). Если True, новые кадры буферизуются, что гарантирует отсутствие пропусков, но вызывает задержку, если FPS инференса ниже FPS потока. |
visualize | bool | False | Активирует визуализацию признаков модели во время инференса, помогая понять, что «видит» модель. Полезно для отладки и интерпретации работы модели. |
augment | bool | False | Включает TTA (Test-Time Augmentation) для предсказаний, что может повысить надежность обнаружения ценой скорости инференса. |
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 Detection. |
Аргументы визуализации:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
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 | Рисует ограничивающие рамки (bounding boxes) вокруг обнаруженных объектов. Необходимо для визуальной идентификации и локализации объектов на изображениях или видео. |
line_width | int or None | None | Задает толщину линий ограничивающих рамок. Если None, толщина подбирается автоматически в зависимости от размера изображения. Обеспечивает визуальную настройку для ясности. |
Форматы изображений и видео
YOLO26 поддерживает различные форматы изображений и видео, как указано в ultralytics/data/utils.py. Смотри таблицы ниже для получения информации о допустимых суффиксах и примерах команд предсказания.
Изображения
В таблице ниже приведены допустимые форматы изображений Ultralytics.
Форматы HEIC/HEIF требуют pi-heif, который устанавливается автоматически при первом использовании. AVIF поддерживается в Pillow нативно.
| Суффиксы изображений | Пример команды предсказания | Справочная информация |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 Image File Format |
.bmp | yolo predict source=image.bmp | Microsoft BMP File Format |
.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 |
.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 |
Видео
В таблице ниже приведены допустимые форматы видео 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 |
Работа с результатами
Все вызовы predict() в Ultralytics возвращают список объектов 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, содержащий ограничивающие рамки (bounding boxes) детекции. |
masks | Masks, optional | Объект Masks, содержащий маски детекции. |
probs | Probs, optional | Объект Probs, содержащий вероятности для каждого класса для задачи классификации. |
keypoints | Keypoints, optional | Объект Keypoints, содержащий обнаруженные ключевые точки для каждого объекта. |
obb | OBB, optional | Объект OBB, содержащий ориентированные ограничивающие рамки (oriented bounding boxes). |
speed | dict | Словарь со скоростью предобработки, инференса и постобработки в миллисекундах на изображение. |
names | dict | Словарь, сопоставляющий индексы классов с их названиями. |
path | str | Путь к файлу изображения. |
save_dir | str, optional | Директория для сохранения результатов. |
Объекты Results имеют следующие методы:
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
update() | None | Обновляет объект Results новыми данными детекции (boxes, masks, probs, obb, keypoints). |
cpu() | Results | Возвращает копию объекта Results со всеми тензорами, перемещенными в память CPU. |
numpy() | Results | Возвращает копию объекта Results со всеми тензорами, преобразованными в массивы NumPy. |
cuda() | Results | Возвращает копию объекта Results со всеми тензорами, перемещенными в память GPU. |
to() | Results | Возвращает копию объекта Results с тензорами, перемещенными на указанное устройство и тип данных. |
new() | Results | Создает новый объект Results с теми же атрибутами изображения, пути, имен и скорости. |
plot() | np.ndarray | Отрисовывает результаты детекции на входном RGB-изображении и возвращает аннотированное изображение. |
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.
Boxes
Объект 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.
Masks
Объект 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, включая их название, тип и описание:
| Имя | Тип | Описание |
|---|---|---|
cpu() | Метод | Возвращает тензор масок в памяти CPU. |
numpy() | Метод | Возвращает тензор масок в виде массива NumPy. |
cuda() | Метод | Возвращает тензор масок в памяти GPU. |
to() | Метод | Возвращает тензор масок с указанными устройством (device) и типом данных (dtype). |
xyn | Свойство (torch.Tensor) | Список нормализованных сегментов, представленных в виде тензоров. |
xy | Свойство (torch.Tensor) | Список сегментов в пиксельных координатах, представленных в виде тензоров. |
Для получения дополнительной информации см. документацию к классу Masks.
Keypoints
Объект 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() | Метод | Возвращает тензор ключевых точек с указанными устройством (device) и типом данных (dtype). |
xyn | Свойство (torch.Tensor) | Список нормализованных ключевых точек, представленных в виде тензоров. |
xy | Свойство (torch.Tensor) | Список ключевых точек в пиксельных координатах, представленных в виде тензоров. |
conf | Свойство (torch.Tensor) | Возвращает значения уверенности для ключевых точек, если они доступны, в противном случае — None. |
Для получения дополнительной информации см. документацию к классу Keypoints.
Probs
Объект 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() | Метод | Возвращает копию тензора вероятностей в памяти CPU. |
numpy() | Метод | Возвращает копию тензора вероятностей в виде массива NumPy. |
cuda() | Метод | Возвращает копию тензора вероятностей в памяти GPU. |
to() | Метод | Возвращает копию тензора вероятностей с указанными устройством (device) и типом данных (dtype). |
top1 | Свойство (int) | Индекс класса с наивысшей вероятностью (top 1). |
top5 | Свойство (list[int]) | Индексы пяти классов с наивысшими вероятностями (top 5). |
top1conf | Свойство (torch.Tensor) | Уверенность для класса top 1. |
top5conf | Свойство (torch.Tensor) | Уверенности для классов top 5. |
Для получения дополнительной информации см. документацию к классу Probs.
OBB
Объект 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, нормализованные по размеру изображения. |
Для получения дополнительной информации см. документацию к классу OBB.
Визуализация результатов
Метод 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")Параметры метода 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] | Цвет текста в формате RGB для ограничивающей рамки и метки классификации изображения. | (255, 255, 255) |
Потокобезопасный вывод (Inference)
Обеспечение потокобезопасности при выполнении предсказаний крайне важно, когда ты запускаешь несколько моделей YOLO параллельно в разных потоках. Потокобезопасный вывод гарантирует, что предсказания каждого потока изолированы и не мешают друг другу, позволяя избежать условий гонки (race conditions) и обеспечивая согласованные и надежные результаты.
При использовании моделей YOLO в многопоточном приложении важно создавать отдельные объекты модели для каждого потока или использовать локальное хранилище потока (thread-local storage), чтобы предотвратить конфликты:
Создавай один экземпляр модели внутри каждого потока для обеспечения потокобезопасного вывода:
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. Это руководство предоставит тебе всю необходимую информацию, чтобы избежать типичных ошибок и обеспечить плавную работу многопоточного вывода.
Потоковый цикл 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'.
Часто задаваемые вопросы (FAQ)
Что такое Ultralytics YOLO и его режим предсказания (predict) для вывода в реальном времени?
Ultralytics YOLO — это передовая модель для обнаружения объектов, сегментации и классификации в реальном времени. Его режим предсказания (predict mode) позволяет пользователям выполнять высокоскоростной вывод на различных источниках данных, таких как изображения, видео и прямые трансляции. Разработанный для производительности и универсальности, он также предлагает пакетную обработку и потоковые режимы. Для получения подробной информации о функциях ознакомься с режимом предсказания Ultralytics YOLO.
Как я могу запустить вывод с помощью Ultralytics YOLO на различных источниках данных?
Ultralytics YOLO может обрабатывать широкий спектр источников данных, включая отдельные изображения, видео, директории, URL-адреса и потоки. Ты можешь указать источник данных в вызове model.predict(). Например, используй 'image.jpg' для локального изображения или 'https://ultralytics.com/images/bus.jpg' для URL-адреса. Ознакомься с подробными примерами для различных источников вывода в документации.
Как оптимизировать скорость вывода YOLO и использование памяти?
Для оптимизации скорости вывода и эффективного управления памятью ты можешь использовать потоковый режим, установив stream=True в методе вызова предиктора. Потоковый режим генерирует экономичный с точки зрения памяти генератор объектов Results вместо загрузки всех кадров в память. Для обработки длинных видео или больших наборов данных потоковый режим особенно полезен. Узнай больше о потоковом режиме.
Какие аргументы вывода поддерживает Ultralytics YOLO?
Метод model.predict() в YOLO поддерживает различные аргументы, такие как conf, iou, imgsz, device и другие. Эти аргументы позволяют настраивать процесс вывода, задавая параметры, например пороги уверенности, размер изображения и устройство, используемое для вычислений. Подробные описания этих аргументов можно найти в разделе inference arguments.
Как я могу визуализировать и сохранить результаты предсказаний YOLO?
После запуска вывода с помощью YOLO объекты Results предоставляют методы для отображения и сохранения аннотированных изображений. Ты можешь использовать методы вроде result.show() и result.save(filename="result.jpg") для визуализации и сохранения результатов. Любые отсутствующие родительские директории в пути к файлу создаются автоматически (например, result.save("path/to/result.jpg")). Полный список этих методов смотри в разделе working with results.


