Перейти к содержимому

Модель предсказания с Ultralytics YOLO

Ultralytics YOLO Экосистема и интеграции

Введение

В мире машинного обучения и компьютерного зрения процесс извлечения смысла из визуальных данных называется "умозаключением" или "предсказанием". Ultralytics В YOLO11 есть мощная функция, известная как режим предсказания, которая предназначена для высокопроизводительных умозаключений в реальном времени на широком спектре источников данных.



Смотри: Как извлечь выходные данные из Ultralytics YOLO Model для пользовательских проектов.

Применение в реальном мире

ПроизводствоСпортБезопасность
Обнаружение запасных частей для автомобилейОбнаружение футболистовОбнаружение падения людей
Обнаружение запасных частей для автомобилейОбнаружение футболистовОбнаружение падения людей

Зачем использовать Ultralytics YOLO для выводов?

Вот почему тебе стоит обратить внимание на режим предсказаний YOLO11 для решения различных задач, связанных с умозаключениями:

  • Универсальность: Способен делать выводы по изображениям, видео и даже живым потокам.
  • Производительность: Разработан для высокоскоростной обработки данных в режиме реального времени без ущерба для точности.
  • Простота использования: интуитивно понятные интерфейсы Python и CLI для быстрого развертывания и тестирования.
  • Высокая настраиваемость: Различные настройки и параметры, позволяющие настроить поведение модели в выводах в соответствии с твоими специфическими требованиями.

Ключевые особенности режима Predict Mode

Режим предсказаний YOLO11 отличается надежностью и универсальностью:

  • Совместимость с несколькими источниками данных: Неважно, в какой форме представлены твои данные - в виде отдельных изображений, коллекции изображений, видеофайлов или видеопотоков в реальном времени, - режим предсказаний обеспечит тебя всем необходимым.
  • Режим потокового вещания: Используй функцию потоковой передачи данных, чтобы сгенерировать экономящий память генератор Results предметы. Включи эту функцию, установив stream=True в методе вызова предиктора.
  • Пакетная обработка: Возможность обрабатывать несколько изображений или видеокадров в одном пакете, что еще больше ускоряет время вывода.
  • Integration Friendly: Легко интегрируйся с существующими конвейерами данных и другими программными компонентами благодаря гибкому API.

Модели Ultralytics YOLO возвращают либо список Python Results объекты, или экономящий память Python-генератор Results предметы, когда stream=True передается модели во время вычисления:

Предсказывай

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk
from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True)  # return a generator of Results objects

# Process results generator
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk

Источники для выводов

YOLO11 может обрабатывать различные типы входных источников для выводов, как показано в таблице ниже. Среди источников - статичные изображения, видеопотоки и различные форматы данных. В таблице также указано, можно ли использовать каждый источник в потоковом режиме с помощью аргумента stream=True ✅. Режим стриминга выгоден для обработки видео или живых потоков, так как он создает генератор результатов вместо загрузки всех кадров в память.

Наконечник

Используй stream=True для обработки длинных видео или больших наборов данных, чтобы эффективно распоряжаться памятью. Когда stream=FalseРезультаты для всех кадров или точек данных хранятся в памяти, что может быстро нарастать и вызывать ошибки вне памяти при больших входных данных. В отличие от этого, stream=True Использует генератор, который хранит в памяти только результаты текущего кадра или точки данных, что значительно снижает потребление памяти и предотвращает проблемы с выходом за пределы памяти.

ИсточникПримерТипПримечания
изображение'image.jpg'str или PathОдиночный файл с изображением.
URL'https://ultralytics.com/images/bus.jpg'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'strГлобальный шаблон для сопоставления нескольких файлов. Используй * символ в качестве подстановочного знака.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL-адрес видеоролика на YouTube.
поток ✅'rtsp://example.com/media.mp4'strURL для потоковых протоколов, таких как RTSP, RTMP, TCP, или IP-адрес.
многопоточный ✅'list.streams'str или Path*.streams текстовый файл с одним URL-адресом потока на строку, то есть 8 потоков будут запущены при batch-size 8.
Веб-камера ✅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

