Обучили модель компьютерного зрения читать данные с лидара и вычислять человекопоток возле билбордов. Анализируем эффективность офлайн-рекламы — так, чтобы ни заказчика, ни его клиентов не оштрафовали на миллионы евро за нарушение закона о персональных данных.
![](https://habrastorage.org/getpro/habr/upload_files/5eb/761/849/5eb761849fb6842bc3bb74bfe6bbcf40.jpg)
Всем привет! Я директор питерской студии разработки Unistory. Специализируемся на нестандартных штуках: отказываемся от проектов вроде «сайт на Битриксе» или «обложка для Chat GPT». В своем Telegram-канале рассказываю о наших проектах с ML и web3 интеграциями — подписывайтесь :)
Сегодня расскажу вам об одном из продуктов, который мы создали. Это устройство, вычисляющее человекопоток возле рекламных билбордов.
Для тех, кто любит видео
Я выступал с этим материалом на Datafest 2024 в секции Компьютерного зрения. Вот видео, если хотите посмотреть, как я рассказываю все это вживую и с дополнительной порцией мемов.
Как все начиналось
К нам пришел заказчик, который занимается созданием цифровых инструментов для маркетологов. Его идея была в том, чтобы создать независимый инструмент, который будет давать информацию об эффективности рекламных билбордов.
![](https://habrastorage.org/getpro/habr/upload_files/5bf/652/b9d/5bf652b9dc40f98cc680986dbd80e026.jpg)
Есть только два вида билбордов: эффективный и неэффективный. Возле первого проходят сотни людей в минуту, второй не видит никто.
Легко отличить один от другого, если маркетолог, который заказывает рекламу out-of-home, хорошо знает город. Но если он живет в Мадриде, а рекламу размещает в Стокгольме? Именно для таких ситуаций и нужен независимый инструмент оценки человекопотока возле билборда.
Почему мы не могли использовать обычные камеры
Технически наша задача решалась просто: устанавливаем камеру, подключаем AI-модель компьютерного зрения, она считает людей. Однако решение должно было работать на европейском рынке, а в Европе действует GDPR, закон о защите персональных данных.
![Неплохие такие суммы Неплохие такие суммы](https://habrastorage.org/getpro/habr/upload_files/53a/078/6ab/53a0786ab3fc827d986304e80acac8bd.jpg)
Снимать людей на улицах в маркетинговых целях запрещено законом. Наше решение должно было фиксировать информацию только о количестве людей. Поэтому обычная камера не подошла.
Почему мы решили использовать лидары
Чтобы решить проблему, рассматривали два варианта на замену обычной камеры: лидары и тепловизоры. Оба этих устройства способны зафиксировать количество людей, при этом не получая никакую информацию об их личности.
Лидары оказались более надежной технологией, так что в хищников из фильма со Шварцем поиграть нам не удалось.
Перешли к расчетам: какой лидар нам нужен, с каким углом обзора, в каком положении его установить возле билборда.
![Когда нанял разработчиков с хорошими оценками по геометрии Когда нанял разработчиков с хорошими оценками по геометрии](https://habrastorage.org/getpro/habr/upload_files/202/a63/0b4/202a630b4bab4b5cc975e0e6c7319389.jpg)
Высота, на которой заказчик планировал устанавливать наши устройства, около 3-4 метров.
Поэтому наш разработчик прямо на бумажке рассчитал, как лучше установить лидар, чтобы он получил всю нужную информацию. Оказалось, идеальный вариант, с минимальным числом слепых зон — установить лидар линзой вниз.
Какой лидар мы выбрали для наших задач
Оптимальной моделью оказалась MID-360. Компактная, высокое качество сборки, большое разрешение, а главное — 10 кадров в секунду.
![Это не реклама лидара, просто наш дизайнер сделал очень красивую картинку с характеристиками Это не реклама лидара, просто наш дизайнер сделал очень красивую картинку с характеристиками](https://habrastorage.org/getpro/habr/upload_files/6e3/d5d/266/6e3d5d26623b2e353e2b1d1c4c9943c4.jpg)
Как научить нейросеть «видеть» координаты?
Лидар передает данные в виде набора координат. Это текстовый файл, с которым не сможет работать ни одна из моделей компьютерного зрения.
Было два варианта, что делать:
Первый вариант — визуализировать данные координат. Превратить табличку с числами в картинку, на которой модель компьютерного зрения сможет разглядеть фигуры людей.
Второй вариант — обучить какую-то нейросеть читать координаты и понимать, где человек а где нет. Обучать такую нейросеть было бы долго и дорого, поэтому мы решили пойти по первому пути и визуализировать данные.
В итоге разработали специальный софт, который превращал огромное количество цифр в картинку. У каждой точки были свои координаты, и наш софт расставил эти точки так, чтобы получилось изображение.
![Слева — без Intensity. Справа — подключили Intensity. Слева — без Intensity. Справа — подключили Intensity.](https://habrastorage.org/getpro/habr/upload_files/6f7/b57/c94/6f7b57c94ec5bb10f636f2c503529c11.jpg)
В табличках с координатами четыре параметра: x, y, z, Intensity. Сначала наш софт не учитывал Intensity, поэтому картинка получилась не слишком красивой. Как только добавили Intensity — изображения с лидара сразу стали намного симпатичнее.
На таких изображениях невозможно рассмотреть лицо человека — фиксация данных на лидар не является нарушением GDPR.
Скомпоновали изображения, сделали видео — в целях демонстрации:
Какие еще «детали» нам понадобились
Чтобы собирать данные и передавать их на сервер, мы:
Подключили лидар к Raspberry Pi
Подключили 4G модем к Raspberry Pi
Написали сценарии на Ansible, чтобы одновременно запускать устройства, даже если они раскиданы по всему миру
![Подключаемся с кофейком Подключаемся с кофейком](https://habrastorage.org/getpro/habr/upload_files/af3/0d5/821/af30d5821b3b6f940c8baf6594689c41.jpg)
Подготовка датасета и обучение нейросети
Теперь вопрос, какую нейросеть использовать, чтобы считать людей на таких картинках с лидара? Мы решили использовать YOLO8, потому что она не требовательна к мощностям и есть много открытых библиотек.
При этом нам все равно пришлось обучить нейросеть, ведь до этого ей не приходилось выполнять именно такую задачу — считать фигуры людей на пиксельных изображениях, где можно различить только силуэт.
![Примерно такого результата мы хотели добиться... и добились! Примерно такого результата мы хотели добиться... и добились!](https://habrastorage.org/getpro/habr/upload_files/88f/a6b/03e/88fa6b03e25f317e818ec51f4f016f49.jpg)
В нашем случае датасетом стали фигуры людей. Мы сделали 8000 фотографий с лидара, разметили людей и на этом материале обучили нейросеть. Вот как выглядят размеченные изображения, на которых мы учили YOLO8.
Как это работает: саммари
Готовый сервис работает следующим образом:
Ansible запускает съемку на устройствах возле разных билбордов
Лидар несколько минут фиксирует фигуры прохожих
Ansible выключает съемку на всех устройствах
Наш софт превращает координаты с лидара в изображения
YOLO8 считает людей, которые прошли мимо билборда за время съемки
Raspberry Pi отправляет на сервер информацию о человекопотоке
Маркетологи используют данные для анализа эффективности билборда
Как мы все это тестировали
Итак! Нейросеть обучена, софт готов, лидар подключен к компьютеру и модему. Выходим на осеннюю питерскую улицу — тестировать.
![](https://habrastorage.org/getpro/habr/upload_files/72c/eb8/d6b/72ceb8d6b2377e7adb68ba748b883f8b.jpg)
Было холодно, лидар нужно было держать высоко над головой, мы устали, но вернулись с очень радостным чувством — наше изобретение заработало.
Теперь у нашего заказчика есть инструмент, который позволяет маркетологам узнать, какие точки наружной рекламы — самые эффективные, а на какие не стоит тратить деньги.
Наши следующие шаги
Конечно, проект еще не закончен — есть над чем поработать. Самое главное — нужно собрать все детали нашего устройства в одну красивую стильную коробку, которая не будет бояться ни жары, ни холода, ни дождя.
А еще нужно дообучить нейросеть, чтобы она понимала, в какую сторону идет человек и видит ли билборд. Это важно, так как большинство билбордов двусторонние, и на разных сторонах обычно разная реклама.
Если интересуетесь нестандартным подходом к разработке и необычными проектами — подписывайтесь на мой Телеграм-канал. Здесь я рассказываю, как мы беремся за идеи, которые на старте кажутся невозможными, и доводим их до продакшна. Proof of concept за день, рабочий проект — за три месяца ?
whyyousee
А научить нейронку читать координаты было слабо? Зачем здесь вообще компьютерное зрение?
unistory Автор
У нас была стратегия и мы ее придерживались. А вернее — был и тот путь, о котором вы говорите. Но мы выбрали другой :)