20 februari 2018 • februari 20, 2018 at 10:17 am Qdraw

Hoe werkt Tensorflow samen met Microsoft Technologie

Met Tensorflow en Artificial Intelligence het is mogelijk om afbeeldingen realtime te analyseren. In deze blogpost ga ik objecten detecteren in afbeeldingen met Tensorflow en C#. TensorFlow is een open source library voor wiskundige berekeningen. Door gebruik te maken van TensorFlow, het meest populaire deep learning framework, is het mogelijk om dit framework in te zetten voor verschillende doeleinden. In dit voorbeeld gebruik ik Tensorflow in combinatie met .NET Core 2



Hoe werkt Tensorflow samen met Microsoft Technologie Detecteer twee auto’s en een persoon; Detecteer twee auto’s en een persoon

Een Artificial Intelligence project

In Theiacore gebruik ik twee Visual Studio projecten in één solution. Theiacore wordt gebruikt voor het genereren van webpagina’s. Ik heb gebruik het MVC Framework voor het genereren van webpagina’s. ObjectDetect wordt gebruikt voor het Artificial Intelligence gedeelte. Voor Tensorflow zijn er bindings (een koppeling tussen twee frameworks) beschikbaar voor verschillende programmeertalen. Python is de meest populaire binding en hiervoor zijn de meeste online voorbeelden beschikbaar. Voor de programmeertaal C# is er TensorflowSharp, dit is een onofficiële binding die goed werkt voor object detection. In dit voorbeeld focus ik mij op het gebruiken van een Machine learning model voor object herkenning. Dit model is getraind op Microsoft COCO. Deze dataset wordt gebruikt voor het herkennen van objecten in 90 verschillende categorieën.

ObjectDetect-project

Ik gebruik het ObjectDetect-project om door middel van Artificial Intelligence data te verzamelen over de afbeeldingen. In de volgende code snippets zal ik toelichten hoe dit werkt.

Laten we beginnen met een blank canvas. In Tensorflow is dit een leeg TFGraph(). In een TFGraph() worden er twee dingen opgeslagen. Het eerste item is een structuur en het tweede is de graph zelf. Een graph zijn de learnings van het deeplearing framework. In Train een tensorflow gezicht object detectie model ligt ik toe hoe het beste zelf een model kunt trainen en deze kan opslaan als frozen-model. Dit model wordt geladen in de graph. De graph is het geheugen van je computer.

public static ImageHolder GetJsonFormat(string input) {

    var list = new List<string>();

Een Catalog is een geindexeerd bestand waarin de namen van de objecten staan uitgeschreven. Het bestand heet: mscoco_label_map.pbtxt

    _catalog = CatalogUtil.ReadCatalogItems(_catalogPath);
    string modelFile = _modelPath;

    using (var graph = new TFGraph()) {

Het frozen model wordt ingeladen in het geheugen. Ik gebruik TFGraph() om de data en de metadata van het model in het geheugen te laden.

        var model = File.ReadAllBytes(modelFile);
        graph.Import(new TFBuffer(model));

Start een nieuwe sessie om de wiskundige berekeningen uit te voeren. In deze sessie worden de objecten herkenend.

        using (var session = new TFSession(graph)) {

De variable input in een string met de locatie van de afbeelding
Deze wordt geïmporteerd als multidimensionale array, wat ook wel een Tensor wordt genoemd.

            var tensor = ImageUtil.CreateTensorFromImageFile(input, TFDataType.UInt8);

Met de runner wordt het mogelijk om het algoritme te tweaken. Zo is het mogelijk om de inputs, outputs en te configureren.

            var runner = session.GetRunner();
            runner
                .AddInput(graph["image_tensor"][0], tensor)
                .Fetch(
                    graph["detection_boxes"][0],
                    graph["detection_scores"][0],
                    graph["detection_classes"][0],
                    graph["num_detections"][0]);
            var output = runner.Run();

            var boxes = (float[,,])output[0].GetValue(jagged: false);
            var scores = (float[,])output[1].GetValue(jagged: false);
            var classes = (float[,])output[2].GetValue(jagged: false);
            var num = (float[])output[3].GetValue(jagged: false);

De boxes, scores and classes zijn arrays en ik gebruik GetBoxes om de waardes over de objecten uit deze arrays te krijgen.

            var getBoxes = GetBoxes(boxes, scores, classes, input, 0.5);
            return getBoxes;
        }
    }
}

 

