Обучили модель компьютерного зрения читать данные с лидара и вычислять человекопоток возле билбордов. Анализируем эффективность офлайн-рекламы — так, чтобы ни заказчика, ни его клиентов не оштрафовали на миллионы евро за нарушение закона о персональных данных.

Всем привет! Я директор питерской студии разработки Unistory. Специализируемся на нестандартных штуках: отказываемся от проектов вроде «сайт на Битриксе» или «обложка для Chat GPT». В своем Telegram-канале рассказываю о наших проектах с ML и web3 интеграциями — подписывайтесь :)

Сегодня расскажу вам об одном из продуктов, который мы создали. Это устройство, вычисляющее человекопоток возле рекламных билбордов.

Для тех, кто любит видео

Я выступал с этим материалом на Datafest 2024 в секции Компьютерного зрения. Вот видео, если хотите посмотреть, как я рассказываю все это вживую и с дополнительной порцией мемов.

Как все начиналось

К нам пришел заказчик, который занимается созданием цифровых инструментов для маркетологов. Его идея была в том, чтобы создать независимый инструмент, который будет давать информацию об эффективности рекламных билбордов.

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

Легко отличить один от другого, если маркетолог, который заказывает рекламу out-of-home, хорошо знает город. Но если он живет в Мадриде, а рекламу размещает в Стокгольме? Именно для таких ситуаций и нужен независимый инструмент оценки человекопотока возле билборда.

Почему мы не могли использовать обычные камеры

Технически наша задача решалась просто: устанавливаем камеру, подключаем AI-модель компьютерного зрения, она считает людей. Однако решение должно было работать на европейском рынке, а в Европе действует GDPR, закон о защите персональных данных.

Неплохие такие суммы
Неплохие такие суммы

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

Почему мы решили использовать лидары

Чтобы решить проблему, рассматривали два варианта на замену обычной камеры: лидары и тепловизоры. Оба этих устройства способны зафиксировать количество людей, при этом не получая никакую информацию об их личности.

Лидары оказались более надежной технологией, так что в хищников из фильма со Шварцем поиграть нам не удалось.

Перешли к расчетам: какой лидар нам нужен, с каким углом обзора, в каком положении его установить возле билборда.

Когда нанял разработчиков с хорошими оценками по геометрии
Когда нанял разработчиков с хорошими оценками по геометрии

Высота, на которой заказчик планировал устанавливать наши устройства, около 3-4 метров.

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

Какой лидар мы выбрали для наших задач

Оптимальной моделью оказалась MID-360. Компактная, высокое качество сборки, большое разрешение, а главное — 10 кадров в секунду.

Это не реклама лидара, просто наш дизайнер сделал очень красивую картинку с характеристиками
Это не реклама лидара, просто наш дизайнер сделал очень красивую картинку с характеристиками

Как научить нейросеть «видеть» координаты?

Лидар передает данные в виде набора координат. Это текстовый файл, с которым не сможет работать ни одна из моделей компьютерного зрения.

Было два варианта, что делать:

  • Первый вариант — визуализировать данные координат. Превратить табличку с числами в картинку, на которой модель компьютерного зрения сможет разглядеть фигуры людей.

  • Второй вариант — обучить какую-то нейросеть читать координаты и понимать, где человек а где нет. Обучать такую нейросеть было бы долго и дорого, поэтому мы решили пойти по первому пути и визуализировать данные.

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

Слева — без Intensity. Справа — подключили Intensity.
Слева — без Intensity. Справа — подключили Intensity.

В табличках с координатами четыре параметра: x, y, z, Intensity. Сначала наш софт не учитывал Intensity, поэтому картинка получилась не слишком красивой. Как только добавили Intensity — изображения с лидара сразу стали намного симпатичнее. 

На таких изображениях невозможно рассмотреть лицо человека — фиксация данных на лидар не является нарушением GDPR.

Скомпоновали изображения, сделали видео — в целях демонстрации:

Какие еще «детали» нам понадобились

Чтобы собирать данные и передавать их на сервер, мы:

  • Подключили лидар к Raspberry Pi

  • Подключили 4G модем к Raspberry Pi

  • Написали сценарии на Ansible, чтобы одновременно запускать устройства, даже если они раскиданы по всему миру

Подключаемся с кофейком
Подключаемся с кофейком

Подготовка датасета и обучение нейросети

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

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

Примерно такого результата мы хотели добиться... и добились!
Примерно такого результата мы хотели добиться... и добились!

В нашем случае датасетом стали фигуры людей. Мы сделали 8000 фотографий с лидара, разметили людей и на этом материале обучили нейросеть. Вот как выглядят размеченные изображения, на которых мы учили YOLO8.

Как это работает: саммари

Готовый сервис работает следующим образом:

  • Ansible запускает съемку на устройствах возле разных билбордов

  • Лидар несколько минут фиксирует фигуры прохожих

  • Ansible выключает съемку на всех устройствах

  • Наш софт превращает координаты с лидара в изображения

  • YOLO8 считает людей, которые прошли мимо билборда за время съемки

  • Raspberry Pi отправляет на сервер информацию о человекопотоке

  • Маркетологи используют данные для анализа эффективности билборда

Как мы все это тестировали

Итак! Нейросеть обучена, софт готов, лидар подключен к компьютеру и модему. Выходим на осеннюю питерскую улицу — тестировать.

Было холодно, лидар нужно было держать высоко над головой, мы устали, но вернулись с очень радостным чувством — наше изобретение заработало.

Теперь у нашего заказчика есть инструмент, который позволяет маркетологам узнать, какие точки наружной рекламы — самые эффективные, а на какие не стоит тратить деньги.

Наши следующие шаги

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

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


Если интересуетесь нестандартным подходом к разработке и необычными проектами — подписывайтесь на мой Телеграм-канал. Здесь я рассказываю, как мы беремся за идеи, которые на старте кажутся невозможными, и доводим их до продакшна. Proof of concept за день, рабочий проект — за три месяца ?

Комментарии (2)


  1. whyyousee
    18.07.2024 10:44

    А научить нейронку читать координаты было слабо? Зачем здесь вообще компьютерное зрение?


    1. unistory Автор
      18.07.2024 10:44
      +1

      У нас была стратегия и мы ее придерживались. А вернее — был и тот путь, о котором вы говорите. Но мы выбрали другой :)