Предсказание модели с Ultralytics YOLO
Введение
В мире машинного обучения и компьютерного зрения процесс извлечения смысла из визуальных данных называется 'инференсом' или 'предсказанием'. Ultralytics YOLO11 предлагает мощную функцию, известную как режим predict, который разработан для высокопроизводительного инференса в реальном времени на широком спектре источников данных.
Смотреть: Как извлечь выходные данные из модели Ultralytics YOLO для пользовательских проектов.
Приложения в реальном мире
Производство | Спорт | Безопасность |
---|---|---|
Обнаружение запасных частей для транспортных средств | Обнаружение футболистов | Обнаружение падающих людей |
Зачем использовать Ultralytics YOLO для логического вывода?
Вот почему вам стоит рассмотреть режим predict YOLO11 для различных задач инференса:
- Универсальность: Возможность выполнения инференса на изображениях, видео и даже прямых трансляциях.
- Производительность: Разработан для высокоскоростной обработки в реальном времени без ущерба для точности.
- Простота использования: Интуитивно понятные интерфейсы Python и CLI для быстрого развертывания и тестирования.
- Широкие возможности настройки: Различные настройки и параметры для точной настройки поведения модели в соответствии с вашими конкретными требованиями.
Ключевые особенности режима Predict
Режим predict в YOLO11 разработан как надежный и универсальный, и включает в себя:
- Совместимость с различными источниками данных: Независимо от того, представлены ли ваши данные в виде отдельных изображений, коллекции изображений, видеофайлов или видеопотоков в реальном времени, режим predict обеспечит их обработку.
- Режим потоковой передачи: Используйте функцию потоковой передачи для создания экономного с точки зрения памяти генератора объектов.
Results
Включите эту функцию, установивstream=True
в методе вызова предиктора. - Пакетная обработка: Возможность обработки нескольких изображений или видеокадров в одном пакете, что еще больше ускоряет время инференса.
- Простота интеграции: Легкая интеграция с существующими конвейерами данных и другими программными компонентами благодаря гибкому 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 |
Glob-шаблон для сопоставления нескольких файлов. Используйте * символ * в качестве подстановочного знака. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
URL-адрес видео на YouTube. |
поток ✅ | 'rtsp://example.com/media.mp4' |
str |
URL для потоковых протоколов, таких как RTSP, RTMP, TCP, или IP-адрес. |
multi-stream ✅ | 'list.streams' |
str или Path |
*.streams Текстовый файл с одним URL потока в строке, т.е. 8 потоков будут запущены с размером пакета 8. |
webcam ✅ | 0 |
int |
Индекс подключенного устройства камеры для запуска инференса. |
Ниже приведены примеры кода для использования каждого типа источника:
Источники предсказаний
Запуск инференса на файле изображения.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objects
Запуск инференса на текущем содержимом экрана в виде скриншота.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define current screenshot as source
source = "screen"
# Run inference on the source
results = model(source) # list of Results objects
Запуск инференса на изображении или видео, размещенном удаленно по URL.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"
# Run inference on the source
results = model(source) # list of Results objects
Запуск инференса на изображении, открытом с помощью Python Imaging Library (PIL).
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Open an image using PIL
source = Image.open("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
Запуск инференса на изображении, считанном с помощью OpenCV.
import cv2
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
Запуск инференса на изображении, представленном в виде массива 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-файле.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"
# Run inference on the source
results = model(source) # list of Results objects
Запуск инференса на видеофайле. Используя stream=True
, вы можете создать генератор объектов Results, чтобы уменьшить использование памяти.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to video file
source = "path/to/video.mp4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Запуск инференса на всех изображениях и видео в каталоге. Чтобы также захватывать изображения и видео в подкаталогах, используйте шаблон glob, т.е. path/to/dir/**/*
.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to directory containing images and videos for inference
source = "path/to/dir"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Запуск инференса на всех изображениях и видео, соответствующих glob-выражению, с *
символами.
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 для снижения использования памяти для длинных видео.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Используйте потоковый режим для запуска инференса на прямых видеотрансляциях, используя протоколы RTSP, RTMP, TCP или IP-адрес. Если предоставлен один поток, модель выполняет инференс с размером пакета (batch-size) размер пакета равным 1. Для нескольких потоков можно использовать .streams
текстовый файл для выполнения пакетного инференса, где размер пакета определяется количеством предоставленных потоков (например, размер пакета 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
...
Каждая строка в файле представляет собой источник потоковой передачи, что позволяет вам отслеживать и выполнять инференс на нескольких видеопотоках одновременно.
Вы можете запустить инференс на подключенном устройстве камеры, передав индекс этой конкретной камеры в source
.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on the source
results = model(source=0, stream=True) # generator of Results objects
Аргументы логического вывода
model.predict()
принимает несколько аргументов, которые можно передавать во время инференса для переопределения значений по умолчанию:
Пример
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.5)
Аргументы инференса:
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Указывает источник данных для инференса. Может быть путем к изображению, видеофайлу, каталогу, URL-адресу или идентификатором устройства для прямых трансляций. Поддерживает широкий спектр форматов и источников, обеспечивая гибкое применение для различных типов входных данных. |
conf |
float |
0.25 |
Устанавливает минимальный порог уверенности для обнаружений. Объекты, обнаруженные с уверенностью ниже этого порога, будут игнорироваться. Настройка этого значения может помочь уменьшить количество ложных срабатываний. |
iou |
float |
0.7 |
Порог Intersection Over Union (IoU) для Non-Maximum Suppression (NMS). Более низкие значения приводят к меньшему количеству обнаружений за счет устранения перекрывающихся прямоугольников, что полезно для уменьшения дубликатов. |
imgsz |
int или tuple |
640 |
Определяет размер изображения для инференса. Может быть одним целым числом 640 для квадратного изменения размера или кортежем (высота, ширина). Правильное определение размера может улучшить обнаружение точность и скорость обработки. |
rect |
bool |
True |
Если включено, минимально дополняет короткую сторону изображения до тех пор, пока она не станет делимой на шаг, чтобы улучшить скорость inference. Если отключено, дополняет изображение до квадрата во время inference. |
half |
bool |
False |
Включает инференс с половинной точностью (FP16), что может ускорить инференс модели на поддерживаемых GPU с минимальным влиянием на точность. |
device |
str |
None |
Указывает устройство для инференса (например, cpu , cuda:0 или 0 ). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели. |
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), не зависящее от классов, которое объединяет перекрывающиеся рамки разных классов. Полезно в сценариях обнаружения нескольких классов, где перекрытие классов является обычным явлением. |
classes |
list[int] |
None |
Фильтрует прогнозы по набору идентификаторов классов. Будут возвращены только обнаружения, принадлежащие указанным классам. Полезно для фокусировки на релевантных объектах в задачах обнаружения нескольких классов. |
retina_masks |
bool |
False |
Возвращает маски сегментации высокого разрешения. Возвращаемые маски (masks.data ) будут соответствовать исходному размеру изображения, если эта функция включена. Если она отключена, они будут иметь размер изображения, используемый во время инференса. |
embed |
list[int] |
None |
Указывает слои, из которых извлекать векторы признаков или embeddings. Полезно для последующих задач, таких как кластеризация или поиск сходства. |
project |
str |
None |
Имя каталога проекта, в котором сохраняются выходные данные прогнозирования, если save включено. |
name |
str |
None |
Имя запуска прогнозирования. Используется для создания подкаталога в папке проекта, где хранятся выходные данные прогнозирования, если save включено. |
stream |
bool |
False |
Включает энергоэффективную обработку длинных видео или многочисленных изображений, возвращая генератор объектов Results вместо загрузки всех кадров в память одновременно. |
verbose |
bool |
True |
Управляет отображением подробных журналов выводов в терминале, обеспечивая обратную связь в режиме реального времени о процессе прогнозирования. |
Аргументы визуализации:
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
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 |
None or int |
None |
Указывает ширину линии ограничивающих рамок. Если None , ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для большей четкости. |
Форматы изображений и видео
YOLO11 поддерживает различные форматы изображений и видео, как указано в ultralytics/data/utils.py. В таблицах ниже приведены допустимые суффиксы и примеры команд predict.
Изображения
В таблице ниже представлены допустимые форматы изображений Ultralytics.
Примечание
Изображения HEIC поддерживаются только для inference, но не для обучения.
Суффиксы изображений | Пример команды 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 |
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 |
.pfm |
yolo predict source=image.pfm |
Portable FloatMap |
.HEIC |
yolo predict source=image.HEIC |
High Efficiency Image Format |
Видео
В таблице ниже представлены допустимые форматы видео Ultralytics.
Суффиксы видео | Пример команды Predict | Справочник |
---|---|---|
.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 |
Работа с результатами
Все Ultralytics predict()
вызовы будут возвращать список Results
объектов:
Results
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # batch inference
Results
объекты имеют следующие атрибуты:
Атрибут | Тип | Описание |
---|---|---|
orig_img |
np.ndarray |
Исходное изображение в виде массива numpy. |
orig_shape |
tuple |
Форма исходного изображения в формате (высота, ширина). |
boxes |
Boxes, optional |
Объект Boxes, содержащий ограничивающие рамки обнаружения. |
masks |
Masks, optional |
Объект Masks, содержащий маски обнаружения. |
probs |
Probs, optional |
Объект Probs, содержащий вероятности каждого класса для задачи классификации. |
keypoints |
Keypoints, optional |
Объект Keypoints, содержащий обнаруженные ключевые точки для каждого объекта. |
obb |
OBB, optional |
Объект OBB, содержащий ориентированные ограничивающие рамки. |
speed |
dict |
Словарь скоростей предварительной обработки, логического вывода и постобработки в миллисекундах на изображение. |
names |
dict |
Словарь, сопоставляющий индексы классов с названиями классов. |
path |
str |
Путь к файлу изображения. |
save_dir |
str, optional |
Директория для сохранения результатов. |
Results
объекты имеют следующие методы:
Метод | Тип возвращаемого значения | Описание |
---|---|---|
update() |
None |
Обновляет объект Results новыми данными обнаружения (boxes, masks, probs, obb, keypoints). |
cpu() |
Results |
Возвращает копию объекта Results со всеми tensor, перемещенными в память CPU. |
numpy() |
Results |
Возвращает копию объекта Results со всеми tensor, преобразованными в массивы numpy. |
cuda() |
Results |
Возвращает копию объекта Results со всеми tensor, перемещенными в память GPU. |
to() |
Results |
Возвращает копию объекта Results с tensor, перемещенными на указанное устройство и тип данных. |
new() |
Results |
Создает новый объект Results с теми же атрибутами image, path, names и speed. |
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
объект можно использовать для индексации, управления и преобразования ограничивающих рамок в различные форматы.
Прямоугольники
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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 ) |
Возвращает идентификаторы отслеживания рамок (если они доступны). |
xywh |
Свойство (torch.Tensor ) |
Возвращает рамки в формате xywh. |
xyxyn |
Свойство (torch.Tensor ) |
Возвращает ограничивающие рамки в формате xyxy, нормализованные по размеру исходного изображения. |
xywhn |
Свойство (torch.Tensor ) |
Возвращает ограничивающие рамки в формате xywh, нормализованные по размеру исходного изображения. |
Для получения более подробной информации см. Boxes
документацию класса.
Маски
Masks
Объект может использоваться для индексации, манипулирования и преобразования масок в сегменты.
Маски
from ultralytics import YOLO
# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-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() |
Метод | Возвращает tensor масок в память CPU. |
numpy() |
Метод | Возвращает tensor масок в виде массива numpy. |
cuda() |
Метод | Возвращает tensor масок в память GPU. |
to() |
Метод | Возвращает tensor масок с указанным устройством и типом данных. |
xyn |
Свойство (torch.Tensor ) |
Список нормализованных сегментов, представленных в виде тензоров. |
xy |
Свойство (torch.Tensor ) |
Список сегментов в пиксельных координатах, представленных в виде тензоров. |
Для получения более подробной информации см. Masks
документацию класса.
Ключевые точки
Keypoints
Объект может использоваться для индексации, манипулирования и нормализации координат.
Ключевые точки
from ultralytics import YOLO
# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-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() |
Метод | Возвращает tensor ключевых точек в память CPU. |
numpy() |
Метод | Возвращает tensor ключевых точек в виде массива numpy. |
cuda() |
Метод | Возвращает tensor ключевых точек в память GPU. |
to() |
Метод | Возвращает tensor ключевых точек с указанным устройством и типом данных. |
xyn |
Свойство (torch.Tensor ) |
Список нормализованных ключевых точек, представленных в виде тензоров. |
xy |
Свойство (torch.Tensor ) |
Список ключевых точек в пиксельных координатах, представленных в виде тензоров. |
conf |
Свойство (torch.Tensor ) |
Возвращает значения достоверности ключевых точек, если они доступны, иначе None. |
Для получения более подробной информации см. Keypoints
документацию класса.
Вероятности
Probs
Объект может использоваться для индексации, получения top1
и top5
индексов и оценок классификации.
Вероятности
from ultralytics import YOLO
# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-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() |
Метод | Возвращает копию tensor вероятностей в память CPU. |
numpy() |
Метод | Возвращает копию tensor вероятностей в виде массива numpy. |
cuda() |
Метод | Возвращает копию tensor вероятностей в память GPU. |
to() |
Метод | Возвращает копию tensor вероятностей с указанным устройством и типом данных. |
top1 |
Свойство (int ) |
Индекс класса с наибольшей вероятностью. |
top5 |
Свойство (list[int] ) |
Индексы 5 классов с наибольшей вероятностью. |
top1conf |
Свойство (torch.Tensor ) |
Достоверность класса с наибольшей вероятностью. |
top5conf |
Свойство (torch.Tensor ) |
Достоверности 5 классов с наибольшей вероятностью. |
Для получения более подробной информации см. Probs
документацию класса.
OBB
OBB
объект может использоваться для индексации, управления и преобразования ориентированных ограничивающих рамок в различные форматы.
OBB
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n-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 ) |
Возвращает идентификаторы отслеживания рамок (если они доступны). |
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 YOLO11n model
model = YOLO("yolo11n.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 в многопоточном приложении важно создавать отдельные объекты модели для каждого потока или использовать 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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
Для более подробного ознакомления с потокобезопасным инференсом с моделями YOLO и пошаговыми инструкциями, пожалуйста, обратитесь к нашему Руководству по потокобезопасному инференсу YOLO. Это руководство предоставит вам всю необходимую информацию, чтобы избежать распространенных ошибок и обеспечить бесперебойную работу многопоточного инференса.
Потоковый источник for
-loop
Вот скрипт на python с использованием OpenCV (cv2
) и YOLO для запуска инференса на видеокадрах. Этот скрипт предполагает, что у вас уже установлены необходимые пакеты (opencv-python
и ultralytics
).
Потоковый for-loop
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 и его режим predict для инференса в реальном времени?
Ultralytics YOLO — это современная модель для обнаружения объектов, сегментации и классификации в реальном времени. Ее режим predict позволяет пользователям выполнять высокоскоростной инференс на различных источниках данных, таких как изображения, видео и прямые трансляции. Разработанная для производительности и универсальности, она также предлагает пакетную обработку и режимы потоковой передачи. Для получения более подробной информации о ее функциях ознакомьтесь с режимом Ultralytics YOLO predict.
Как я могу запустить инференс, используя 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")
для визуализации и сохранения результатов. Для получения полного списка этих методов обратитесь к разделу работа с результатами раздел.