Krijg de complete solution werkend.

De broncode van het complete project is publiek beschikbaar, zo kun je exact zien hoe ik het opgelost heb. De volgende stappen ben je nodig om dit project werkend te krijgen. De tekst gaat verder na de afbeelding

 

Whoop, whoop, dit is het resultaat

Installation steps

Tensorflow vereist dat je een x64 runtime gebruikt. De NET Core SDK is standaard x64. Wanneer je een x86 (32-bits) version gebruikt switch s.v.p. eerst naar een 64-bits versie. Als je van plan bent om Azure webapps te gebruiken, deze zijn bij default 32-bits.

 

1. Clone repository

De eerste stap om de repository te downloaden vanuit GitHub.

$ git clone "https://github.com/qdraw/theiacore"

 

2. Download de Pretrained Tensorflow Model en labels

De frozen-models zijn niet ingesloten in de Github repository. Download en plaats deze bestanden in de map: theiacore/ObjectDetect:

En kopieer deze bestanden naar de map: theiacore/ObjectDetect

 

3. Download Reference assemblies

De Libtensorflow is platform afhankelijk en voor het draaien op bijvoorbeeld een Azure is het nodig dat deze assemblies los worden toegevoegd in de map: theiacore/theiacore

Een overzicht van url’s:

 

Azure web apps

Als je van plan bent om dit project binnen een Azure webapp te gebruiken. Azure webapp draaien .Net Core standaard in x86 mode. In de repository is build-for-azure-x64.sh te vinden. Draai het buildscript en de truck is om de bestanden binnen /theiacore/theiacore/theiacore/bin/release/netcoreapp2.0/win-x64/publish te kopieren naar de wwwroot binnen de Azure webapp.

 

4. Start Theiacore

$ cd theiacore/theiacore
$ dotnet run
Now listening on: http://localhost:63884

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.

Dit bericht is geschreven door: Dion

Tags: , ,

Gecategoriseerd in:

5 februari 2018 • februari 7, 2018 at 3:06 pm Qdraw

Met Tabletop bijhouden of de tafelvoetbal vrij is

Realtime bijhouden of een ruimte bezet is, het kan allemaal met Internet of Things. Als side project heb ik een webapp gemaakt waarbij te zien of een ruimte vrij is of niet. Hier maakt ik gebruik van een Arduino met bewegingssensor die waardes doorstuurt naar een website.

Realtime zien of een kamer vrij is.

In één oogopslag is te zien of ruimte bezet is en in de webapp is er te zien wanneer er voor het laatste activiteit is geweest. In de grafiek onder de laatste activiteit is er een overzicht van alle recente bewegingen.



Met Tabletop bijhouden of de tafelvoetbaltafel vrij is Live – Table footbal webapp ; tabletop, mockup, webapp

Fun facts

De tabletop app draait nu vanaf 10 januari op het kantoor waar ik werk. Het gaat over een periode van 16 werkdagen. Dit zijn leuke weetjes: Er zijn drie pieken op een dag. De eerste piek is om 12:30. Je hebt dan 12% kans dat de tafel dan vrij is. Om 13:00 uur is het tot nu toe altijd piektijd en om half 4 is de kans 25%.



Met Tabletop bijhouden of de tafelvoetbaltafel vrij is Live – Table footbal webapp ; Tabletop, all time
Het aantal bewegingen in de Tabletop kamer. Deze zijn samengevoegd per 5 minuten in één staaf.

 

Hoe werkt Tabletop nu?

