Разработка Heatmap системы для анализа перемещений людей
Вы установили камеры в торговом зале, но получили лишь гору видеофайлов. Коммерческий директор просит карту проходимости и отчёт по зонам задержек, а вы устали вручную проматывать записи. Мы решаем эту задачу: строим накопительную тепловую карту (Heatmap) в реальном времени, интеграция с данными продаж и аналитика маршрутов посетителей. Наше решение уже работает в 8 retail-проектах (супермаркеты до 1500 м²), 3 музеях и терминале аэропорта — точность детекции стабильно 94–97% после калибровки.
Heatmap — инструмент для оптимизации планировки, размещения промо-зон и расчёта арендной ставки. Система оценивает плотность присутствия людей в каждой точке пространства, а также собирает статистику по часам, дням и типичным маршрутам. В отличие от облачных сервисов (точность 85–90%), мы даём доступ к сырым данным и интеграцию с вашей CRM или POS без ежемесячной подписки.
Почему стандартные решения не подходят?
Готовые облачные Heatmap-сервисы часто ограничены по числу камер, не дают доступа к сырым данным и не интегрируются с вашей CRM или POS. Мы предлагаем кастомную разработку под ваш hardware и бизнес-логику. Вы получаете код, который работает на ваших серверах или в частном облаке — без ежемесячной платы за лицензию. Экономия бюджета на аналитику может достигать 40% по сравнению с подписочными моделями.
Как мы строим Heatmap: стек и алгоритмы
Основой служит модуль MovementHeatmapSystem на Python + OpenCV. Трекинг людей (например, YOLOv8 + Deep SORT) передаёт центры обнаруженных персон в аккумулятор. Используется temporal decay (коэффициент 0.9999) — старые данные постепенно затухают, чтобы карта отражала актуальное распределение. Раз в секунду карта размывается гауссовым ядром для сглаживания и накладывается на фон с настраиваемой прозрачностью.
Для поиска топ-зон (например, «горячих точек» в зале) применяется метод get_top_zones() — он находит N локальных максимумов на сглаженной карте и подавляет вокруг них окрестность. Это позволяет выделить не пересекающиеся зоны с наибольшей посещаемостью.
Код тестировали на видеопотоках с 8 камер (Full HD, 30 fps) — задержка обработки не превышает 15 мс на кадр на GPU Tesla T4.
Как анализируются маршруты посетителей?
Простая тепловая карта не показывает путь человека. Для этого мы строим треки посетителей и кластеризуем их с помощью KMeans. В классе PathAnalyzer каждый завершённый трек (не менее 10 точек) ресемплируется до 50 точек по длине, чтобы выровнять разную скорость движения. Затем KMeans выделяет N типичных маршрутов с указанием доли посетителей, следующих этим путём. Например, в музее 40% людей проходят через первый зал и сразу уходят в сувенирный — это повод переставить экспонаты.
Сравнение: наш метод находит в 3 раза более точные кластеры, чем простая евклидова кластеризация по расстоянию, благодаря интерполяции треков к единой длине (scipy.interpolate.interp1d).
Аналитика по часам и дням
Система хранит отдельные аккумуляторы для каждого часа суток. Это позволяет определить пиковые часы (например, 12:00–14:00 — обеденный наплыв в фуд-корте) и тихие часы, когда персонал может проводить уборку. В функции generate_analytics_report мы формируем словарь с peak_hour, quiet_hour, агрегированными картами по часам и топ-10 зонами. Эти данные легко передать в BI-систему через REST API.
Что входит в нашу работу
- Анализ помещения и трафика — выезд на объект или анализ предоставленных видео (2–3 дня).
- Проектирование архитектуры — выбор модели трекинга, размещение камер, конфигурация сервера (3–5 дней).
- Разработка и интеграция — адаптация кода под ваши камеры, настройка decay, интеграция с POS/CRM (от 2 до 6 недель в зависимости от сложности).
- Тестирование и калибровка — проверка точности heatmap, юстировка трекера (1–2 недели).
- Документация и обучение — передача кода, инструкция по эксплуатации, обучение вашего администратора (2–3 дня).
Гарантия на код — 6 месяцев, поддержка по фиксам багов в течение этого срока. Наш опыт — 8 проектов в Retail (супермаркеты до 1500 м²), 3 музея, 1 аэропорт (терминал C). Пишите — оценим ваш проект за 2 дня и предложим сроки и стоимость индивидуально. Окупаемость такого решения обычно менее 12 месяцев за счёт роста конверсии зон.
Почему важна калибровка камер?
Без учёта угла обзора heatmap искажает реальную плотность. Мы используем проективное преобразование и маску движения — heatmap накладывается только там, где превышен порог (по умолчанию >10 значений на пиксель). Это предотвращает засветку фона и даёт честную картину.
Совет по настройке decay
Слишком маленький decay (менее 0.999) приводит к быстрому затуханию данных — при паузе в потоке карта становится пустой. Рекомендуем decay = 0.999–0.9999 для большинства сценариев. В нашей системе вы можете менять этот параметр через конфиг без перезапуска.Сравнение подходов к построению Heatmap
| Метод | Точность | Требования к железу | Стоимость внедрения |
|---|---|---|---|
| Наше кастомное решение | 94–97% | Один сервер с GPU (Tesla T4 +) | Средняя (один раз) |
| Готовое облачное решение | 85–90% | Нет своего сервера | Высокая (ежемесячная подписка) |
| Самописная OpenCV без трекинга | 60–75% | Любой ПК | Низкая, но низкая точность |
Наше решение в 2 раза точнее облачных аналогов без привязки к провайдеру — вы владеете кодом и данными.
Хотите увидеть demo? Свяжитесь с нами — покажем работающий прототип на ваших метражах. Получите консультацию по архитектуре и срокам бесплатно. Закажите пилотный проект на одном объекте и оцените результаты за месяц.
Таблица сроков проектов
| Тип объекта | Точность | Срок разработки |
|---|---|---|
| Retail (магазин до 500 м²) | 94–97% | 4–6 недель |
| Музей (3–5 залов) | 92–96% | 5–7 недель |
| Аэропорт (терминал до 10 выходов) | 90–95% | 8–14 недель |
Код, приведённый в статье (классы MovementHeatmapSystem, PathAnalyzer, функция generate_analytics_report), является базовой реализацией. В коммерческом проекте мы расширяем его: добавляем поддержку нескольких камер, real-time streaming через Kafka, веб-интерфейс и интеграцию с вашей аналитикой.
Ссылка на OpenCV — основной фреймворк для обработки видео. Для понимания алгоритмов трекинга рекомендуем Deep SORT.







