Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Привет! Меня зовут Ярослав Шмулёв, я сооснователь студии R77.AI — интегратора AI в корпорации. К нам обратились за разработкой проекта умного паркинга для ЖК бизнес класса. В статье расскажу, как решали задачи с помощью принципов Data Science, с какими трудностями столкнулись, как их решали, и на что нас вдохновила игра NFS Underground.

Вдохновились NFS Underground и реализовали проект умного паркинга

Заказчик пришёл за целой стратегией цифровизации жилого комплекса в Москве. Мы работали над серией проектов, где умный паркинг — лишь малая часть. Но об остальном расскажу чуть позже.

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

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

Мы с командой сошлись во мнении, что это штука вообще-то гениальна, и пошли думать как всё это дело реализовать.

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Организовали офис прямо на парковке и приступили к работе

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

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

На -1 этаже этого ЖК мы выделили зону, для тестов. А в кладовке организовали серверную часть.

Использовали готовое решение для детекции машин

Тут ничего нового выдумывать не пришлось — люди давно научились распознавать номера и лица.

Подобрали сервис, который устроил и нас по функционалу, и клиента по бюджету.

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Перед тем, как навигировать машины, нужно разобраться как их трекать

Собрали hardware device из четырех камер, колонок и звуковых датчиков.

Камеры направили по четырем плоскостям: две из них контролировали сам проезд и трекали машины, а ещё две — соседние парковочные места.

Установили Raspberry Pi и поставили отдельный сервер с GPU, чтобы считывать и стримить видеопоток с камер. А всю функциональность оркестрировал бэкенд.

Так как у Raspberry Pi четыре USB-разъема, мы решили, что подключить к нему все наши камеры, чтобы считывать видеопотоки — отличная идея.

Это решение оказалось главной ошибкой на проекте.

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Мы не учли потенциальные проблемы с сетевыми коммуникациями и специфику работы с Hardware

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

Главная проблема была в USB-камерах — они отправляли на сервер не сжатые кадры. Из-за этого файлы не влезали в стандартный Ethernet.

Чтобы решить эту проблему, нам приходилось уменьшать frame rate и разрешение видео.

Ещё одна проблема была в том, что серверная часть находилась в 100 метрах от самого девайса.

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

Как только мы переносили оборудование к устройствам — всё начинало работать.

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

Дружеский совет — заменяйте USB-камеры на сетевые, чтобы уменьшить лаги и нагрузку на сеть.

Как мы разработали алгоритм навигации?

Идея была в том, что по LED-ленте будет бежать жучок и сопровождать машину до назначенного ей места.

Одна машина — один жучок, который гаснет на той части пути, которую водитель уже преодолел.

Превратили парковку в футбольное поле

Чтобы трекать машину на уровне пикселей, мы разделили всё пространство на небольшие сектора — квадраты 3х3 со своим уникальным ID.

Разметили их футбольными конусами, просто потому что удобно.

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Создали цифровую карту парковки, которая по сути представляла математический граф. Так мы смогли строить маршрут от точки А в точку Б.

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Тут появился ещё один вопрос — а как навигировать машину так, чтобы она добралась до места, даже если водитель сбился с маршрута?

Связали LED-ленты с секторами парковки

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

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

Тестировали точность и обучали модели ИИ на размеченных секторах.

Этим же алгоритмом закрыли вопрос определения местоположения автомобиля

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

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Разработали алгоритм определения корректности парковки

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

Мы сразу учли, что в ЖК часто паркуются машины S-класса, которые могут не помещаться на своё место из-за длины машины. И трекали автомобили только относительно боковых границ парковки.

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Нашли несколько Open source моделей, которые могли бы нам подойти

Сначала задаётся проекция машины на плоскость, затем модели нейросетей прогнозируют маску этой проекции.

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

Мы поняли, что если пойдём этим путём, то точно прогорим, потому что такой алгоритм не устойчив к высоте и углу, на котором будет расположена камера.

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

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

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

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Как мы это провернули?

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

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Чтобы построить эти линии, мы использовали алгоритм, который включает аппроксимацию по ключевым точкам и линейную регрессию.

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

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

А что дальше?

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

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Логика решения

Закупились LED-лентами, внедрили AI в процессы и создали систему навигации по парковке. Прямо как в NFS Underground

Команда

  • 1x Project Manager
  • 2x Hardware / Network Engineers
  • 2x Data Scientist
  • 1x Data science Lead
  • 1x Back end Developer

Стоимость

Общая стоимость проекта составила ~50k USD.

FIN!

B подписывайтесь на наш телеграм. Там не будет новостей о новом ChatGPT и ответов на вопрос «Заменят ли нейросети человека». Будем рассказывать о разработке AI для ентерпрайза.

2222
22
11
13 комментариев

Вот бы нам во двор такое)

3

и блокировку дверей, чтобы из машины не выпускал, пока нормально не встанет на парковку )))

3

вспомнил NFS. пошёл искать трек Riders on the storm

2

мы тоже все саундтреки переслушали пока статью писали)

1

Вот это вы заморочились. Но получилось круто!

2

у вас получилось умное без кавычек решение. респект!

2