Real-time videobewaking met lage hardware-eisen

← Nieuws
March 24, 2021

Computer Vision en objectherkenning, onderdelen van Artificial Intelligence (AI), zijn uitdagende onderwerpen als het aankomt op prestaties in een real-time applicatie.

Real-time videobewaking met lage hardware-eisen

Bij West zijn we van oudsher pionier als het aankomt op nieuwe technologie. Of het nu gaat om apps of ruimtevaart, we leveren altijd de beste en modernste oplossingen aan onze klanten. Pieter Buzing, Senior Software Engineer/ Data Scientist bij West IT, schreef dit artikel over onze bevindingen van het pilot project met real-time video panorama’s. We tonen met eenvoudige middelen aan dat het verwerken van meerdere live video streams geen dure hardware vereist.

Stitching demo

Real-time videobewaking met lage hardware-eisen

Onze casestudy zag er als volgt uit. Een aantal beveiligingscamera's is bevestigd aan een gebouw. Een medewerker in de controlekamer heeft de verantwoordelijkheid om deze beelden continu te bekijken en gevaarlijke situaties te herkennen. Hij verdeelt zijn aandacht over verschillende schermen: zijn alle mensen die in het linker beeld voorbijkomen ook in het rechter beeld gepasseerd, of zijn er nog mensen op het object? Een juist antwoord is soms een kwestie van leven en dood.

Voorwaarden panoramabeeld

We onderzochten of we een live panoramisch overzichtsbeeld konden toevoegen dat de aparte video streams combineert. Het live panoramabeeld moet wel aan een aantal voorwaarden voldoen om van praktisch nut te zijn. Ten eerste moet het een HD resolutie hebben, maar aangezien de bronvideo's ook van HD kwaliteit zijn, moet het eindresultaat waarschijnlijk nog gedownsampled worden om het passend te krijgen op een standaard beeldscherm. Ten tweede wordt een frame rate van 6 FPS beschouwd als minimum voor het waarnemen van beweging. Ten derde is de acceptabele latency (beeldvertraging) vastgelegd op 1 seconde - anders noemen we het niet meer "live". Ten slotte vereist een realistische use case (ten minste) 3 camera's. De camera's worden geacht stationair te zijn gemonteerd, dus zonder panning- en zoomfunctionaliteit.

Technische uitdaging

De technische uitdaging is aanzienlijk. Zelfs met een moderne grafische kaart vraagt het veel rekenkracht om een fotocollage met verschillende foto’s te maken zodat het één wordt (stitching) . Aangezien een video eigenlijk een serie van beelden is, is het moeilijk om de live stream bij te houden. Het is op zich geen probleem als een aantal frames wordt overgeslagen, zolang het tempo van 6 frames per seconde behouden blijft. Dat betekent dus een panoramabeeld stitchen binnen 1/6=0.166 seconde.

Undistortion proces

Om een panoramisch beeld te maken doorlopen we een aantal stappen. De eerste is lenscorrectie. Bewakingscamera's hebben een wijde kijkhoek, wat een ongewenst fish-eye effect geeft, een bolvormige vertekening van het beeld. De makkelijkste oplossing hiervoor is het toepassen van lenscorrectie op elk frame voordat het stitchen plaatsvindt (undistortion). Dit proces is een functie dat pixels naar binnen trekt. Het berekenen hiervan is echter een zware klus en hangt af van lens- en zoominstellingen. Om hier een eenmalige actie van te maken, staan we geen zoom toe. Deze undistortion functie kan met standaard software tools worden gevonden. Het is meestal een kwestie van een aantal foto's maken van een schaakbord. De rechte lijnen in het (fysieke) schaakbordpatroon kunnen dan gebruikt worden om de benodigde correctie voor elke pixel af te leiden.

Stitching fase en videostream

