Rychagov S. AI Кейсы
Human detection

Детекция людей

Отслеживание людей и их перемещение

Где применяется

В своей практике я разработал систему детекции и отслеживания людей в реальном времени для аналитики посещаемости и управления потоками людей. Система использует компьютерное зрение для обнаружения людей в видеопотоке с камер, отслеживает их перемещение, измеряет время нахождения в определённых зонах (очередь, касса, торговый зал) и генерирует аналитику по количеству посетителей. Это позволяет розничным компаниям, торговым центрам и другим местам оптимизировать операции, улучшать обслуживание и принимать решения на основе данных о потоках людей.

Кому пригодится

Это решение я рекомендую розничным магазинам и торговым центрам для аналитики посещаемости, выявления пиков нагрузки и оптимизации работы кассиров. Кафе и ресторанам для управления очередями и контроля времени обслуживания. Банкам и государственным учреждениям для управления потоками людей и оптимизации расписания. Аэропортам и транспортным узлам для отслеживания пассажиропотоков. Логистическим центрам и складам для контроля движения людей и соблюдения безопасности. Спортивным объектам и мероприятиям для подсчёта посетителей. Системам безопасности и охраны для мониторинга несанкционированного доступа и отслеживания подозрительной активности.

Технологии

YOLO12 для детекции объектов и людей

Я использую YOLOv12 (You Only Look Once) — современную архитектуру нейросети для детекции объектов в реальном времени. YOLO12 предоставляет несколько размеров моделей (nano, small, medium, large, xlarge) для оптимизации по скорости и точности. На практике система обнаруживает людей на видео с точностью 95%+ даже в сложных условиях (толпа, частичная закрытость, различные позы).

Преимущество YOLO перед другими алгоритмами: система обрабатывает изображение за один проход (отсюда название "Look Once"), что позволяет работать в реальном времени. Система не просто обнаруживает человека, но также возвращает координаты bounding box (прямоугольник вокруг человека) и уверенность детекции.

Python и интеграция с OpenCV

Вся система разработана на Python с использованием OpenCV для захвата видео с камер и обработки кадров. Я использую ultralytics

Отслеживание людей и трекинг

Обнаружение людей — это только первый шаг. Для отслеживания я применяю алгоритмы трекинга, которые связывают обнаруженные людей между кадрами: ByteTrack или DeepSORT позволяют отследить конкретного человека на протяжении видео и назначить ему уникальный ID. Система знает, что человек с ID #123 вошёл в магазин, затем прошёл к кассе, потом вышел, и может вычислить, сколько времени он провёл в магазине.

На практике: точность трекинга ~90% (иногда система может потерять трек человека в толпе, но обычно восстанавливает его). Уникальные ID позволяют строить траектории движения людей и анализировать их поведение.

Определение зон интереса (ROI - Region of Interest)

Я определяю в видео специальные зоны интереса: очередь у кассы, касса, входная дверь, торговый зал. Для каждой зоны система отслеживает: сколько людей находится в зоне в данный момент, сколько времени каждый провёл в зоне, когда люди вошли и вышли из зоны. На практике: система может сказать, что в очереди у кассы #1 сейчас 5 людей, средний человек ждёт 3 минуты.

Подсчёт людей и аналитика входов-выходов

Система выделяет виртуальные линии "входа" и "выхода" на видео. Когда человек пересекает эту линию, система его считает. Это позволяет в реальном времени знать: сколько людей вошло в магазин, сколько вышло, текущее количество людей в помещении. Система может отслеживать эти метрики по времени и строить графики (пики посещаемости, дни недели с наибольшим потоком).

На практике: за день магазин может получить детальный отчёт "с 9:00 до 10:00 вошло 150 человек, вышло 120, пиковое количество в 9:45 было 80 человек одновременно".

CUDA GPU ускорение

Все вычисления используют NVIDIA GPU с CUDA для максимальной производительности. На CPU обработка одного кадра может занять 100+ ms (слишком медленно для real-time). На GPU (CUDA) обработка одного Full HD кадра занимает 10-30ms, что позволяет обрабатывать 30-60 fps в реальном времени.

Я использую оптимизированные версии моделей (INT8 quantization, pruning) которые работают быстрее без значительного снижения точности. На GPU NVIDIA RTX 3070 система может одновременно обрабатывать 3-5 видеопотоков в Full HD, что позволяет мониторить несколько камер с одной машины.

Многокамерная система

Система поддерживает одновременное подключение нескольких IP-камер (через RTSP протокол) или USB камер. Каждый видеопоток обрабатывается в отдельном потоке или процессе. На praktyce: магазин может установить камеры у входа, у касс, в торговом зале, и система будет анализировать все потоки и давать единую статистику по магазину.

Временные метрики и время нахождения

