Prototype ontwikkeling van een Smart Vision Camera
We zijn volop aan het experimenteren en leren op het gebied van Smart Computer Vision / Robotics Camera. Doel is om een prototype van een slimme camera te ontwikkelen die volledig autonoom draait voor de observatie/tracking functie waarvoor die bedoeld is. Daarnaast minimale (gemetadateerde) data als output, zodat die ook in een LPWAN IoT context als smart sensor kan optreden. Dus geen postprocessing van ruwe beelddata.
Nu een een eerste en heel prematuur resultaat voor alleen object detectie. In dit geval fietsen @ ~30 fps. Gebruikte AI/ML techniek/algoritme: MobileNet v2 + SSD trained on Coco, TensorFlow model.
Uiteindelijke doel is een zeg maar high end RPI SBC variant van NVIDIA Jetson met mid end camera sensors met een financiële target van ~2,5K waarbij er een brede Vison toepasingmogelijkheid ontstaat door modulair het meest optimale algortime toe te passen. Een soort OpenCV blokkendoos en dan iets meer applicatie gericht. Dus modules voor Object Detectie, Object Tracking, Eye Tracking, Gezichtsherkenning, software UI herkenning, Crowd control, etc. Wordt vervolgd.
Op LinkedIn is ook een posting van dit – nu nog summiere – bericht. Het vervolg van dit R&D project wordt echter hier de komende weken verder beschreven.
Achtergrond
Voor dit smart vision project zijn we geïnspireerd geraakt door een aantal zaken. Ze worden hieronder puntsgewijs genoemd:
- Edge Computing uit de IoT wereld, wat ik hier gemakshalve Visual Edge Computing noem
- De toenemende populariteit van AI/ML en de bereikbaarheid ervan buiten het academische werkveld
- Opkomst van high end SBCs waardoor er aantrekkelijk geprijsde computers zijn voor visual edge computing
- Vanuit de vraagzijde het besef welke bijdrage slimme sensoriek middels vision kan leveren aan Industrie en Samenleving
Er zijn ook verschillende concrete projecten, producten en ontwikkelingen die ons ertoe hebben aangezet de nodig R&D inspanning te plegen voor dit doel. Dat zijn o.a.:
- Movidius NCS
- Google AYI Project
- TensorFlow Lite
- OpenCV
- OpenMV
- Pensar van Aeraltronics
- NVIDIA Jetson
- Watson Visual Recognition
- NanoNets (Machine Learning with Less Data)
- En tenslotte een erg waardevolle presentatie van Allied Vision over het zelf ontwikkelen van een Smart Vision Camera’s
Dit alles overziend zijn we tot het inzicht gekomen dat een zelf te ontwikkelen Smart Vision camera haalbaar is. En gelijktijdig dat er ook een vraag vanuit de markt is als je afnemers laat zien welke toepassingsmogelijkheden dat biedt. Aan die ontwikkeling zijn we in de zomer van 2018 begonnen.
Resultaten augustus/september 2018
We hebben een eerste prototype draaien in ons Lab o.b.v. Tensorflow (CPU only) op een Linux amd_64 hardware platform. Een eigen high end ARMHF SBC met een Mali GPU is binnen (Tinkerboard S). Omdat Tensorflow sterk geënt is op CUDA (van NVIDIA), is het porten ervan naar een ARM/Mali platform o.b.v. OpenCL SYCL nog niet zo heel eenvoudig. We gaan er wel mee verder maar dit wordt niet ons eerste low end prototyping platform waar we ons op richten.
Het nu komende low end platform wordt RPI i.c.m. Movidius NCS van Intel (altijd een beetje onzeker of Intel er niet plotsklaps de stekker uit trekt) en de aangekondigde Edge TPU van Google. Deze is met een eigen ASIC / FPGA en het releasen van Tensorflow voor RPI sinds 1.9 een hele interessante combinatie van een “hapklaar” Vision fundament waarop je Smart Vision toepassingen kunt ontwikkelen.
Tenslotte zijn de afgelopen weken de eisen voor een vision opdracht kort en bondig uitgewerkt om na te gaan aan welke performance het low end platform moet voldoen.
Kort en goed hebben we de volgende ambitie:
- Camera viewport: ~5 x 3,5 mtr.
- Camera resolutie: 1280 x 1024
- Inferentietijd van DNN: maximaal ~ 87 ms
- Aantal objectclasses: max. 3
- Herkenningsnauwkeurigheid: > 70%