Сначала эталон, потом модель
Любой подрядчик в этой нише называет точность подсчета в районе 95–99%. Проверить это заказчик обычно не может, поэтому цифра ничего не значит.
Мы начали проект с обратного конца. Взяли записи с входной группы: субботний пик, будний вечер, утро понедельника, дождливый день с зонтами. Человек вручную отсчитал по ним входы и выходы — это и стало эталоном. Дальше все споры о точности превратились в арифметику: система дала столько-то, разметка — столько-то, разница вот здесь и вот по этой причине.
Без этого шага метрика 98,1% была бы маркетингом. С ним — это протокол приемки, который заказчик может повторить в любой момент на своих данных.
Считаем пересечения линии, а не головы в кадре
Подсчет «сколько людей видно в кадре» кажется естественным и разваливается сразу: люди топчутся у входа, заходят и выходят, стоят спиной. Мы считаем события пересечения виртуальной линии с направлением — вошел или вышел.
Это переносит всю сложность на трекинг. Человек должен сохранить один и тот же идентификатор при проходе через линию, иначе один посетитель превратится в трех. Отсюда требование к ракурсу: камера смотрит сверху вниз под большим углом, тогда люди перекрывают друг друга минимально.
Каталог ошибок счета
| Ситуация | Что ломается | Решение |
|---|---|---|
| Персонал курит на крыльце | Каждый выход и вход считается как посетитель | Отдельная зона и правило для служебной двери, смены персонала вычитаются |
| Ребенок на руках | Один силуэт вместо двух | Осознанное решение: считаем как одного, фиксируем в методике |
| Группа проходит плечом к плечу | Слипание в один трек | Верхний ракурс и разделение по головам, не по силуэтам |
| Тележки, коляски, зонты | Ложные объекты в кадре | Фильтрация по геометрии на уровне трека, не на уровне кадра |
| Человек постоял в дверях и вернулся | Плюс один вход и минус один выход | Пересечение засчитывается только при устойчивом проходе через линию |
| Стеклянная дверь с отражением | Отражение улицы считается как поток | Маска области, отражения физически вырезаны из сцены |
Большая часть точности набирается вот в этой таблице. Выбор архитектуры детектора дает куда меньше. Это скучная работа, ее не показывают на конференциях, и именно она отделяет систему от демо.
Четыре камеры на узел — это не про экономию
Один edge-узел держит четыре потока в реальном времени. Можно было бы поставить сервер в подсобке и завести на него все камеры магазина — но тогда точка становится зависимой от одного ящика, а сеть точек — от расписания выездов инженера.
Мы выбрали компактный узел на входную группу: он ставится за час, при поломке меняется целиком, и его отказ гасит одну точку, не утягивая за собой сеть. Наружу уходит одна строка в минуту с числом входов и выходов — сотни байт. При обрыве связи узел буферизует счетчики и досылает их, когда канал вернулся; для сети магазинов с ненадежным интернетом это оказалось важнее любых процентов точности.
Что ломается при масштабировании
Рост с пилота до сети в семь раз показал то, чего не видно на одной точке: настройки не переносятся копированием. Разная высота потолка, разная ширина входной группы, разное освещение, где-то тамбур, где-то дверь прямо с улицы.
Поэтому в проект пришлось добавить процедуру ввода точки: установка, полчаса записи, разметка линии и зон, короткая проверка на живом трафике. Полдня на точку — и это честная цифра, которую мы называем на входе. Обещание «развернем сеть из ста точек за неделю» в этой задаче означает, что подрядчик не считал.
Ноль биометрии — это требование бизнеса
Лица не распознаются, повторные визиты не связываются, видео не выходит за пределы точки. С точки зрения закона о персональных данных это снимает целый пласт обязанностей: считать людей можно, идентифицировать — совсем другая история с согласиями и уведомлениями.
Заказчику это дало возможность повесить у входа честную табличку «ведется подсчет посетителей без идентификации» и закрыть вопрос до его возникновения.
Что дальше делает с этими цифрами магазин
Счетчик сам по себе — это половина ценности. Работает он в паре с кассой: поток на входе, деленный на число чеков, дает конверсию точки, а конверсия по часам показывает, где проседает персонал, а где — выкладка. На этом уровне разговор с бизнесом идет уже про деньги.
Сама задача разобрана в видеоаналитике, требования к вычислителю — в edge-направлении, а прикидка бюджета по количеству точек — в калькуляторе.