Представьте, сколько усилий нужно, чтобы дообучить модель компьютерного зрения:
- Сбор данных. Хорошо, если есть открытые датасеты с подходящей лицензией. Часто приходится собирать данные вручную, балансировать и дополнять их.
- Разметка и аугментация. Качественная разметка — залог точных результатов. Требуется время, чтобы аккуратно выделить bounding box'ы, проверить их и учесть редкие случаи.
- Обучение и валидация. Нужны вычислительные ресурсы, время и деньги. Даже при удачном старте редко удаётся обойтись без нескольких итераций подбора параметров.
Но есть альтернатива — YOLOE. Эта модель позволяет обойти традиционный цикл дообучения.
Как работает обычный YOLO и в чём его ограничение
Чтобы понять, что нового в YOLOE, вспомним архитектуру классического детектора.
Изображение проходит через backbone — свёрточную сеть, извлекающую признаки: края, текстуры, формы на разных масштабах. Затем признаки объединяются в PAN (Pyramid Attention Network), которая агрегирует информацию с разных уровней детализации. В конце голова детектора предсказывает наличие объекта, его положение (bounding box) и принадлежность к классу.
Архитектура может меняться в зависимости от версии (YOLOv5, YOLOv8 и т.д.), но остаётся одно ограничение: классы жёстко заданы датасетом. Хотите искать новый объект — собирайте данные, размечайте, дообучайте.
Что такое YOLOE и как модель обходит фиксированные классы
В YOLOE (You Only Look Once - Everything) backbone и PAN остаются практически без изменений. Основное отличие — в голове детектора.
Вместо сравнения визуальных эмбеддингов с фиксированными классами, модель использует векторы из текстового энкодера, запущенного один раз перед инференсом.
Для этого авторы предложили RepRTA (Re-parameterizable Region-Text Alignment) — лёгкую вспомогательную сеть, которая уточняет текстовые эмбеддинги и улучшает согласование с визуальными признаками. На этапе инференса текстовый энкодер убирается, а его влияние «зашивается» в веса модели через ре-параметризацию. Это не добавляет задержек — скорость остаётся такой же, как у обычного YOLO.
Теперь вместо дообучения можно просто задать нужные классы текстом:
from ultralytics import YOLOE
model = YOLOE("yoloe-26m-seg.pt") # инициализируем модель
model.set_classes(["person", "bus"]) # задаём произвольные классы через текстовый энкодер
results = model.predict("path/to/image.jpg") # инференс без участия энкодера
Кроме текстовых промптов, YOLOE поддерживает визуальные промпты через модуль SAVPE (Semantic-Activated Visual Prompt Encoder). Можно показать модельке пример объекта — и она начнёт искать похожие, даже без текстового описания. Это полезно, когда объект проще показать, чем описать: например, редкая деталь, нестандартный дефект или специфическая упаковка.
import numpy as np
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEVPSegPredictor
model = YOLOE("yoloe-26m-seg.pt")
visual_prompts = dict(
bboxes=np.array([
[221.52, 405.8, 344.98, 857.54], # Person
[120, 425, 160, 445], # Bus
]),
cls=np.array([0, 1])
)
results = model.predict(
"ultralytics/assets/bus.jpg",
refer_image="reference.jpg",
visual_prompts=visual_prompts,
predictor=YOLOEVPSegPredictor
)
results[0].show()
Также доступен режим без подсказок: модель автоматически распознаёт более 1200 категорий из встроенного словаря. Достаточно подать изображение — и модель сама предложит наиболее вероятные классы.
from ultralytics import YOLOE
model = YOLOE("yoloe-26m-seg-pf.pt")
results = model.predict("path/to/image.jpg") # автоматическое распознавание
results[0].show()
Когда YOLOE работает, а когда нет
Это не волшебная палочка. Мы протестировали модель на разных задачах: в одних случаях перешли обратно на классический YOLO, в других остались на YOLOE. Выводы:
Работает хорошо, если задача чётко описывается словами или визуальным примером, объекты визуально различимы и не требуют узкоспециализированного контекста.
Работает хуже, если классы визуально похожи и отличаются тонкими деталями, объект слишком специфичен (модель его «не видела» при предобучении), или нужна точность выше 95–98% на нестандартных данных.
В таких случаях YOLOE можно использовать как отправную точку: оценить качество, а затем решить — достаточно ли настройки промптов или всё-таки нужно дообучение.
Примеры задач без дообучения
Вот несколько сценариев, где YOLOE показывает себя особенно хорошо:
Контроль маркировки и упаковки. Обнаружение QR-кодов, повреждённых этикеток или неправильно ориентированной упаковки на конвейере. Задача проста для описания, объекты визуально отличимы. Например, это помогло в распознавании обязательной маркировки мясной продукции.
Контроль рабочей зоны. Поиск посторонних предметов в зоне, которая должна быть пустой, или определение отсутствия нужного инструмента на рабочем месте.
Подсчёт и классификация на складе. На складах ассортимент часто меняется. Возможность задавать классы «на лету» серьёзно сокращает затраты на обучение моделей.
Детекция очевидных дефектов. Царапины, сколы, грубые деформации — если дефект хорошо виден и легко описывается словами.
YOLOE не заменяет дообучение там, где нужна высокая точность на специфических данных. Но она снижает порог входа и меняет сам подход к задачам компьютерного зрения.