ГлавнаяБлог → AI-аналитика на YOLO

AI-аналитика в видеонаблюдении: YOLO, детекция людей и авто

Разбираемся, как устроена детекция объектов в современных камерах. Что такое YOLO, почему её восьмая версия в 2023 году заменила всё, что было раньше, чем in-camera вычисления отличаются от серверных, и как не утонуть в ложных срабатываниях.

Что такое YOLO и как она дошла до жизни такой

YOLO — You Only Look Once. Архитектура нейросети для детекции объектов, впервые опубликована Джозефом Редмоном в 2016 году. Её главное преимущество — однопроходная обработка: сеть сразу выдаёт ограничивающие рамки (bounding boxes) и классы объектов за одну прогонку по изображению. В отличие от предшественников (R-CNN, Fast R-CNN), где вычисления делались в несколько стадий, YOLO работает в десятки раз быстрее — отсюда и название.

Краткая хронология:

  • 2016 — YOLOv1. Концепция, 45 FPS на GPU, точность ниже конкурентов.
  • 2017–2018 — YOLOv2, YOLOv3. Добавлены anchors, feature pyramid, рост точности.
  • 2020 — YOLOv4, YOLOv5 (Ultralytics). Популярность в продакшне.
  • 2022 — YOLOv7. Развитие от авторов v4.
  • 2023 — YOLOv8. Anchor-free архитектура, существенное упрощение и прирост метрики mAP на 1,5–3 пункта.
  • 2024 — YOLOv9, YOLOv10, YOLOv11. Свежие версии с дальнейшей оптимизацией. В продакшне пока чаще используют v8 и v9.

Где запускать сеть: в камере или на сервере

Это главный архитектурный выбор. У каждого подхода свои плюсы.

In-camera (edge inference)

Детекция выполняется на чипе камеры. Современные SoC (Ambarella CV2/CV28, HiSilicon Hi3519D, Sophon, Rockchip RV1126) имеют встроенный нейросетевой ускоритель на 2–6 TOPS — хватает для реального времени на 1 потоке 4K или 2–4 потоках 1080p.

Плюсы:

  • Нет нагрузки на сеть — видео не передаётся лишний раз.
  • Приватность — данные не уходят с объекта, что критично для 152-ФЗ.
  • Низкая задержка — событие летит в облако за 200–400 мс.
  • Работает при обрыве интернета (локальный архив + события).

Минусы:

  • Чип ограничен по памяти и вычислениям. Для in-camera используют YOLOv8-nano или tiny — меньше параметров, чуть ниже точность.
  • Обновление модели требует обновления прошивки камеры, а это не всегда быстро.
  • Количество классов обычно меньше (5–15 вместо 80 из COCO).

On-server (cloud inference)

Видеопоток приходит в облако, там на GPU (A100, RTX 6000 Ada, L4) или специализированных ускорителях запускается полноразмерная модель YOLOv8-large или v9-c.

Плюсы:

  • Точность выше на 2–5 пунктов mAP.
  • Можно крутить 80+ классов, сегментацию, pose estimation.
  • Модель обновляется централизованно на всех клиентов сразу.
  • Можно пересчитать задним числом — появилась новая модель, прогнали по архиву.

Минусы:

  • Трафик. Для 1080p@25fps H.265 это ~2 Мбит/с × 24 ч = 21 ГБ в сутки на камеру. Тысяча камер — 21 ТБ.
  • GPU дорого. RTX 6000 Ada + место в ЦОДе + электричество — около 900 000 ₽/год.
  • Задержка 600–1500 мс — в реальном времени реагировать сложнее.
  • Приватность страдает — видео проходит через облачную инфраструктуру.

Гибрид (edge + cloud)

Наш выбор в РуКлауд для премиальной линейки. На камере работает лёгкая модель, которая отсеивает «всё или ничего» (есть объект — нет объекта). Когда камера уверена, что что-то происходит, она отправляет 3-секундный сегмент на сервер, где крутится крупная модель с полной классификацией.