Een Arduino met een PIR-sensor houdt bij of er beweging wordt geconstateerd. Een Arduino is een microprocessor waarbij het mogelijk is om relatief eenvoudig zelf programma’s op te zetten. Een PIR-sensor wordt ook gebruikt in buitenlampen met een bewegingssensor. Deze stuurt via het internet berichten door naar een webserver. Deze server kan twee type acties uitvoeren. De eerste actie is het verzamelen van data en deze wegschrijven naar een database. De tweede actie is het tonen van data. Wanneer er een bezoeker op de webapp komt wordt een data visualisatie gemaakt van de meest recente bewegingen.

Voor deze setup heb ik gebruik gemaakt van de volgende technieken:

  • .NET Core 2
  • ASP.NET MVC
  • SignalR SSE/Websockets
  • Send events van een Arduino met een ethernet shield en een PIR-Sensor
  • D3.v4 Javascript Datavisualisation

 

Mocht je geïnteresseerd zijn in de werking dan is de code open source beschikbaar en op Github te downloaden. Heb je vragen stuur mij dan een mailtje dan kunnen we een kopje koffiedrinken.



Met Tabletop bijhouden of de tafelvoetbaltafel vrij is Het aantal bewegingen in de Tabletop kamer. Deze zijn samengevoegd per 5 minuten in één staaf. ; Visual Studio, C#, .Net Core 2, MVC

Gebruik SignalR om de UI realtime te updaten

Dit bericht is geschreven door: Dion

Tags: ,

Gecategoriseerd in:

20 november 2017 • november 20, 2017 at 4:57 pm Qdraw

Glow Eindhoven (2017)

Afgelopen week was in Eindhoven het lichtevenement Glow. Dit jaar hebben 740.000 mensen Glow bezocht. Met dit aantal is de twaalfde editie van het lichtfestival ook meteen een van de best bezochte edities. De route was ongeveer 6 kilometer lang en liep langs 33 lichtkunstprojecten in de binnenstad. 



Glow Eindhoven (2017) expeditiestraat eindhoven; expeditiestraat eindhoven, persoon, glow, eindhoven



Glow Eindhoven (2017) expeditiestraat eindhoven; Sint Catharinakerk, glow, eindhoven



Glow Eindhoven (2017) Sint Catharinakerk; glow, eindhoven, Stadhuisplein, Bevrijdingsmonument, Wal



Glow Eindhoven (2017) Sint Catharinakerk; glow, eindhoven, motion



Glow Eindhoven (2017) Bevrijdingsmonument; glow, eindhoven, Dommelhoef, Fazantlaan



Glow Eindhoven (2017) Bevrijdingsmonument; glow, eindhoven, boxes

Dit bericht is geschreven door: Dion

Tags: , , ,

Gecategoriseerd in:

26 oktober 2017 • oktober 27, 2017 at 12:58 pm Qdraw

Herfst aan de Moezel (2017)

In het westen van Duitsland ten hoogte van Luxemburg ligt de Moezel. De mooie steile hellingen vormen het mooiste gedeelte van de rivier. Dit zorgt voor een romantisch wijnlandschap. In deze omgeving zijn veel wijngaarden, bossen en kleine dorpjes.

In de buurt van de Moezel ligt de Geierlay. De “Geierlay” overbrugt het dal van de Mörsdorfer beek op een hoogte van ruim 100 meter. Met een lengte van 360 meter is een van de langste hangbruggen van Duitsland. De hangbrug is vrij te bezichtigen, in de omgeving is wel betaald parkeren.

Langs de Duitse Moezel zijn ook nog veel burchten en ruïnes te vinden. Zo zijn we bij de Burcht Balduinseck geweest. De burcht werd in 1325 door aartsbisschop Boudewijn van Trier om het territorium te beschermen tegen indringers. Vanaf de 18de eeuw raakte de burgt in onbruik waardoor het ging vervallen.

De Hochmoselbrücke overspant het dal van de rivier de Mosel (Moezel) ten oosten van Wittlich. Het viaduct heeft een totale lengte van 1.702 meter en heeft 10 brugpijlers en 11 overspanningen.



Herfst aan de Moezel (2017) Erbeskopf; Erbeskopf, pad, beneden, bos, herfst



