In deze blogpost presenteren we Hailo's kentekenherkenning (LPR)implementatie (ook wel Automatische Nummerplaatherkenning of ANPR genoemd). De gepresenteerde oplossing kan worden gebruikt in Intelligent Transportation Systems (ITS) en is een goed voorbeeld van hoe Hailo-8™ wordt gebruikt in een real-life implementatie van machine learning in op AI gebaseerde producten. We maken onderscheid tussen twee verschillende implementatiescenario's. Eén waar de LPR-pijplijn op de camera loopt en de andere waar een robuust verwerkingsapparaat is dat is verbonden met een of meer camera's die het voeden. In deze blog concentreren we ons op het eerste geval om de mogelijkheid te benadrukken om zelfs de strenge beperkingen mogelijk te maken die worden opgelegd door een aan een camera bevestigd systeem dat wordt ontgrendeld door de mogelijkheden van een krachtige AI-processor. Het apparaat bevat een Full HD-camera, cameraprocessor, Hailo-8™ AI-processor en GStreamer-applicatie die Computer Vision (CV)-pijplijn integreert met multi-neurale netwerken.

Inleiding

Automatic License Plate Recognition (ALPR)-systeem is een van de meest populaire video-analysetoepassingen voor slimme steden. Het systeem kan worden ingezet op snelwegen, tolhuisjes en parkeerplaatsen om snelle voertuigidentificatie, congestiecontrole, voertuigtelling, wetshandhaving, automatische tariefinning en meer mogelijk te maken.


Figuur 1 – uitgang van het ALPR-systeem. Het systeem kan de voertuigen detecteren en volgen, evenals hun kentekenplaten en ze herkennen

Met een krachtige edge AI-processor kan ALPR worden ingezet op edge-apparaten en in real-time worden uitgevoerd. tijd die cruciaal is voor:

  • Verbetering van productfouten met beter presterende NN die beter bestand zijn tegen een breed scala aan scenario's.
  • Verbetering van de algehele detectielatentie.
  • Verlaging van de totale TCO in vergelijking met bestaande systemen, inclusief installatie en onderhoudskosten.
  • Verhoogde gegevensbescherming en verbeterde privacy door de noodzaak om onbewerkte video te verzenden te elimineren.

De hoge rekenkracht die door Hailo-8™ wordt geïntroduceerd, maakt het ook mogelijk om meerdere voertuigen tegelijkertijd vanaf een lange afstand en met hoge nauwkeurigheid te verwerken. De nauwkeurigheid van traditionele objectdetectienetwerken heeft de neiging om met een factor x5 af te nemen voor kleine objecten. Een voertuig van 100 meter zal bijvoorbeeld slechts een paar honderd pixels in FHD-frame innemen, wat past bij NN met hoge capaciteit.

Het Hailo TAPPAS ALPR-systeem geïmplementeerd met GStreamer op Hailo-8™ M.2-kaart en Kontron's pITX-iMX8M met NXP's i.MX8-processor die in realtime draait (zonder batchverwerking) met een USB-camera in FHD-invoerresolutie.


Figuur 2 – Systeemtekening van de ALPR-applicatie die draait met Hailo-8™ en i.MX8

Applicatiepijplijn

De Hailo ALPR-toepassingspijplijn wordt weergegeven in het volgende diagram. De pijplijn omvat drie NN die draaien op het Hailo-8™-apparaat dat 1) de voertuigen detecteert, 2) de kentekenplaten detecteert en 3) de kentekentekens herkent (LPRNet). De hele pijplijn werkt met het GStreamer-framework.

Om de applicatielatentie te optimaliseren, gebruiken we de Hailo GStreamer Tracker om te voorkomen dat onnodige berekeningen worden uitgevoerd op voertuigen die al worden herkend en kwaliteitsschattingen om te voorkomen dat het LPRNet op wazige kenteken plaat. De pijplijn is ontworpen om te voldoen aan de uitdagende eis om in realtime te werken voor een invoerresolutie van 1080p met meerdere voertuigen in elk frame.

