Как репликирах проект от 86 милиона долара в 57 реда код

Когато експеримент със съществуваща технология с отворен код върши „достатъчно добра“ работа

Полицията на Виктория е основната правоприлагаща агенция на Виктория, Австралия. С над 16 000 превозни средства, откраднати във Виктория през изминалата година - на цена от около 170 милиона долара - полицейското управление експериментира с различни технологични решения за борба с кражбите на автомобили. Те наричат ​​тази система BlueNet.

За да се предотвратят измамни продажби на откраднати превозни средства, вече има уеб базирана услуга VicRoads за проверка на състоянието на регистрациите на превозни средства. Отделът е инвестирал и в стационарен скенер за регистрационни табели - фиксирана камера за статив, която сканира преминаващия трафик, за да идентифицира автоматично откраднатите превозни средства.

Не ме питайте защо, но един следобед имах желанието да прототипирам скенер на монтиран на автомобил регистрационен номер, който автоматично ще ви уведоми, ако превозно средство е било откраднато или нерегистрирано. Разбирайки, че тези отделни компоненти съществуват, се чудех колко трудно би било да ги свържа заедно.

Но след малко гуглене открих, че полицията на Виктория наскоро е била подложена на изпитание на подобно устройство и очакваните разходи за внедряване са някъде около 86 000 000 долара. Един проницателен коментатор посочи, че цената от 86 милиона долара за оборудване на 220 автомобила е доста жадна за 390 909 долара на превозно средство .

Със сигурност можем да направим малко по-добре от това.

Критерии за успех

Преди да започна, очертах няколко ключови изисквания за продуктовия дизайн.

Изискване №1: Обработката на изображенията трябва да се извършва локално

Излъчването на видео на живо към централен склад за обработка изглеждаше най-малко ефективният подход за решаване на този проблем. Освен огромната сметка за трафик на данни, вие също въвеждате мрежова латентност в процес, който вече може да е доста бавен.

Въпреки че централизираният алгоритъм за машинно обучение само ще стане по-точен с течение на времето, исках да науча дали локалното внедряване на устройството ще бъде „достатъчно добро“.

Изискване №2: Трябва да работи с изображения с ниско качество

Тъй като нямам Raspberry Pi камера или USB уеб камера, така че ще използвам кадри от dashcam - той е лесно достъпен и идеален източник на примерни данни. Като допълнителен бонус видеоклипът с видеокамера представлява цялостното качество на кадрите, които бихте очаквали от монтираните в автомобила камери.

Изискване №3: Трябва да се изгради с помощта на технология с отворен код

Разчитането на патентован софтуер означава, че ще ви ужилят всеки път, когато поискате промяна или подобрение - и ужилването ще продължи за всяка заявка, направена след това. Използването на технология с отворен код е безпроблемно.

Моето решение

На високо ниво моето решение взема изображение от видеорегистратор, изпомпва го чрез система за разпознаване на регистрационни номера с отворен код, инсталирана локално на устройството, заявява услугата за проверка на регистрацията и след това връща резултатите за показване.

Данните, върнати на устройството, инсталирано в превозното средство, включват марката и модела на превозното средство (които той използва само за проверка дали табелите са откраднати), статуса на регистрация и всички уведомления за откраднатото превозно средство.

Ако това звучи доста просто, това е така, защото наистина е така. Например, обработката на изображенията може да се обработва от библиотеката на openalpr .

Това е наистина всичко, което е свързано с разпознаването на знаците на регистрационния номер:

Незначително предупреждение

Публичният достъп до приложните програмни интерфейси (VicRoads) на API не е наличен, така че проверките на регистрационните табели се извършват чрез изстъргване на уеб за този прототип. Макар че като цяло се мръщят - това е доказателство за концепция и не удрям сърцата на никого.

Ето как изглежда мръсотията на моето изстъргване на доказателство за концепция:

Резултати

Трябва да кажа, че бях приятно изненадан.

Очаквах разпознаването на регистрационния номер с отворен код да е доста боклук. Освен това алгоритмите за разпознаване на изображения вероятно не са оптимизирани за австралийските регистрационни номера.

Решението успя да разпознае регистрационните табели в широко зрително поле.

Въпреки това, решението понякога ще има проблеми с определени букви.

Но ... решението в крайна сметка ще ги накара да бъдат правилни.

Както можете да видите на горните две изображения, обработката на изображението няколко кадъра по-късно скочи от рейтинг на доверие от 87% до коса над 91%.

Уверен съм, извинете за играта на думи, че точността може да се подобри чрез увеличаване на честотата на дискретизация и след това сортиране по най-високата степен на доверие. Като алтернатива може да се зададе праг, който приема само доверие над 90%, преди да продължи да валидира регистрационния номер.

Това са много директни поправки на първо кодиране и не изключват обучението на софтуера за разпознаване на регистрационни табели с локален набор от данни.

Въпросът за $ 86 000 000

За да бъда честен, нямам абсолютно никаква представа какво включва цифрата от 86 милиона долара - нито мога да говоря за точността на моя инструмент с отворен код без локализирано обучение спрямо пилотната система BlueNet.

Очаквам, че част от този бюджет включва подмяната на няколко стари бази данни и софтуерни приложения, за да се поддържа високочестотното запитване за регистрационни табели с ниска латентност няколко пъти в секунда на превозно средство.

От друга страна, цената от ~ 391 хил. Долара на превозно средство изглежда доста богата - особено ако BlueNet не е особено точен и няма големи ИТ проекти за извеждане от експлоатация или надграждане на зависими системи.

Бъдещи приложения

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

Автомобилите на Teslas вече са пълни с камери и сензори с възможност за получаване на актуализации на OTA - представете си, че ще ги превърнете във флота от виртуални добри самаряни. Драйверите на Ubers и Lyft също могат да бъдат оборудвани с тези устройства, за да увеличат драстично зоната на покритие.

Използвайки технология с отворен код и съществуващи компоненти, изглежда възможно да предложим решение, което осигурява много по-висока норма на възвръщаемост - за инвестиция, много по-малка от 86 милиона долара.

Част 2 - Публикувах актуализация, в която тествам със собствени кадри и хващам нерегистрирано превозно средство, тук:

Не забравяйте, че репликирах скенера за регистрационни табели от 86 милиона долара? Ето какво се случи по-нататък.

Успехи, неуспехи и улавяне на един много палав драйвер medium.freecodecamp.org