Herfst aan de Moezel (2017) Erbeskopf; paddenstoel, k76, berglicht



Herfst aan de Moezel (2017) Paddenstoel; Geierlay, mörsdorf, hangbrug



Herfst aan de Moezel (2017) Paddenstoel; Geierlay, mörsdorf, hangbrug, akker



Herfst aan de Moezel (2017) Geierlay; berg ruine, balduinseck, L203, Buch, Mastershausen



Herfst aan de Moezel (2017) Geierlay; moezel, mosel, water, Traben-Trarbach



Herfst aan de Moezel (2017) Geierlay; moezel, mosel, water, brug, aanbouw



Herfst aan de Moezel (2017) Geierlay; mist, Wijngaard



Herfst aan de Moezel (2017) Burcht Balduinseck; Horath, windmolen



Herfst aan de Moezel (2017) Burcht Balduinseck; Horath, dorp, bladeren



Herfst aan de Moezel (2017) Traben-Trarbach; berg, Gräfendhron, Krackesmühle



Herfst aan de Moezel (2017) Traben-Trarbach; Dhron, Neumagen-Dhron, wijngaard, berg Neumagen-Dhron



Herfst aan de Moezel (2017) Brug bij Ürzig; Piesport, wijngaard



Herfst aan de Moezel (2017) Brug bij Ürzig; Piesport, wijngaard, moezel



Herfst aan de Moezel (2017) Wijngaard in de mist; Piesport, wijngaard, moezel

Dit bericht is geschreven door: Dion van Velde

Tags: , ,

Gecategoriseerd in:

26 september 2017 • oktober 29, 2017 at 4:46 pm Qdraw

Train een tensorflow gezicht object detectie model

Met Artificial Intelligence wordt het mogelijk om beelden slim te analysen en dit slim toe te passen. Dit artikel is een follow-up van Objectherkenning met de Computer Vision library Tensorflow.
In het vorige deel zet ik een getraind model in om 80 objecten, te vinden en te identificeren en de locatie in het beeld te bepalen. Ik ga nu nog een stap verder want ik ga een eigen model trainen dat gezichten kan vinden in een afbeelding. In deze tutorial wordt technisch stap voor stap uitgelicht hoe het proces verloopt. In de stap ‘Gebruik van het frozen model’ staat toegelicht hoe het mogelijk is om het model snel te testen.

There is a english version of How to train a Tensorflow face object detection model available at Medium.com



Train een tensorflow gezicht object detectie model MS COCO Tensorflow Nürburgring example (own picture); Car, motorcycle, box, common objects in context

Setup van de slim en object_detection module

De eerste stap is het clonen van de Tensorflow models. In deze repository staan Machine Leaning-modelen die getraind zijn met Tensorflow. Voor deze tutorial gebruiken we alleen de slim module en object_detection.

$ nano .profile
export PYTHONPATH=$PYTHONPATH:/home/dion/tensorflow_models/research:/home/dion/tensorflow_models/research/slim

Vervolgens zorg je ervoor dat de protobuf libraries zijn gecompiled

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

Clone de tutorial repository en install dependencies

In een losse repository heb ik alle inhoud verzameld van deze tutorial. Met de onderstaande opdracht kopieer je de map vanuit Github.

$ git clone https://github.com/qdraw/tensorflow-face-object-detector-tutorial.git

Mocht je snel even het model willen proberen er is een protobuf en de checkpoint files staan in deze repository.

Het volgende deel van de uitleg voeren we uit vanuit de onderstaande map:

$ cd tensorflow-face-object-detector-tutorial/

De benodigdheden het trainen moeten nog worden geïnstalleerd. Denk eraan dat OpenCV ook geïnstalleerd staat met Python bindings

$ pip install -r requirements.txt

Downloaden van de training en validatie data

De Chinese Universiteit van Hongkong (CUHK) heeft een grote dataset van foto’s met mensen met daarbij exact aangegeven waar het gezicht zich bevindt in de afbeelding. In het onderstaande voorbeeld is staat in het kladblok de coördinaten van de afbeelding geselecteerd. Op de achtergrond heb ik labelImg geopend en is dezelfde foto te zien met annotaties.



