{"id":4729,"date":"2017-07-25T20:17:24","date_gmt":"2017-07-25T19:17:24","guid":{"rendered":"https:\/\/qdraw.nl\/blog\/?p=4729"},"modified":"2018-05-16T15:51:33","modified_gmt":"2018-05-16T14:51:33","slug":"objectherkenning-met-de-computer-vision-library-tensorflow","status":"publish","type":"post","link":"https:\/\/qdraw.nl\/blog\/design\/objectherkenning-met-de-computer-vision-library-tensorflow\/","title":{"rendered":"Objectherkenning met de Computer Vision library Tensorflow"},"content":{"rendered":"<p>Met computer vision wordt het mogelijk om foto&#8217;s en video&#8217;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<\/p>\n<h2>Tensorflow object detection api<\/h2>\n<p>Een belangrijke functionaliteit van Tensorflow is het &#8216;<i>image recognition&#8217;.<\/i> 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. <\/p>\n<p>Met Tensorflow is het mogelijk met de <i>object detection API<\/i>&nbsp; wat het toegankelijk maakt voor onderzoekers en softwareontwikkelaars om objecten te identificeren in een 2d beeld. Het doel van Google van de <i>object detection API<\/i>&nbsp; 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.<\/p>\n<h2>En nu gaan we het gewoon zelf gebruiken!<\/h2>\n<p>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.<\/p>\n<p>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.<\/p>\n<p><i>De tekst gaat verder na de onderstaande afbeelding<\/i><\/p>\n<p><a href=\"https:\/\/media.qdraw.nl\/log\/\/objectherkenning-met-de-computer-vision-library-tensorflow\/1000\/20170725_160045_tensorflow-image_kl1k.jpg\" class=\"lightbox[blog]\" title=\"Objectherkenning met de Computer Vision library Tensorflow Uitzicht met Object Detection | foto 1\" data-gps=\"51.68546667,5.30366667\"><br \/>\n<img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/\/objectherkenning-met-de-computer-vision-library-tensorflow\/500\/20170725_160045_tensorflow-image_kl.jpg\" title=\"Objectherkenning met de Computer Vision library Tensorflow Uitzicht met Object Detection | foto 1\" alt=\"Objectherkenning met de Computer Vision library Tensorflow Uitzicht met Object Detection; object detection, uitzicht\" \/><br \/>\n<\/a><\/p>\n<h2>PIP<\/h2>\n<p>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. <\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>Ubuntu &#8211; $ sudo apt-get install python-pip git -y<\/span><\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>Mac OS &#8211; $ brew install python<\/span><\/p>\n<p>Ik clone de github responsories naar mijn home folder. <\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ cd<\/span><\/p>\n<h2>Tensorflow models<\/h2>\n<p>Clone the Tensorflow models van de offici\u00eble repository. In deze repository staan Machine Leaning-modelen die getraind zijn met Tensorflow. Voor deze tutorial gebruiken we alleen de <i>slim<\/i> module en <i>object_detection<\/i>.<\/p>\n<p>Met dit commando kopieer je de inhoud van de repository. De model map is 167,4 MB groot.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ git clone https:\/\/github.com\/tensorflow\/models.git<\/span><\/p>\n<p>Het het <i>pwd <\/i>commando wordt het absolute path van de huidige map getoond.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ pwd<\/span><\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>\/home\/dion<\/span><\/p>\n<p>Voeg onderaan toe waar <i>&#8216;\/home\/dion&#8217;<\/i> de naam van je gebruiker is. Dit is om alle bestanden die in de map staan in python in het <i>path<\/i> laden.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ nano .profile<\/span><\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\";word-break: break-all;'>export PYTHONPATH=$PYTHONPATH:\/home\/dion\/models\/research:\/home\/dion\/models\/research\/slim<\/span><\/p>\n<p>Laad de inhoud van <i>.profile<\/i> of herstart alle terminal vensters om de inhoud van het bestand te laden.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ source .profile<\/span><\/p>\n<h2>Protobuf<\/h2>\n<p>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. <\/p>\n<p>Dit protocol moet eerst worden ge\u00efnstalleerd.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>Ubuntu &#8211; $ sudo apt-get install protobuf-compiler -y<\/span><\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>Mac OS &#8211; $ brew install protobuf<\/span><\/p>\n<p>De Protobuf libraries moeten eerst worden gecompiled. Dit moet je doen vanuit de <i>model-map<\/i>:<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ cd models\/research\/<\/span><\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ protoc object_detection\/protos\/*.proto &#45;&#45;python_out=.<\/span><\/p>\n<p>En ik ga terug naar mijn home folder:<br \/>\n<span style='font-size:10.0pt;font-family:\"Courier New\"'>$ cd<\/span><\/p>\n<h2>OpenCV<\/h2>\n<p>Met het onderstaande commando laad ik een bash script van een externe website waarbij OpenCV automatisch wordt gecompileerd en ge\u00efnstalleerd in <i>\/usr\/local.<\/i> Dit script installeert OpenCV 3.2 en werkt met Ubuntu 16.04.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"; word-break: break-all;'>$ curl -L <a href=\"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<\/a> | bash<\/span><\/p>\n<p><!-- \n\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ curl -L <a href=\"https:\/\/raw.githubusercontent.com\/milq\/milq\/master\/scripts\/bash\/install-opencv.sh\">https:\/\/raw.githubusercontent.com\/milq\/milq\/master\/scripts\/bash\/install-opencv.sh<\/a> | bash<\/span><\/p>\n\n --><\/p>\n<p>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.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ brew install homebrew\/science\/opencv<\/span><\/p>\n<p><i>De tekst gaat verder na de onderstaande afbeelding<\/i><\/p>\n<p><a href=\"https:\/\/media.qdraw.nl\/log\/\/objectherkenning-met-de-computer-vision-library-tensorflow\/1000\/20170725_205133_compiling-opencv_kl1k.jpg\" class=\"lightbox[blog]\" title=\"Objectherkenning met de Computer Vision library Tensorflow Compiling OpenCV @Ubuntu 16.04 | foto 2\" data-gps=\"51.68545,5.30368333\"><br \/>\n<img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/\/objectherkenning-met-de-computer-vision-library-tensorflow\/500\/20170725_205133_compiling-opencv_kl.jpg\" title=\"Objectherkenning met de Computer Vision library Tensorflow Compiling OpenCV @Ubuntu 16.04 | foto 2\" alt=\"Objectherkenning met de Computer Vision library Tensorflow Compiling OpenCV @Ubuntu 16.04; OpenCV, Ubuntu\" \/><br \/>\n<\/a><\/p>\n<h2>Tensorflow-object-detection-tutorial repository<\/h2>\n<p>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.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ git clone https:\/\/github.com\/qdraw\/tensorflow-object-detection-tutorial.git<\/span><\/p>\n<p>Het volgende deel van de uitleg voeren we uit vanuit de onderstaande map:<br \/>\n<span style='font-size:10.0pt;font-family:\"Courier New\"'>$ cd tensorflow-object-detection-tutorial\/<\/span><\/p>\n<p>De benodigdheden van de demo moeten nog worden ge\u00efnstalleerd.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ pip install -r requirements.txt<\/span><\/p>\n<h2>Het analyseren van een afbeelding<\/h2>\n<p>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&#8217;s al vinden.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ python image_object_detection.py<\/span><\/p>\n<p>Druk <i>&#8216;ctrl + C&#8217;&nbsp;<\/i> binnen het terminalvenster om het programma af te sluiten<\/p>\n<p><i>De tekst gaat verder na de onderstaande afbeelding<\/i><\/p>\n<p><a href=\"https:\/\/media.qdraw.nl\/log\/\/objectherkenning-met-de-computer-vision-library-tensorflow\/1000\/20170725_220836-detect-appel-banaan_kl1k.jpg\" class=\"lightbox[blog]\" title=\"Objectherkenning met de Computer Vision library Tensorflow Herkennen van een Appel en Banaan | foto 3\" data-gps=\"51.68545,5.30368333\"><br \/>\n<img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/\/objectherkenning-met-de-computer-vision-library-tensorflow\/500\/20170725_220836-detect-appel-banaan_kl.jpg\" title=\"Objectherkenning met de Computer Vision library Tensorflow Herkennen van een Appel en Banaan | foto 3\" alt=\"Objectherkenning met de Computer Vision library Tensorflow Herkennen van een Appel en Banaan; appel, banaan, object detection\" \/><br \/>\n<\/a><\/p>\n<h2>Het analyseren van het beeld van je webcam<\/h2>\n<p>Met OpenCV wordt het mogelijk om webcambeelden in Python in te laden. In dit script draaien meerdere processen tegelijk waardoor het afsluiten lastig is. <\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>$ python webcam_object_detection.py<\/span><\/p>\n<p>De snelste en makkelijkste manier om af te sluiten is in een ander terminalvenster het proces te killen.<\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>Ubuntu &#8211; $ pkill python<\/span><\/p>\n<p><span style='font-size:10.0pt;font-family:\"Courier New\"'>Mac OS &#8211; $ pkill Python<\/span><\/p>\n<p><video loop style=\"width:100%; height:100%;\" autoplay muted controls preload=\"auto\"  poster=\"https:\/\/media.qdraw.nl\/log\/\/objectherkenning-met-de-computer-vision-library-tensorflow\/embed\/20170720-output003_1280-2pass.jpg\"><source src=\"https:\/\/media.qdraw.nl\/log\/\/objectherkenning-met-de-computer-vision-library-tensorflow\/embed\/20170720-output003_1280-2pass.mp4\" type=\"video\/mp4\">Your browser does not support the video tag.<\/video><\/p>\n<p><span style=\"font-style: italic;\">Het analyseren van het beeld van je webcam.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>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 <a href=\"\/contact.html\">mailtje<\/a> dan kunnen we een kopje koffie drinken. <\/p>\n<p><i>25 september 2017: De tensorflow\/models git repository heeft de paden veranderd, deze heb ik in deze tutorial gewijzigd.<\/i><\/p>\n","protected":false},"excerpt":{"rendered":"Met computer vision wordt het mogelijk om foto&#8217;s en video&#8217;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&#8230; <a class=\"view-article\" href=\"https:\/\/qdraw.nl\/blog\/design\/objectherkenning-met-de-computer-vision-library-tensorflow\/\">Bekijk artikel<\/a>","protected":false},"author":2,"featured_media":4728,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2136],"tags":[2718,2724,2708,2725],"class_list":["post-4729","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-design","tag-artificial-intelligence","tag-computer-vision","tag-machine-learning","tag-tensorflow"],"_links":{"self":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/posts\/4729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/comments?post=4729"}],"version-history":[{"count":0,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/posts\/4729\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/media\/4728"}],"wp:attachment":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/media?parent=4729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/categories?post=4729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/tags?post=4729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}