Meet YOLO26: next-gen vision AI.

Link to this sectionПредсказание моделей с помощью Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionВведение#

В мире machine learning и computer vision процесс интерпретации визуальных данных часто называют инференсом или предсказанием. Ultralytics YOLO26 предлагает мощную функцию, известную как режим предсказания (predict mode), разработанную для высокопроизводительного инференса в реальном времени на широком спектре источников данных.



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

Link to this sectionПрименение в реальных условиях#

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

Link to this sectionПочему стоит использовать Ultralytics YOLO для инференса?#

Вот почему тебе стоит рассмотреть режим предсказания YOLO26 для твоих задач инференса:

  • Универсальность: возможность запуска инференса на изображениях, видео и даже прямых трансляциях.
  • Производительность: разработано для обработки в реальном времени с высокой скоростью без ущерба для accuracy.
  • Простота использования: интуитивно понятные интерфейсы Python и CLI для быстрого развертывания и тестирования.
  • Высокая настраиваемость: различные настройки и параметры позволяют адаптировать поведение инференса модели под твои конкретные требования.
  • Готовность к продакшену: развертывай модели как API-эндпоинты на Ultralytics Platform с автоматическим масштабированием и мониторингом или запускай инференс локально.

Link to this sectionОсновные особенности режима предсказания#

Режим предсказания YOLO26 спроектирован надежным и универсальным, обладающим следующими функциями:

  • Совместимость с несколькими источниками данных: будь то отдельные изображения, коллекции изображений, видеофайлы или потоковое видео в реальном времени — режим предсказания справится со всем.
  • Потоковый режим (Streaming Mode): используй функцию потоковой передачи для создания экономичного с точки зрения памяти генератора объектов Results. Включи это, установив stream=True в методе вызова предиктора.
  • Пакетная обработка: обрабатывай несколько изображений или кадров видео за один пакет (batch), что дополнительно сокращает общее время инференса.
  • Дружелюбность к интеграции: легкая интеграция с существующими конвейерами данных и другими программными компонентами благодаря гибкому API.

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

Предсказание
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # pretrained YOLO26n 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

Link to this sectionИсточники инференса#

YOLO26 может обрабатывать различные типы входных источников для инференса, как показано в таблице ниже. Источники включают статические изображения, видеопотоки и различные форматы данных. В таблице также указано, можно ли использовать каждый источник в потоковом режиме с аргументом 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Шаблон glob для сопоставления нескольких файлов. Используй символ * в качестве подстановочного знака.
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 YOLO26n model
model = YOLO("yolo26n.pt")

# Define path to the image file
source = "path/to/image.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

Link to this sectionАргументы вывода (Inference Arguments)#

model.predict() принимает несколько аргументов, которые можно передать во время вывода, чтобы переопределить настройки по умолчанию:

Link to this sectionФиксированный размер против минимального прямоугольника (rect)#

По умолчанию для предсказания используется rect=True, что при возможности включает заполнение до минимального прямоугольника. Изображение масштабируется так, чтобы поместиться в imgsz, и дополняется только до ближайшего кратного шагу сетки (stride), поэтому итоговый тензор может быть меньше, чем imgsz. Заполнение до минимального прямоугольника используется только тогда, когда все изображения в пакете имеют одинаковую форму, и бэкенд поддерживает это (PyTorch .pt или динамические ONNX / Triton). В противном случае изображения дополняются до полного целевого размера imgsz.

Используй rect=False, чтобы всегда дополнять изображение до полного целевого размера imgsz. Это рекомендуется, когда тебе нужен фиксированный размер входных данных для соответствия экспортированным моделям (ONNX, TensorRT и т. д.).

Целое число против кортежа imgsz

  • Целое число imgsz=640 превращается в квадратную целевую форму (640, 640) после округления с учетом шага сетки (stride).
  • Кортеж imgsz=(384, 672) задает прямоугольную целевую форму. При rect=True и auto=True фактический тензор может быть меньше этой целевой формы.

Обучение против предсказания/экспорта

Обучение принимает только одно целое число imgsz (список [h, w] приводится к большему значению). Предсказание и экспорт принимают либо целое число, либо кортеж (height, width).

Пример
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)

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