Train een tensorflow gezicht object detectie model MS COCO Tensorflow Nürburgring example (own picture); WIDER, example

Met het script 001_down_data.py wordt WIDERFace en ssd_mobilenet_v1_coco_11_06_2017 gedownload. WIDERFace is de dataset die ik hiervoor gebruik. Daarnaast maak ik ook nog gebruik van ‘pre-trained’ model om de trainingstijd te versnellen. Wanneer je zelf gaat trainen zorg er dan voor dat er voldoende schijfruimte beschikbaar is. Er komt al minimaal 6GB in de map data/ te staan.

$ python 001_down_data.py

WIDERFace omzetten naar Pascal XML

Er komt eerst nog een conversieslag. De dataset die de universiteit beschikbaar heeft gesteld is in een ander formaat dan bruikbaar is in een labelImg en Tensorflow. Met een script gaan we deze data omzetten. De afbeeldingen die gedownload zijn staan in de map WIDER_train, eerst maakt 002_data-to-pascal-xml.py een los xml-bestand in dezelfde map met de annotatie data gestructureerd opgeslagen. Nadat alle afbeeldingen met een goede tag voorzien zijn van een los xml bestand wordt de inhoud gekopieerd naar een losse map (tf_wider_train). Met het onderstaande script wordt de WIDERFace data omgezet in Pascal XML en worden er losse mappen aangemaakt. Op mijn computer duurt dit 5 minuten aangezien er 9263 afbeeldingen worden verwerkt.

$ python 002_data-to-pascal-xml.py



Train een tensorflow gezicht object detectie model WIDER example using labelImg (credits: http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/); WIDER, example

Pascal XML naar Tensorflow CSV index

Wanneer de data is omgezet naar Pascal XML wordt er een index gemaakt. Met het trainen en valideren van de dataset gebruiken we deze bestanden als input om TFRecords van te maken. Het is echter ook mogelijk om met een tool als labelImg handmatig afbeeldingen te labelen en deze stap te gebruiken om hier een index van te maken.



Train een tensorflow gezicht object detectie model WIDER example using labelImg (credits: http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/); Excel, finder

$ python 003_xml-to-csv.py

Maak een TFRecord file

Een TFRecords file is een groot binair bestand dat uit gelezen kan worden om het Machine Learning model te trainen. Het bestand wordt in de volgende stap sequentieel uitgelezen door Tensorflow. De training en validatie data wordt omgezet d.m.v. onderstaande commando opdrachten omgezet in binaire blobs

Trainingsdata naar TFRecord (847.6 MB)

$ python 004_generate_tfrecord.py --images_path=data/tf_wider_train/images --csv_input=data/tf_wider_train/train.csv --output_path=data/train.record

Validatiedata naar TFRecord (213.1MB)

$ python 004_generate_tfrecord.py --images_path=data/tf_wider_val/images --csv_input=data/tf_wider_val/val.csv --output_path=data/val.record

Prepareren van het config bestand

In de repository staat ssd_mobilenet_v1_face.config, dit is een configuratiebestand dat gebruikt wordt om een Artificial Neural Network te trainen. Dit bestand is gebaseerd op een huisdieren detector.
Het aantal num_classes blijft in dit geval één omdat er alleen gezichten zullen worden herkend.
De variabel fine_tune_checkpoint wordt gebruikt om het pad naar een eerder model aan te geven om learnings te halen. Deze locatie pas je aan in dit bestand. Het finetune checkpoint bestand wordt gebruikt om transfer learning toe te passen. Transfer learning is een methode in Machine Learning dat gefocust is om kennis wat opgedaan van één context toe te passen op een andere context.
In de class train_input_reader wordt een link gelegd met de TFRecord bestanden voor het trainen van het model. In het config-bestand moet je deze aanpassen naar de juiste locatie.
De variabel label_map_path bevat een index id’s en namen. Bij dit bestand wordt nul als placeholder gebruikt en beginnen we dus met nummeren vanaf één.


