Основы YOLO: архитектура, метрики качества и выбор версии
Как эта тема связана с курсом и запретом на читы
В предыдущей статье мы зафиксировали границы курса: мы применяем компьютерное зрение в игровых и обучающих проектах без вмешательства в онлайн-матчи и без автоматизации ввода.
Чтобы делать легальные и полезные проекты (тренажёры меткости, анализ записей, подсказки в собственной игре, стриминговая аналитика), нужно уверенно понимать базу: как устроена YOLO, как мерить качество детектора и как выбрать версию модели под вашу задачу и железо.
Что такое YOLO и что она возвращает
YOLO (You Only Look Once) — семейство моделей для детекции объектов.
Детекция отличается от классификации тем, что модель отвечает не на вопрос что на картинке, а на вопрос где и что находится на картинке.
На выходе детектор обычно выдаёт список найденных объектов, где каждый объект описывается:
прямоугольной рамкой (bounding box): координаты и размер
классом (например, мишень, иконка, манекен, кнопка интерфейса)
уверенностью (confidence) — насколько модель уверена в этой находкеДальше эти находки можно использовать без автоматизации управления: например, подсветить цель в тренажёре, посчитать количество ошибок в записи, построить статистику реакции.
Архитектура YOLO на уровне блоков
Современные реализации YOLO (разных поколений и форков) различаются деталями, но общая идея часто укладывается в 3 части.
!Схема из трёх частей: извлечение признаков, объединение признаков, предсказания рамок и классов
Backbone
Backbone — это экстрактор признаков.
На вход: изображение (например, пикселей)
На выход: набор карт признаков (feature maps), которые кодируют формы, текстуры и контуры на разных уровнях детализацииПрактический смысл: backbone учится выделять визуальные признаки целей (силуэты мишеней, элементы UI, типичные формы объектов).
Neck
Neck объединяет признаки разных масштабов.
Почему это важно:
маленькие объекты (иконки, далёкие цели) лучше видны в высоком разрешении признаков
большие объекты (крупные мишени) можно уверенно находить на более грубых признакахТипичные идеи в neck: объединение сверху-вниз и снизу-вверх, чтобы модель одновременно понимала контекст и детали. В классической литературе часто встречаются схемы FPN/PAN-подобных объединений.
Head
Head — голова, которая делает предсказания.
Обычно она предсказывает для множества позиций и масштабов:
рамки (bbox)
вероятности классов
confidence (иногда отдельно объектность/obj score)После этого применяется постобработка, чтобы убрать дубли.
Постобработка: NMS
Когда модель видит один объект, она может выдать несколько очень похожих рамок. Чтобы оставить лучшие, используют NMS (Non-Maximum Suppression).
Идея простая:
сортируем рамки по уверенности
берём самую уверенную
удаляем рамки, которые слишком сильно перекрываются с нейКлючевой параметр — порог перекрытия (обычно через IoU, ниже).
Базовые метрики качества детектора
Чтобы выбрать модель и понять, что улучшать, нужны метрики. В игровых и обучающих проектах часто важны не только «красивые боксы», но и стабильность, скорость, малое число ложных срабатываний.
IoU: насколько рамки совпадают
IoU (Intersection over Union) — отношение площади пересечения двух рамок к площади их объединения.
Где:
— площадь пересечения предсказанной рамки и истинной (размеченной)
— площадь объединения этих двух рамокIoU принимает значения от до :
— рамки не пересекаются
— рамки полностью совпадаютIoU используется, чтобы решить, считается ли предсказание достаточно точным попаданием в объект (например, IoU ).
Precision и Recall: ложные срабатывания и пропуски
В детекции после выбора порога уверенности (confidence threshold) можно посчитать:
TP (true positives) — правильные детекции
FP (false positives) — ложные детекции (модель «увидела» объект там, где его нет)
FN (false negatives) — пропуски (объект был, но модель его не нашла)Тогда:
Чем выше precision, тем меньше ложных срабатываний.Чем выше recall, тем меньше пропусков.Практическая связь с нашими проектами:
для аналитики записей часто важнее высокий recall (лучше найти почти всё и потом фильтровать)
для подсказок в тренажёре часто важнее высокий precision (лучше показывать меньше подсказок, но почти без ошибок)PR-кривая и AP
Если менять порог confidence, precision и recall будут меняться. График зависимости precision от recall называется PR-кривой.
!Иллюстрация PR-кривой и площади под ней как AP
AP (Average Precision) — это площадь под PR-кривой для одного класса. Интуитивно: один показатель качества, учитывающий компромисс между precision и recall.
mAP: среднее AP по классам и порогам IoU
mAP (mean Average Precision) — среднее AP по классам.
В популярных бенчмарках (например, COCO) часто используют вариант, где качество усредняют по нескольким порогам IoU (например, от 0.5 до 0.95). В логах обучения это может отображаться как mAP@0.5 или mAP@0.5:0.95.
Официальное описание метрик COCO можно сверять по документации и материалам сообщества, например через репозиторий COCO. COCO dataset
Важно: одного mAP недостаточно для выбора модели под реальное приложение.
Что ещё важно кроме метрик качества
Скорость и задержка
Для проектов реального времени (например, тренажёр-миниигра) важны:
FPS (кадров в секунду)
задержка (latency) на один кадрДве модели с одинаковым mAP могут ощущаться совершенно по-разному в интерактивном приложении.
Размер модели и требования к железу
При выборе версии учитывайте:
GPU/CPU, на котором будет работать проект
целевое разрешение кадра (например, против )
ограничения по памятиУстойчивость к «игровым» условиям
Даже в легальных сценариях (тренажёр, анализ реплея) «игровая» картинка часто сложная:
motion blur
смена освещения
вспышки, эффекты
перекрытия объектов
интерфейсные элементы поверх сценыПоэтому полезно оценивать модель не только на тестовой выборке, но и на похожих на реальность данных.
Как выбрать версию YOLO под задачу
Ниже — практичная рамка выбора без привязки к запрещённым сценариям.
Выбираем экосистему
На практике чаще всего используют:
Ultralytics YOLO (современная линейка, удобная для обучения и инференса)
старые исследовательские версии и статьи YOLO как источник идейДля понимания эволюции полезно посмотреть оригинальную статью YOLOv3. YOLOv3: An Incremental Improvement (Joseph Redmon, Ali Farhadi)
Для практики многие выбирают экосистему Ultralytics:
репозиторий YOLOv5 (исторически популярный, особенно для прикладных задач) ultralytics/yolov5
документацию по современным версиям Ultralytics YOLO Ultralytics DocsВыбираем размер модели
Обычно у одной версии есть размеры (например, n/s/m/l/x):
меньше модель — выше скорость, ниже качество
больше модель — выше качество, ниже скоростьПравило для курса:
начинайте с маленькой модели, чтобы быстро наладить датасет, разметку и пайплайн
затем увеличивайте модель, если упёрлись в качество, а не в данныеВыбираем входное разрешение
Увеличение входного размера помогает маленьким объектам, но:
замедляет инференс
требует больше памятиДля задач вроде детекции UI-элементов иногда лучше увеличить разрешение, чем увеличивать модель.
Выбираем метрики под сценарий
Для наших безопасных сценариев удобно заранее определить приоритет:
тренажёр с подсказками: высокий precision, чтобы не раздражать ложными подсветками
анализ записей: высокий recall, чтобы не пропускать события
смешанный режим: компромисс, плюс логирование ошибокТипичные ошибки выбора
выбирать модель только по mAP на чужом датасете (например, COCO), игнорируя ваш домен
игнорировать ложные срабатывания в интерфейсе (UI часто создаёт «похожие» паттерны)
пытаться «выжать качество» увеличением модели, когда проблема в данных и разметкеМини-выводы для продолжения курса
YOLO решает задачу детекции: рамки + классы + уверенность.
Архитектура часто описывается как backbone → neck → head, а затем применяется NMS.
Ключевые метрики: IoU, precision, recall, AP/mAP. Каждая отвечает за свой аспект качества.
Выбор версии YOLO — это баланс качества, скорости, железа и доменной устойчивости.В следующих материалах курса логично перейти к данным: как формировать датасет под игровой/обучающий сценарий (без онлайновых читов), как размечать, какие классы выбирать и как оценивать ошибки модели на примерах.