Перейти к содержанию

Предсказание модели с Ultralytics YOLO

Экосистема и интеграции 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") для визуализации и сохранения результатов. Для получения полного списка этих методов обратитесь к разделу работа с результатами раздел.



📅 Создано 1 год назад ✏️ Обновлено 5 дней назад

Комментарии