В первой части статьи я рассказывал про новый инструмент для бизнеса по подсчету и анализу людского трафика с помощью видеокамер. На рынке представлено довольно много продуктов по подсчету людей, но практически нет таких, которые это делают методом анализа человеческого лица. При распознавании лиц можно получить следующую информацию: пол, возраст, эмоциональный фон и, собственно, самое главное, уникальный идентификатор лица. Последнее нужно для того, чтобы понимать, что это лицо мы видели ранее: тогда-то, столько-то раз, с такой-то периодичностью и т.п.

Данные видеоаналитики прекрасно используются в ритейле, сфере услуг, кафе и ресторанах. Теперь можно более предметно и точно анализировать покупателей: их трафик, уникальность, повторяемость, пол и возраст и, конечно, эмоции. В счетчике по лицам можно наконец-то отделять сотрудников от посетителей, считать длительность обслуживания и выстраивать маркетинговые активности по увеличению лояльности покупателей.

Напомню, что для примера взята одна точка – кафе (по принципу столовой) в Москве, в котором камера установлена на кассе.

Углубленный анализ распознанных лиц

Результаты, которые можно получить при помощи Track Expert, и которые я перечислял в первой части статьи лежат на поверхности и достаточно очевидны: кол-во покупателей, сотрудников, сегментация по полу и возрасту, эмоции. Но для того, чтобы принимать серьезные стратегические решения, нужен не менее серьезный анализ.

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

С терминологией определились. Теперь как считать? Как понимать, что лояльность увеличивается, уменьшается или с ней ничего не происходит?

Самый простой вариант – это просто смотреть за соотношением новых и вернувшихся покупателей и коэффициентом возврата.

В среднем коэффициент возврата здесь колеблется в районе 70%. Т.е. ежедневно в кафе приходит около 30% новых посетителей. Это очень неплохо.

Теперь давайте посмотрим на тех, кто ходит не первый раз, а условно постоянно. Вопрос: насколько постоянно или насколько часто посетители сюда возвращаются?

Цель моего вопроса простая: как сделать так, чтобы те, кто уже ходит в кафе (магазин, салон, фитнесклуб и т.д.), ходили бы еще чаще.

Традиционный подход – это дисконтные карты. Раздать всем, а дальше «будем посмотреть». Это нормальный вариант, но:

Не всегда люди носят с собой дисконтные карты;

Не всегда можно идентифицировать себя на кассе по номеру телефона или email. Да и многие оставляют о себе фейковые данные, дабы избежать лишнего спама;

Карты можно передавать друг другу (да так все и делают J);

Не всякий бизнес в принципе имеет дисконтные карты.

Возможно, что-то еще забыл. Но это уже не важно.

Поэтому человеческое лицо становится хорошей альтернативой для идентификации покупателя и персональной работы с ним.

Для начала мы предлагаем разделить всех посетителей на 5 групп: Новые, Очень редко, Редко, Часто, Очень часто.

Лояльность клиента нельзя получить просто по щелчку пальца. Можно, конечно, надеяться, что клиент, который ходил в ресторан/кафе/магазин 1 раз в 3 месяца вдруг станет ходить туда несколько раз в неделю, но это будет скорее исключительная ситуация. Клиента нужно завоевать, а далее не потерять! И поэтому лучше его постепенно переводить из одной группы в другую — от «Новый» до «Очень часто».

Для каждого бизнеса понятия «Часто» или «Очень часто» будут разные. Поэтому, чтобы не тешить себя иллюзиями как часто люди к тебе возвращаются, можно воспользоваться метрикой «Давность визитов» и понять среднюю периодичность возвратов своих клиентов.

Видно, что основная масса посетителей – это те, которые ходят в кафе на еженедельной основе (от 1 раза в неделю – до 7). Если человек ходит, например, в кафе 1 раз в две недели, то он уже относится к категории «месяц». Таких тоже достаточно много. Поэтому анализ по лояльности проводим в первую очередь для двух групп клиентов – у которых давность визита равна «неделя» и «месяц».

Целей будет две. Первая – постараться найти рычаги для перевода по максимуму посетителей из группы «месяц» в «группу «неделя». И вторая – внутри каждой из групп повлиять на частотность посещений от «Очень редко» до «Очень часто». Вообще, это вопрос хорошего такого маркетингового консалтинга.