Система отслеживает время нахождения человека в каждой зоне. Для кассы это критично: если среднее время в кассе более 5 минут, значит нужно открыть ещё кассу. Система вычисляет: минимальное, максимальное, среднее и медианное время в зоне, что помогает выявить проблемы (если 1 человек сидит час, это может указывать на проблему).

Интегрированная система охраны

Система может выявлять аномальное поведение: человек стоит слишком долго в одном месте (может быть подозрительным), большое скопление людей в определённой зоне (потенциальная проблема безопасности), люди движутся в неправильном направлении (например, в обратном потоке). При обнаружении аномалии система может отправить алерт охраннику или записать видео для последующего анализа.

Запись и архивирование видео

Система может записывать видео на диск или в облако (S3) с аннотациями (bounding boxes вокруг людей, их ID, линии движения). Записи индексируются по времени и метаданным, что позволяет быстро найти видео интересующего периода. Система может автоматически удалять старые видео в соответствии с политикой хранения.

Построение тепловых карт и траекторий

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

Дашборды и real-time монитор

Я создал веб-приложение (Vue.js + FastAPI) для отображения live статистики: текущее количество людей в магазине, количество в очередях, среднее время ожидания на кассах, графики входов-выходов. Менеджер может открыть дашборд на iPad на стене магазина и видеть real-time информацию. Система может отправлять алерты при аномалиях (очередь слишком длинная, пиковая нагрузка).

Интеграция с системами управления магазином

Система может интегрироваться с POS системами и системами управления магазином: если система обнаружила, что в очереди 20 людей, она может отправить сигнал, чтобы открыть ещё одну кассу. Или: если в торговом зале очень мало людей, система может предложить запустить акцию.

Архитектура и масштабирование

Архитектура: Python backend с использованием ultralytics (YOLO), OpenCV, обработка видео локально на GPU машинах, база данных PostgreSQL для хранения аналитики (входы-выходы, время в зоне, траектории), Redis для кэша real-time данных, S3 для архива видео, Vue.js frontend для дашбордов. Система масштабируется: можно добавлять дополнительные GPU машины для обработки новых камер, распределять нагрузку через load balancer.

Приватность и соответствие GDPR

Система не сохраняет лица людей или другие идентифицирующие данные — только анонимные ID, траектории и временные метрики. Это означает, что система соответствует GDPR и не требует согласия людей (поскольку лица не обрабатываются). На практике: система зажимает часть видео с лицами (или размывает их) перед архивированием.

Примеры использования

Система может: в магазине одежды — выявить, что у примерочных скопление людей, рекомендовать открыть ещё примерочные; в супермаркете — показать, что касса #3 работает медленнее (люди там тратят больше времени), рекомендовать тренинг кассира; в аэропорту — предупредить, если в одной зоне скопилось более 500 людей (риск безопасности); в ресторане — показать, что пиковая нагрузка в 12:30-13:00, рекомендовать увеличить персонал в этот период.

Важные организационные моменты

Первое — качество камер и их расположение. Система работает только если камеры установлены правильно: должны видеть всех людей, без слепых зон, с хорошим освещением. Я рекомендую провести аудит размещения камер перед развёртыванием системы — плохо расположённая камера даст неправильную статистику.

Второе — точность детекции зависит от условий. В условиях толпы, при плохом освещении, или когда люди носят одежду, которая сливается с фоном, система может давать худшие результаты. Я всегда рекомендую тестировать систему в реальных условиях перед финальной развёрткой.

Третье — приватность и уведомление. Люди должны знать, что они отслеживаются видеокамерами. Я рекомендую разместить видимые знаки "Video Surveillance" в магазине. Также нужно убедиться, что система соответствует местному законодательству (GDPR, местные законы о приватности).

Четвёртое — интерпретация данных требует внимания. Высокое количество людей — это не всегда хорошо (может быть очередь, люди раздражены). Низкое количество — не всегда плохо. Нужно понимать контекст и причины. Я рекомендую использовать систему вместе с опросами клиентов и анализом продаж.

Пятое — техническое обслуживание. Камеры нужно периодически чистить, проверять их позицию (со временем камеры могут смещаться). Система может сама обнаружить проблемы (если резко упал процент обнаруженных людей, значит с камерой проблема). Я рекомендую еженедельные проверки.

Шестое — масштабирование по мере роста. Если магазин расширяется и появляются новые области, нужно добавить новые камеры. Система легко масштабируется, но нужно убедиться, что GPU машина имеет достаточно ресурсов. Альтернатива — добавить вторую GPU машину для обработки новых потоков.

Седьмое — интеграция с бизнес-процессами. Система наиболее ценна когда результаты действительно используются для оптимизации: если данные показывают проблему, нужно действовать (открыть ещё кассу, изменить расписание, оптимизировать процесс). Без действий система становится просто "красивой визуализацией" без ценности.