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 Detection | person | Режим «никого нет», охрана периметра |
| Vehicle Detection | car, truck, motorcycle, bicycle | Парковки, въезды |
| Animal Detection | dog, cat | Фильтр ложных срабатываний для загородных домов |
| LPR (опция) | license plate + OCR | Распознавание номеров, интеграция со СКУД |
| Face Detection | face (без распознавания) | 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 год):
| Класс | Precision | Recall | F1 |
|---|---|---|---|
| person | 98,4% | 97,1% | 97,7% |
| car | 99,2% | 98,8% | 99,0% |
| truck | 96,1% | 94,3% | 95,2% |
| dog | 91,7% | 89,2% | 90,4% |
| license_plate | 97,8% | 96,5% | 97,1% |
Точность LPR мы приводим по детекции, не распознаванию. Распознавание номера (OCR) — отдельная задача, у нас точность 96–98% на скоростях до 40 км/ч и фронтальном ракурсе.
Настройка у клиента
В личном кабинете РуКлауд для каждой камеры доступны настройки:
- Зоны внимания. Рисуем полигоны, события учитываются только внутри них.
- Классы событий. Включаем только то, что нужно (например, для парковки — только «person» и «car»).
- Минимальный размер объекта. Отсеиваем мелочь далеко на горизонте.
- Расписание. AI работает только в определённые часы (для офиса — вечер и ночь).
- Группировка. Несколько быстрых срабатываний объединяются в одно уведомление с серией кадров.
После первичной настройки мы рекомендуем неделю понаблюдать — какие события приходят, какие ложные, и донастроить пороги и зоны. Обычно на третью неделю количество уведомлений стабилизируется на комфортном уровне 3–10 в сутки.
Подробнее про настройку обычной детекции движения — в статье «Motion Detection: настройка чтобы не забивать архив».