Deze blogpost verscheen op Qdraw.nl
Met computer vision wordt het mogelijk om foto's en video's op intelligente wijze te analyseren om onze steden slimmer en veiliger te maken, nieuwe soorten robots te ondersteunen die productie optimaliseren. In dit artikel ligt een onderdeel van Computer Vision uit, namelijk Object Detection
Een belangrijke functionaliteit van Tensorflow is het 'image recognition'. Tensorflow is een open source library dat door Google in 2015 voor het grote publiek beschikbaar is gemaakt. Het wordt gebruikt om deep learningmodels te bouwen, ontwerpen en te trainen.
Met Tensorflow is het mogelijk met de object detection API wat het toegankelijk maakt voor onderzoekers en softwareontwikkelaars om objecten te identificeren in een 2d beeld. Het doel van Google van de object detection API is om een evenwicht te hebben tussen simplicity en performance. Er zijn een aantal voorgetrainde modellen welke door wetenschappers worden gebruikt om algoritmes te trainen.
Tensorflow is een library die beschikbaar is vanuit Python. Al het zware werk wordt buiten Python gedaan. Python is een programmeertaal die veel wordt gebruikt voor Machine Learning en data-analyse.
In deze tutorial ga ik ervan uit dat je een Ubuntu (Virtuele) machine tot je beschikking hebt. Buiten scope is het inrichten van Nvidia grafische kaarten en met CUDA. Ik heb deze code werkend op Ubuntu 16.04 en Mac OS Siera.
De tekst gaat verder na de onderstaande afbeelding
Een Python package manager is PIP. Voor het gemak maak ik gebruik van Python 2.7, de code werkt ook met Python 3.6. Voor deze tutorial gebruiken we deze en met het onderstaande commando installeer je deze op je systeem: Het dollarteken geeft aan dat een bash-commando is die als normale gebruiker moet worden uitgevoerd. Dit dollarteken hoeft niet mee te worden gekopieerd.
Ubuntu - $ sudo apt-get install python-pip git -y
Mac OS - $ brew install python
Ik clone de github responsories naar mijn home folder.
$ cd
Clone the Tensorflow models van de officiële repository. In deze repository staan Machine Leaning-modelen die getraind zijn met Tensorflow. Voor deze tutorial gebruiken we alleen de slim module en object_detection.
Met dit commando kopieer je de inhoud van de repository. De model map is 167,4 MB groot.
$ git clone https://github.com/tensorflow/models.git
Het het pwd commando wordt het absolute path van de huidige map getoond.
$ pwd
/home/dion
Voeg onderaan toe waar '/home/dion' de naam van je gebruiker is. Dit is om alle bestanden die in de map staan in python in het path laden.
$ nano .profile
export PYTHONPATH=$PYTHONPATH:/home/dion/models:/home/dion/models/slim
Laad de inhoud van .profile of herstart alle terminal vensters om de inhoud van het bestand te laden.
$ source .profile
Google heeft een manier ontwikkeld om frozen models op te slaan. Een frozen model is Neural Network dat is opgeslagen en in het geheugen kan worden ingeladen.
Dit protocol moet eerst worden geïnstalleerd.
Ubuntu - $ sudo apt-get install protobuf-compiler -y
Mac OS - $ brew install protobuf
De Protobuf libraries moeten eerst worden gecompiled. Dit moet je doen vanuit de model-map:
$ cd models
$ protoc object_detection/protos/*.proto --python_out=.
En ik ga terug naar mijn home folder:
$ cd
Met het onderstaande commando laad ik een bash script van een externe website waarbij OpenCV automatisch wordt gecompileerd en geïnstalleerd in /usr/local. Dit script installeert OpenCV 3.2 en werkt met Ubuntu 16.04.
$ curl -L [https://raw.githubusercontent.com/qdraw/tensorflow-object-detection-tutorial/master/install.opencv.ubuntu.sh](https://raw.githubusercontent.com/qdraw/tensorflow-object-detection-tutorial/master/install.opencv.ubuntu.sh) | bash
Op mijn Macbook maak ik gebruik van OpenCV 2.4. Ik heb hier OpenCV 3.2 proberen te installeren allen dit werkt goed in combinatie met Mac OS Siera en Python 3.6
$ brew install homebrew/science/opencv
De tekst gaat verder na de onderstaande afbeelding
In deze repository heb ik alle inhoud verzameld. Er zijn twee voorbeelden, het eerste voorbeeld wordt een afbeelding geanalyseerd en het tweede voorbeeld laat een livebeeld zien van de webcam. Met de onderstaande opdracht kopieer je de map van Github.
$ git clone https://github.com/qdraw/tensorflow-object-detection-tutorial.git
Het volgende deel van de uitleg voeren we uit vanuit de onderstaande map:
$ cd tensorflow-object-detection-tutorial/
De benodigdheden van de demo moeten nog worden geïnstalleerd.
$ pip install -r requirements.txt
Voor deze demonstratie analyseren we een foto die gemaakt is bij Colours op het kantoor in Den Bosch. We zoeken naar alle objecten in deze foto. Het algoritme kan een aantal auto's al vinden.
$ python image_object_detection.py
Druk _'ctrl + C' _ binnen het terminalvenster om het programma af te sluiten
De tekst gaat verder na de onderstaande afbeelding
Met OpenCV wordt het mogelijk om webcambeelden in Python in te laden. In dit script draaien meerdere processen tegelijk waardoor het afsluiten lastig is.
$ python webcam_object_detection.py
De snelste en makkelijkste manier om af te sluiten is in een ander terminalvenster het proces te killen.
Ubuntu - $ pkill python
Mac OS - $ pkill Python
Het analyseren van het beeld van je webcam.
Mocht de wereld van Computer Vision je interesse hebben gewekt, maar weet je nog niet hoe je dit kunt toepassen en heb je de nodige vragen? Stuur mij dan een mailtje dan kunnen we een kopje koffie drinken.