Fabien Potencier — Founder of Symfony framework at PHP fwdays conf! Kyiv, June 1
×Закрыть

DOU Labs: як у SoftServe створили систему розумного шлагбаума й паркування

У рубриці DOU Labs ми запрошуємо IT-компанії ділитись досвідом власних цікавих розробок та внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на editors@dou.ua.

Усім привіт, я — Саша Гурбич, Senior Data Scientist у SoftServe. У цьому матеріалі розкажу вам про систему розумного шлагбаума й паркування, яку ми запустили в листопаді 2018 року на території нашого офісу Lviv Headquarters.

Ідея

В офісі Lviv HQ працює близько п’ятисот людей. У дворі є великий паркінг, однак уранці, коли всі з’їжджаються на роботу, часто потрібно було витрачати багато часу на пошук вільного місця. До цього періодично додавалася черга на в’їзді, тому що хтось забував, куди поклав перепустку, і намагався її знайти. Витрачати стільки часу лише на те, щоб потрапити на своє робоче місце, — некомфортно. Тож керівництву компанії запропонували спростити й автоматизувати цей процес, вони погодилися та виділили бюджет, щоб зреалізувати проект.

Перед розробниками стояло завдання створити розумну систему паркування, яка б організувала весь процес від того часу, коли працівник під’їжджає до території офісу, й до миті, коли його автомобіль уже стоїть припаркований. Важлива умова — швидкість роботи. Система має відстежувати будь-які зміни на паркінгу й ідентифікувати автомобілі не довше ніж за одну секунду.

У світовій практиці розумні системи передбачають, коли планують паркування. Під дорожнє покриття кожного місця для паркування встановлюють сенсорні давачі й під’єднують до єдиної системи, яка одержує та обробляє їхні сигнали. Це дорого, довго та складно. Тож ми прагнули знайти просте й універсальне вирішення.

MVP створила команда з трьох інженерів — Machine Learning Engineer, Python Developer і Front-End Developer за підтримкою керівництва компанії. Як консультант залучався Solution Architect. Пізніше точність класифікування прототипу ітеративно поліпшували, змінюючи архітектуру ML-моделі й уводячи додаткові алгоритмічні вдосконалення. У другому етапі життєвого циклу проекту взяли участь Data Scientists. Корпоративна IT-команда допомогла вивести проект у «продакшен» і забезпечила належну підтримку апаратних і програмних елементів системи. На цей час проект готують до опублікування open source.

Реалізування системи розумного шлагбаума

До старту проекту в нас діяла пропускна карткова система для в’їзду на територію. Нині Smart Gate розпізнає й пропускає автомобілі автоматично. Робочий прототип написали за три місяці.

В основі цієї системи — принцип машинного навчання та машинного зору. На в’їзді й виїзді шлагбауми обладнані IP-камерами, розміщеними так, щоб у кадр потрапляли номерні знаки автомобіля.

Алгоритм YOLO знаходить на зображенні з камери номерні знаки, потім їх вирізає й розвертає (perspective transform), Tesseract їх зацифровує; на виході одержуємо символи. Постобробляння результатів зацифрування охоплює перевіряння відповідності патерну українських номерних знаків, відсіювання результатів розпізнавання з низькою точністю.

Сьогодні вже налаштовано систему автоматичного синхронізування з внутрішньокорпоративною системою обліку працівників, отож, якщо туди додано номер автомобіля конкретного працівника, ґейт йому відчиниться автоматично. На початкових етапах запуску проекту ми це робили через додавання номера до спеціального списку вручну, потім — commit, push, redeploy.

Після того як номер розпізнано й установлено його відповідність працівникові компанії, мікрокомп’ютер Raspberry Pi, який керує сухими контактами ґейта, відкриває в’їзд/виїзд. Увесь цей процес займає одну-дві секунди.

Детальна схема роботи системи має такий вигляд:

Усі зображення з камер зберігаються в кешах системи. Тож, якщо треба, можна перевірити, коли приїхав і поїхав конкретний працівник.

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

Реалізування розумної системи паркування

Тепер в’їзд до офісу оснащено LCD-дисплеєм, який показує, де є вільні місця на корпоративному паркованні. В основу цієї системи так само покладено принцип машинного навчання.

Територію паркінгу умовно поділено на слоти — окремі місця для паркування, які зберігаються в системі розмічання під відповідним порядковим номером. Установлена на даху офісу IP-камера безперервно знімає, охоплюючи всю територію паркінгу.

Знімок з камери

Далі кожен зі слотів подають на згорткову нейронну мережу, яка виконує бінарне класифікування кожного місця й визначає, є на ньому автомобіль чи немає (місце вільне). У часі це займає до 500 мс.

На екрані, який стоїть біля в’їзду на паркінг, 24 години на добу показують мапу паркінгу. Екран синхронізується з веб-застосунком, який доступний для переглядання також зі смартфона або планшета. Тобто можна дізнатися, чи є вільні місця й де саме, ще перебуваючи вдома або дорогою на роботу.

Ліворуч — екран, коли всі місця зайняті, праворуч — вільні

Smart Parking дає змогу віддалено резервувати місця, на зображенні вони позначені сірим кольором. Також є місця для людей з інвалідністю.

Загальна схема роботи розумної системи паркування має такий вигляд:

Щоб навчити систему працювати безперебійно, ми натренували алгоритм на більш як 300 000 зображень. Ми передбачили все, що могли на ту мить, — пору доби (день, сутінки й ніч), погодні умови (яскраве сонце, хмарність і дощ). Система працювала чудово. Це було влітку. Щойно настала зима й випав перший сніг, система дала збій, оскільки нейромережа не розпізнавала вкриті снігом автомобілі на снігу. Тому нам довелося тимчасово зупинити її роботу на кілька днів, щоб перетренувати алгоритм на зимових зображеннях.

Тільки після цього змогли відновити роботу системи. Тепер вона справно працює в будь-яку пору року.

Подальші кроки

У Львові, особливо в історичному центрі, велика проблема з місцями для паркування, тож ми хочемо використати наш досвід, щоб хоч трохи поліпшити цю ситуацію. Наприкінці 2018 року ми підписали договір про співпрацю з Львівською міською радою та вже працюємо разом над масштабуванням проекту на рівні міста. Нині триває дослідження завантаженості трьох паркувальних майданчиків у центрі міста, під час якого ми зберемо дані й проаналізуємо трафік та ефективність використання місць для паркування. Після цього перейдемо до адаптування системи розумного паркування під потреби міста.

Переглянути принцип дії нашої системи ще раз можна на відео:

LinkedIn

43 комментария

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

а что будет если я распечатаю номер «авторизированого» и наклею себе на номер?

Ахах, тут прям SQL-injection на колесах :)

Сработает, даже если просто взять распечатку в руки (пробовал :) )

ооооочень круто
а почему инфракрасная подсветка в темное время не помогает? недостаточно мощности? или не все номера из отражающего материала сделаны?

Возможно, потому что Tesseract не был тренирован на таких изображениях. Это единственный вариант, который остался для объяснений :)

Отличное решение, особенно с определением вакантных мест при помощи одной камеры вместо отдельных сенсоров, респект! Вопрос, а ситуация когда за машиной заезжает другой автомобиль с номером которого нет в базе как-то обрабатывается?

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

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

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

Нужно уточнить, наверное, Вы правы, так как за все время существования гейта, никого по крыше не стукнуло :)

Цікава задача і класне рішення. Моё уважение команді :)

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

Первое, о чем подумал проскролив статью и увидев картинку с камеры: «Как оно будет работь зимой?» 🙂.

Добавили изображения со снегом в датасет, перетренировали — и заработало зимой :)

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

Вопросы:
1) есть ли какой-то фолбек на карточки если номер не опознан или приехал на другой машине?
2) в какой момент и по каким критериям система начинает считывать номер?
3) как обучалась сеть которая анализирует вид сверху? Как она реагирует на смену времени суток и погоды? Я так понимаю что кол-во машин всегда известно, поэтому сделать предположение немного легче, но все же.
4) Интересно есть ли альтернативы виду сверху? Всякие объемные датчики и прочее. Просто не везде же будет возможность видеть все паркоместа, а трекать заполнение как-то надо.

1) нет, просто ворота не открываются
2) есть motion detection на камере + маска (регион, где происходит распознавание). Когда срабатывает motion detection, стартует алгоритм поиска номеров (YOLO) в регионе, где позволяет маска.
3) сначала на датасете из интернета (когда у нас было недостаточно своих данных), потом перетренирована на изображениях конкретно этой парковки. На смену погоды и времени реагирует нормально, если таких изображений было достаточно в датасете. Естественно, с этим были некоторые проблемы :)
4) есть разные датчики, которые устанавливаются непосредственно под машину, на каждое парковочное место. Мы стремились решить задачу именно с помощью Computer Vision

Фото з парковкою виглядає так ніби місця справа 97-101 на газоні.

П.с ЩО робить система якщо якийсь порушник запаркувавсі як мудак тобто криво й зайняв кілька місць за раз.

Там спеціальне покриття, через яке проростає трава.
Якщо хтось паркується на межі паркомісць, то обидва місця розмічаються як зайняті

А повідомлення з проханням переставити та попередженням щодо штрафу відсилаєте?

Поки що не надсилаємо — запишемо як ідею до покращення сервісу :)

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

Дмитрий, спасибо на добром слове!

Для чего на этот проект потребовалось 20+ людей ? У меня как-то не укаладывается чем можно занять больше 10 человек.
Что кстати умел изначально MVP ?

MVP делали 3 человека, где Вы там прочитали про 20+?

MVP делали 3 человека

Во и интересно что же смогли реализовать 3 человека и в каком режиме фултайм или скажем в качестве стороннего проекта время от времени.

Вы там прочитали про 20+?

На фотографии 23 человека и коментарий к ней

Майже всі залучені до проекту люди є на фото нижче.

Про пересечение множеств слышали (IoU)? Множество 1: люди, которые делали проект (3-5). Множество 2: люди на фото (23). Пересечение множеств 1 и 2:

Майже всі залучені до проекту люди є на фото

Исходит ли из этого, что проект писали 20+ людей? Конечно же нет.
Кстати, отдельное спасибо, что посчитали людей на фото, я так и не удосужился.

Про пересечение множеств слышали (IoU)? Множество 1: люди, которые делали проект (3-5). Множество 2: люди на фото (23). Пересечение множеств 1 и 2:

Может я один такой, но после фразы

Майже всі залучені до проекту люди є на фото

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

Беру Вас редактором для следующей статьи

3 смены поднимателей шлагбаума с отпусками и больничными + менеджеры и прочие HR :)

Юра, хватит завидовать :)

ANPR was invented in 1976 at the Police Scientific Development Branch in the United Kingdom.[citation needed] Prototype systems were working by 1979, and contracts were awarded to produce industrial systems, first at EMI Electronics, and then at Computer Recognition Systems (CRS) in Wokingham, UK.
...
The first arrest through detection of a stolen car was made in 1981

Копипаста из Википедии?

3 года на разработку и похоже что еще 2 года на дебагинг, кажется прогресс не стоит на месте, теперь на это уходит пара месяцев.

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

Юра, 2018 + 3 года разработка + 2 года дебаг = 2023. Что-то ты неправильно посчитал.

Я думаю, что Юрий имел в виду, что у Британские коллеги в далёком 20 веке 3 года (1976 — 1979) убили на реализацию ANPR(Automatic number plate recognition), в то время как вы смогли это реализовать за пару месяцев. И воздал хвалу прогрессу ;)
А в общем, поддерживаю, вы молодцы!)

да, похоже, я неправильно понял

Так, бо це R&D vs integration. Останнє займає меньше часу.

Подписаться на комментарии