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

Прогнозирование с помощью модели Ultralytics YOLO

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

Введение

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



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

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

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

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

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

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

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

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

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

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

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("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) для немаксимального подавления (NMS). Более низкие значения приводят к уменьшению количества обнаружений за счет устранения перекрывающихся ячеек, что полезно для уменьшения количества дубликатов.
imgsz int или tuple 640 Определяет размер изображения для вывода. Может быть одним целым числом 640 для изменения размера квадрата или кортеж (высота, ширина). Правильное изменение размера может улучшить обнаружение точность и скорость обработки данных.
half bool False Включает вывод с половинной точностью (FP16), что позволяет ускорить вывод модели на поддерживаемых графических процессорах с минимальным влиянием на точность.
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 Определяет слои, из которых нужно извлечь векторы признаков или вкрапления. Полезно для последующих задач, таких как кластеризация или поиск сходства.
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Ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для наглядности.
font_size float None Размер шрифта текста для аннотаций. Масштабируется автоматически с размером изображения, если установлено значение None.
font str 'Arial.ttf' Название шрифта или путь к нему для текстовых аннотаций в визуализации.
pil bool False Возвращает изображение в виде объекта PIL Image вместо массива numpy.
kpt_radius int 5 Радиус ключевых точек при визуализации результатов оценки позы.
kpt_line bool True Соедините ключевые точки линиями при визуализации оценки позы.
masks bool True Отображение масок сегментации в выходных данных визуализации.
probs bool True Включите вероятности классификации в визуализацию.
filename str None Путь и имя файла для сохранения аннотированного изображения, когда save=True.
color_mode str 'class' Укажите режим раскраски для визуализаций, например, "экземпляр" или "класс".
txt_color tuple[int, int, int] (255, 255, 255) Цвет текста RGB для аннотаций к задачам классификации.

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

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

Изображения

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

Примечание

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

Суффиксы изображений Пример команды Predict Ссылка
.bmp yolo predict source=image.bmp Microsoft Формат файла BMP
.dng yolo predict source=image.dng Adobe DNG
.jpeg yolo predict source=image.jpeg JPEG
.jpg yolo predict source=image.jpg JPEG
.mpo yolo predict source=image.mpo Объект с несколькими изображениями
.png yolo predict source=image.png Портативная сетевая графика
.tif yolo predict source=image.tif Формат файла изображения тега
.tiff yolo predict source=image.tiff Формат файла изображения тега
.webp yolo predict source=image.webp WebP
.pfm yolo predict source=image.pfm Портативная карта FloatMap
.HEIC yolo predict source=image.HEIC Высокоэффективный формат изображения

Видео

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

Суффиксы для видео Пример команды Predict Ссылка
.asf yolo predict source=video.asf Формат передовых систем
.avi yolo predict source=video.avi Аудио-видео интерлейв
.gif yolo predict source=video.gif Формат обмена графикой
.m4v yolo predict source=video.m4v MPEG-4 Part 14
.mkv yolo predict source=video.mkv Матроска
.mov yolo predict source=video.mov Формат файлов QuickTime
.mp4 yolo predict source=video.mp4 MPEG-4 Part 14 - Википедия
.mpeg yolo predict source=video.mpeg MPEG-1 Часть 2
.mpg yolo predict source=video.mpg MPEG-1 Часть 2
.ts yolo predict source=video.ts Транспортный поток MPEG
.wmv yolo predict source=video.wmv Windows Media Video
.webm yolo predict source=video.webm Проект WebM

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

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

Результаты

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 numpy.ndarray Исходное изображение в виде массива numpy.
orig_shape tuple Форма исходного изображения в формате (высота, ширина).
boxes Boxes, optional Объект Boxes, содержащий ограничительные рамки обнаружения.
masks Masks, optional Объект Masks, содержащий маски обнаружения.
probs Probs, optional Объект Probs, содержащий вероятности каждого класса для задачи классификации.
keypoints Keypoints, optional Объект Keypoints, содержащий обнаруженные ключевые точки для каждого объекта.
obb OBB, optional Объект OBB, содержащий ориентированные ограничительные рамки.
speed dict Словарь скоростей препроцесса, вывода и постпроцесса в миллисекундах на изображение.
names dict Словарь, отображающий индексы классов на имена классов.
path str Путь к файлу изображения.
save_dir str, optional Каталог для сохранения результатов.

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

Метод Тип возврата Описание
update() None Обновляет объект Results новыми данными обнаружения (боксы, маски, probs, obb, keypoints).
cpu() Results Возвращает копию объекта Results со всеми тензорами, перемещенными в память CPU .
numpy() Results Возвращает копию объекта Results со всеми тензорами, преобразованными в массивы numpy.
cuda() Results Возвращает копию объекта Results со всеми тензорами, перемещенными в память GPU .
to() Results Возвращает копию объекта Results с тензорами, перемещенными на указанное устройство и dtype.
new() Results Создает новый объект Results с тем же изображением, путем, именами и атрибутами скорости.
plot() np.ndarray Помещает результаты обнаружения на входное RGB-изображение и возвращает аннотированное изображение.
show() None Отображает изображение с аннотированными результатами выводов.
save() str Сохраняет изображение результатов аннотированных заключений в файл и возвращает имя файла.
verbose() str Возвращает строку журнала для каждой задачи с подробным описанием результатов обнаружения и классификации.
save_txt() str Сохраняет результаты обнаружения в текстовый файл и возвращает путь к сохраненному файлу.
save_crop() None Сохраняет обрезанные изображения обнаружения в указанную директорию.
summary() List[Dict] Преобразует результаты выводов в обобщенный словарь с необязательной нормализацией.
to_df() DataFrame Преобразует результаты обнаружения в Pandas DataFrame.
to_csv() str Преобразование результатов обнаружения в формат CSV.
to_xml() str Преобразует результаты обнаружения в формат XML.
to_html() str Преобразует результаты обнаружения в формат HTML.
to_json() str Преобразует результаты обнаружения в формат JSON.
to_sql() None Преобразует результаты обнаружения в SQL-совместимый формат и сохраняет в базе данных.

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

Подробнее см. 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() Метод Возвращает копию probs tensor в виде массива numpy.
cuda() Метод Возвращает копию проблем 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("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 numpy.ndarray Альтернативное изображение для черчения. Использует исходное изображение, если None. None
im_gpu torch.Tensor GPU-ускоренное изображение для более быстрого построения масок. Форма: (1, 3, 640, 640). None
kpt_radius int Радиус для нарисованных ключевых точек. 5
kpt_line bool Соедините ключевые точки линиями. True
labels bool Включите метки классов в аннотации. True
boxes bool Наложение ограничительных рамок на изображение. True
masks bool Наложение масок на изображение. True
probs bool Включите вероятности классификации. True
show bool Отобразите аннотированное изображение непосредственно с помощью стандартного средства просмотра изображений. False
save bool Сохраните аннотированное изображение в файл, указанный filename. False
filename str Путь и имя файла для сохранения аннотированного изображения, если save это True. None
color_mode str Укажите режим цвета, например, "экземпляр" или "класс". '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).

Потоковый цикл 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 и его режим предсказания для выводов в реальном времени?

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 ?

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

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

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

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

Комментарии