Экономия: передаётся только 5–10% времени. Точность: как у on-server. Задержка: 400 мс до первичного алерта, 1,5–2 с до полной классификации.

Какие события мы детектируем

СобытиеКлассПрименение
Person DetectionpersonРежим «никого нет», охрана периметра
Vehicle Detectioncar, truck, motorcycle, bicycleПарковки, въезды
Animal Detectiondog, catФильтр ложных срабатываний для загородных домов
LPR (опция)license plate + OCRРаспознавание номеров, интеграция со СКУД
Face Detectionface (без распознавания)Blur для обезличивания, подсчёт посетителей
Line Crossingлюбой объект, пересекающий заданную линиюЗабор, невидимая граница
Object Left / Removedстатичный объект в зонеЗабытые пакеты в торговом зале, пропажа товара
Loiteringчеловек задержался в зоне > N сПодозрительное поведение у банкомата

Борьба с ложными срабатываниями

Самая частая жалоба клиентов: «у меня каждую минуту приходит уведомление, я устал». Причины ложных срабатываний и как мы с ними боремся:

1. Ветер и листья

Качающаяся ветка — это не человек, но пиксельно она может выглядеть похоже для плохой модели. Решение: YOLO — классификатор, она не сработает на «пятно движения», только на конкретный объект. Но для этого и её нужно правильно обучить на подходящих данных.

2. Животные

В каталоге COCO есть классы «собака», «кошка», «птица». В ночной ИК-съёмке эти классы иногда путаются с «человек» (особенно силуэт дога или лабрадора). Мы дообучили модель на 400 000 кадрах ночной ИК-съёмки с домашними и бродячими животными — точность классификации «не человек» выросла с 89% до 97,2%.

3. Тени и отражения

Тень человека на стене — это может быть ложным срабатыванием на стороне простой детекции движения. YOLO на это не реагирует — в отличие от motion detection она видит не движущиеся пиксели, а объекты.

4. Погода: снег, дождь, туман

Крупный снег в объектив и сильный дождь создают реальные проблемы — видимость падает, часть объектов детектируется с низкой уверенностью. В РуКлауд мы применяем адаптивный порог уверенности: в нормальных условиях считаем объектом при confidence ≥ 0.45, в сложных — поднимаем до 0.65, чтобы лучше избежать ложных.

Реальные цифры точности

Наши показатели на внутреннем тестовом датасете (около 50 000 кадров реальных инсталляций клиентов за 2024 год):

КлассPrecisionRecallF1
person98,4%97,1%97,7%
car99,2%98,8%99,0%
truck96,1%94,3%95,2%
dog91,7%89,2%90,4%
license_plate97,8%96,5%97,1%

Точность LPR мы приводим по детекции, не распознаванию. Распознавание номера (OCR) — отдельная задача, у нас точность 96–98% на скоростях до 40 км/ч и фронтальном ракурсе.

Настройка у клиента

В личном кабинете РуКлауд для каждой камеры доступны настройки:

  • Зоны внимания. Рисуем полигоны, события учитываются только внутри них.
  • Классы событий. Включаем только то, что нужно (например, для парковки — только «person» и «car»).
  • Минимальный размер объекта. Отсеиваем мелочь далеко на горизонте.
  • Расписание. AI работает только в определённые часы (для офиса — вечер и ночь).
  • Группировка. Несколько быстрых срабатываний объединяются в одно уведомление с серией кадров.

После первичной настройки мы рекомендуем неделю понаблюдать — какие события приходят, какие ложные, и донастроить пороги и зоны. Обычно на третью неделю количество уведомлений стабилизируется на комфортном уровне 3–10 в сутки.

Подробнее про настройку обычной детекции движения — в статье «Motion Detection: настройка чтобы не забивать архив».