Перейти к содержанию
Innovialabs

Детекция объектов с YOLO: от датасета до запуска

Практика3 мин

Коротко

YOLO-проект — это на 80% работа с данными: соберите кадры из реальных условий, аккуратно разметьте, дообучите готовую модель, проверьте mAP на отложенной выборке и экспортируйте под нужное железо.

Короткий ответ

YOLO (You Only Look Once) — семейство моделей, которые за один проход находят на изображении объекты и рисуют вокруг них рамки с классом и уверенностью. Для бизнес-задачи — каска на рабочем, номер машины, товар на полке — обычно не обучают модель с нуля, а дообучают готовую на своих данных. Путь выглядит так: данные → разметка → обучение → оценка → запуск.

Шаг 1. Сбор изображений

Качество модели определяется тем, насколько данные похожи на реальную эксплуатацию.

  • Снимайте с той же камеры и того же ракурса, где модель будет работать.
  • Добавьте разное освещение: день, ночь, блики, дождь.
  • Включите «сложные» кадры: частично закрытые объекты, толпу, мелкие объекты вдалеке.
  • Добавьте кадры без объектов — так модель реже даёт ложные срабатывания.
  • Избегайте почти одинаковых кадров подряд из видео: берите каждый N-й кадр.

Шаг 2. Разметка

Каждому объекту рисуется рамка и присваивается класс. Для этого есть инструменты вроде CVAT или Label Studio, которые экспортируют разметку в формат YOLO.

Правила, которые экономят недели:

  • Напишите инструкцию для разметчиков: что считать объектом, как размечать частично видимые.
  • Рамка должна плотно облегать объект, без лишнего фона.
  • Делайте выборочную перепроверку — ошибки разметки напрямую снижают качество.
  • Разделите данные на train / val / test заранее, и кадры с одной сцены держите в одной части.

Описание датасета в формате YOLO:

path: datasets/helmets
train: images/train
val: images/val
names:
  0: helmet
  1: no_helmet

Шаг 3. Обучение

С библиотекой Ultralytics базовое дообучение занимает несколько строк:

from ultralytics import YOLO

model = YOLO("yolov8n.pt")          # предобученная маленькая модель
model.train(data="data.yaml", epochs=100, imgsz=640)
metrics = model.val()                # оценка на val
model.export(format="onnx")          # экспорт для запуска

Выбор размера модели — компромисс: маленькие (n, s) быстрые и подходят для edge-устройств, большие (l, x) точнее, но требуют мощного GPU.

Шаг 4. Оценка: что значит mAP

  • Precision — какая доля найденных объектов действительно верна.
  • Recall — какую долю реальных объектов модель нашла.
  • mAP@0.5 — средняя точность при совпадении рамок на 50% и более.
  • mAP@0.5:0.95 — более строгая метрика, усреднённая по разным порогам совпадения.

Смотрите не только на общий mAP, но и на метрики по каждому классу и на ошибки глазами. Для задач безопасности часто важнее recall (не пропустить нарушение), для автоматических штрафов — precision (не наказать зря).

Шаг 5. Запуск

ВариантКогда подходит
Сервер с GPUМного камер, нужна точность, есть стабильная сеть
Edge-устройство (Jetson и аналоги)Обработка на месте, мало трафика, приватность
CPU / мини-ПКМало потоков, маленькая модель, невысокий FPS допустим

Для ускорения модель экспортируют в ONNX, TensorRT или OpenVINO — в зависимости от железа. Дальше нужен код вокруг модели: чтение RTSP-потока, фильтрация срабатываний по нескольким кадрам, отправка событий в CRM, Telegram или систему учёта.

Частые ошибки

  • Обучать на фото из интернета, а запускать на камере с другим ракурсом.
  • Оценивать модель на кадрах, очень похожих на обучающие, — метрики завышены.
  • Не мониторить модель после запуска: сменилось освещение или камера — качество упало.
  • Реагировать на каждое срабатывание без подтверждения на нескольких кадрах.

Частые вопросы

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

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.