25 juli 2017 • Gepubliceerd door ; september 26, 2017 at 2:41 pm Qdraw

Objectherkenning met de Computer Vision library Tensorflow

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

Tensorflow object detection api

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.

En nu gaan we het gewoon zelf gebruiken!

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


Objectherkenning met de Computer Vision library Tensorflow Uitzicht met Object Detection; object detection, uitzicht

PIP

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

Tensorflow models

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/research:/home/dion/models/research/slim

Laad de inhoud van .profile of herstart alle terminal vensters om de inhoud van het bestand te laden.

$ source .profile

Protobuf

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/research/

$ protoc object_detection/protos/*.proto --python_out=.

En ik ga terug naar mijn home folder:
$ cd

OpenCV

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 | bash

Op mijn Macbook maak ik gebruik van OpenCV 3.3.0 en Python 2.7.13. Ik heb hier OpenCV 3.2 en 3.3 proberen te installeren alleen dit werkt niet in combinatie met Python 3.6 terwijl dit op Linux wel werkt.

$ brew install homebrew/science/opencv

De tekst gaat verder na de onderstaande afbeelding


Objectherkenning met de Computer Vision library Tensorflow Compiling OpenCV @Ubuntu 16.04; OpenCV, Ubuntu

Tensorflow-object-detection-tutorial repository

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

Het analyseren van een afbeelding

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


Objectherkenning met de Computer Vision library Tensorflow Herkennen van een Appel en Banaan; appel, banaan, object detection

Het analyseren van het beeld van je webcam

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.

25 september 2017: De tensorflow/models git repository heeft de paden veranderd, deze heb ik in deze tutorial gewijzigd.

Tags: , , ,

Gecategoriseerd in:

Dit bericht is geschreven door: Dion

Lees ook deze blogs