АргументТипПо умолчаниюОписание
sourcestr или int или NoneNoneУказывает источник данных для инференса. Это может быть путь к изображению, видеофайл, директория, URL или ID устройства для прямых трансляций. Если пропущено, записывается предупреждение, и модель переключается на встроенные демо-ресурсы (ultralytics/assets или демо URL для OBB). Поддерживает широкий спектр форматов и источников, обеспечивая гибкое применение для различных типов входных данных.
conffloat0.25Устанавливает минимальный порог уверенности для обнаружений. Объекты, обнаруженные с уверенностью ниже этого порога, будут игнорироваться. Настройка этого значения может помочь снизить количество ложноположительных результатов.
ioufloat0.7Порог Intersection Over Union (IoU) для немаксимального подавления (NMS). Меньшие значения приводят к меньшему количеству обнаружений за счет устранения перекрывающихся рамок, что полезно для уменьшения дубликатов.
imgszint или tuple640Цель Letterbox. Целое число дает квадрат N×N; кортеж дает (height, width). При rect=True фактический тензор может быть меньше этой цели из-за заполнения до минимального прямоугольника. Используй rect=False для фиксированного размера. См. Фиксированная форма против минимального прямоугольника.
rectboolTrueЕсли True, используй заполнение до минимального прямоугольника, когда это возможно (пакет одинаковой формы и поддерживаемый бэкенд). Если False, всегда дополняй до полного imgsz. См. Фиксированная форма против минимального прямоугольника.
halfboolFalseВключает инференс с полуточностью (FP16), что может ускорить работу модели на поддерживаемых GPU с минимальным влиянием на точность.
devicestrNoneУказывает устройство для инференса (например, cpu, cuda:0, 0, npu или npu:0). Позволяет пользователям выбирать между CPU, конкретным GPU, NPU Huawei Ascend или другими вычислительными устройствами для выполнения модели.
batchint1Указывает размер пакета для инференса (работает только если источник — директория, видеофайл или .txt файл). Больший размер пакета может обеспечить более высокую пропускную способность, сокращая общее время, необходимое для инференса.
max_detint300Максимальное количество разрешенных обнаружений на изображение. Ограничивает общее количество объектов, которые модель может обнаружить за один инференс, предотвращая чрезмерные выходы в плотных сценах.
vid_strideint1Шаг кадров для видеовходов. Позволяет пропускать кадры в видео для ускорения обработки за счет временного разрешения. Значение 1 обрабатывает каждый кадр, большие значения пропускают кадры.
stream_bufferboolFalseОпределяет, нужно ли ставить в очередь входящие кадры для видеопотоков. Если False, старые кадры отбрасываются, чтобы освободить место для новых (оптимизировано для приложений реального времени). Если True, новые кадры ставятся в очередь, гарантируя, что ни один кадр не будет пропущен, но это вызовет задержку, если FPS инференса ниже, чем FPS потока.
visualizeboolFalseАктивирует визуализацию признаков модели во время инференса, предоставляя понимание того, что «видит» модель. Полезно для отладки и интерпретации модели.
augmentboolFalseВключает аугментацию во время тестирования (TTA) для предсказаний, что потенциально повышает надежность обнаружения за счет скорости инференса.
agnostic_nmsboolFalseВключает классово-агностическое немаксимальное подавление (NMS), которое объединяет перекрывающиеся рамки разных классов. Полезно в сценариях многоклассового обнаружения, где часто встречается пересечение классов. Для end-to-end моделей (YOLO26, YOLOv10) это предотвращает появление одного и того же обнаружения с несколькими метками классов (дубликаты IoU=1.0) и не выполняет подавление на основе порога IoU между отдельными рамками.
classeslist[int]NoneФильтрует предсказания по набору ID классов. Будут возвращены только обнаружения, принадлежащие указанным классам. Полезно для фокусировки на релевантных объектах в задачах многоклассового обнаружения.
retina_masksboolFalseВозвращает маски сегментации высокого разрешения. Возвращаемые маски (masks.data) будут соответствовать исходному размеру изображения, если включено. Если выключено, они имеют размер изображения, использованный во время инференса.
embedlist[int]NoneУказывает слои, из которых нужно извлекать векторы признаков или эмбеддинги. Полезно для последующих задач, таких как кластеризация или поиск по сходству.
projectstrNoneИмя директории проекта, куда сохраняются выходы предсказаний, если включен save.
namestrNoneИмя запуска предсказания. Используется для создания поддиректории внутри папки проекта, где сохраняются выходы предсказаний, если включен save.
streamboolFalseВключает эффективную с точки зрения памяти обработку для длинных видео или многочисленных изображений, возвращая генератор объектов Results вместо загрузки всех кадров в память одновременно.
verboseboolTrueКонтролирует отображение подробных логов инференса в терминале, предоставляя обратную связь о процессе предсказания в режиме реального времени.
compilebool или strFalseВключает компиляцию графа PyTorch 2.x torch.compile с backend='inductor'. Принимает True"default", False → отключает, или строковый режим, такой как "default", "reduce-overhead", "max-autotune-no-cudagraphs". При отсутствии поддержки возвращается к режиму eager с предупреждением.
end2endboolNoneПереопределяет режим end-to-end в моделях YOLO, которые поддерживают инференс без NMS (YOLO26, YOLOv10). Установка в False позволяет выполнять предсказание с использованием традиционного конвейера NMS, дополнительно позволяя использовать аргумент iou. См. руководство по End-to-End детекции для получения подробностей.

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

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