На примере группы «Неделя» я покажу как разобраться в вопросе, разбить посетителей на группы с точки зрения лояльности и что со всеми ними дальше делать. Значения частотностей для группы «неделя» мы установили (можно изменять) так: «Очень редко» – 1 раз в неделю, «Редко» – 2…3 раза в неделю, «Часто» – 4 раза в неделю, «Очень часто» – 5…7 раз в неделю.

За два месяца видно, что соотношение количества посетителей в этих категориях почти не меняется. «Очень редко» занимает минимум 50% по отношению ко остальным частотностям, поэтому запас по увеличению посещаемости очень большой. Для этого нужно разобраться кто есть кто в этих разноцветных столбиках.

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

посмотреть половозрастное распределение по каждой группе частотности. Найти схожие поведенческие характеристики и поработать в маркетинговом плане индивидуально с каждой из них.

После каждого маркетингового шага нужно внимательно замерить изменения.

Следует помнить, что для каждой давности визита (неделя/месяц/квартал/год) эффект от маркетинга следует ожидать ровно с соответствующей периодичностью.

Другие примеры использования в ритейле

Еще раз напоминаю, все эти данные получены от одной камеры. Теперь давайте пофантазируем, если камер несколько (внутри объекта, на разных объектах).

Кейс 1. Одна камера на входе, а вторая на кассе или на выходе.

Ставя сразу две или более камеры в магазин, мы получаем еще один набор метрик, которые позволяют мерить:

— среднее время нахождения посетителя в магазине.

— среднее время пути от входа до кассы.

— эмоции посетителей на выходе и на кассе.

Очень часто заказчики хотят получить информацию о времени пребывания клиентов в магазине. Используя традиционные счетчики посетителей получить такую информацию нельзя. Можно лишь примерно говорить о некой средней величине за период времени. Например, за 1 час вошло 14 человек, вышло 9. Или наоборот – вошло 8 человек, а вышло 12. Теперь вопрос. Какое среднее время пребывания посетителя в магазине, если на кассе было пробито 5 чеков?

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

С распознаванием лиц достаточно снять человека на входе и на выходе, или на входе и на кассе. И вот уже у вас точная статистика времени пребывания посетителя в магазине.

Кейс 2. Предиктивная работа с покупателями

Представьте, на минутку, что в ваш магазин ходят посетители, которые у вас что-то покупали и не раз, но в последнее время заходят и выходят без покупок. Во-первых, как понять, что такая ситуация в принципе происходит, а, во-вторых, с чем это связано?

На первый вопрос ответит информация из кейса 1 плюс данные по лояльности плюс информация по эмоциям выходящих людей. А по второму вопросу причин может быть миллион. Например, у вас поменялась линейка одежды, обуви, еще что-то, а человек искал именно то, что покупал в прошлом году. Покупатель заходит один раз, два, а на третий вы его теряете. Знакомая ситуация? Было бы интересно сыграть на опережение и предсказывать такое поведение или отлавливать лояльных посетителей еще до того, как они что-то купили? Вопрос риторический. Но важно знать, что ответ на него получить уже можно.

Архитектура и как всё работает

В прошлой статье я уже рассказывал, что архитектура решения CVizi легковесная. Никаких громоздких серверов, регистраторов. Не нужно обслуживать парк оборудования и сопрягать всё друг с другом.

При этом архитектура не является облачной в чистом виде. Она гибридная. Такой подход при текущем положении вещей в развитии бытовых видеокамер полностью себя оправдывает.

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

Объем интернет-трафика, который будет передаваться в облака. Если на объекте много камер и/или у вас много объектов, то объем трафика будет колоссальным и потребуются выделенные Интернет-каналы. Что далеко не всегда возможно. Требования к серверу(ам), которые регистрируют и обрабатываю поток: вычислительные мощности, резервирование, управление нагрузкой. Отказоустойчивость всей системы. Сильная зависимость работоспособности всей системы от работоспособности даже одного сервера.

Было бы классно использовать для задач видеоаналитики не простые камеры, а smart- камеры. Основной задачей которых должен стать предварительный анализ видеопотока «на лету», выделение из него искомых событий, подготавливать данные для их анализа. К сожалению, универсальных smart-камер на рынке за приемлемые деньги не найти. Поэтому мы ее «сделали» сами.

