Прогнозирование с помощью модели 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 |
Индекс подключенного устройства камеры для проведения анализа. |
Ниже приведены примеры кода для использования каждого типа источника:
Источники прогнозирования
Выполните вывод для файла изображения.
Выполните вывод на текущем содержимом экрана в виде скриншота.
Выполните вывод на основе изображения или видео, размещенного удаленно по URL-адресу.
Выполните вывод на основе изображения, открытого с помощью библиотеки Python Imaging Library (PIL).
Выполните вывод на изображении, считанном с помощью OpenCV.
Выполните вывод на изображении, представленном в виде массива 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-файле.
Выполните вывод на видеофайле. С помощью stream=True
Чтобы уменьшить потребление памяти, можно создать генератор объектов Results.
Выполните вывод для всех изображений и видео в каталоге. Чтобы также захватить изображения и видео в подкаталогах, используйте шаблон glob, т. е. path/to/dir/**/*
.
Выполните вывод для всех изображений и видео, которые соответствуют глобальному выражению с *
персонажи.
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, чтобы уменьшить потребление памяти для длинных видео.
Используйте режим потока для проведения анализа потоков видео в реальном времени с использованием протоколов 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
...
Каждая строка в файле представляет собой источник потокового сигнала, что позволяет отслеживать и делать выводы сразу по нескольким видеопотокам.
Аргументы для умозаключений
model.predict()
принимает несколько аргументов, которые могут быть переданы во время вывода, чтобы отменить значения по умолчанию:
Пример
Аргументы для умозаключений:
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
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")
для визуализации и сохранения результатов. Полный список этих методов приведен в разделе работа с результатами раздел.