item {
    id: 1
    name: "face"
}

Voor het valideren zijn er twee variabelen belangrijk. De variabel num_examples binnen de class eval_config wordt gebruikt om het aantal voorbeelden in te stellen.
In de class eval_input_reader staat de locatie van de validatie data beschreven. Op deze locatie staat ook een pad.
Verder is het nog mogelijk om learning rate, batch size en nog meer instellingen te veranderen. Voor nu heb ik de standaard instellingen aangehouden.

Let’s train 😉

Nu gaat het echte werk beginnen. De computer gaat learnings halen uit de dataset en hier een Neural Network van maken. Aangezien ik het model train op een CPU gaat dit een aantal dagen kosten om een goed resultaat te krijgen. Met krachtige Nvidia grafische kaart is het mogelijk om dit te verkorten naar enkele uren.

$ python ~/tensorflow_models/object_detection/train.py --logtostderr --pipeline_config_path=ssd_mobilenet_v1_face.config --train_dir=model_output

Omzetten van checkpoint naar protobuf

Om het model te kunnen gebruiken in Objectherkenning met de Computer Vision library Tensorflow. Het onderstaande commando staat een locatie naar de models repository en naar het laatste checkpoint. In de map model komt frozen_inference_graph.pb te staan.

$ python ~/tensorflow_models/object_detection/export_inference_graph.py \
--input_type image_tensor \
--pipeline_config_path ssd_mobilenet_v1_face.config \
--trained_checkpoint_prefix model_output/model.ckpt-12262 \
--output_directory model/

TL;DR;

In de map model/frozen_inference_graph.pb op de github repository staat een frozen model van het Artificial Neural Network. De Chinese Universiteit van Hongkong heeft WIDERFace beschikbaar gesteld. In deze tutorial wordt deze dataset gebruikt om een gezichtsherkenings Machine Learning model te trainen.

Evaluatie

Naast de data die gebruikt wordt voor het trainen is er ook een evaluatie-dataset. Op basis van deze evaluatie-dataset is het mogelijk om de nauwkeurigheid uit te rekenen. Voor mijn model heb ik de nauwkeurigheid (Mean Average Precision) uitgerekend. Ik kwam op een score van 83.80% bij 14337 stappen (epochs). Voor dit proces heeft Tensorflow een los script en wordt het mogelijk om in Tensorboard te zien wat de score is. Er wordt aangeraden om naast het trainen ook een evaluatieproces te draaien. Je kunt dan het proces monitoren met Tensorboard.

$ python ~/tensorflow_models/object_detection/eval.py --logtostderr --pipeline_config_path=ssd_mobilenet_v1_face.config --checkpoint_dir=model_output --eval_dir=eval

$ tensorboard --logdir=eval --port=6010

Conclusie en het gebruik van het frozen model

Het is gelukt om een gezichtsherkenning model te trainen. Het frozen model model/frozen_inference_graph.pb kan ingezet worden in bijvoorbeeld Objectherkenning met de Computer Vision library Tensorflow.
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.



Train een tensorflow gezicht object detectie model Uit de dataset WIDERFace en de film Marching Band (2009) met XML en LabelImg interface zichtbaar ; faces, tensorflow

Deze blogpost verscheen op Qdraw. Er is een Engelse vertaling beschikbaar op: Towards Data Science – Medium

Dit bericht is geschreven door: Dion van Velde

Tags: , , ,

Gecategoriseerd in:

25 augustus 2017 • december 29, 2017 at 4:22 pm Qdraw

Supersnel foto’s analyseren dankzij Computer Vision

Je hebt de term vast al voorbij horen komen: Computer Vision. Maar wat is het precies? En nog belangrijker, wat kun je er mee? In deze blogpost nemen we je mee in de wereld van Computer Vision. En je kunt het gelijk zelf testen! (1)

Wat is Computer Vision?

