Adello
3 000 000
Программное обеспечение
Швейцария, Цюрих
Декабрь 2024
К нам в Unistory обратился заказчик — европейский разработчик цифровых инструментов для маркетологов. Его идея была в том, чтобы создать независимый инструмент, который будет давать информацию об эффективности рекламных билбордов.
Чтобы решить задачу, мы научили модель компьютерного зрения считать количество прохожих возле билбордов. Главной сложностью были европейские законы, не позволяющие фотографировать и снимать людей в маркетинговых целях. Для решения проблемы мы использовали лидары — камеры, способные зафиксировать количество прохожих, но не их лица.
Рассказали об этом проекте в своем выступлении на DataFest 2024, конференции на тему машинного обучения и искусственного интеллекта. Короткая версия выступления — ниже.
Есть только два вида билбордов: эффективный и неэффективный. Возле первого проходят сотни людей в минуту, второй не видит никто.
Легко отличить один от другого, если маркетолог, который заказывает рекламу out-of-home, хорошо знает город. Но если он живет в Мадриде, а рекламу размещает в Стокгольме? Именно для таких ситуаций и нужен независимый инструмент оценки человекопотока возле билборда.
Технически наша задача решалась просто: устанавливаем камеру, подключаем AI-модель компьютерного зрения, она считает людей. Однако решение должно было работать на европейском рынке, а в Европе действует GDPR, закон о защите персональных данных.
Снимать людей на улицах в маркетинговых целях запрещено законом. Наше решение должно было фиксировать информацию только о количестве людей. Поэтому обычная камера не подошла.
Чтобы решить проблему, рассматривали два варианта на замену обычной камеры: лидары и тепловизоры. Оба этих устройства способны зафиксировать количество людей, при этом не получая никакую информацию об их личности.
Лидары оказались более надежной технологией, так что в хищников из фильма со Шварцем поиграть нам не удалось.
Перешли к расчетам: какой лидар нам нужен, с каким углом обзора, в каком положении его установить возле билборда.
Высота, на которой заказчик планировал устанавливать наши устройства, около 3-4 метров. Поэтому наш разработчик прямо на бумажке рассчитал, как лучше установить лидар, чтобы он получил всю нужную информацию. Оказалось, идеальный вариант, с минимальным числом слепых зон — установить лидар линзой вниз.
Оптимальной моделью оказалась MID-360. Компактная, высокое качество сборки, большое разрешение, а главное — 10 кадров в секунду.
Лидар передает данные в виде набора координат. Это текстовый файл, с которым не сможет работать ни одна из моделей компьютерного зрения.
Было два варианта, что делать.
Первый — визуализировать данные координат. Превратить табличку с числами в картинку, на которой модель компьютерного зрения сможет разглядеть фигуры людей.
Второй — обучить нейросеть читать координаты и понимать, где находится человек, а где нет. Обучать такую нейросеть было бы долго и дорого, поэтому мы решили пойти по первому пути и визуализировать данные.
В итоге разработали специальный софт, который превращал огромное количество цифр в картинку. У каждой точки были свои координаты, и наш софт расставил эти точки так, чтобы получилось изображение.
На таких изображениях невозможно рассмотреть лицо человека — фиксация данных на лидар не является нарушением GDPR. Так нам удалось решить главную проблему проекта.
Чтобы собирать данные и передавать их на сервер, мы:
→ Подключили лидар к Raspberry Pi
→ Подключили 4G модем к Raspberry Pi
→ Написали сценарии на Ansible, чтобы одновременно запускать устройства
Теперь вопрос, какую нейросеть использовать, чтобы считать людей на таких картинках с лидара? Мы решили использовать YOLO8, потому что она не требовательна к мощностям, и есть много открытых библиотек.
При этом нам все равно пришлось обучить нейросеть, ведь до этого ей не приходилось выполнять именно такую задачу — считать фигуры людей на пиксельных изображениях, где можно различить только силуэт.
В нашем случае датасетом стали фигуры людей. Мы сделали 8000 фотографий с лидара, разметили людей и на этом материале обучили нейросеть. Вот как выглядят размеченные изображения, на которых мы натренировали YOLO8.
Итак! Нейросеть обучена, софт готов, лидар подключен к компьютеру и модему. Выходим на осеннюю питерскую улицу — тестировать.
Было холодно, лидар нужно было держать высоко над головой, мы устали, но вернулись с очень радостным чувством — наше изобретение заработало. Система точно подсчитала, сколько людей прошло мимо нас.
Готовый сервис работает следующим образом:
→ Ansible запускает съемку на устройствах возле разных билбордов
→ Лидар несколько минут фиксирует фигуры прохожих
→ Ansible выключает съемку на всех устройствах
→ Наш софт превращает координаты с лидара в изображения
→ YOLO8 считает людей, которые прошли мимо билборда за время съемки
→ Raspberry Pi отправляет на сервер информацию о человекопотоке
→ Маркетологи используют данные для анализа эффективности билборда
Теперь у нашего заказчика есть инструмент, который позволяет маркетологам узнать, какие точки наружной рекламы — самые эффективные, а на какие не стоит тратить деньги.