Як я відтворив проект у 86 мільйонів доларів на 57 рядків коду

Коли експеримент з існуючими технологіями з відкритим кодом робить "досить хорошу" роботу

Поліція Вікторії є основним правоохоронним органом штату Вікторія, Австралія. Понад 16 000 автомобілів, викрадених у Вікторії минулого року - вартістю близько 170 мільйонів доларів - поліцейський департамент експериментує з різноманітними технологічними рішеннями протидії викраденню автомобілів. Вони називають цю систему BlueNet.

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

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

Але саме після невеликого гуглінгу я виявив, що нещодавно поліція Вікторії пройшла випробування подібного пристрою, і орієнтовна вартість випуску була десь близько 86 000 000 доларів. Один проникливий коментатор зазначив, що вартість 86 мільйонів доларів, щоб обладнати 220 автомобілів, коштує досить спраглих 390 909 доларів за машину .

Звичайно, ми можемо зробити трохи краще, ніж це.

Критерії успіху

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

Вимога №1: Обробка зображень повинна виконуватися локально

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

Хоча централізований алгоритм машинного навчання з часом буде лише точнішим, я хотів дізнатися, чи буде локальна реалізація на пристрої "достатньо хорошою".

Вимога №2: Він повинен працювати із зображеннями низької якості

Оскільки у мене немає камери Raspberry Pi або веб-камери USB, тому я буду використовувати кадри з відеореєстратора - вони легко доступні та ідеальне джерело зразкових даних. Як додатковий бонус відео з відеореєстратора представляє загальну якість кадру, якого ви очікуєте від камер, встановлених на транспортному засобі.

Вимога №3: ​​Її потрібно будувати з використанням технології з відкритим кодом

Довіра до власного програмного забезпечення означає, що вас задекуть кожного разу, коли ви будете вимагати змін або вдосконалення, - і пекуче продовжуватиметься з кожним подальшим запитом. Використання технології з відкритим вихідним кодом не вимагає особливих зусиль.

Моє рішення

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

Дані, що повертаються до пристрою, встановленого в правоохоронному транспортному засобі, включають марку та модель транспортного засобу (які він використовує лише для перевірки того, чи були викрадені таблички), статус реєстрації та будь-які повідомлення про викрадені транспортні засоби.

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

Це справді все, що потрібно для розпізнавання символів на номерному знаку:

Незначна застереження

Публічний доступ до API VicRoads недоступний, тому перевірка номерних знаків відбувається за допомогою веб-скребування для цього прототипу. Хоча, як правило, нарікають на це - це доказ концепції, і я не б'ю чиїсь сервери.

Ось як виглядає брудність мого вишкрібання концепції:

Результати

Треба сказати, я був приємно здивований.

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

Рішення змогло розпізнати номерні знаки в широкому полі зору.

Хоча іноді рішення може мати проблеми з певними буквами.

Але ... рішення врешті-решт дозволить їх правильно.

Як ви можете бачити на двох згаданих вище зображеннях, обробка зображення через пару кадрів перескочила з рейтингу довіри 87% до волосся більше 91%.

Я впевнений, вибачте за каламбур, що точність може бути покращена за рахунок збільшення частоти дискретизації, а потім сортування за найвищим рейтингом довіри. В якості альтернативи можна встановити поріг, який приймає довіру більше 90%, перш ніж продовжувати перевірку реєстраційного номера.

Це дуже прямі виправлення перших кодів, і вони не виключають навчання програмного забезпечення для розпізнавання номерних знаків з локальним набором даних.

Запитання на суму 86 000 000 доларів

Чесно кажучи, я абсолютно не маю уявлення, що включає цифра в 86 мільйонів доларів - і я не можу говорити про точність мого інструменту з відкритим кодом без локального навчання проти пілотної системи BlueNet.

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

З іншого боку, вартість ~ 391 тис. Доларів за транспортний засіб здається досить багатою - особливо якщо BlueNet не особливо точний і немає масштабних ІТ-проектів з виведення з експлуатації або модернізації залежних систем.

Майбутні додатки

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

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

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

Частина 2 - Я опублікував оновлення, в якому тестую на власних кадрах і ловлю незареєстрований транспортний засіб тут:

Пам'ятаєте, що я скопіював сканер номерних знаків у 86 мільйонів доларів? Ось що сталося далі.

Успіхи, невдачі та зловлення одного дуже неслухняного драйвера medium.freecodecamp.org