YOLOE: Видь что угодно в реальном времени
Введение

YOLOE (Real-Time Seeing Anything) — это новый шаг вперед в zero-shot YOLO моделях с поддержкой промптов, разработанный для детекции и сегментации с открытым словарем (open-vocabulary). В отличие от предыдущих моделей YOLO, ограниченных фиксированными категориями, YOLOE использует текстовые, визуальные или внутренние словарные промпты, позволяя в реальном времени находить объекты любого класса. Построенная на базе YOLOv10 и вдохновленная YOLO-World, модель YOLOE достигает лучшей в своем классе zero-shot производительности с минимальным влиянием на скорость и точность.
Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀
По сравнению с ранними моделями YOLO, YOLOE значительно повышает эффективность и точность. Она превосходит YOLO-Worldv2 на LVIS на +3.5 AP, используя при этом всего треть тренировочных ресурсов и обеспечивая в 1.4× более быстрый инференс. Дообученная на COCO, модель YOLOE-v8-large обходит YOLOv8-L на 0.1 mAP, затрачивая почти в 4× меньше времени на обучение. Это демонстрирует исключительный баланс точности, эффективности и универсальности YOLOE. В разделах ниже рассматриваются архитектура YOLOE, сравнительные бенчмарки и интеграция с фреймворком Ultralytics.
Обзор архитектуры
YOLOE сохраняет стандартную структуру YOLO: сверточный backbone (например, CSP-Darknet) для извлечения признаков, neck (например, PAN-FPN) для многомасштабной фузии и anchor-free, decoupled head (как в YOLOv8/YOLO11) для независимого предсказания объектности, классов и ограничивающих рамок. YOLOE внедряет три новых модуля, обеспечивающих детекцию с открытым словарем:
-
Re-parameterizable Region-Text Alignment (RepRTA): Поддерживает детекцию по текстовым промптам, уточняя текстовые embeddings (например, из CLIP) через небольшую вспомогательную сеть. При инференсе эта сеть встраивается в основную модель, обеспечивая нулевые накладные расходы. Таким образом, YOLOE обнаруживает произвольные объекты, описанные текстом (например, невидимый ранее "светофор"), без штрафов к скорости выполнения.
-
Semantic-Activated Visual Prompt Encoder (SAVPE): Обеспечивает детекцию по визуальным промптам через облегченную ветку эмбеддингов. Получая эталонное изображение, SAVPE кодирует семантические признаки и признаки активации, настраивая модель на обнаружение визуально похожих объектов — это способность one-shot детекции, полезная для логотипов или специфических деталей.
-
Lazy Region-Prompt Contrast (LRPC): В режиме без промптов YOLOE выполняет распознавание с открытым множеством (open-set), используя внутренние эмбеддинги, обученные на обширных словарях (1200+ категорий из LVIS и Objects365). Без внешних промптов или энкодеров YOLOE идентифицирует объекты через поиск схожести эмбеддингов, эффективно обрабатывая большие пространства меток при инференсе.
Кроме того, YOLOE поддерживает инстанс-сегментацию в реальном времени, расширяя детекторную голову веткой предсказания масок (аналогично YOLACT или YOLOv8-Seg) с минимальными дополнительными затратами.
Важно, что модули открытого мира YOLOE не добавляют затрат на инференс при использовании как обычный YOLO с закрытым набором классов. После обучения параметры YOLOE могут быть перепараметризованы в стандартную голову YOLO, сохраняя идентичные показатели FLOPs и скорость (например, полностью соответствующие YOLO11).
Доступные модели, поддерживаемые задачи и режимы работы
В этом разделе подробно описаны доступные модели с их специфическими предварительно обученными весами, задачи, которые они поддерживают, и их совместимость с различными режимами работы, такими как Inference, Validation, Training и Export, обозначенными ✅ для поддерживаемых режимов и ❌ для неподдерживаемых.
Модели с текстовыми/визуальными промптами
| Тип модели | Предобученные веса | Поддерживаемые задачи | Логический вывод | Валидация | Обучение | Экспорт (Export) |
|---|---|---|---|---|---|---|
| YOLOE-11S | yoloe-11s-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M | yoloe-11m-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L | yoloe-11l-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S | yoloe-v8s-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M | yoloe-v8m-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L | yoloe-v8l-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N | yoloe-26n-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S | yoloe-26s-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M | yoloe-26m-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L | yoloe-26l-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X | yoloe-26x-seg.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
Модели без промптов
| Тип модели | Предобученные веса | Поддерживаемые задачи | Логический вывод | Валидация | Обучение | Экспорт (Export) |
|---|---|---|---|---|---|---|
| YOLOE-11S-PF | yoloe-11s-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M-PF | yoloe-11m-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L-PF | yoloe-11l-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S-PF | yoloe-v8s-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M-PF | yoloe-v8m-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L-PF | yoloe-v8l-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N-PF | yoloe-26n-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S-PF | yoloe-26s-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M-PF | yoloe-26m-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L-PF | yoloe-26l-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X-PF | yoloe-26x-seg-pf.pt | Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
Для подробных бенчмарков производительности моделей YOLOE-26, смотри Документацию YOLO26.
Примеры использования
Модели YOLOE легко интегрируются в твои приложения на Python. Ultralytics предоставляет удобный Python API и команды CLI для оптимизации процесса разработки.
Использование для обучения
Дообучение на пользовательском наборе данных
Ты можешь дообучить любую предобученную модель YOLOE на своем собственном датасете YOLO как для задач детекции, так и для инстанс-сегментации.
Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
Инстанс-сегментация
Дообучение предобученного чекпоинта YOLOE в основном следует стандартной процедуре обучения YOLO. Главное отличие — явная передача YOLOEPESegTrainer в качестве параметра trainer для model.train():
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPESegTrainer
model = YOLOE("yoloe-26s-seg.pt")
# Fine-tune on your segmentation dataset
results = model.train(
data="coco128-seg.yaml", # Segmentation dataset
epochs=80,
patience=10,
trainer=YOLOEPESegTrainer, # <- Important: use segmentation trainer
)Детекция объектов
Все предобученные модели YOLOE по умолчанию выполняют инстанс-сегментацию. Чтобы использовать эти предобученные чекпоинты для обучения детектора, инициализируй модель детекции с нуля через YAML-конфигурацию, затем загрузи предобученный чекпоинт сегментации того же масштаба. Заметь, что мы используем YOLOEPETrainer вместо YOLOEPESegTrainer, так как обучаем модель детекции:
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPETrainer
# Initialize a detection model from a config
model = YOLOE("yoloe-26s.yaml")
# Load weights from a pretrained segmentation checkpoint (same scale)
model.load("yoloe-26s-seg.pt")
# Fine-tune on your detection dataset
results = model.train(
data="coco128.yaml", # Detection dataset
epochs=80,
patience=10,
trainer=YOLOEPETrainer, # <- Important: use detection trainer
)Использование прогнозирования
YOLOE поддерживает как текстовые, так и визуальные промпты. Использовать промпты просто — достаточно передать их через метод predict, как показано ниже:
Текстовые промпты позволяют указывать классы для детекции через текстовые описания. Следующий код показывает, как использовать YOLOE для поиска людей и автобусов на изображении:
from ultralytics import YOLOE
# Initialize a YOLOE model
model = YOLOE("yoloe-26l-seg.pt") # or yoloe-26s/m-seg.pt for different sizes
# Set text prompt to detect person and bus. You only need to do this once after you load the model.
model.set_classes(["person", "bus"])
# Run detection on the given image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()Использование проверки (Val)
Валидация модели на датасете оптимизирована следующим образом:
from ultralytics import YOLOE
# Create a YOLOE model
model = YOLOE("yoloe-26l-seg.pt") # or yoloe-26s/m-seg.pt for different sizes
# Conduct model validation on the COCO128-seg example dataset
metrics = model.val(data="coco128-seg.yaml")Использование экспорта
Процесс экспорта аналогичен другим моделям YOLO, с добавленной гибкостью обработки текстовых и визуальных промптов:
Классы, настроенные через set_classes() (или через refer_image для визуальных промптов), "запекаются" в экспортированные веса. После экспорта модель больше не может принимать новые промпты: вызов set_classes() или передача visual_prompts=... в метод predict() для загруженной экспортированной модели приведет к ошибке. Чтобы изменить детектируемые классы, переэкспортируй модель из исходного .pt чекпоинта с настроенными новыми промптами. Экспортированный файл ведет себя как стандартный детектор YOLO и может быть загружен через YOLO() вместо YOLOE().
from ultralytics import YOLOE
# Select yoloe-26s/m-seg.pt for different sizes
model = YOLOE("yoloe-26l-seg.pt")
# Configure the set_classes() before exporting the model
model.set_classes(["person", "bus"])
export_model = model.export(format="onnx")
model = YOLOE(export_model)
# Run detection on the given image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()Обучение официальных моделей
Подготовка датасетов
Для обучения официальных моделей YOLOE нужны сегментационные аннотации для тренировочных данных. Вот скрипт, предоставленный официальной командой, который конвертирует датасеты в аннотации сегментации с помощью моделей SAM2.1. Или ты можешь напрямую скачать предоставленные Processed Segment Annotations из таблицы ниже.
- Данные для обучения
| Датасет | Тип | Образцы | Boxes | Сырые аннотации детекции | Обработанные аннотации сегментации |
|---|---|---|---|---|---|
| Objects365v1 | Обнаружение | 609k | 9621k | objects365_train.json | objects365_train_segm.json |
| GQA | Grounding | 621k | 3681k | final_mixed_train_no_coco.json | final_mixed_train_no_coco_segm.json |
| Flickr30k | Grounding | 149k | 641k | final_flickr_separateGT_train.json | final_flickr_separateGT_train_segm.json |
- Данные для валидации
| Датасет | Тип | Файлы аннотаций |
|---|---|---|
| LVIS minival | Обнаружение | minival.txt |
Запуск обучения с нуля
Модели с Visual Prompt дообучаются на базе хорошо обученных моделей с Text Prompt.
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOESegTrainerFromScratch
# Option 1: Use Python dictionary
data = dict(
train=dict(
yolo_data=["Objects365.yaml"],
grounding_data=[
dict(
img_path="flickr/full_images/",
json_file="flickr/annotations/final_flickr_separateGT_train_segm.json",
),
dict(
img_path="mixed_grounding/gqa/images",
json_file="mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
),
],
),
val=dict(yolo_data=["lvis.yaml"]),
)
# Option 2: Use YAML file (yoloe_data.yaml)
# train:
# yolo_data:
# - Objects365.yaml
# grounding_data:
# - img_path: flickr/full_images/
# json_file: flickr/annotations/final_flickr_separateGT_train_segm.json
# - img_path: mixed_grounding/gqa/images
# json_file: mixed_grounding/annotations/final_mixed_train_no_coco_segm.json
# val:
# yolo_data:
# - lvis.yaml
model = YOLOE("yoloe-26l-seg.yaml")
model.train(
data=data, # or data="yoloe_data.yaml" if using YAML file
batch=128,
epochs=30,
close_mosaic=2,
optimizer="AdamW",
lr0=2e-3,
warmup_bias_lr=0.0,
weight_decay=0.025,
momentum=0.9,
workers=4,
trainer=YOLOESegTrainerFromScratch,
device="0,1,2,3,4,5,6,7",
)Сравнение производительности YOLOE
YOLOE соответствует или превосходит по точности закрытые модели YOLO на стандартных бенчмарках, таких как COCO и LVIS, не жертвуя при этом скоростью или размером модели. В таблице ниже сравниваются YOLOE-L (построенная на базе YOLO11) и YOLOE26-L (построенная на базе YOLO26) с соответствующими закрытыми моделями:
| Модель | COCO mAP50-95 | LVIS mAP50-95 | Скорость вывода (T4) | Параметры | GFLOPs (640px) |
|---|---|---|---|---|---|
| YOLOv8-L (закрытая) | 52.9% | - | 9.06 мс (110 FPS) | 43.7 M | 165.2 B |
| YOLO11-L (закрытая) | 53.5% | - | 6.2 мс (161 FPS) | 26.2 M | 86.9 B |
| YOLOE-L (открытый словарь) | 52.6% | 35.2% | 6.2 мс (161 FPS) | 26.2 M | 86.9 B† |
| YOLOE26-L (открытый словарь) | - | 36.8% | 6.2 мс (161 FPS) | 32.3 M | 88.3 B† |
† YOLOE-L использует архитектуру YOLO11-L, а YOLOE26-L — архитектуру YOLO26-L, что обеспечивает схожую скорость вывода и GFLOPs.
YOLOE26-L достигает 36.8% LVIS mAP при 32.3M параметров и 88.3B FLOPs, обрабатывая изображения 640×640 за 6.2 мс (161 FPS) на GPU T4. Это улучшение по сравнению с 35.2% LVIS mAP у YOLOE-L при сохранении той же скорости вывода. Что критически важно, модули открытого словаря YOLOE не требуют дополнительных затрат на вычисление, демонстрируя дизайн "без компромиссов".
В задачах zero-shot YOLOE26 значительно превосходит предыдущие детекторы с открытым словарем: на LVIS модель YOLOE26-S достигает 29.9% mAP, превосходя YOLO-World-S на +11.4 AP, в то время как YOLOE26-L достигает 36.8% mAP, превосходя YOLO-World-L на +10.0 AP. YOLOE26 поддерживает эффективный вывод на скорости 161 FPS на GPU T4, что идеально подходит для приложений с открытым словарем в реальном времени.
Условия бенчмарка: Результаты YOLOE получены на моделях, предварительно обученных на Objects365, GoldG и LVIS, а затем дообученных или протестированных на COCO. Небольшое преимущество YOLOE в mAP над YOLOv8 обусловлено обширным предварительным обучением. Без этого обучения с открытым словарем YOLOE соответствует по параметрам моделям YOLO аналогичного размера, подтверждая свою SOTA точность и гибкость в открытом мире без потерь в производительности.
Сравнение с предыдущими моделями
YOLOE вводит значительные улучшения по сравнению с предыдущими моделями YOLO и детекторами с открытым словарем:
-
YOLOE против YOLOv5: YOLOv5 предлагал хороший баланс скорости и точности, но требовал переобучения для новых классов и использовал anchor-based heads. В отличие от него, YOLOE является anchor-free и динамически распознает новые классы. YOLOE, основываясь на улучшениях YOLOv8, достигает более высокой точности (52.6% против ~50% mAP у YOLOv5 на COCO) и включает сегментацию экземпляров, в отличие от YOLOv5.
-
YOLOE против YOLOv8: YOLOE расширяет переработанную архитектуру YOLOv8, достигая схожей или превосходящей точности (52.6% mAP при ~26M параметров против 52.9% при ~44M параметров у YOLOv8-L). Она значительно сокращает время обучения благодаря более мощному предварительному обучению. Главное достижение — это способность YOLOE работать в открытом мире, распознавая объекты, не виденные ранее (например, "электросамокат" или "символ мира"), через промпты, в отличие от закрытого дизайна YOLOv8.
-
YOLOE против YOLO11: YOLO11 улучшает YOLOv8, предлагая повышенную эффективность и меньшее количество параметров (сокращение на ~22%). YOLOE наследует эти преимущества, сохраняя скорость вывода и количество параметров YOLO11 (~26M параметров), при этом добавляя детекцию и сегментацию с открытым словарем. В задачах с закрытым набором классов YOLOE эквивалентна YOLO11, но критически важно, что она добавляет адаптивность для распознавания новых классов, обеспечивая YOLO11 + возможности открытого мира без снижения скорости.
-
YOLOE26 против YOLOE (на базе YOLO11): YOLOE26 опирается на архитектуру YOLO26, наследуя её дизайн end-to-end без NMS для ускорения вывода. На LVIS модель YOLOE26-L достигает 36.8% mAP, улучшая показатель YOLOE-L (35.2% mAP). YOLOE26 предлагает все пять масштабов моделей (N/S/M/L/X) по сравнению с тремя у YOLOE (S/M/L), что дает больше гибкости для различных сценариев развертывания.
-
YOLOE26 против предыдущих детекторов с открытым словарем: Более ранние модели с открытым словарем (GLIP, OWL-ViT, YOLO-World) сильно зависели от vision-language transformers, что приводило к медленному выводу. На LVIS модель YOLOE26-S достигает 29.9% mAP (+11.4 AP по сравнению с YOLO-World-S), а YOLOE26-L достигает 36.8% mAP (+10.0 AP по сравнению с YOLO-World-L), сохраняя вывод в реальном времени на скорости 161 FPS на GPU T4. В сравнении с подходами на основе transformer (например, GLIP), YOLOE26 предлагает на порядок более быстрый вывод, эффективно сокращая разрыв между точностью и эффективностью в детекции с открытым набором классов.
Вкратце, YOLOE и YOLOE26 сохраняют известную скорость и эффективность YOLO, превосходят предшественников по точности, включают сегментацию и открывают возможности детекции в открытом мире. YOLOE26 дополнительно развивает архитектуру благодаря end-to-end выводу без NMS, унаследованному от YOLO26, что делает ее идеальной для приложений с открытым словарем в реальном времени.
Варианты использования и приложения
Детекция и сегментация YOLOE с открытым словарем позволяют реализовать разнообразные приложения за пределами традиционных моделей с фиксированными классами:
-
Детекция объектов в открытом мире: Идеально для динамических сценариев, таких как робототехника, где роботы распознают ранее невидимые объекты с помощью промптов, или системы безопасности, быстро адаптирующиеся к новым угрозам (например, опасным предметам) без переобучения.
-
Детекция на основе малого числа примеров (Few-Shot и One-Shot): Используя визуальные промпты (SAVPE), YOLOE быстро обучается распознавать новые объекты по единичным эталонным изображениям — идеально для промышленного контроля (мгновенное определение деталей или дефектов) или пользовательского наблюдения, позволяя выполнять визуальный поиск с минимальной настройкой.
-
Распознавание широкого словаря и редких классов: Оснащенная словарем из 1000+ классов, YOLOE превосходно справляется с задачами вроде мониторинга биоразнообразия (обнаружение редких видов), музейных коллекций, инвентаризации в рознице или электронной коммерции, надежно идентифицируя множество классов без обширного обучения для каждого класса отдельно.
-
Интерактивная детекция и сегментация: YOLOE поддерживает интерактивные приложения в реальном времени, такие как поиск по видео/изображениям, дополненная реальность (AR) и интуитивно понятное редактирование изображений, управляемое естественными входными данными (текстовые или визуальные промпты). Пользователи могут динамически изолировать, идентифицировать или редактировать объекты, используя маски сегментации.
-
Автоматическая разметка данных и начальная загрузка (Bootstrapping): YOLOE способствует быстрому созданию наборов данных, предоставляя начальные аннотации (bounding box и сегментацию), что значительно сокращает усилия человека по разметке. Особенно ценно для аналитики больших медиа-коллекций, где модель может автоматически определять присутствующие объекты, помогая быстрее создавать специализированные модели.
-
Сегментация любого объекта: Расширяет возможности сегментации до произвольных объектов с помощью промптов, что особенно полезно для медицинской визуализации, микроскопии или анализа спутниковых снимков, автоматически определяя и точно сегментируя структуры без специализированных предварительно обученных моделей. В отличие от моделей типа SAM, YOLOE одновременно распознает и сегментирует объекты автоматически, помогая в задачах создания контента или понимания сцены.
Во всех этих сценариях главным преимуществом YOLOE является универсальность, обеспечивающая единую модель для детекции, распознавания и сегментации в динамических условиях. Ее эффективность гарантирует работу в реальном времени на устройствах с ограниченными ресурсами, что идеально для робототехники, автономного вождения, оборонной сферы и других областей.
Выберите режим YOLOE в зависимости от ваших потребностей:
- Режим закрытого множества: Для задач с фиксированными классами (максимальная скорость и точность).
- Режим промптов: Быстрое добавление новых объектов через текстовые или визуальные промпты.
- Режим открытого множества без промптов: Общая детекция по множеству категорий (идеально для каталогизации и поиска).
Часто комбинация режимов, например, обнаружение без промптов с последующими целевыми промптами, позволяет использовать весь потенциал YOLOE.
Обучение и вывод
YOLOE легко интегрируется с Ultralytics Python API и CLI, как и другие модели YOLO (YOLOv8, YOLO-World). Вот как быстро начать работу:
from ultralytics import YOLO
# Load pretrained YOLOE model and train on custom data
model = YOLO("yoloe-26s-seg.pt")
model.train(data="path/to/data.yaml", epochs=50, imgsz=640)
# Run inference using text prompts ("person", "bus")
model.set_classes(["person", "bus"])
results = model.predict(source="test_images/street.jpg")
results[0].save() # save annotated outputЗдесь YOLOE по умолчанию ведет себя как стандартный детектор, но легко переключается на детекцию с промптами при указании классов (set_classes). Результаты содержат bounding boxes, маски и метки.
Другие поддерживаемые задачи
- Валидация: Легко оценивайте точность с помощью
model.val()илиyolo val. - Экспорт: Экспортируйте модели YOLOE (
model.export()) в ONNX, TensorRT и т. д., упрощая развертывание. - Трекинг: YOLOE поддерживает отслеживание объектов (
yolo track) при интеграции, что полезно для отслеживания промптированных классов в видео.
YOLOE автоматически включает маски сегментации в результаты вывода (results[0].masks), упрощая выполнение задач, требующих точности до пикселя, таких как извлечение объекта или измерения, без необходимости в отдельных моделях.
Начало работы
Быстро настройте YOLOE с Ultralytics, следуя этим шагам:
-
Установка: Установите или обновите пакет Ultralytics:
pip install -U ultralytics -
Загрузка весов YOLOE: Предварительно обученные модели YOLOE (например, YOLOE-v8-S/L, варианты YOLOE-11) доступны в релизах YOLOE на GitHub. Просто скачайте нужный файл
.ptдля загрузки в класс Ultralytics YOLO. -
Требования к оборудованию:
- Вывод: Рекомендуется GPU (NVIDIA с VRAM ≥4-8GB). Малые модели эффективно работают на Edge GPU (например, Jetson) или CPU при низком разрешении. Для высокопроизводительного вывода на компактных рабочих станциях смотрите наше руководство по NVIDIA DGX Spark.
- Обучение: Дообучение YOLOE на собственных данных обычно требует только один GPU. Масштабное предварительное обучение с открытым словарем (LVIS/Objects365), использованное авторами, требовало существенных вычислительных ресурсов (8× RTX 4090 GPUs).
-
Конфигурация: Конфигурации YOLOE используют стандартные YAML-файлы Ultralytics. По умолчанию (например,
yoloe-26s-seg.yaml) обычно достаточно, но вы можете изменить backbone, классы или размер изображения по мере необходимости. -
Запуск YOLOE:
-
Быстрый вывод (без промптов):
yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg" -
Детекция с промптами (пример текстового промпта):
from ultralytics import YOLO model = YOLO("yoloe-26s-seg.pt") model.set_classes(["bowl", "apple"]) results = model.predict("kitchen.jpg") results[0].save()
-
-
Советы по интеграции:
- Имена классов: Вывод YOLOE по умолчанию использует категории LVIS; используйте
set_classes()для указания собственных меток. - Скорость: YOLOE не имеет дополнительных затрат, если не используются промпты. Текстовые промпты минимально влияют на скорость; визуальные — немного больше.
- Поведение NMS: YOLOE автоматически использует
agnostic_nms=Trueво время предсказания, объединяя перекрывающиеся боксы между классами. Это предотвращает дублирование детекций, когда один объект соответствует нескольким категориям в обширном словаре YOLOE (1200+ классов LVIS). Вы можете переопределить это, явно передавagnostic_nms=False. - Пакетный вывод (Batch inference): Поддерживается напрямую (
model.predict([img1, img2])). Для специфических промптов к изображениям запускайте их по отдельности.
- Имена классов: Вывод YOLOE по умолчанию использует категории LVIS; используйте
В документации Ultralytics доступны дополнительные ресурсы. YOLOE позволяет легко изучить мощные возможности работы в открытом мире в знакомой экосистеме YOLO.
Полезный совет: Чтобы максимизировать точность YOLOE в zero-shot режиме, дообучайте ее из предоставленных чекпоинтов, а не обучайте с нуля. Используйте промпт-слова, соответствующие общим тренировочным меткам (см. категории LVIS) для повышения точности детекции.
Цитирование и благодарности
Если YOLOE внесла вклад в ваше исследование или проект, пожалуйста, сошлитесь на оригинальную статью авторов Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han и Guiguang Ding из университета Цинхуа (Tsinghua University):
@misc{wang2025yoloerealtimeseeing,
title={YOLOE: Real-Time Seeing Anything},
author={Ao Wang and Lihao Liu and Hui Chen and Zijia Lin and Jungong Han and Guiguang Ding},
year={2025},
eprint={2503.07465},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2503.07465},
}Для дальнейшего чтения оригинальная статья YOLOE доступна на arXiv. Исходный код проекта и дополнительные ресурсы доступны через их GitHub-репозиторий.
Часто задаваемые вопросы (FAQ)
Чем YOLOE отличается от YOLO-World?
Хотя и YOLOE, и YOLO-World позволяют выполнять детекцию с открытым словарем, YOLOE предлагает несколько преимуществ. YOLOE достигает на +3.5 AP более высокой точности на LVIS, используя в 3 раза меньше вычислительных ресурсов и работая в 1.4 раза быстрее, чем YOLO-Worldv2. YOLOE также поддерживает три режима промптирования (текст, визуальный и внутренний словарь), тогда как YOLO-World в основном фокусируется на текстовых промптах. Кроме того, YOLOE включает встроенные возможности сегментации экземпляров, предоставляя точные маски для обнаруженных объектов без дополнительных затрат.
Можно ли использовать YOLOE как обычную модель YOLO?
Да, YOLOE может работать в точности как стандартная модель YOLO без потерь в производительности. При использовании в закрытом режиме (без промптов) модули открытого словаря YOLOE перепараметризуются в стандартную голову детекции, что приводит к идентичной скорости и точности, как у эквивалентных моделей YOLO11. Это делает YOLOE чрезвычайно универсальной — вы можете использовать ее как традиционный детектор для максимальной скорости, а затем переключаться в режим открытого словаря только при необходимости.
Какие типы промптов можно использовать с YOLOE?
YOLOE поддерживает три типа промптов:
- Текстовые промпты: Укажите классы объектов на естественном языке (например, "person", "traffic light", "bird scooter")
- Визуальные промпты: Предоставьте эталонные изображения объектов, которые вы хотите найти
- Внутренний словарь: Используйте встроенный словарь YOLOE из 1200+ категорий без внешних промптов
Эта гибкость позволяет адаптировать YOLOE к различным сценариям без переобучения модели, что делает ее особенно полезной для динамических сред, где требования к детекции часто меняются.
Как YOLOE справляется с сегментацией экземпляров?
YOLOE интегрирует сегментацию экземпляров непосредственно в свою архитектуру, расширяя голову детекции веткой предсказания масок. Этот подход схож с YOLOv8-Seg, но работает для любого промптируемого класса объектов. Маски сегментации автоматически включаются в результаты вывода и доступны через results[0].masks. Этот унифицированный подход устраняет необходимость в отдельных моделях для детекции и сегментации, упрощая рабочие процессы для приложений, требующих точных границ объектов.
Как YOLOE обрабатывает вывод с пользовательскими промптами?
Подобно YOLO-World, YOLOE поддерживает стратегию "prompt-then-detect", которая использует офлайн-словарь для повышения эффективности. Пользовательские промпты, такие как описания или специфические категории объектов, предварительно кодируются и сохраняются как офлайн-эмбеддинги словаря. Этот подход упрощает процесс детекции без необходимости переобучения. Вы можете динамически задавать эти промпты внутри модели, чтобы настроить ее под конкретные задачи детекции:
from ultralytics import YOLO
# Initialize a YOLOE model
model = YOLO("yoloe-26s-seg.pt")
# Define custom classes
model.set_classes(["person", "bus"])
# Execute prediction on an image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()