Hierna volgt het daadwerkelijke stitching proces. Dit wordt paarsgewijs gedaan, zodat het panoramabeeld van links naar rechts groeit. Vanwege de verschillende camerahoeken vervormen we de beelden enigszins zodat ze vloeiend in elkaar passen (homomorfe transformatie). Dit resulteert niet in een perfecte weergave, maar het is praktisch goed genoeg. Om deze transformatie vast te stellen wijzen we ten minste vier referentiepunten aan op het "linker" beeld en (dezelfde punten) op het "rechter" beeld. Deze transformatie wordt uitgedrukt in een 3x3 matrix, en vermenigvuldigd met elke beeldcoördinaat (een vector) om de bestemmingscoördinaat te berekenen. De transformatiematrix met minimale vervormingsfouten (t.o.v. de referentiepunten) kan automatisch worden afgeleid met behulp van lineaire regressie.

Vergeet niet dat de camera's verondersteld worden stationair te zijn, wat betekent dat de transformatie slechts eenmaal per camerapaar hoeft te worden berekend. Tijdens de stitching fase moet dan elk frame worden vermenigvuldigd met de homomorfe transformatie matrix. Dit is de computationeel meest veeleisende stap in het hele proces. Na het aan elkaar hechten van alle beelden hebben we één panoramisch beeld. Deze beelden leveren we aan als een videostream, een MPEG-bestand, of geven we op het scherm weer - afhankelijk van de toepassing.

Versnellen met parallelle stappen

Om het werk te versnellen hebben we het opgesplitst in parallelle stappen. Eén proces voor het decoderen van de input streams. Een proces voor het vervormen van de beelden. Een proces voor het stitchen van de beelden. En tenslotte een proces voor het coderen of streamen van het resulterende beeld. We hebben deze processen aan elkaar gelijmd met ZeroMQ berichten, een lichtgewicht message brokering systeem. In ons geval is zo'n bericht een afbeelding.

Het resultaat en meer

Het doorlopen van deze stappen leidde tot het gewenste resultaat: één vloeiend panoramisch live beeld van een terrein waar meerdere camera's nodig zijn om het hele gebied te bestrijken. Waar de medewerker normaal zijn aandacht moet verdelen over drie afzonderlijke monitoren, beschikt hij nu over één enkel overzichtsscherm.

Maar we zijn nog een stap verder gegaan en hebben een objectdetectie- en -trackingmodule geïmplementeerd. Op die manier detecteren we auto's en personen en maken die zichtbaar voor de medewerker. Dit voegt extra veiligheid toe. We toonden we aan dat, door gebruik te maken van standaard libraries zoals YOLO (een state-of-the-art convolutioneel neuraal netwerk, gebouwd op de Keras en Tensorflow frameworks), relevante objecten herkend en gevolgd worden met een vertraging van een halve seconde. Dit bewijst dat het op een slimme manier toepassen en combineren van bestaande software tools kan resulteren in praktisch haalbare AI toepassingen.

Eenvoudig, maar voldoet aan alle eisen

Onze oplossing maakt gebruik van off-the-shelf techniek op basis van Python en OpenCV. We hebben een flexibele pijplijn gebouwd met multithreading en deze uitbreidbaar gemaakt met tracking en objectherkenning. Het is een technisch eenvoudig proof of concept dat voldoet aan alle eisen van de klant. Oftewel: het is mogelijk om real-time videobewaking te implementeren met lage hardware-eisen!

Wilt u meer weten over de mogelijkheden? Neem dan contact op met Sjaak Tuwanakotta, Commercieel Directeur West IT, via e-mail sjaak@west.nl of telefoon 06-36040908.

Bijschrift bij afbeelding: drie camerabeelden (bovenste rij) van drie verschillende camera's. De "undistortion" heeft al plaatsgevonden, vandaar de ronde inkepingen. Linksonder is het rauwe panoramabeeld te zien. Rechtsonder staat het (bijgesneden) videobeeld zoals dat op het scherm getoond wordt.

Photo by Agence Olloweb on Unsplash