Alle NN-modellen zijn gecompileerd met behulp van de Hailo Dataflow Compiler en we hebben de vooraf getrainde gewichten en voorgecompileerde modellen vrijgegeven in de Hailo Model Zoo. De Hailo Model Zoo ondersteunt ook het opnieuw trainen van de modellen op aangepaste datasets om de overdraagbaarheid naar andere omgevingen te vergemakkelijken. We merken op dat alle modellen zijn getraind op relatief generieke gebruiksscenario's en kunnen worden geoptimaliseerd (in termen van grootte/nauwkeurigheid/fps) voor een specifiek scenario met speciale datasets.


Figuur 3 – CV-pijplijn van de ALPR-toepassing met Hailo-8™. In blauw – zijn blokken die worden uitgevoerd op het Hailo-8™-apparaat, in oranje – zijn blokken die worden uitgevoerd op de ingebouwde host

Voertuigdetectie

Voor voertuigdetectie hebben we een netwerk gebruikt dat is gebaseerd op YOLOv5m met een enkele klasse die alle soorten voertuigen verzamelt. YOLOv5 is een sterke eentraps objectdetector die in 2020 is uitgebracht en is getraind met Pytorch. Om het voertuigdetectienetwerk te trainen, hebben we verschillende datasets genomen en deze op hetzelfde annotatieformaat afgestemd. Merk op dat verschillende datasets ook een verschillende scheiding tussen voertuigtypes kunnen hebben en dit netwerk is getraind om alle soorten voertuigen van dezelfde klasse te detecteren. Door gebruik te maken van NN met hoge capaciteit, zoals YOLOv5m, om voertuigen te detecteren, kunnen we ze met zeer hoge nauwkeurigheid en grote afstand detecteren; daardoor kan de applicatie voertuigen detecteren en volgen, zelfs op snelwegen.

Parameters Compute (GMAC) Invoerresolutie Trainingsgegevens Validatiegegevens Nauwkeurigheid
21.47M 25,63 640x640x3 370k afbeeldingen (interne dataset) 5k afbeeldingen (interne dataset) 46.5AP*

*YOLOv5m-netwerk getraind op COCO2017 behaalt 33.9AP op hetzelfde validatiegegevensset.

Afbeelding 4 – Voorbeeld van voertuigdetectie waarin SSD-MobileNet-v1 (aan de linkerkant) en onze YOLOv5m (aan de rechterkant) worden vergeleken

Kentekenplaatdetectie

Ons kentekenherkenningsnetwerk is gebaseerd op Tiny-YOLOv4 met één klasse. Tiny-YOLOv4 is een compacte eentraps objectdetector die in 2020 is uitgebracht en is getraind met het Darknet-framework. Hoewel het model een relatief bescheiden nauwkeurigheid heeft op de COCO-dataset (19mAP), vonden we het bevredigend voor de taak om een ​​kentekenplaat te detecteren in een afbeelding van een enkel voertuig. Om het te trainen, gebruikten we verschillende gegevenssets voor kentekendetectie en veel negatieve voorbeelden (afbeeldingen van voertuigen die geen kentekenplaten bevatten).

Parameters Compute (GMAC ) Invoerresolutie Trainingsgegevens Validatiegegevens Nauwkeurigheid
5.87M 3.4 416x416x3 100.000 afbeeldingen (interne dataset) 5k afbeeldingen (interne dataset) 73.45AP

Figuur 5 – Voorbeelden van kentekenplaatdetectoren voor images-from-the-wild

LPRNet

LPRNet is een CNN met sequentiedecodering met variabele lengte, aangedreven door CTC-verlies (connectionistisch temporeel classificatie) dat is getraind met Pytorch. Dit netwerk is getraind met behulp van grotendeels automatisch gegenereerde synthetische datasets van Israëlische kentekenplaten, waardoor het geschikt is voor het herkennen van LP met alleen cijfers. Om LPRNet in andere regio's te gebruiken, raden we aan een mix van synthetische en echte datasets te gebruiken die de kentekenplaten van die regio vertegenwoordigen en het aantal klassen te wijzigen indien nodig (voeg bijvoorbeeld een ander alfabet toe). In de Hailo Model Zoo bieden we instructies voor hertraining en een Jupyter-notebook die laat zien hoe de synthetische dataset kan worden gegenereerd die is gebruikt voor het trainen van het LPRNet.

Parameters <Compute (GMAC) Invoerresolutie Trainingsgegevens Validatiegegevens <Nauwkeurigheid
7.14M 18.29 75x300x3 4M afbeeldingen (interne dataset) 5k afbeeldingen (interne dataset) 99,96%*

*Percentage volledig herkende kentekenplaten (uit de volledige validatiedataset)


Figuur 6 – Voorbeelden van synthetische datasets voor de LPRNet-training. We gebruikten een combinatie van echte en synthetische kentekenplaten met verschillende augmentaties voor training

AlPR inzetten met de Hailo TAPPAS

We hebben het ALPR-toepassingsvoorbeeld uitgebracht als onderdeel van de Hailo TAPPAS. De ALPR-voorbeeldtoepassing bouwt de pijplijn op met behulp van GStreamer in C++ en stelt ontwikkelaars in staat de toepassing uit te voeren vanaf een videobestand of een USB-camera. Andere argumenten waarmee u de toepassing kunt besturen, zijn onder meer het instellen van parameters voor de detectoren (bijvoorbeeld de detectiedrempel), de tracker (bijvoorbeeld de framesnelheid behouden/verloren) en de kwaliteitsschatting (minimale kentekenplaatgrootte en kwaliteitsdrempels) .

Met de Hailo Model Zoo kun je de NN ook opnieuw trainen met je eigen gegevens en deze overzetten naar de ALPR TAPPAS-applicatie voor snelle domeinaanpassing en -aanpassing. Het doel van de Hailo ALPR-toepassing is om u een solide basis te geven voor het bouwen van uw APLR-product door de volledige ML-toepassingspijplijn op de Hailo-8™ te implementeren en een ingebouwde hostprocessor die aan de rand wordt ingezet.

Wat is GStreamer?

GStreamer is een open-source mediaframework gericht op het ontwikkelen van krachtige en complexe pijplijnen voor mediatoepassingen. De GStreamer-pijplijn wordt opgebouwd door verschillende GStreamer-plug-ins met elkaar te verbinden. Elke plug-in is verantwoordelijk voor bepaalde functionaliteit en de combinatie van al deze plug-ins creëert de volledige pijplijn. Een eenvoudige GStreamer-pijplijn om een ​​videobestand weer te geven zou bijvoorbeeld een plug-in bevatten om het gelezen bestand te verwerken, een tweede plug-in om het formaat van het bestand te decoderen en een derde plug-in om het gedecodeerde frame weer te geven. Elke plug-in geeft zijn invoer (sinks) en uitvoer (bronnen) aan en het framework genereert de volledige pijplijn met behulp van zijn LEGO-achtige bouwstenen.

Figuur 7 – Een eenvoudige GStreamer-pijplijn

Hailo's GStreamer-ondersteuning

Als onderdeel van de HailoRT (de runtime-bibliotheek van Hailo) brengen we een GStreamer-plug-in uit voor AI-inferentie op de Hailo-8™ AI-processor (libgsthailo). Deze plug-in zorgt voor het volledige configuratie- en inferentieproces op het apparaat, wat de integratie van de Hailo-8™ in GStreamer-pijpleidingen eenvoudig en ongecompliceerd maakt. Het maakt ook gevolgtrekking mogelijk van een multi-netwerkpijplijn op een enkele Hailo-8™ om een ​​volledig ML-systeem te vergemakkelijken.

Behalve voor de standaard HailoRT-plug-in, in de ALPR-toepassing, gebruiken we ook extra GStreamer-plug-ins die worden uitgebracht met het TAPPAS-pakket – Hailo GStreamer-tools (libgsthailotools).

  • Tracking: deze GStreamer-plug-in implementeert een Kalman Filter-tracker en is verantwoordelijk voor het volgen van een algemeen object in een afbeelding. Het ontvangt updates voor elke bewerking van het detectienetwerk en is in staat objecten uit eerdere frames te associëren om ze een unieke ID toe te kennen aan alle frames. De tracker kan ook voorspellingen genereren voor de locatie van de objecten in onzichtbare frames.
  • Kwaliteitsschatting: deze plug-in kan de kwaliteit van een afbeelding schatten door de variantie van de randen te berekenen. Het ontvangt een invoerbeeld en berekent de wazigheid (score).
  • Bijsnijden & Formaat wijzigen: deze plug-in kan verschillende uitsneden van een afbeelding genereren op specifieke locaties. Het ontvangt een afbeelding en een reeks ROI's (Regions of Interest of boxen) en genereert verschillende afbeeldingen van vaste grootte.
  • Hailo-filter: een algemene plug-in waarmee u C++-code in de pijplijn kunt insluiten. Bijvoorbeeld functionaliteit voor nabewerking.
  • Hailo-overlay: om de uiteindelijke uitvoer van de applicatie te tekenen, gebruiken we een gespecialiseerde plug-in die alle voorspellingen verzamelt, de begrenzingsvakken en metadata tekent en het uiteindelijke uitvoerframe genereert.

Prestaties

De volgende tabel geeft een overzicht van de prestaties van de ALPR-toepassing op Hailo-8™ en i.MX8 met USB-camera in FHD-invoerresolutie (1920×1080), evenals een uitsplitsing voor de zelfstandige prestaties van NN.

< table class="has-background"> ​​

FPS Latentie Nauwkeurigheid Volledige aanvraag (x86) 42 – 99,96% Volledige applicatie (i.MX) 20 – 99,96% Zelfstandige voertuigdetectie 54 1,39 ms 46.5AP Zelfstandige kentekenplaatdetectie 1386 44.37 ms 73.45AP < td>Standalone LPRNet 303 5.81 ms 99,96%

Figuur 8 – Prestatietabel van de ALPR-applicatie die draait op Hailo-8™

Samenvatting

De Hailo ALPR-applicatie presenteert een end-to-end applicatieraamwerk voor het inzetten van AI voor intelligente transporttoepassingen aan de rand. Het omvat de volledige applicatiepijplijn die is geïmplementeerd in GStreamer met Hailo TAPPAS en hertrainingsmogelijkheden van elk neuraal netwerk om maatwerk met de Hailo Model Zoo mogelijk te maken. Deze applicatie biedt een solide basis voor het bouwen van een APLR-product met Hailo-8™. Bekijk voor meer informatie de Hailo TAPPAS-documentatie.

Dit werk is een samenwerking van Tamir Tapuhi, Nadiv Dharan, Gilad Nahor, Rotem Bar, Itai Ofir, Yuval Belzer en Yuval Bernstein

Bibliografie

Bochkovskiy, A., Wang, C.-Y., Hong-Yuan, & Liao, M. (2020). YOLOv4: optimale snelheid en nauwkeurigheid van objectdetectie. Tech Report.

Laroca, R., Zanlorensi, L.A., Gonçalves, G.R., Todt, E., Schwartz, W.R., & Menotti, D. (2019). Een efficiënt en lay-outonafhankelijk automatisch kentekenherkenningssysteem op basis van de YOLO-detector. IET intelligente transportsystemen.

Silva, S. M., & Jung, C.R. (2018). Nummerplaatdetectie en -herkenning in onbeperkte scenario's. ECCV.

Zherzdev, S., & Gruzdev, A. (2018). LPRNet: Kentekenherkenning via diepe neurale netwerken. arXiv.

Niv Vosco
Machine Learning Group Manager, Hailo

0

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *