ML Fundamentals

YOLO

You Only Look Once — семейство нейросетей для детекции объектов, находящих все объекты на изображении за один проход.

Что такое YOLO

YOLO (You Only Look Once — «смотрим только один раз») — семейство моделей детекции объектов: модель принимает изображение и возвращает список найденных объектов с рамками и метками классов. Главная идея в названии: вся картинка обрабатывается за один проход сети, а не перебором сотен фрагментов-кандидатов.

До YOLO детекторы работали в два этапа: сначала генерировали регионы-кандидаты, потом классифицировали каждый по отдельности. Такой подход точен, но медленный. YOLO свела детекцию к одной регрессионной задаче — и сделала обработку видео в реальном времени практичной. Первая версия вышла в 2016 году (Джозеф Редмон).

Не то YOLO. В сленге YOLO означает «you only live once». К нейросетям это отношения не имеет — совпадение аббревиатур.

Как YOLO работает

Изображение (640×640)
    ↓
Backbone — свёрточная сеть извлекает признаки
    ↓
Neck — объединяет признаки разных масштабов
    ↓
Head — на сетке ячеек предсказывает:
    • координаты рамки (x, y, w, h)
    • confidence: есть ли здесь объект
    • вероятности классов
    ↓
NMS — убирает дублирующие рамки одного объекта
    ↓
Список объектов: [(класс, confidence, рамка), ...]

Сеть делит изображение на ячейки, и каждая отвечает за объекты в своей зоне. Один объект почти всегда порождает несколько пересекающихся рамок, поэтому финальный шаг — NMS (Non-Maximum Suppression): из группы сильно пересекающихся рамок остаётся одна с наибольшим confidence.

Ключевые понятия

  • IoU (Intersection over Union) — площадь пересечения предсказанной и настоящей рамки, делённая на площадь объединения. 1.0 — идеальное совпадение, 0 — не пересекаются.
  • Confidence — уверенность модели, что в рамке объект. Порог отсечения настраивается: ниже порог — больше находок и больше ложных.
  • mAP — средняя точность по всем классам, основная метрика детекции. mAP@0.5 считает попаданием IoU выше 0.5; mAP@0.5:0.95 усредняет по нескольким порогам и строже.

Порог confidence — это ручка «полнота против точности». Для контроля брака его снижают (лучше лишний раз проверить), для подсчёта посетителей — повышают.

Версии и лицензии

Первые три версии (v1–v3) сделал Джозеф Редмон на собственном фреймворке Darknet. После его ухода из области название подхватили разные команды, и сегодня YOLO — это уже не одна модель, а линейка от разных авторов: YOLOv4, YOLOv5, YOLOv7, YOLOv8, YOLO-NAS, YOLOv9/v10/v11 и далее. Нумерация не означает преемственности — версии от разных команд развивались параллельно.

Внутри каждой версии есть размеры от n (nano) до x (extra large): чем крупнее, тем точнее и медленнее.

Про лицензию. Модели Ultralytics (YOLOv5, v8, v11) распространяются под AGPL-3.0. Это копилефт: использование в закрытом коммерческом продукте требует либо раскрытия исходников, либо покупки коммерческой лицензии. Проверяйте лицензию до внедрения — на этом регулярно обжигаются.

Запуск

from ultralytics import YOLO

model = YOLO("yolo11n.pt")          # предобучена на COCO (80 классов)

results = model("street.jpg")
for box in results[0].boxes:
    cls = model.names[int(box.cls)]
    print(f"{cls}: {float(box.conf):.2f}")

# Дообучение на своих классах
model.train(data="dataset.yaml", epochs=100, imgsz=640, batch=16)

Формат датасета — по файлу разметки на изображение: класс и координаты рамки, нормированные к размеру картинки.

class_id  x_center  y_center  width  height
0         0.481     0.632     0.115  0.204

YOLO и GPU

Детекция — задача, где GPU нужен не столько для обучения, сколько для потока. Fine-tuning небольшой модели на паре тысяч своих картинок укладывается в часы на одной RTX 4090 — это доступный порог входа по сравнению с LLM.

На инференсе главный ресурс — не память, а пропускная способность: модели легко помещаются в несколько ГБ VRAM, но обработка десятков видеопотоков требует батчинга и экспорта в TensorRT. Декодирование самого видео тоже стоит вынести на GPU — иначе узким местом станет CPU, а не сеть.

Связанные термины

  • Computer Vision — область, к которой относится детекция
  • датасет — размеченные изображения для обучения
  • fine-tuning — дообучение YOLO под свои классы
  • PyTorch — фреймворк, на котором работают современные версии
  • инференс — запуск детектора в продакшене
  • GPU — железо для обучения и обработки видеопотоков

Готовы запустить GPU-задачу?

Запустить GPU-сервер