Модель предсказания с Ultralytics YOLO
Введение
В мире машинного обучения и компьютерного зрения процесс извлечения смысла из визуальных данных называется "умозаключением" или "предсказанием". Ultralytics В YOLO11 есть мощная функция, известная как режим предсказания, которая предназначена для высокопроизводительных умозаключений в реальном времени на широком спектре источников данных.
Смотри: Как извлечь выходные данные из Ultralytics YOLO Model для пользовательских проектов.
Применение в реальном мире
Производство | Спорт | Безопасность |
---|---|---|
Обнаружение запасных частей для автомобилей | Обнаружение футболистов | Обнаружение падения людей |
Зачем использовать Ultralytics YOLO для выводов?
Вот почему тебе стоит обратить внимание на режим предсказаний YOLO11 для решения различных задач, связанных с умозаключениями:
- Универсальность: Способен делать выводы по изображениям, видео и даже живым потокам.
- Производительность: Разработан для высокоскоростной обработки данных в режиме реального времени без ущерба для точности.
- Простота использования: интуитивно понятные интерфейсы Python и CLI для быстрого развертывания и тестирования.
- Высокая настраиваемость: Различные настройки и параметры, позволяющие настроить поведение модели в выводах в соответствии с твоими специфическими требованиями.
Ключевые особенности режима Predict Mode
Режим предсказаний YOLO11 отличается надежностью и универсальностью:
- Совместимость с несколькими источниками данных: Неважно, в какой форме представлены твои данные - в виде отдельных изображений, коллекции изображений, видеофайлов или видеопотоков в реальном времени, - режим предсказаний обеспечит тебя всем необходимым.
- Режим потокового вещания: Используй функцию потоковой передачи данных, чтобы сгенерировать экономящий память генератор
Results
предметы. Включи эту функцию, установивstream=True
в методе вызова предиктора. - Пакетная обработка: Возможность обрабатывать несколько изображений или видеокадров в одном пакете, что еще больше ускоряет время вывода.
- Integration Friendly: Легко интегрируйся с существующими конвейерами данных и другими программными компонентами благодаря гибкому API.
Модели Ultralytics YOLO возвращают либо список Python Results
объекты, или экономящий память Python-генератор Results
предметы, когда stream=True
передается модели во время вычисления:
Предсказывай
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n 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
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True) # return a generator of Results objects
# Process results generator
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
Источники для выводов
YOLO11 может обрабатывать различные типы входных источников для выводов, как показано в таблице ниже. Среди источников - статичные изображения, видеопотоки и различные форматы данных. В таблице также указано, можно ли использовать каждый источник в потоковом режиме с помощью аргумента 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 | Глобальный шаблон для сопоставления нескольких файлов. Используй * символ в качестве подстановочного знака. |
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 | Индекс подключенного устройства камеры, на котором будет выполняться вывод. |
Ниже приведены примеры кода для использования каждого типа источников:
Источники предсказаний
Выполни умозаключение на файле с изображением.
Выполни умозаключение по содержимому текущего экрана в виде скриншота.
Выполни умозаключение на изображении или видео, размещенном удаленно по URL.
Запусти вывод на изображении, открытом с помощью Python Imaging Library (PIL).
Выполни вывод на изображении, считанном с помощью OpenCV.
Выполни вывод на изображении, представленном в виде массива numpy.
import numpy as np
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")
# Run inference on the source
results = model(source) # list of Results objects
Выполни умозаключение на изображении, представленном в виде PyTorch tensor.
import torch
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)
# Run inference on the source
results = model(source) # list of Results objects
Выполни умозаключение на коллекции изображений, URL, видео и каталогов, перечисленных в CSV-файле.
Выполни умозаключение на видеофайле. Используя stream=True
Ты можешь создать генератор объектов Results, чтобы уменьшить потребление памяти.
Выполни вывод для всех изображений и видео в директории. Чтобы также перехватить изображения и видео в подкаталогах, используй шаблон glob, то есть path/to/dir/**/*
.
Выполни вывод по всем изображениям и видео, которые соответствуют глобальному выражению с *
персонажи.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"
# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Выполни умозаключение на видео с YouTube. Используя stream=True
Ты можешь создать генератор объектов Results, чтобы уменьшить потребление памяти для длинных видео.
Используй режим потоков, чтобы проводить исследования на живых видеопотоках, использующих протоколы RTSP, RTMP, TCP или IP-адреса. Если предоставлен один поток, то модель запускает анализ с размер партии 1. Для нескольких потоков .streams
Текстовый файл может быть использован для выполнения пакетного вывода, где размер пакета определяется количеством предоставленных потоков (например, batch-size 8 для 8 потоков).
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4" # RTSP, RTMP, TCP, or IP streaming address
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
При использовании одного потока размер партии по умолчанию равен 1, что позволяет эффективно обрабатывать видеопоток в реальном времени.
Чтобы обрабатывать несколько видеопотоков одновременно, используй .streams
текстовый файл, содержащий источники потоков. Модель будет выполнять пакетные вычисления, где размер пакета равен количеству потоков. Такая настройка позволяет эффективно обрабатывать несколько потоков одновременно.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams" # *.streams text file with one streaming address per line
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Пример .streams
текстовый файл:
rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...
Каждая строка в файле представляет собой источник потокового вещания, что позволяет тебе отслеживать и делать выводы сразу по нескольким видеопотокам.
Аргументы для умозаключений
model.predict()
Принимает несколько аргументов, которые могут быть переданы во время создания, чтобы отменить значения по умолчанию:
Пример
Аргументы для умозаключений:
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
source | str | 'ultralytics/assets' | Указывает источник данных для выводов. Это может быть путь к изображению, видеофайлу, директории, URL или идентификатор устройства для живых трансляций. Поддерживает широкий спектр форматов и источников, что позволяет гибко использовать различные типы входных данных. |
conf | float | 0.25 | Устанавливает минимальный порог уверенности для обнаружения. Объекты, обнаруженные с уверенностью ниже этого порога, будут проигнорированы. Настройка этого значения может помочь уменьшить количество ложных срабатываний. |
iou | float | 0.7 | Порог Intersection Over Union (IoU) для немаксимального подавления (NMS). Более низкие значения приводят к уменьшению количества обнаружений за счет устранения перекрывающихся боксов, что полезно для уменьшения количества дубликатов. |
imgsz | int or tuple | 640 | Определяет размер изображения для вывода. Может быть одним целым числом 640 для изменения размера квадрата или кортеж (высота, ширина). Правильное изменение размера может улучшить обнаружение точность и скорость обработки информации. |
half | bool | False | Включает вывод с половинной точностью (FP16), что позволяет ускорить вывод модели на поддерживаемых графических процессорах с минимальным влиянием на точность. |
device | str | None | Указывает устройство для умозаключений (например, cpu , cuda:0 или 0 ). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели. |
max_det | int | 300 | Максимальное количество обнаружений, допустимое для одного изображения. Ограничивает общее количество объектов, которые модель может обнаружить за один вывод, предотвращая чрезмерный вывод в плотных сценах. |
vid_stride | int | 1 | Пропуск кадров для видеовходов. Позволяет пропускать кадры в видео, чтобы ускорить обработку за счет снижения временного разрешения. При значении 1 обрабатывается каждый кадр, при больших значениях кадры пропускаются. |
stream_buffer | bool | False | Определяет, ставить ли в очередь входящие кадры для видеопотоков. Если False Если `True', то старые кадры будут пропущены, чтобы разместить новые (оптимизировано для приложений реального времени). Если `True`, то новые кадры ставятся в очередь в буфер, что гарантирует отсутствие пропущенных кадров, но это приведет к задержке, если FPS вывода ниже FPS потока. |
visualize | bool | False | Активирует визуализацию особенностей модели во время вывода, давая представление о том, что "видит" модель. Полезно для отладки и интерпретации модели. |
augment | bool | False | Включает увеличение времени тестирования (TTA) для предсказаний, потенциально улучшая устойчивость обнаружения ценой снижения скорости вывода. |
agnostic_nms | bool | False | Включает диагностируемое классом немаксимальное подавление (NMS), которое объединяет перекрывающиеся боксы разных классов. Полезно в сценариях многоклассового обнаружения, где часто происходит перекрытие классов. |
classes | list[int] | None | Фильтрует предсказания по набору идентификаторов классов. Будут возвращены только те обнаружения, которые относятся к указанным классам. Полезно для того, чтобы сфокусироваться на соответствующих объектах в многоклассовых задачах обнаружения. |
retina_masks | bool | False | Возвращает маски сегментации высокого разрешения. Возвращаемые маски (masks.data ) будут соответствовать размеру оригинального изображения, если они включены. Если отключено, то они будут иметь размер изображения, используемый при выводе. |
embed | list[int] | None | Определяет слои, из которых нужно извлечь векторы признаков или вкрапления. Полезно для последующих задач, таких как кластеризация или поиск сходства. |
project | str | None | Имя директории проекта, в которую сохраняются результаты предсказаний, если save включена. |
name | str | None | Имя прогона предсказания. Используется для создания подкаталога в папке проекта, где будут храниться результаты предсказаний, если save включена. |
Аргументы для визуализации:
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
show | bool | False | Если True Отображает аннотированные изображения или видео в окне. Полезно для мгновенной визуальной обратной связи во время разработки или тестирования. |
save | bool | False или 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 | None или int | None | Определяет ширину линии ограничительных рамок. Если None Ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для наглядности. |
Форматы изображений и видео
YOLO11 поддерживает различные форматы изображений и видео, как указано в ultralytics/data/utils .py. Смотри таблицы ниже, где указаны допустимые суффиксы и примеры команд-предсказателей.
Изображения
В таблице ниже приведены допустимые форматы изображений Ultralytics.
Примечание
Изображения HEIC поддерживаются только для вывода, но не для обучения.
Суффиксы изображений | Пример команды Predict | Ссылка |
---|---|---|
.bmp | yolo predict source=image.bmp | Microsoft Формат файлов BMP |
.dng | yolo predict source=image.dng | Adobe DNG |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Объект с несколькими картинками |
.png | yolo predict source=image.png | Портативная сетевая графика |
.tif | yolo predict source=image.tif | Формат файла изображения тега |
.tiff | yolo predict source=image.tiff | Формат файла изображения тега |
.webp | yolo predict source=image.webp | WebP |
.pfm | yolo predict source=image.pfm | Портативная карта поплавков |
.HEIC | yolo predict source=image.HEIC | Высокоэффективный формат изображения |
Видео
В таблице ниже приведены действующие форматы видео Ultralytics.
Суффиксы для видео | Пример команды Predict | Ссылка |
---|---|---|
.asf | yolo predict source=video.asf | Формат продвинутых систем |
.avi | yolo predict source=video.avi | Audio Video Interleave |
.gif | yolo predict source=video.gif | Формат обмена графикой |
.m4v | yolo predict source=video.m4v | MPEG-4 Part 14 |
.mkv | yolo predict source=video.mkv | Матроска |
.mov | yolo predict source=video.mov | Формат файлов QuickTime |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Part 14 - Википедия |
.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 |
.wmv | yolo predict source=video.wmv | Windows Media Video |
.webm | yolo predict source=video.webm | Проект WebM |
Работа с результатами
Все Ultralytics predict()
вызовы будут возвращать список Results
предметы:
Результаты
Results
Объекты имеют следующие атрибуты:
Атрибут | Тип | Описание |
---|---|---|
orig_img | numpy.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, содержащий ориентированные ограничительные рамки. |
speed | dict | Словарь скоростей препроцесса, вывода и постпроцесса в миллисекундах на изображение. |
names | dict | Словарь имен классов. |
path | str | Путь к файлу с изображением. |
Results
У объектов есть следующие методы:
Метод | Тип возврата | Описание |
---|---|---|
update() | None | Обнови атрибуты box, masks и probs объекта Results. |
cpu() | Results | Верни копию объекта Results со всеми тензорами в памяти CPU . |
numpy() | Results | Возвращай копию объекта Results со всеми тензорами в виде массивов numpy. |
cuda() | Results | Верни копию объекта Results со всеми тензорами в памяти GPU . |
to() | Results | Верни копию объекта Results с тензорами на указанном устройстве и dtype. |
new() | Results | Возвращай новый объект Results с тем же изображением, путем и именами. |
plot() | numpy.ndarray | Построил график результатов обнаружения. Возвращает массив numpy с аннотированным изображением. |
show() | None | Покажи аннотированные результаты на экране. |
save() | None | Сохрани аннотированные результаты в файл. |
verbose() | str | Возвращай строку журнала для каждого задания. |
save_txt() | None | Сохрани предсказания в txt-файл. |
save_crop() | None | Сохрани обрезанные предсказания в save_dir/cls/file_name.jpg . |
tojson() | str | Преобразуй объект в формат JSON. |
Более подробную информацию можно найти в Results
документация по классам.
Коробки
Boxes
Объект можно использовать для индексации, манипуляций и преобразования ограничительных рамок в различные форматы.
Коробки
Вот таблица для Boxes
Методы и свойства класса, включая их название, тип и описание:
Имя | Тип | Описание |
---|---|---|
cpu() | Метод | Перемести объект в память CPU . |
numpy() | Метод | Преобразуй объект в массив numpy. |
cuda() | Метод | Перемести объект в память CUDA . |
to() | Метод | Перемести объект на указанное устройство. |
xyxy | Собственность (torch.Tensor ) | Возвращай коробки в формате xyxy. |
conf | Собственность (torch.Tensor ) | Верни доверительные значения ящиков. |
cls | Собственность (torch.Tensor ) | Верни значения классов ящиков. |
id | Собственность (torch.Tensor ) | Верни идентификаторы треков коробок (если они есть). |
xywh | Собственность (torch.Tensor ) | Верни коробки в формате xywh. |
xyxyn | Собственность (torch.Tensor ) | Возвращай коробки в формате xyxy, нормализованные по размеру исходного изображения. |
xywhn | Собственность (torch.Tensor ) | Возвращай коробки в формате xywh, нормализованные по размеру исходного изображения. |
Более подробную информацию можно найти в Boxes
документация по классам.
Маски
Masks
Объект можно использовать для индексации, манипулирования и преобразования масок в сегменты.
Маски
Вот таблица для Masks
Методы и свойства класса, включая их название, тип и описание:
Имя | Тип | Описание |
---|---|---|
cpu() | Метод | Возвращает маски tensor на CPU памяти. |
numpy() | Метод | Возвращает маски tensor в виде массива numpy. |
cuda() | Метод | Возвращает маски tensor на GPU памяти. |
to() | Метод | Возвращает маски tensor с указанным устройством и dtype. |
xyn | Собственность (torch.Tensor ) | Список нормализованных сегментов, представленных в виде тензоров. |
xy | Собственность (torch.Tensor ) | Список сегментов в пиксельных координатах, представленных в виде тензоров. |
Более подробную информацию можно найти в Masks
документация по классам.
Ключевые моменты
Keypoints
Объект можно использовать для индексации, манипулирования и нормализации координат.
Ключевые моменты
Вот таблица для Keypoints
Методы и свойства класса, включая их название, тип и описание:
Имя | Тип | Описание |
---|---|---|
cpu() | Метод | Возвращает ключевые точки tensor на CPU памяти. |
numpy() | Метод | Возвращает ключевые точки tensor в виде массива numpy. |
cuda() | Метод | Возвращает ключевые точки tensor на GPU памяти. |
to() | Метод | Возвращает ключевые точки tensor с указанным устройством и dtype. |
xyn | Собственность (torch.Tensor ) | Список нормализованных ключевых точек, представленных в виде тензоров. |
xy | Собственность (torch.Tensor ) | Список ключевых точек в пиксельных координатах, представленных в виде тензоров. |
conf | Собственность (torch.Tensor ) | Возвращает доверительные значения ключевых точек, если они доступны, иначе - нет. |
Более подробную информацию можно найти в Keypoints
документация по классам.
Probs
Probs
объект можно использовать для индексации, получения top1
и top5
Индексы и баллы классификации.
Probs
Вот таблица, в которой обобщены методы и свойства для Probs
класс:
Имя | Тип | Описание |
---|---|---|
cpu() | Метод | Возвращает копию probs tensor на CPU памяти. |
numpy() | Метод | Возвращает копию probs tensor в виде массива numpy. |
cuda() | Метод | Возвращает копию probs tensor на GPU памяти. |
to() | Метод | Возвращает копию probs tensor с указанным устройством и dtype. |
top1 | Собственность (int ) | Индекс высшего 1 класса. |
top5 | Собственность (list[int] ) | Индексы 5 лучших классов. |
top1conf | Собственность (torch.Tensor ) | Уверенность в том, что это топ-1 класс. |
top5conf | Собственность (torch.Tensor ) | Кондиции 5 лучших классов. |
Более подробную информацию можно найти в Probs
документация по классам.
OBB
OBB
Объект можно использовать для индексации, манипулирования и преобразования ориентированных ограничительных блоков в различные форматы.
OBB
Вот таблица для OBB
Методы и свойства класса, включая их название, тип и описание:
Имя | Тип | Описание |
---|---|---|
cpu() | Метод | Перемести объект в память CPU . |
numpy() | Метод | Преобразуй объект в массив numpy. |
cuda() | Метод | Перемести объект в память CUDA . |
to() | Метод | Перемести объект на указанное устройство. |
conf | Собственность (torch.Tensor ) | Верни доверительные значения ящиков. |
cls | Собственность (torch.Tensor ) | Верни значения классов ящиков. |
id | Собственность (torch.Tensor ) | Верни идентификаторы треков коробок (если они есть). |
xyxy | Собственность (torch.Tensor ) | Верни горизонтальные коробки в формате xyxy. |
xywhr | Собственность (torch.Tensor ) | Верни повернутые коробки в формате xywhr. |
xyxyxyxy | Собственность (torch.Tensor ) | Верни повернутые коробки в формате xyxyxyxy. |
xyxyxyxyn | Собственность (torch.Tensor ) | Возвращай повернутые коробки в формате xyxyxyxy, нормализованные по размеру изображения. |
Более подробную информацию можно найти в OBB
документация по классам.
Построение результатов
The plot()
метод в Results
Объекты облегчают визуализацию предсказаний, накладывая обнаруженные объекты (такие как ограничительные рамки, маски, ключевые точки и вероятности) на исходное изображение. Этот метод возвращает аннотированное изображение в виде массива NumPy, что позволяет легко отобразить его или сохранить.
Черчение
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg'
results = model(["bus.jpg", "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()
Параметры метода
The plot()
Метод поддерживает различные аргументы для настройки вывода:
Аргумент | Тип | Описание | По умолчанию |
---|---|---|---|
conf | bool | Включи показатели достоверности обнаружения. | True |
line_width | float | Ширина линии ограничительных рамок. Масштабируется с размером изображения, если None . | None |
font_size | float | Размер шрифта текста. Масштабируется с размером изображения, если None . | None |
font | str | Название шрифта для текстовых аннотаций. | 'Arial.ttf' |
pil | bool | Возвращай изображение в виде объекта PIL Image. | False |
img | numpy.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' |
Безопасное для потоков умозаключение
Обеспечение потокобезопасности во время вывода очень важно, когда ты параллельно запускаешь несколько моделей 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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
Чтобы получить подробное представление о потокобезопасном умозаключении с помощью моделей YOLO и пошаговые инструкции, обратись к нашему руководству YOLO Thread-Safe Inference Guide. В этом руководстве ты найдешь всю необходимую информацию, чтобы избежать распространенных подводных камней и обеспечить бесперебойную работу твоих многопоточных выводов.
Источник потокового вещания for
-петля
Вот скрипт Python , использующий OpenCV (cv2
) и YOLO , чтобы запустить процесс инференции на видеокадрах. Этот скрипт предполагает, что ты уже установил необходимые пакеты (opencv-python
и ultralytics
).
Потоковый фор-луп
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo11n.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'.
ВОПРОСЫ И ОТВЕТЫ
Что такое Ultralytics YOLO и его режим предсказания для умозаключений в реальном времени?
Ultralytics YOLO это современная модель для обнаружения, сегментации и классификации объектов в реальном времени. Его режим предсказания позволяет пользователям выполнять высокоскоростные умозаключения на различных источниках данных, таких как изображения, видео и живые потоки. Разработанная с учетом производительности и универсальности, она также предлагает режимы пакетной обработки и потоковой передачи данных. Более подробно о его возможностях ты можешь узнать на сайтеUltralytics YOLO в режиме предсказания.
Как запустить вывод с помощью Ultralytics YOLO на разных источниках данных?
Ultralytics YOLO может обрабатывать самые разные источники данных, включая отдельные изображения, видео, каталоги, URL и потоки. Ты можешь указать источник данных в поле model.predict()
вызывай. Например, используй 'image.jpg'
для локального изображения или 'https://ultralytics.com/images/bus.jpg'
для URL-адреса. Посмотри подробные примеры для различных источники выводов в документации.
Как оптимизировать скорость вывода YOLO и использование памяти?
Чтобы оптимизировать скорость умозаключений и эффективно управлять памятью, ты можешь использовать потоковый режим, установив stream=True
в методе вызова предиктора. Потоковый режим генерирует экономящий память генератор Results
объекты вместо того, чтобы загружать все кадры в память. Для обработки длинных видео или больших наборов данных потоковый режим особенно полезен. Узнай больше о потоковый режим.
Какие аргументы в пользу умозаключений поддерживает Ultralytics YOLO ?
The model.predict()
Метод в YOLO поддерживает различные аргументы, такие как conf
, iou
, imgsz
, device
и многое другое. Эти аргументы позволяют тебе настраивать процесс умозаключения, задавая такие параметры, как пороги доверия, размер изображения и устройство, используемое для вычислений. Подробное описание этих аргументов можно найти в разделе аргументы для вывода Раздел.
Как визуализировать и сохранить результаты предсказаний YOLO ?
После того, как ты запустишь умозаключение с помощью YOLO, ты получишь Results
Объекты содержат методы для отображения и сохранения аннотированных изображений. Ты можешь использовать такие методы, как result.show()
и result.save(filename="result.jpg")
чтобы визуализировать и сохранить результаты. Полный список этих методов ты найдешь в разделе Работа с результатами Раздел.