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

Предсказание модели с 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 объектов или генератор, экономящий память 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'strURL-адрес изображения.
скриншот'screen'strСделать скриншот.
PILImage.open('image.jpg')PIL.ImageФормат HWC с каналами RGB.
OpenCVcv2.imread('image.jpg')np.ndarrayФормат HWC с каналами BGR. uint8 (0-255).
numpynp.zeros((640,1280,3))np.ndarrayФормат HWC с каналами BGR. uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorФормат BCHW с каналами RGB. float32 (0.0-1.0).
CSV'sources.csv'str или PathCSV-файл, содержащий пути к изображениям, видео или каталогам.
видео ✅'video.mp4'str или PathВидеофайл в таких форматах, как MP4, AVI и т. д.
каталог ✅'path/'str или PathПуть к каталогу, содержащему изображения или видео.
glob ✅'path/*.jpg'strGlob-шаблон для сопоставления нескольких файлов. Используйте * символ * в качестве подстановочного знака.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL-адрес видео на YouTube.
поток ✅'rtsp://example.com/media.mp4'strURL для потоковых протоколов, таких как RTSP, RTMP, TCP, или IP-адрес.
multi-stream ✅'list.streams'str или Path*.streams Текстовый файл с одним URL потока в строке, т.е. 8 потоков будут запущены с размером пакета 8.
webcam ✅0intИндекс подключенного устройства камеры для запуска инференса.

Ниже приведены примеры кода для использования каждого типа источника:

Источники предсказаний

Запуск инференса на файле изображения.

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() принимает несколько аргументов, которые можно передавать во время инференса для переопределения значений по умолчанию:

Примечание

По умолчанию Ultralytics использует минимальную прокладку при выводе (rect=True). В этом режиме короткая сторона каждого изображения увеличивается настолько, насколько это необходимо, чтобы сделать ее кратной максимальному шагу модели, вместо того чтобы увеличивать ее полностью imgsz. При выполнении вычислений на партии изображений минимальная подкладка работает только в том случае, если все изображения имеют одинаковый размер. В противном случае изображения равномерно подгоняются к квадратной форме с обеими сторонами, равными imgsz.

  • batch=1, используя rect по умолчанию.
  • batch>1, используя rect только если все изображения в одной партии имеют одинаковый размер, в противном случае используйте квадратную подложку для imgsz.

Пример

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)
# Run inference on 'bus.jpg'
yolo predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'

Аргументы инференса:

АргументТипПо умолчаниюОписание
sourcestr'ultralytics/assets'Указывает источник данных для инференса. Может быть путем к изображению, видеофайлу, каталогу, URL-адресу или идентификатором устройства для прямых трансляций. Поддерживает широкий спектр форматов и источников, обеспечивая гибкое применение для различных типов входных данных.
conffloat0.25Устанавливает минимальный порог уверенности для обнаружений. Объекты, обнаруженные с уверенностью ниже этого порога, будут игнорироваться. Настройка этого значения может помочь уменьшить количество ложных срабатываний.
ioufloat0.7Порог Intersection Over Union (IoU) для Non-Maximum Suppression (NMS). Более низкие значения приводят к меньшему количеству обнаружений за счет устранения перекрывающихся прямоугольников, что полезно для уменьшения дубликатов.
imgszint или tuple640Определяет размер изображения для инференса. Может быть одним целым числом 640 для квадратного изменения размера или кортежем (высота, ширина). Правильное определение размера может улучшить обнаружение точность и скорость обработки.
rectboolTrueЕсли включено, минимально дополняет короткую сторону изображения до тех пор, пока она не станет делимой на шаг, чтобы улучшить скорость inference. Если отключено, дополняет изображение до квадрата во время inference.
halfboolFalseВключает инференс с половинной точностью (FP16), что может ускорить инференс модели на поддерживаемых GPU с минимальным влиянием на точность.
devicestrNoneУказывает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.
batchint1Указывает размер пакета для инференса (работает только когда источник - каталог, видеофайл или .txt файла). Больший размер пакета может обеспечить более высокую пропускную способность, сокращая общее время, необходимое для логического вывода.
max_detint300Максимальное количество обнаружений, разрешенное для одного изображения. Ограничивает общее количество объектов, которые модель может обнаружить за один инференс, предотвращая избыточные выходные данные в плотных сценах.
vid_strideint1Шаг кадров для видеовходов. Позволяет пропускать кадры в видео для ускорения обработки за счет снижения временного разрешения. Значение 1 обрабатывает каждый кадр, более высокие значения пропускают кадры.
stream_bufferboolFalseОпределяет, следует ли ставить входящие кадры в очередь для видеопотоков. Если False, старые кадры отбрасываются для размещения новых кадров (оптимизировано для приложений реального времени). Если True, ставит новые кадры в очередь в буфере, гарантируя, что ни один кадр не будет пропущен, но вызовет задержку, если FPS логического вывода ниже, чем FPS потока.
visualizeboolFalseАктивирует визуализацию особенностей модели во время инференса, предоставляя понимание того, что «видит» модель. Полезно для отладки и интерпретации модели.
augmentboolFalseВключает расширение данных во время теста (TTA) для прогнозов, что потенциально повышает устойчивость обнаружения за счет скорости инференса.
agnostic_nmsboolFalseВключает Non-Maximum Suppression (NMS), не зависящее от классов, которое объединяет перекрывающиеся рамки разных классов. Полезно в сценариях обнаружения нескольких классов, где перекрытие классов является обычным явлением.
classeslist[int]NoneФильтрует прогнозы по набору идентификаторов классов. Будут возвращены только обнаружения, принадлежащие указанным классам. Полезно для фокусировки на релевантных объектах в задачах обнаружения нескольких классов.
retina_masksboolFalseВозвращает маски сегментации высокого разрешения. Возвращаемые маски (masks.data) будут соответствовать исходному размеру изображения, если эта функция включена. Если она отключена, они будут иметь размер изображения, используемый во время инференса.
embedlist[int]NoneУказывает слои, из которых извлекать векторы признаков или embeddings. Полезно для последующих задач, таких как кластеризация или поиск сходства.
projectstrNoneИмя каталога проекта, в котором сохраняются выходные данные прогнозирования, если save включено.
namestrNoneИмя запуска прогнозирования. Используется для создания подкаталога в папке проекта, где хранятся выходные данные прогнозирования, если save включено.
streamboolFalseВключает энергоэффективную обработку длинных видео или многочисленных изображений, возвращая генератор объектов Results вместо загрузки всех кадров в память одновременно.
verboseboolTrueУправляет отображением подробных журналов выводов в терминале, обеспечивая обратную связь в режиме реального времени о процессе прогнозирования.
compilebool или strFalseВключает PyTorch 2.x torch.compile компиляция графа с помощью backend='inductor'. Принимает True"default", False → отключается, или строковый режим, например "default", "reduce-overhead", "max-autotune-no-cudagraphs". При отсутствии поддержки возвращается в режим eager с предупреждением.

Аргументы визуализации:

АргументТипПо умолчаниюОписание
showboolFalseЕсли True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования.
saveboolFalse or TrueПозволяет сохранять аннотированные изображения или видео в файлы. Полезно для документации, дальнейшего анализа или обмена результатами. По умолчанию имеет значение True при использовании CLI и False при использовании Python.
save_framesboolFalseПри обработке видео сохраняет отдельные кадры как изображения. Полезно для извлечения определенных кадров или для детального покадрового анализа.
save_txtboolFalseСохраняет результаты обнаружения в текстовом файле в формате [class] [x_center] [y_center] [width] [height] [confidence]. Полезно для интеграции с другими инструментами анализа.
save_confboolFalseВключает оценки достоверности в сохраненные текстовые файлы. Улучшает детализацию, доступную для постобработки и анализа.
save_cropboolFalseСохраняет вырезанные изображения обнаружений. Полезно для расширения набора данных, анализа или создания сфокусированных наборов данных для определенных объектов.
show_labelsboolTrueОтображает метки для каждого обнаружения в визуальном выводе. Обеспечивает немедленное понимание обнаруженных объектов.
show_confboolTrueОтображает оценку достоверности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели для каждого обнаружения.
show_boxesboolTrueРисует ограничивающие рамки вокруг обнаруженных объектов. Необходим для визуальной идентификации и определения местоположения объектов на изображениях или видеокадрах.
line_widthNone or intNoneУказывает ширину линии ограничивающих рамок. Если None, ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для большей четкости.