Выполни вывод по всем изображениям и видео, которые соответствуют глобальному выражению с * персонажи.

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-адреса. Если предоставлен один поток, то модель запускает анализ с размер партии 1. Для нескольких потоков .streams Текстовый файл может быть использован для выполнения пакетного вывода, где размер пакета определяется количеством предоставленных потоков (например, batch-size 8 для 8 потоков).

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4"  # RTSP, RTMP, TCP, or IP streaming address

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

При использовании одного потока размер партии по умолчанию равен 1, что позволяет эффективно обрабатывать видеопоток в реальном времени.

Чтобы обрабатывать несколько видеопотоков одновременно, используй .streams текстовый файл, содержащий источники потоков. Модель будет выполнять пакетные вычисления, где размер пакета равен количеству потоков. Такая настройка позволяет эффективно обрабатывать несколько потоков одновременно.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams"  # *.streams text file with one streaming address per line

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Пример .streams текстовый файл:

rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...

Каждая строка в файле представляет собой источник потокового вещания, что позволяет тебе отслеживать и делать выводы сразу по нескольким видеопотокам.

Ты можешь запустить вывод на подключенном устройстве камеры, передав индекс этой конкретной камеры в 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("bus.jpg", save=True, imgsz=320, conf=0.5)

Аргументы для умозаключений:

АргументТипПо умолчаниюОписание
sourcestr'ultralytics/assets'Указывает источник данных для выводов. Это может быть путь к изображению, видеофайлу, директории, URL или идентификатор устройства для живых трансляций. Поддерживает широкий спектр форматов и источников, что позволяет гибко использовать различные типы входных данных.
conffloat0.25Устанавливает минимальный порог уверенности для обнаружения. Объекты, обнаруженные с уверенностью ниже этого порога, будут проигнорированы. Настройка этого значения может помочь уменьшить количество ложных срабатываний.
ioufloat0.7Порог Intersection Over Union (IoU) для немаксимального подавления (NMS). Более низкие значения приводят к уменьшению количества обнаружений за счет устранения перекрывающихся боксов, что полезно для уменьшения количества дубликатов.
imgszint or tuple640Определяет размер изображения для вывода. Может быть одним целым числом 640 для изменения размера квадрата или кортеж (высота, ширина). Правильное изменение размера может улучшить обнаружение точность и скорость обработки информации.
halfboolFalseВключает вывод с половинной точностью (FP16), что позволяет ускорить вывод модели на поддерживаемых графических процессорах с минимальным влиянием на точность.
devicestrNoneУказывает устройство для умозаключений (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.
max_detint300Максимальное количество обнаружений, допустимое для одного изображения. Ограничивает общее количество объектов, которые модель может обнаружить за один вывод, предотвращая чрезмерный вывод в плотных сценах.
vid_strideint1Пропуск кадров для видеовходов. Позволяет пропускать кадры в видео, чтобы ускорить обработку за счет снижения временного разрешения. При значении 1 обрабатывается каждый кадр, при больших значениях кадры пропускаются.
stream_bufferboolFalseОпределяет, ставить ли в очередь входящие кадры для видеопотоков. Если FalseЕсли `True', то старые кадры будут пропущены, чтобы разместить новые (оптимизировано для приложений реального времени). Если `True`, то новые кадры ставятся в очередь в буфер, что гарантирует отсутствие пропущенных кадров, но это приведет к задержке, если FPS вывода ниже FPS потока.
visualizeboolFalseАктивирует визуализацию особенностей модели во время вывода, давая представление о том, что "видит" модель. Полезно для отладки и интерпретации модели.
augmentboolFalseВключает увеличение времени тестирования (TTA) для предсказаний, потенциально улучшая устойчивость обнаружения ценой снижения скорости вывода.
agnostic_nmsboolFalseВключает диагностируемое классом немаксимальное подавление (NMS), которое объединяет перекрывающиеся боксы разных классов. Полезно в сценариях многоклассового обнаружения, где часто происходит перекрытие классов.
classeslist[int]NoneФильтрует предсказания по набору идентификаторов классов. Будут возвращены только те обнаружения, которые относятся к указанным классам. Полезно для того, чтобы сфокусироваться на соответствующих объектах в многоклассовых задачах обнаружения.
retina_masksboolFalseВозвращает маски сегментации высокого разрешения. Возвращаемые маски (masks.data) будут соответствовать размеру оригинального изображения, если они включены. Если отключено, то они будут иметь размер изображения, используемый при выводе.
embedlist[int]NoneОпределяет слои, из которых нужно извлечь векторы признаков или вкрапления. Полезно для последующих задач, таких как кластеризация или поиск сходства.
projectstrNoneИмя директории проекта, в которую сохраняются результаты предсказаний, если save включена.
namestrNoneИмя прогона предсказания. Используется для создания подкаталога в папке проекта, где будут храниться результаты предсказаний, если save включена.

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

АргументТипПо умолчаниюОписание
showboolFalseЕсли TrueОтображает аннотированные изображения или видео в окне. Полезно для мгновенной визуальной обратной связи во время разработки или тестирования.
saveboolFalse или 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 или intNoneОпределяет ширину линии ограничительных рамок. Если NoneШирина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для наглядности.

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

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

Изображения

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

Примечание

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

Суффиксы изображенийПример команды PredictСсылка
.bmpyolo predict source=image.bmpMicrosoft Формат файлов BMP
.dngyolo predict source=image.dngAdobe DNG
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoОбъект с несколькими картинками
.pngyolo predict source=image.pngПортативная сетевая графика
.tifyolo predict source=image.tifФормат файла изображения тега
.tiffyolo predict source=image.tiffФормат файла изображения тега
.webpyolo predict source=image.webpWebP
.pfmyolo predict source=image.pfmПортативная карта поплавков
.HEICyolo predict source=image.HEICВысокоэффективный формат изображения

Видео

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

Суффиксы для видеоПример команды PredictСсылка
.asfyolo predict source=video.asfФормат продвинутых систем
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifФормат обмена графикой
.m4vyolo predict source=video.m4vMPEG-4 Part 14
.mkvyolo predict source=video.mkvМатроска
.movyolo predict source=video.movФормат файлов QuickTime
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Википедия
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsТранспортный поток MPEG
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmПроект WebM

Работа с результатами

Все Ultralytics predict() вызовы будут возвращать список Results предметы:

Результаты

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("bus.jpg")  # list of 1 Results object
results = model(["bus.jpg", "zidane.jpg"])  # list of 2 Results objects

Results Объекты имеют следующие атрибуты:

АтрибутТипОписание
orig_imgnumpy.ndarrayОригинальное изображение в виде массива numpy.
orig_shapetupleОригинальная форма изображения в формате (высота, ширина).
boxesBoxes, optionalОбъект Boxes, содержащий ограничительные рамки обнаружения.
masksMasks, optionalОбъект Masks, содержащий маски обнаружения.
probsProbs, optionalОбъект Probs, содержащий вероятности каждого класса для задачи классификации.
keypointsKeypoints, optionalОбъект Keypoints, содержащий обнаруженные ключевые точки для каждого объекта.
obbOBB, optionalОбъект OBB, содержащий ориентированные ограничительные рамки.
speeddictСловарь скоростей препроцесса, вывода и постпроцесса в миллисекундах на изображение.
namesdictСловарь имен классов.
pathstrПуть к файлу с изображением.

Results У объектов есть следующие методы:

МетодТип возвратаОписание
update()NoneОбнови атрибуты box, masks и probs объекта Results.
cpu()ResultsВерни копию объекта Results со всеми тензорами в памяти CPU .
numpy()ResultsВозвращай копию объекта Results со всеми тензорами в виде массивов numpy.
cuda()ResultsВерни копию объекта Results со всеми тензорами в памяти GPU .
to()ResultsВерни копию объекта Results с тензорами на указанном устройстве и dtype.
new()ResultsВозвращай новый объект Results с тем же изображением, путем и именами.
plot()numpy.ndarrayПостроил график результатов обнаружения. Возвращает массив numpy с аннотированным изображением.
show()NoneПокажи аннотированные результаты на экране.
save()NoneСохрани аннотированные результаты в файл.
verbose()strВозвращай строку журнала для каждого задания.
save_txt()NoneСохрани предсказания в txt-файл.
save_crop()NoneСохрани обрезанные предсказания в save_dir/cls/file_name.jpg.
tojson()strПреобразуй объект в формат JSON.

Более подробную информацию можно найти в Results документация по классам.

Коробки

Boxes Объект можно использовать для индексации, манипуляций и преобразования ограничительных рамок в различные форматы.

Коробки

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("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("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 с указанным устройством и dtype.
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("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 с указанным устройством и dtype.
xynСобственность (torch.Tensor)Список нормализованных ключевых точек, представленных в виде тензоров.
xyСобственность (torch.Tensor)Список ключевых точек в пиксельных координатах, представленных в виде тензоров.
confСобственность (torch.Tensor)Возвращает доверительные значения ключевых точек, если они доступны, иначе - нет.

Более подробную информацию можно найти в Keypoints документация по классам.

Probs

Probs объект можно использовать для индексации, получения top1 и top5 Индексы и баллы классификации.

Probs

from ultralytics import YOLO

# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

Вот таблица, в которой обобщены методы и свойства для Probs класс:

ИмяТипОписание
cpu()МетодВозвращает копию probs tensor на CPU памяти.
numpy()МетодВозвращает копию probs tensor в виде массива numpy.
cuda()МетодВозвращает копию probs tensor на GPU памяти.
to()МетодВозвращает копию probs tensor с указанным устройством и dtype.
top1Собственность (int)Индекс высшего 1 класса.
top5Собственность (list[int])Индексы 5 лучших классов.
top1confСобственность (torch.Tensor)Уверенность в том, что это топ-1 класс.
top5confСобственность (torch.Tensor)Кондиции 5 лучших классов.

Более подробную информацию можно найти в Probs документация по классам.

OBB

OBB Объект можно использовать для индексации, манипулирования и преобразования ориентированных ограничительных блоков в различные форматы.

OBB

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n-obb.pt")

# Run inference on an image
results = model("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 документация по классам.

Построение результатов

The plot() метод в Results Объекты облегчают визуализацию предсказаний, накладывая обнаруженные объекты (такие как ограничительные рамки, маски, ключевые точки и вероятности) на исходное изображение. Этот метод возвращает аннотированное изображение в виде массива NumPy, что позволяет легко отобразить его или сохранить.

Черчение

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg'
results = model(["bus.jpg", "zidane.jpg"])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f"results{i}.jpg")

plot() Параметры метода

The plot() Метод поддерживает различные аргументы для настройки вывода:

АргументТипОписаниеПо умолчанию
confboolВключи показатели достоверности обнаружения.True
line_widthfloatШирина линии ограничительных рамок. Масштабируется с размером изображения, если None.None
font_sizefloatРазмер шрифта текста. Масштабируется с размером изображения, если None.None
fontstrНазвание шрифта для текстовых аннотаций.'Arial.ttf'
pilboolВозвращай изображение в виде объекта PIL Image.False
imgnumpy.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'

Безопасное для потоков умозаключение

Обеспечение потокобезопасности во время вывода очень важно, когда ты параллельно запускаешь несколько моделей YOLO в разных потоках. Потокобезопасный вывод гарантирует, что предсказания каждого потока изолированы и не влияют друг на друга, что позволяет избежать условий гонки и обеспечить последовательные и надежные результаты.

При использовании моделей YOLO в многопоточном приложении важно инстанцировать отдельные объекты модели для каждого потока или использовать локальное хранение потоков, чтобы предотвратить конфликты:

Безопасное для потоков умозаключение

Инстанцируй одну модель внутри каждого потока для потокобезопасного вывода:

from threading import Thread

from ultralytics import YOLO


def thread_safe_predict(model, image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    model = YOLO(model)
    results = model.predict(image_path)
    # Process results


# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()

Чтобы получить подробное представление о потокобезопасном умозаключении с помощью моделей YOLO и пошаговые инструкции, обратись к нашему руководству YOLO Thread-Safe Inference Guide. В этом руководстве ты найдешь всю необходимую информацию, чтобы избежать распространенных подводных камней и обеспечить бесперебойную работу твоих многопоточных выводов.

Источник потокового вещания for-петля

Вот скрипт Python , использующий OpenCV (cv2) и YOLO , чтобы запустить процесс инференции на видеокадрах. Этот скрипт предполагает, что ты уже установил необходимые пакеты (opencv-python и ultralytics).

Потоковый фор-луп

import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo11n.pt")

# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLO inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLO Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

Этот скрипт будет запускать предсказания на каждом кадре видео, визуализировать результаты и выводить их в окно. Выйти из цикла можно, нажав 'q'.

ВОПРОСЫ И ОТВЕТЫ

Что такое Ultralytics YOLO и его режим предсказания для умозаключений в реальном времени?

Ultralytics YOLO это современная модель для обнаружения, сегментации и классификации объектов в реальном времени. Его режим предсказания позволяет пользователям выполнять высокоскоростные умозаключения на различных источниках данных, таких как изображения, видео и живые потоки. Разработанная с учетом производительности и универсальности, она также предлагает режимы пакетной обработки и потоковой передачи данных. Более подробно о его возможностях ты можешь узнать на сайтеUltralytics YOLO в режиме предсказания.

Как запустить вывод с помощью Ultralytics YOLO на разных источниках данных?

Ultralytics YOLO может обрабатывать самые разные источники данных, включая отдельные изображения, видео, каталоги, URL и потоки. Ты можешь указать источник данных в поле model.predict() вызывай. Например, используй 'image.jpg' для локального изображения или 'https://ultralytics.com/images/bus.jpg' для URL-адреса. Посмотри подробные примеры для различных источники выводов в документации.

Как оптимизировать скорость вывода YOLO и использование памяти?

Чтобы оптимизировать скорость умозаключений и эффективно управлять памятью, ты можешь использовать потоковый режим, установив stream=True в методе вызова предиктора. Потоковый режим генерирует экономящий память генератор Results объекты вместо того, чтобы загружать все кадры в память. Для обработки длинных видео или больших наборов данных потоковый режим особенно полезен. Узнай больше о потоковый режим.

Какие аргументы в пользу умозаключений поддерживает Ultralytics YOLO ?

The model.predict() Метод в YOLO поддерживает различные аргументы, такие как conf, iou, imgsz, deviceи многое другое. Эти аргументы позволяют тебе настраивать процесс умозаключения, задавая такие параметры, как пороги доверия, размер изображения и устройство, используемое для вычислений. Подробное описание этих аргументов можно найти в разделе аргументы для вывода Раздел.

Как визуализировать и сохранить результаты предсказаний YOLO ?

После того, как ты запустишь умозаключение с помощью YOLO, ты получишь Results Объекты содержат методы для отображения и сохранения аннотированных изображений. Ты можешь использовать такие методы, как result.show() и result.save(filename="result.jpg") чтобы визуализировать и сохранить результаты. Полный список этих методов ты найдешь в разделе Работа с результатами Раздел.

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

Комментарии