Предсказание модели с помощью Ultralytics YOLO
Введение
В мире machine learning и computer vision процесс анализа визуальных данных часто называют инференсом или предсказанием. Ultralytics YOLO26 предлагает мощную функцию, известную как режим предсказания (predict mode), специально разработанную для высокопроизводительного инференса в реальном времени на широком спектре источников данных.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Применение в реальных условиях
| Производство | Спорт | Безопасность |
|---|---|---|
![]() | ![]() | ![]() |
| Обнаружение запасных частей автомобиля | Обнаружение футболистов | Обнаружение падений людей |
Почему стоит использовать Ultralytics YOLO для инференса?
Вот почему тебе стоит рассмотреть режим предсказания YOLO26 для своих разнообразных задач инференса:
- Универсальность: возможность запуска инференса на изображениях, видео и даже прямых трансляциях.
- Производительность: разработано для высокоскоростной обработки в реальном времени без ущерба для accuracy.
- Простота использования: интуитивно понятные интерфейсы 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.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 потоков будут работать с размером пакета 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 objectsАргументы инференса
model.predict() принимает множество аргументов, которые можно передать во время инференса, чтобы переопределить настройки по умолчанию:
Фиксированный размер против минимального прямоугольника (rect)
По умолчанию в predict используется rect=True, что активирует дополнение (padding) до минимального прямоугольника, когда это возможно. Изображение масштабируется так, чтобы вписаться в imgsz, и дополняется только до ближайшего кратного шагу (stride), поэтому итоговый тензор может быть меньше, чем imgsz. Дополнение до минимального прямоугольника используется только тогда, когда все изображения в пакете имеют одинаковый размер и бэкенд это поддерживает (PyTorch .pt или динамический ONNX / Triton). В противном случае изображения дополняются до полного целевого размера imgsz.
Используй rect=False, чтобы всегда дополнять до полного размера imgsz. Это рекомендуется, когда тебе нужен фиксированный входной размер для соответствия экспортированным моделям (ONNX, TensorRT и т. д.).
Целое число против кортежа imgsz
- Целое число
imgsz=640превращается в квадратную цель(640, 640)после округления по шагу. - Кортеж
imgsz=(384, 672)задает прямоугольную цель. Сrect=Trueиauto=Trueфактический тензор может быть меньше этой цели.
Обучение против предсказания/экспорта
Обучение принимает только одно целое число imgsz (список [h, w] приводится к большему значению). Predict и экспорт принимают либо целое число, либо кортеж (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) для Non-Maximum Suppression (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, старые кадры отбрасываются, чтобы освободить место для новых (оптимизировано для приложений реального времени). Если True, новые кадры ставятся в буфер, что гарантирует отсутствие пропусков кадров, но может вызвать задержку, если FPS инференса ниже FPS потока. |
visualize | bool | False | Активирует визуализацию признаков модели во время инференса, предоставляя понимание того, что "видит" модель. Полезно для отладки и интерпретации работы модели. |
augment | bool | False | Включает аугментацию во время тестирования (TTA) для предсказаний, что может повысить надежность обнаружения ценой снижения скорости инференса. |
agnostic_nms | bool | False | Включает класс-агностическое Non-Maximum Suppression (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 or 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, толщина линии автоматически настраивается в зависимости от размера изображения. Позволяет визуально настроить четкость. |
Форматы изображений и видео
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 | Преобразует результаты обнаружения в DataFrame Polars. |
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() | Метод | Возвращает тензор масок для указанного устройства и типа данных. |
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() | Метод | Возвращает тензор ключевых точек для указанного устройства и типа данных. |
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() | Метод | Возвращает копию тензора probs в памяти CPU. |
numpy() | Метод | Возвращает копию тензора probs как массив NumPy. |
cuda() | Метод | Возвращает копию тензора probs в памяти GPU. |
to() | Метод | Возвращает копию тензора probs для указанного устройства и типа данных. |
top1 | Свойство (int) | Индекс класса top 1. |
top5 | Свойство (list[int]) | Индексы 5 лучших классов. |
top1conf | Свойство (torch.Tensor) | Уверенность для класса top 1. |
top5conf | Свойство (torch.Tensor) | Уверенности для 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) |
Потокобезопасный инференс
Обеспечение потокобезопасности во время инференса критически важно, когда ты запускаешь несколько моделей YOLO параллельно в разных потоках. Потокобезопасный инференс гарантирует, что предсказания каждого потока изолированы и не мешают друг другу, избегая условий гонки и обеспечивая согласованные и надежные результаты.
При использовании моделей YOLO в многопоточном приложении важно создавать отдельные объекты модели для каждого потока или использовать хранилище потока для предотвращения конфликтов:
Создавай одну модель внутри каждого потока для потокобезопасного инференса:
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 позволяет пользователям выполнять высокоскоростной инференс на различных источниках данных, таких как изображения, видео и прямые трансляции. Разработанный для производительности и универсальности, он также предлагает пакетную обработку и потоковые режимы. Для получения более подробной информации о функциях ознакомься с режимом predict 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 и другие. Эти аргументы позволяют тебе настроить процесс инференса, устанавливая параметры, такие как пороги уверенности, размер изображения и устройство, используемое для вычислений. Подробные описания этих аргументов можно найти в разделе аргументы инференса.
Как визуализировать и сохранить результаты предсказаний YOLO?
После запуска инференса с YOLO объекты Results содержат методы для отображения и сохранения аннотированных изображений. Ты можешь использовать такие методы, как result.show() и result.save(filename="result.jpg"), чтобы визуализировать и сохранить результаты. Любые отсутствующие родительские директории в пути к файлу создаются автоматически (например, result.save("path/to/result.jpg")). Полный список этих методов см. в разделе работа с результатами.