Форматы изображений и видео

YOLO11 поддерживает различные форматы изображений и видео, как указано в ultralytics/data/utils.py. В таблицах ниже приведены допустимые суффиксы и примеры команд predict.

Изображения

В таблице ниже представлены допустимые форматы изображений Ultralytics.

Примечание

Изображения HEIC поддерживаются только для inference, но не для обучения.

Суффиксы изображенийПример команды PredictСправочник
.bmpyolo predict source=image.bmpФормат файлов Microsoft BMP
.dngyolo predict source=image.dngAdobe DNG
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP
.pfmyolo predict source=image.pfmPortable FloatMap
.HEICyolo predict source=image.HEICHigh Efficiency Image Format

Видео

В таблице ниже представлены допустимые форматы видео Ultralytics.

Суффиксы видеоПример команды PredictСправочник
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM 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_imgnp.ndarrayИсходное изображение в виде массива numpy.
orig_shapetupleФорма исходного изображения в формате (высота, ширина).
boxesBoxes, optionalОбъект Boxes, содержащий ограничивающие рамки обнаружения.
masksMasks, optionalОбъект Masks, содержащий маски обнаружения.
probsProbs, optionalОбъект Probs, содержащий вероятности каждого класса для задачи классификации.
keypointsKeypoints, optionalОбъект Keypoints, содержащий обнаруженные ключевые точки для каждого объекта.
obbOBB, optionalОбъект OBB, содержащий ориентированные ограничивающие рамки.
speeddictСловарь скоростей предварительной обработки, логического вывода и постобработки в миллисекундах на изображение.
namesdictСловарь, сопоставляющий индексы классов с названиями классов.
pathstrПуть к файлу изображения.
save_dirstr, 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() метод поддерживает различные аргументы для настройки вывода:

АргументТипОписаниеПо умолчанию
confboolВключить оценки достоверности обнаружения.True
line_widthfloatШирина линии ограничивающих рамок. Масштабируется с размером изображения, если None.None
font_sizefloatРазмер шрифта текста. Масштабируется с размером изображения, если None.None
fontstrНазвание шрифта для текстовых аннотаций.'Arial.ttf'
pilboolВозвращает изображение в виде объекта PIL Image.False
imgnp.ndarrayАльтернативное изображение для построения графика. Использует исходное изображение, если None.None
im_gputorch.TensorGPU-ускоренное изображение для более быстрой отрисовки масок. Форма: (1, 3, 640, 640).None
kpt_radiusintРадиус для нарисованных ключевых точек.5
kpt_lineboolСоединить ключевые точки линиями.True
labelsboolВключить метки классов в аннотации.True
boxesboolНаложить ограничивающие рамки на изображение.True
masksboolНаложить маски на изображение.True
probsboolВключить вероятности классификации.True
showboolОтобразить аннотированное изображение непосредственно с помощью программы просмотра изображений по умолчанию.False
saveboolСохранить аннотированное изображение в файл, указанный в filename.False
filenamestrПуть и имя файла для сохранения аннотированного изображения, если save является True.None
color_modestrУкажите цветовой режим, например, 'instance' или 'class'.'class'
txt_colortuple[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") для визуализации и сохранения результатов. Для получения полного списка этих методов обратитесь к разделу работа с результатами раздел.



📅 Создано 2 года назад ✏️ Обновлено 3 дня назад
glenn-jocherRizwanMunawarLaughing-qUltralyticsAssistantMatthewNoyceY-T-GБану4прасадjk4esergiuwaxmannIvorZhu331Burhan-QplashchynskitensorturtleAyushExel

Комментарии