Zoek je weleens op Google naar afbeeldingen? Dan maak je indirect gebruik van Artificial Intelligence (AI)-technologieën zoals Computer Vision. Misschien klinkt dit abstract, maar jij gebruikt ze dagelijks. Met computer vision is het mogelijk om beelden automatisch te analyseren. Zo is het mogelijk om objecten te herkennen. Je kunt emotie, objecten, gezichten en teksten in afbeeldingen uit een beeld halen. En dus herkennen. Deze data is erg waardevol en voor van alles te gebruiken.  

Voorbeeld: Analyseren van een foto

Maar hoe is die data dan waardevol? Stel, je verkoopt sportfoto’s. Dan ben je natuurlijk benieuwd welke foto’s wel en niet verkopen. Maar hoe test je dat? Met Computer Vision kun je een groot aantal foto’s analyseren. Stel, je wilt weten of foto’s van vrouwen met merkkleding beter verkopen dan vrouwen met merkloze kleding. Je kunt dan natuurlijk los alle foto’s gaan labelen. Of de computer het werk laten doen.

Als voorbeeld gebruiken we deze onderstaande afbeelding. Wanneer je alleen deze afbeelding hebt, en geen context, kost het je zeker een paar minuten om tot dezelfde conclusie te komen. Terwijl je dit met Computer Vision in een seconde klaar bent.

Gezicht/emotie-herkenning:

  • Detecteert het gezicht op de foto zelf tot op detail, oog, neus mond en oren.
  • Toont dat emotie blij is.
  • Heeft een grote vorm van zelf vertrouwen.

 

Classificatie van de afbeelding:

  • Persoon
  • Sport
  • Atletisch
  • Hardlopen
  • Marathon
  • Langeafstand lopen

 

Optische tekenherkenning (OCR):

  • Mizuno
  • 2012 U.S. Olympic Trials Women’s
  • Marathon
  • PEYTON
  • Mizuno

 


Voorbeeld van: Gezicht-emotie-herkenning, Classificatie van de afbeelding en Optische tekenherkenning Bron: https://www.flickr.com/photos/born_hiker/ 6752685015/

“A picture is worth a thousand words”

Voorbeeld: Analyseren van video

De mogelijkheden gaan verder dan alleen foto’s. Video analyseren kan namelijk ook met Computer Vision. Zo is het mogelijk om objecten te herkennen die aanwezig zijn in het beeld.  Door grote datasets te gebruiken en hier de computer learnings uit te trekken, wordt het mogelijk om objecten, emoties en gezichten te herkennen.

Een toepassing zou kunnen zijn, een slimme camera die de gezichtsuitdrukking volgt van grote groepen mensen: kijken ze verrast, verveeld, opgewonden.

Een kort gifje waarin ik verschillende objecten realtime voor de camera beweeg

Benieuwd hoe het werkt?

Open dan de gezicht en emotie herkenning demo (1) op je smartphone. Maak een foto, de computer verwerkt de foto gelijk voor je. De computer schat je leeftijd, je emotie, of je make up op hebt en welke voorwerpen op de foto staan. Wij hadden in ieder geval een hoop lol met het testen, de computer had het verrassend vaak goed.

Wanneer Computer Vision inzetten binnen je organisatie?

Gaaf he, al die mogelijkheden. Maar wanneer kan computer vision bijdragen aan jouw business of organisatie? Bijvoorbeeld:

  • Als een organisatie veel gebruik maakt van afbeeldingen, foto’s, video;
  • Als geen gebruik wordt gemaakt van de beschikbare informatie op de foto’s, afbeeldingen en video’s;
  • Als grote hoeveelheden data nu met de hand worden geanalyseerd;
  • Als jouw organisatie data gedreven is .

 

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 koffiedrinken.

Deze blogpost is geschreven door Dion van Velde en Jeroen Beks en verscheen op Colours.nl en Qdraw.nl

1) Gezicht en emotie herkenning is een vorm van Computer Vision. In de demo wordt alleen het gezicht en de emotie gescand, er worden geen objecten herkend.

Dit bericht is geschreven door: Dion

Tags: , ,

Gecategoriseerd in: