De introductie van goedkope, krachtige Arm-processors in combinatie met de vooruitgang in machine learning-technieken vormt de basis voor intelligente randapparatuur voor computervisie. Computervisie aan de rand zal de verschuiving van cloudgerichte intelligentie naar randintelligentie voor veel use-cases stimuleren, aangezien edge-apparaten veel voordelen bieden. Edge-videoverwerking kan bijvoorbeeld deterministische responstijden, lagere netwerkbandbreedtekosten en verhoogde gegevensbescherming bieden, om er maar een paar te noemen. Objectdetectie en -tracking zijn de eerste use-cases waarvoor het momentum om over te schakelen naar edge-based oplossingen aan snelheid wint. Echter; er zijn tal van valkuilen die ontwikkelaars moeten vermijden om met succes de ontwerpuitdagingen die gepaard gaan met computervisie en machine learning te navigeren. Inzicht in de ontwerpuitdagingen en ontwerptrade-offs kan het risico verminderen en de time-to-market versnellen. Laten we eens kijken naar een recent objecttrackingproject dat we hebben gedaan.

Voor deze use-case voor objecttracking hebben we een visiesysteem geïmplementeerd voor het meten van klantenservice in een winkelomgeving. Het doel van het systeem is om de uitchecktijd en het aantal klanten dat in elke rij is bediend te meten, zoals hieronder weergegeven in afbeelding 1. Om deze klantanalyses uit de live videofeed te bepalen, hebben we inzicht nodig in de positie en beweging van de individuele klanten terwijl ze door het gezichtsveld gaan.

Figuur 1 Klanten volgen en tellen

Veel praktische toepassingen vereisen een combinatie van traditionele computervisie-algoritmen en machine learning-technieken voor een efficiënte implementatie op een randprocessor met beperkte middelen. Het voordeel van deze techniek is dat de objectdetector interpolatie van de objectlocaties tussen detecties kan bieden en tevens de context van de beweging kan bieden. De interpolatie verhoogt de effectieve framesnelheid van de verwerking, waardoor de hiaten tussen detectieframes kunnen worden opgevuld, wat wordt beperkt door langere latenties op het ingebedde platform. Het ontwerpdoel voor dit voorbeeld was om twee kassalijnen in realtime te verwerken op een ingebouwde Raspberry Pi-processor.

Het blokschema op hoog niveau van de implementatie wordt hieronder weergegeven in figuur 2. Nadat het beeld is vastgelegd, wordt een SSD-objectdetector gebruikt om de initiële posities van klanten te vinden. Objectdetectie werd bereikt met behulp van een MobileNet V3 SSD-model dat werd getraind, getest en geconverteerd voor doeluitvoering met behulp van de DeepViewTMML Toolkit. Het voor de hand liggende doel van objectdetectie is een voldoende hoge nauwkeurigheid om te voldoen aan de vereisten van de toepassing en toch te voldoen aan de realtime prestatievereisten. De DeepViewML Tools en de geoptimaliseerde DeepViewRT-inferentie-engine vereenvoudigen het proces van het selecteren, trainen en valideren van het detectiemodel van de juiste grootte voor standaard- of aangepaste klassen aanzienlijk. Voor dit specifieke gebruik gaf een klein MobileNet V3-netwerk de beste afweging van prestaties en nauwkeurigheid met een inferentietijd van 145 ms.

Zodra het object is gedetecteerd, wordt het selectiekader naar een configureerbare tracker gestuurd die wordt gebruikt om het pad van het object te berekenen terwijl het binnen het gezichtsveld beweegt. Voor dit voorbeeld is een tracker geïmplementeerd met behulp van een Kernelized Correlation Filter (KCF). De kernelfunctie wordt gebruikt om de overeenkomst te berekenen tussen het gevolgde doel en het verschoven kandidaatgebied, wat minder rekenintensief is dan detectie. Het doel hier wordt bepaald waar het object is verplaatst, dus het volgen moet worden uitgevoerd met een redelijke framesnelheid in vergelijking met de snelheid van het object. In deze implementatie werkt de KCF-tracker in minder dan 50 ms, wat een hogere verwerkingssnelheid mogelijk maakt in vergelijking met alleen op detectoren gebaseerde algoritmen.

Om de robuustheid van het volgalgoritme te verbeteren, kunnen andere toestandsmachines en filters worden gebruikt om situaties aan te pakken zoals occlusie waarbij dat pad van het object wordt geblokkeerd door een ander object over een deel van het gezichtsveld. Een Kalman-filter wordt gebruikt om de objectstatus te voorspellen op basis van de vorige richting en snelheid van het object wanneer geen goede correlatie van de tracker wordt verkregen. Het Kalman-filter kan ook de uitbijters wegfilteren om de signaal-ruisverhouding van de toestand te verbeteren.

De belangrijkste stappen voor Kalman-filters zijn a) Objectvoorspelling en b) Bounding Box-correctie. De fase Objectvoorspelling maakt gebruik van een dynamisch model dat een snelheidsvector definieert die kan worden gebruikt om de toekomstige positie van het object te schatten. Tijdens de correctiefase van het begrenzingskader wordt het begrenzingskader van de voorspellingsfase vergeleken met de locatie zoals bepaald door het volgalgoritme om een ​​achterste begrenzingskader te schatten. Het achterste begrenzingsvak bevindt zich tussen het voorspelde en gemeten begrenzingsvak. De bijgewerkte locatie van het object zal dus worden bepaald als de gemeten locatie als het vertrouwen van de objectdetector hoog is; of het zal de posterieure locatie zijn als de betrouwbaarheid van de detector laag is. Als de objectdetector uitvalt, wordt de voorspelde locatie gebruikt. Kalman-filters voor locatievoorspelling worden gebruikt tussen de n-de frames die worden verwerkt door de objectdetector.

Figuur 2 Objectdetectie en volgstroomdiagram

Na een configureerbaar aantal volgframes wordt de detectie opnieuw uitgevoerd om de gevolgde locatie te bevestigen. Het is dan noodzakelijk om te bepalen of het gedetecteerde object hetzelfde is als het object dat wordt gevolgd, wat een toewijzingsprobleem is. Het Hongaarse algoritme wordt gebruikt om de resultaten van tracker, nieuwe detecties en voorspellingen te integreren. Het Hongaarse algoritme kan bepalen of het object in twee frames hetzelfde is, dit kan gebaseerd zijn op intersectie over unie (IOU), vorm van het object of convolutiekenmerken. Drempelwaarden worden vastgesteld, en als aan het object wordt voldaan, wordt geconcludeerd dat het hetzelfde is.

Zodra we objecten kunnen volgen, is de volgende stap het verzamelen van gegevens over de beweging van elk object. Een eenvoudige benadering is om het pad van het object te bepalen met behulp van de geschiedenis van de vorige zwaartepuntlocaties van het object, zoals in figuur 3. Deze gegevens kunnen vervolgens worden gebruikt om beweging in een toepassing te visualiseren of te bepalen of een object een grenslijn of zone heeft gekruist.

Afbeelding 3 Geschiedenis van Centroids

De uiteindelijke softwarearchitectuur voor de oplossing wordt hieronder weergegeven in Afbeelding 4. De invoervideo wordt door de cameraserver geschaald voor de juiste resolutie voor de objectdetector- en tracker-algoritmen. Metagegevens van het volgalgoritme worden verwerkt door de applicatie die de begrenzingsvakken en paden op het scherm in realtime genereert, samen met het aantal klanten dat voor elke rijstrook wordt bediend en de servicetiming.

De oplossing heeft de volgende afstembare parameters zodat deze kan worden ingesteld en geoptimaliseerd voor andere toepassingen:

  • Detectiesnelheid: het aantal milliseconden tussen elke detectie
  • Modeltype : het type ML-model dat wordt gebruikt voor objectdetectie
  • Tracker: het gebruikte trackingalgoritme
  • Minimale objectgrootte: minimale grootte van te volgen object
  • Maximale objectgrootte : maximale grootte van te volgen object

Figuur 4 De Definitieve architectuur

Met deze implementatie konden we een praktische trackingoplossing laten zien die in staat is om twee kassarijen in realtime te verwerken op een ingebouwd Raspberry Pi4-platform. Een demovideo van de werkende oplossing is hier beschikbaar.

Brad Scott
Mede-oprichter en president, Au-Zone Technologies

1

Geef een antwoord

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