Link to this sectionФорматы изображений и видео#

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

Link to this sectionИзображения#

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

Примечание

Для форматов HEIC/HEIF требуется pi-heif, который устанавливается автоматически при первом использовании. AVIF поддерживается библиотекой Pillow нативно.

Суффиксы изображенийПример команды предсказанияСправочная информация
.avifyolo predict source=image.avifФормат файла изображения AV1
.bmpyolo predict source=image.bmpФормат файла Microsoft BMP
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicHigh Efficiency Image Format
.heifyolo predict source=image.heifHigh Efficiency Image Format
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpeg2000yolo predict source=image.jpeg2000JPEG 2000
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP

Link to this sectionВидео#

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

Суффиксы видеоПример команды предсказанияСправочная информация
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Project

Link to this sectionРабота с результатами#

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

Результаты
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
    [
        "https://ultralytics.com/images/bus.jpg",
        "https://ultralytics.com/images/zidane.jpg",
    ]
)  # batch inference

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

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

Link to this sectionРезультаты по задачам#

Каждое предсказание возвращает один объект Results на изображение или кадр. Указанные выше общие поля доступны всегда, в то время как специфические для задачи данные предсказаний хранятся в полях ниже. Тензоры координат, достоверности и вероятностей имеют тип torch.float32, если не используется половинная точность, в этом случае torch.float16. После вызова result.numpy() тензоры преобразуются в массивы NumPy с соответствующими типами данных NumPy. Маски экземпляров представляют собой бинарные тензоры torch.uint8, тогда как семантические маски используют наименьший практически применимый целочисленный тип данных для ID классов: torch.uint8, torch.int16 или torch.int32, в зависимости от количества классов.

АтрибутТипФормаОписание
result.boxesBoxes(N)Прямоугольники обнаружения.
result.boxes.datatorch.float32(N,6/7)Необработанные [x1,y1,x2,y2,conf,cls], плюс опциональный ID отслеживания.
result.boxes.xyxytorch.float32(N,4)Пиксельные прямоугольники xyxy.
result.boxes.conftorch.float32(N,)Оценки достоверности.
result.boxes.clstorch.float32(N,)ID классов; приведите к int для получения названий.

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

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

Для получения дополнительной информации см. документацию класса Results.

Link to this sectionБоксы#

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

Боксы
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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)Возвращает ID трекинга для рамок (если доступны).
xywhСвойство (torch.Tensor)Возвращает рамки в формате xywh.
xyxynСвойство (torch.Tensor)Возвращает рамки в формате xyxy, нормализованные по размеру исходного изображения.
xywhnСвойство (torch.Tensor)Возвращает рамки в формате xywh, нормализованные по размеру исходного изображения.

Для получения дополнительной информации см. документацию класса Boxes.

Link to this sectionМаски#

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

Маски
from ultralytics import YOLO

# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-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, включая их имя, тип и описание:

ИмяТипОписание
dataСвойство (torch.Tensor)Бинарный тензор маски torch.uint8 с формой (N,H,W) и значениями 0 или 1.
cpu()МетодВозвращает тензор масок в памяти CPU.
numpy()МетодВозвращает тензор масок как массив NumPy.
cuda()МетодВозвращает тензор масок в памяти GPU.
to()МетодВозвращает тензор масок для указанного устройства и типа данных.
xynСвойство (list[np.ndarray])Список нормализованных полигонов масок.
xyСвойство (list[np.ndarray])Список полигонов масок в пиксельных координатах.

Для получения дополнительной информации см. документацию класса Masks.

Link to this sectionSemanticMask#

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

SemanticMask
from ultralytics import YOLO

# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.semantic_mask.data)  # print the H x W class-ID map
ИмяТипОписание
dataСвойство (torch.Tensor)Карта ID классов с формой (H,W). Тип данных torch.uint8, torch.int16 или torch.int32 выбирается в зависимости от количества классов.
shapeСвойство (tuple)Форма карты классов, обычно соответствующая result.orig_shape.
cpu()МетодВозвращает тензор семантической маски в памяти CPU.
numpy()МетодВозвращает тензор семантической маски как массив NumPy.
cuda()МетодВозвращает тензор семантической маски в памяти GPU.
to()МетодВозвращает тензор семантической маски для указанного устройства и типа данных.

Link to this sectionКлючевые точки#

Объект Keypoints можно использовать для индексации, манипуляции и нормализации координат.

Ключевые точки
from ultralytics import YOLO

# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-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()МетодВозвращает тензор ключевых точек в памяти CPU.
numpy()МетодВозвращает тензор ключевых точек как массив NumPy.
cuda()МетодВозвращает тензор ключевых точек в памяти GPU.
to()МетодВозвращает тензор ключевых точек с указанным устройством и типом данных.
xynСвойство (torch.Tensor)Список нормализованных ключевых точек, представленных в виде тензоров.
xyСвойство (torch.Tensor)Список ключевых точек в пиксельных координатах, представленных в виде тензоров.
confСвойство (torch.Tensor)Возвращает значения уверенности для ключевых точек, если они доступны, в противном случае None.

For more details see the Keypoints class documentation.

Link to this sectionProbs#

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

Probs
from ultralytics import YOLO

# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-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()МетодВозвращает копию тензора probs в памяти CPU.
numpy()МетодВозвращает копию тензора probs в виде массива NumPy.
cuda()МетодВозвращает копию тензора probs в памяти GPU.
to()МетодВозвращает копию тензора probs с указанным устройством и типом данных.
top1Свойство (int)Индекс топ-1 класса.
top5Свойство (list[int])Индексы топ-5 классов.
top1confСвойство (torch.Tensor)Уверенность для топ-1 класса.
top5confСвойство (torch.Tensor)Уверенность для топ-5 классов.

For more details see the Probs class documentation.

Link to this sectionOBB#

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

OBB
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n-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)Возвращает ID трекинга для рамок (если доступны).
xyxyСвойство (torch.Tensor)Возвращает горизонтальные рамки в формате xyxy.
xywhrСвойство (torch.Tensor)Возвращает повернутые рамки в формате xywhr.
xyxyxyxyСвойство (torch.Tensor)Возвращает повернутые рамки в формате xyxyxyxy.
xyxyxyxynСвойство (torch.Tensor)Возвращает повернутые рамки в формате xyxyxyxy, нормализованные по размеру изображения.

For more details see the OBB class documentation.

Link to this sectionВизуализация результатов#

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

Визуализация
from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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")

Link to this sectionПараметры метода plot()#

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

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

Link to this sectionПотокобезопасный инференс#

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

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

Потокобезопасный инференс

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

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=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()

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

Link to this sectionПотоковый цикл for#

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

Потоковый цикл for
import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo26n.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'.

Link to this sectionFAQ#

Link to this sectionЧто такое Ultralytics YOLO и режим predict для инференса в реальном времени?#

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

Link to this sectionКак запустить инференс с помощью Ultralytics YOLO на разных источниках данных?#

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

Link to this sectionКак оптимизировать скорость инференса YOLO и использование памяти?#

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

Link to this sectionКакие аргументы инференса поддерживает Ultralytics YOLO?#

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

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

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

Комментарии