Computer vision heeft de reputatie duur en moeilijk te zijn. Maar in bepaalde situaties kunnen goedkope single board microcomputers uitkomst bieden.
Computer vision boekt de laatste jaren grote vooruitgang en computercapaciteit wordt steeds beter beschikbaar en goedkoper. Er zijn dan ook slimme oplossingen te creƫren op kleine single board computers. Steeds vaker worden ook computer vision algoritmen ingezet voor uiteenlopende toepassingen: drones, beveiligingscamera's, mobiele applicaties, retailanalyses enz.
Het Belgische onderzoeksinstituut Sirris ontwikkelde onlangs een 'proof of concept' voor een bedrijf, met de bedoeling bepaalde objecten real-time te detecteren.
In de testopstelling legt een camera continu beelden vast en stuurt deze naar een minicomputer. In dit geval is gekozen voor een Raspberry Pi 4, die de data verwerkt met behulp van de bibliotheek Python OpenCV. Deze microcomputer is een goedkoop, lichtgewicht open source hardware-platform in creditcardformaat, met een krachtige CPU en tal van andere nuttige functionaliteiten. Het bordje kan als volwaardige computer werken en is daarmee geschikt voor mobiele en andere applicaties waarbij grootte, gewicht en kosten van belang zijn.
Voor de beeldopname in deze opstelling werd de Raspberry Pi Camera v2 gebruikt, een goedkope en kwalitatief hoogwaardige 8 megapixel Sony beeldsensor. Deze kan statische beelden van 3280 x 2464 pixels en 1080 p videobeelden kan vastleggen.
Deze opstelling voldeed aan de vereiste om continu beelden op te nemen en ze te verwerken met 100 beelden per seconde (fps). Met de Pi camera konden de onderzoekers eenvoudig videobeelden met 100 fps opnemen. Ook de beeldverwerking kon gemakkelijk met de correcte snelheid worden uitgevoerd.
Evalueert men de snelheid van beide processen afzonderlijk, dan zou men kunnen concluderen dat de hardware in staat moet zijn om beide processen samen aan de vereiste snelheid uit te voeren.
De onderzoekers van Sirris begonnen met het detecteren van legoblokken van een bepaalde kleur, bijvoorbeeld rood. Maar toen ze de legoblokken in elk opgenomen beeld moesten analyseren, slaagde de testopstelling er aanvankelijk niet in de verwerkingssnelheid van 100 fps te halen. In de plaats daarvan zakte de snelheid naar 30 fps.
Hierop pasten de onderzoekers profilering toe. Dit is het bewaken van een toepassing op verschillende uitvoeringsniveaus om te achterhalen waar de resources worden gebruikt. Hiertoe stelt men onder meer vast wanneer een methode wordt uitgevoerd en hoe lang de methode erover doet om een gegeven taak te volbrengen.
Na de profilering van deze toepassing voerden ze een multithreading uit. Deze methode verbetert de uitvoeringsprestaties van een proces aan de hand van 'concurrency', het tegelijkertijd uitvoeren van meerdere taken (threads), los van elkaar binnen dat programma. De hoofdtaak was het opnemen van beelden met 100 fps, terwijl een tweede taak erin bestond de opgenomen beelden te verwerken met 180 fps. Na het synchroniseren van beide taken, kon de opstelling zowel opnemen als verwerken met 100 fps.
Single Board Computers kunnen dus in bepaalde applicaties uitkomst bieden. Maar bedenk wel dat het zoeken kan zijn naar geschikte I/O en drivers.
Foto Michael Henzler / Wikimedia Commons / CC BY-SA 4.0