Wie ich ein 86-Millionen-Dollar-Projekt in 57 Codezeilen repliziert habe

Wenn ein Experiment mit vorhandener Open Source-Technologie „gut genug“ funktioniert

Die Victoria Police ist die wichtigste Strafverfolgungsbehörde in Victoria, Australien. Mit über 16.000 gestohlenen Fahrzeugen, die im vergangenen Jahr in Victoria gestohlen wurden - zu einem Preis von rund 170 Millionen US-Dollar - experimentiert die Polizei mit einer Vielzahl von technologiegetriebenen Lösungen, um gegen Autodiebstahl vorzugehen. Sie nennen dieses System BlueNet.

Um den betrügerischen Verkauf gestohlener Fahrzeuge zu verhindern, gibt es bereits einen webbasierten VicRoads-Dienst zur Überprüfung des Status von Fahrzeugzulassungen. Die Abteilung hat auch in einen stationären Kennzeichenscanner investiert - eine feste Stativkamera, die den vorbeifahrenden Verkehr scannt, um gestohlene Fahrzeuge automatisch zu identifizieren.

Fragen Sie mich nicht warum, aber eines Nachmittags hatte ich den Wunsch, einen am Fahrzeug montierten Kennzeichenscanner zu prototypisieren, der Sie automatisch benachrichtigt, wenn ein Fahrzeug gestohlen oder nicht registriert wurde. Als ich begriff, dass diese einzelnen Komponenten vorhanden waren, fragte ich mich, wie schwierig es sein würde, sie miteinander zu verbinden.

Aber nach einigem googeln stellte ich fest, dass die Polizei von Victoria kürzlich einen Test mit einem ähnlichen Gerät durchgeführt hatte und die geschätzten Kosten für die Einführung irgendwo in der Nähe von 86.000.000 USD lagen. Ein scharfsinniger Kommentator wies darauf hin, dass die Kosten von 86 Mio. USD für die Ausstattung von 220 Fahrzeugen bei ziemlich durstigen 390.909 USD pro Fahrzeug liegen .

Sicher können wir ein bisschen besser machen.

Die Erfolgskriterien

Bevor ich anfing, habe ich einige wichtige Anforderungen für das Produktdesign skizziert.

Anforderung 1: Die Bildverarbeitung muss lokal durchgeführt werden

Das Streamen von Live-Videos in ein zentrales Verarbeitungslager schien der am wenigsten effiziente Ansatz zur Lösung dieses Problems zu sein. Neben der hohen Rechnung für den Datenverkehr führen Sie auch die Netzwerklatenz in einen Prozess ein, der möglicherweise bereits recht langsam ist.

Obwohl ein zentralisierter Algorithmus für maschinelles Lernen mit der Zeit nur genauer wird, wollte ich wissen, ob eine lokale Implementierung auf dem Gerät „gut genug“ wäre.

Anforderung Nr. 2: Es muss mit Bildern von geringer Qualität funktionieren

Da ich keine Raspberry Pi-Kamera oder USB-Webcam habe, verwende ich Dashcam-Material - es ist sofort verfügbar und eine ideale Quelle für Beispieldaten. Als zusätzlichen Bonus repräsentiert das Dashcam-Video die Gesamtqualität des Filmmaterials, das Sie von fahrzeugmontierten Kameras erwarten.

Anforderung Nr. 3: Es muss mit Open Source-Technologie erstellt werden

Wenn Sie sich auf eine proprietäre Software verlassen, werden Sie jedes Mal gestochen, wenn Sie eine Änderung oder Verbesserung anfordern - und das Stechen wird für jede danach gestellte Anforderung fortgesetzt. Die Verwendung von Open Source-Technologie ist ein Kinderspiel.

Meine Lösung

Auf hoher Ebene nimmt meine Lösung ein Bild aus einem Dashcam-Video auf, pumpt es durch ein Open-Source-Kennzeichenerkennungssystem, das lokal auf dem Gerät installiert ist, fragt den Registrierungsprüfungsdienst ab und gibt die Ergebnisse zur Anzeige zurück.

Zu den Daten, die an das im Polizeifahrzeug installierte Gerät zurückgegeben werden, gehören die Marke und das Modell des Fahrzeugs (anhand derer nur überprüft wird, ob die Kennzeichen gestohlen wurden), der Registrierungsstatus und alle Benachrichtigungen über das als gestohlen gemeldete Fahrzeug.

Wenn das ziemlich einfach klingt, liegt es daran, dass es wirklich so ist. Beispielsweise kann die Bildverarbeitung alle von der openalpr- Bibliothek übernommen werden.

Dies ist wirklich alles, was erforderlich ist, um die Zeichen auf einem Nummernschild zu erkennen:

Eine kleine Einschränkung

Der öffentliche Zugriff auf die VicRoads-APIs ist nicht verfügbar. Daher werden Kennzeichenprüfungen für diesen Prototyp über Web Scraping durchgeführt. Obwohl dies allgemein verpönt ist, ist dies ein Proof of Concept und ich knalle keine Server von irgendjemandem.

So sieht die Schmutzigkeit meines Proof-of-Concept-Scrapings aus:

Ergebnisse

Ich muss sagen, ich war angenehm überrascht.

Ich hatte erwartet, dass die Open-Source-Kennzeichenerkennung ziemlich blöd ist. Darüber hinaus sind die Bilderkennungsalgorithmen wahrscheinlich nicht für australische Nummernschilder optimiert.

Die Lösung konnte Kennzeichen in einem weiten Sichtfeld erkennen.

Die Lösung hatte jedoch gelegentlich Probleme mit bestimmten Buchstaben.

Aber… die Lösung würde sie irgendwann richtig machen.

Wie Sie in den beiden obigen Bildern sehen können, sprang die Verarbeitung des Bildes einige Frames später von einer Konfidenzbewertung von 87% auf ein Haar über 91%.

Ich bin zuversichtlich, entschuldigen Sie das Wortspiel, dass die Genauigkeit verbessert werden kann, indem Sie die Abtastrate erhöhen und dann nach der höchsten Konfidenzbewertung sortieren. Alternativ könnte ein Schwellenwert festgelegt werden, der nur ein Vertrauen von mehr als 90% akzeptiert, bevor die Registrierungsnummer validiert wird.

Dies sind sehr einfache Code-First-Korrekturen, die das Training der Kennzeichenerkennungssoftware mit einem lokalen Datensatz nicht ausschließen.

Die $ 86.000.000 Frage

Um fair zu sein, ich habe absolut keine Ahnung, was die 86-Millionen-Dollar-Zahl beinhaltet - noch kann ich mit der Genauigkeit meines Open-Source-Tools ohne lokalisiertes Training im Vergleich zum BlueNet-Pilotsystem sprechen.

Ich würde erwarten, dass ein Teil dieses Budgets den Austausch mehrerer älterer Datenbanken und Softwareanwendungen umfasst, um die hochfrequente Abfrage von Kennzeichen mit geringer Latenz mehrmals pro Sekunde und Fahrzeug zu unterstützen.

Auf der anderen Seite scheinen die Kosten von ~ 391.000 USD pro Fahrzeug ziemlich hoch zu sein - insbesondere wenn das BlueNet nicht besonders genau ist und es keine großen IT-Projekte gibt, mit denen abhängige Systeme außer Betrieb genommen oder aktualisiert werden können.

Zukünftige Anwendungen

Während es leicht ist, sich in die Orwellsche Natur eines „ständig aktiven“ Netzwerks von Kennzeichen-Snitchern zu vertiefen, gibt es viele positive Anwendungen dieser Technologie. Stellen Sie sich ein passives System vor, das andere Autofahrer nach einem Entführerauto durchsucht und Behörden und Familienmitglieder automatisch über ihren aktuellen Standort und ihre aktuelle Richtung informiert.

Teslas-Fahrzeuge sind bereits voller Kameras und Sensoren, die OTA-Updates empfangen können. Stellen Sie sich vor, Sie verwandeln diese in eine Flotte virtueller barmherziger Samariter. Ubers- und Lyft-Fahrer könnten ebenfalls mit diesen Geräten ausgestattet werden, um den Abdeckungsbereich drastisch zu vergrößern.

Mit Open Source-Technologie und vorhandenen Komponenten scheint es möglich zu sein, eine Lösung anzubieten, die eine viel höhere Rendite bietet - für eine Investition von weniger als 86 Mio. USD.

Teil 2 - Ich habe hier ein Update veröffentlicht, in dem ich mit meinem eigenen Filmmaterial teste und ein nicht zugelassenes Fahrzeug fange:

Denken Sie daran, dass ich einen 86-Millionen-Dollar-Kennzeichenscanner repliziert habe? Folgendes ist als nächstes passiert.

Erfolge, Misserfolge und das Fangen eines sehr ungezogenen Treibers medium.freecodecamp.org