Пройдемся вкратце по элементам архитектуры

Вычислительное устройство S-Box

Вот так выглядит одна из модификаций устройства:

Основное его назначение – это первичная обработка потока с IP- или USB-камеры. На каждом кадре функция обнаружения лиц находит лица, фиксирует их и формирует список атрибутов лица (координаты, угол, качество изображения на кадре, расстояние до камеры). Далее эта информация отправляется на облачный портал CVizi, работающий на платформе Azure, по зашифрованному каналу. Обращаю внимание, что сам видеопоток в облако не передается.

Код написан на языке C++ и Python, что позволяет использовать весь набор инструментов для работы с изображениями и камерами.

Кстати, аналогичным образом S-Box используется и на других задачах видеоаналитики: детекция производственных процессов, людей, транспорта и прочего.

Камеры

Камеры могут быть самыми разными. Причем каких-то очень жестких критериев, которые бы ограничили их выбор, нет. Главное то, что это простые бытовые, не промышленные IP камеры (чаще всего именно IP) с демократичным ценником. Надо отметить, камера – это то оборудование, которое на рынке модернизируется, наверное, быстрее всего из того что мы используем. Основной критерий нашего выбора той или иной камеры в инсталляционный пакет Track Expert – это Цена/Качество. Чтобы сохранить стоимость инсталляционного пакета на одном уровне, но при этом, постоянно повышать качество сервиса, мы постоянно держим руку на пульсе всех новинок. В нашей тестовой лаборатории всегда есть образцы-кандидаты камер на ту или иную бизнес-задачу.

Например, на момент написания статьи для распознавания лиц мы используем вот такие 5Мп камеры двух форм-факторов.

Портал CVizi

Портал фактически является сердцем всей системы, у которого просто бесчисленное количество функций. Перечисли самые основные.

Во-первых, это накопление данных. Здесь нам помогает SQL Azure. Сначала мы использовали традиционный SQL Server, развернутый на виртуальных машинах. И это был неплохой вариант, так как компетенций для управления и оптимизации производительности SQL Server у нас предостаточно. Но в какой-то момент с ростом клиентов мы поняли, что становится просто физически тяжело и не эффективно осуществлять управление большим количеством маленьких и не очень БД. Служба SQL Azure с легкостью решила наши задачи за счет встроенной системы аналитики с компьютерным обучением и адаптивными технологиями для непрерывной оптимизации производительности базы данных в реальном времени.

Также удобно динамически управлять производительностью базы данных, что позволяет обрабатывать невероятные объемы статистики.

Во-вторых, Microsoft Blob Storage позволяет хранить все фото и видеоматериалы в любом количестве, получать их по гиперссылке и использовать их, например, в таких инструментах, как Power BI.

В-третьих, когнитивный сервис Microsoft Face API. Именно с помощью него мы распознаем лица, группируем похожих людей и вычисляем какое лицо и когда было зафиксировано ранее.

Для работы с Microsoft Face API используем Python. Повторяться не хочу, в предыдущей статье есть парочка примеров скриптов по обращению к Microsoft Face API.

В-четвертых, система мониторинга и контроля работоспособности всего оборудования, установленного у клиентов. Фактически, все S-Box вкупе представляют собой тот самый IoT. Мы построили отдельную систему мониторинга каждого устройства в сети и непрерывно следим за здоровьем оборудования. Казалось бы, что в этом такого особенного? Но подумайте сколько сейчас у владельца, например, магазина всякого оборудования, которое должно бесперебойно функционировать. Одно дело, если сломался холодильник или кассовый аппарат и поломка видна сразу, а другое – какой-то счетчик людей, где поломка может вскрыться через месяц или больше, когда владелец захочет получить итоговый отчет. Почему не проконтролировали? Почему не сообщили? Кто виноват? Как восстановить статистику? Все маркетинговые исследования в магазине в этом квартале коту под хвост?

В нашем случае такое невозможно. Все заинтересованные лица получат уведомления о сбое в работе оборудования от нескольких минут до нескольких часов, и наша служба поддержки поможет решить проблему. Причем, удаленно! Для справки. Как правило, 80%-90% инцидентов связаны с падением интернет-каналов у клиента.

А чтобы идти в ногу со временем в системе администрирования Track Expert есть возможность удаленного обновления ПО. Появился новый успешный алгоритм – по нажатию «одной кнопки» он обновится у тех клиентов, которые в нем нуждаются и пользуются.

Преимущества архитектуры

Архитектура CVizi, как вы поняли, – это гибрид. На земле – S-Box’ы, а в облаке – сервисы Azure и не только.

On premise: распределенная сеть S-Box

Использовать множество маленьких вычислительных устройств – это всегда лучше, чем один большой мегасервер/кластер серверов, на который замыкаются все видеопотоки с разных источников. Каким бы мощным и крутым он не был, наступит момент, когда именно он станет бутылочным горлышком в системе и от его работоспособности будет зависеть работа всей системы. В случае же с распределенной системой вычислительных устройств, каждый S-Box выполняет свой небольшой пул задач и работоспособность всей системы не зависит от работоспособности одного конкретного S-Box’а.

Кроме того, суммарная вычислительная мощность S-Box, например, на каком-то достаточно крупном объекте может запросто превосходить вычислительные мощности топовых серверов, а по цене оборудование будет в разы меньше. Самое главное, научиться правильно управлять этими распределенными вычислениями J. А это мы умеем.

Апгрейд инфраструктуры On Premise. Для многих заказчиков — это очень чувствительный вопрос, т.к. всегда очень затратный и сопровождающийся сбоями и простоями в работе всей системы, т.к. бесшовных переходов (с железа на железо или с платформы на платформу) почти никогда не бывает. В случае же с распределенной сетью устройств становится всё просто. Переход может быть очень плавным и не затратным в части покупки сразу большого количества устройств. И во время апгрейда будет обеспечена непрерывная работа всей системы.

Cloud: Azure

Хочется отметить, что Azure предоставляет действительно очень удобные инструменты в плане масштабирования и управления производительностью инфраструктуры. Клиенты все разные с разным объемом потребления ресурсов. Одно дело распознать 100 – 300 лиц в день в магазине у дома, и совсем другая ситуация, когда большой торговый центр с несколькими входами или сеть магазинов, имеющая в день суммарную проходимость несколько тысяч уникальных посетителей.

При традиционном подходе с архитектурой On Premise может сложится ситуация, что серверные мощности могут простаивать, а во втором их может не хватать, особенно в дни с пиковой посещаемостью. А эластичное и практически мгновенное управление используемыми вычислительными мощностями в Azure – это просто подарок для нас.

Резюме

Что хочется сказать в заключение…

Технический прогресс неумолимо надвигается на нас и с каждым новым днем предоставляет нам новые и новые инструменты и технологии. Можно, конечно, рассуждать как стало всё плохо: твое лицо везде распознают; из дома теперь вообще лучше не выходить, т.к. Большой Брат следит за тобой; я не давал разрешения на мою съемку и анализ и т.д. и т.п. Но это уже есть. С любых камер, расположенных в общественных местах ваши лица собираются и лежат в видеоархивах. И они собирались уже очень давно. Хотели вы этого или нет.

Просто сейчас технический прогресс сделал еще один шажок и эти данные стало возможно обрабатывать не вручную, а автоматически. Появились свёрточные нейронные сети. Появились недорогие, если не сказать дешевые, видеокамеры, микрокомпьютеры. Появились доступные облачные ресурсы. Синергия этих и других технологий позволяет создавать интересные продукты для простого обывателя. Области применения ограничены только вашей фантазией. Ритейл, HoReCa, Event-индустрия, образование – это только то, что пришло нам в голову сходу. Но любой процесс, который подразумевает анализ человеком каких-то событий в кадре можно с определенной степенью достоверности:

Перевести с оператора на машины (компьютерное зрение)

Накапливать статистику искомым событиям (а не вести непрерывную запись)

Автоматизировать процесс обработки событий

Подключать предиктивный анализ событий

Это тот пласт данных, которого раньше просто не было. Но пока готовность бизнеса к тому, чтобы забирать эти данные себе и правильно обрабатывать, интерпретировать и пользоваться пока очень низкая.

Команда CVizi сделала еще один шаг к тому, чтобы такой инструментарий для анализа появился, а фантазии и мечты стали чуть ближе и реальнее.

Об авторе