26 september 2017 • oktober 9, 2017 at 12:07 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 WIDER example using labelImg (credits: http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/); 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 Uit de dataset WIDERFace en de film Marching Band (2009) met XML en LabelImg interface zichtbaar ; 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 Excel and OS X Finder with list of files; 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 In dit voorbeeld worden 43 gezichten herkend. Bron afbeelding: Ricardo Lago https://www.flickr.com/photos/kruzul/4763629720/; 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 • september 26, 2017 at 2:40 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:

25 juli 2017 • 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.

Dit bericht is geschreven door: Dion

Tags: , , ,

Gecategoriseerd in:

4 juli 2017 • augustus 23, 2017 at 8:30 am Qdraw

Meterstanden doorgeven via spraak is nu mogelijk bij Eneco

Heb je al een slimme speaker zoals de Amazon Echo in huis? Dankzij dit apparaat kun je met je stem een computer besturen. Nu kun je zelfs bij Eneco je meterstanden doorgeven via Alexa, de clouddienst achter Amazon Echo. Ik heb geholpen om deze innovatie mogelijk te maken.

Met spraakherkenning wordt het mogelijk om op elk moment van de dag, acties uit te voeren met een computer. Deze technologie is nu toegankelijk in de woonkamer dankzij Smart Home devices.


Nu inzetten op de service by speech revolutie ; Alexa, Colours, Echo Dot, Amazon, IOT-device | foto 1

Deze slimme devices helpen je om Spotify af te spelen, boodschappen te doen en vanaf nu is het dus mogelijk om via spraak je meterstanden door te geven. Vanaf december 2016 is het al mogelijk om dat via Facebook Messenger door te geven. Vanaf nu is hetzelfde proces ook beschikbaar via Alexa. Benieuwd hoe het werkt? Stefan Verhoeve van Eneco legt het uit in onderstaand filmpje.

 

Technische oplossing om meterstanden door te geven via spraak

Voor deze nieuwe functionaliteit hebben we een ‘skill’ geschreven. Bij Alexa worden apps die door ontwikkelaars kunnen worden toegevoegd ‘skills’ genoemd. Technisch gezien is dit een middleware applicatie die de verzoeken doorstuurt naar de Eneco Chatbot. Omdat Alexa nog niet in het Nederlands beschikbaar is zijn de teksten beschikbaar gemaakt in het Engels en zijn er aanpassingen gemaakt om deze goed te laten functioneren bij speech.


Meterstanden doorgeven via spraak is nu mogelijk bij Eneco ;

Intelligente spraakherkenning

In het proces van het doorgeven van meterstanden is het belangrijk dat de standen goed aankomen. Dit klinkt logisch, maar hiervoor moet de vertaling van Speech naar tekst uitstekend zijn. Bij de Alexa is het mogelijk om ‘one two three’ of ‘one hundred twenty-three’ door te geven, Alexa snapt het allemaal!

Mocht de wereld van ‘service by speech’ je interesse hebben gewekt, maar weet je nog niet hoe je dit in je organisatie kunt toepassen en heb je de nodige vragen? Stuur mij dan een mailtje dan kunnen we een kop koffie drinken.

Dit artikel verscheen op Qdraw en Colours

Dit bericht is geschreven door: Dion van Velde

Tags: ,

Gecategoriseerd in:

30 juni 2017 • augustus 23, 2017 at 8:38 am Qdraw

Zeven gouden tips voor een succesvolle chatbot

Een chatbot heeft veel voordelen. Zo is een chatbot 24/7 beschikbaar, er is nooit een wachtrij en ook niet onbelangrijk: het bespaart kosten. Maar waar moet een goede chatbot aan voldoen? Op basis van onze ervaring met chatbots delen we onze zeven gouden tips.

1. Stel de juiste vragen

Zorg dat je alleen de essentiële informatie vraagt en begrijpbare antwoorden geeft. Probeer je chatbot zo toegankelijk mogelijk te maken. Als de chatbot geen goed antwoord heeft op de vraag, dan moeten er twee dingen gebeuren. De klant moet een andere manier geholpen worden. Dit kan betekenen dat de klant wordt doorgestuurd naar een medewerker of dat er teruggebeld gaat worden. Vervolgens moet er geleerd worden van deze vraag zodat dit deze zelfde situatie in de toekomst niet meer voorkomt en de chatbot de juiste vragen te stellen.


Zeven gouden tips voor een succesvolle chatbot Stel de juiste vraag; chatbot, vraag

2 . Test de tone-of-voice bij je doelgroep

De inrichting van flows en tone-of-voice is heel belangrijk. Het heet dan wel een bot, maar de antwoorden moeten dat natuurlijk niet zijn. Zorg dat de teksten passen bij de gebruiker en consumenten praten met een chatbot. Zorg dat ze dat ook weten. Een mens reageert altijd anders dan een chatbot en consumenten merken dit. De beste manier om daarvoor te zorgen is door te testen met gebruikers. De antwoorden die de chatbot geeft, moeten wel passen bij de andere kanalen. Als je bijvoorbeeld informeel schrijft op je website, maar de chatbot op een zakelijke manier reageert, past dat niet bij elkaar. Hetzelfde geldt voor een Nederlandse Facebookpagina en een Engelstalige chatbot. Het doel is uiteraard om mensen sneller en beter te helpen.


Zeven gouden tips voor een succesvolle chatbot Chatten is menselijk; chatbot, menselijk

3. Richt je proces lineair in

Lineaire processen hebben een lager uitvalspercentage. Een lineair proces heeft een duidelijk begin en einde. Bij deze chatbot hebben we flow’s zo ingericht dat gebruikers altijd geholpen worden. Flows lopen op deze manier nooit dood en de gebruiker heeft altijd de mogelijkheid om te stoppen zonder de chat te verlaten.


Zeven gouden tips voor een succesvolle chatbot Lineare flows werken; chatbot, Linear

4. Integratie met interne systemen

Integreer je chatbot met je eigen systemen of maak gebruik van open data. Wanneer je als bedrijf nog geen chatbot hebt is het bij een zelfservice-chatbot goed te doen om te beginnen met één ‘taak’. Zo’n taak kan bijvoorbeeld zijn: het doorgeven van een verhuizing. Deze taak omvat meer dan alleen maar informeren en antwoorden; Het is noodzakelijk dat de klant echt dingen kan gaan veranderen in het CRM-systeem waarin de adresgegevens zijn opgeslagen. Uiteraard moet de klant zich eerst wel identificeren zodat we weten tegen welke klant we een chat aan het voeren zijn.


Zeven gouden tips voor een succesvolle chatbot Integratie met interne systemen; chatbot, intern

5. Monitor de resultaten

Om goed inzicht te krijgen in de prestaties van de chatbot, is realtime inzicht hebben in de prestatie must. Wij doen dit met een KPI-dashboard. Het ligt eraan wat je doelen exact zijn, maar op het dashboard kun je bijvoorbeeld het conversieratio is, hoeveel bezoekers het proces hebben doorlopen.


Zeven gouden tips voor een succesvolle chatbot Realtime monitoring; chatbot, dashboard

6. Veiligheid en privacy zijn belangrijk

Bij digitale privacy gaat het over vragen als: Wat verzamelen online partijen zoals Facebook eigenlijk allemaal over je? En bij security gaat het over of de gegevens zijn beschermd tegen hackers. Bij een ernstig datalek is het verplicht om direct een melding moeten doen bij de Autoriteit Persoonsgegevens. Externe diensten zoals Facebook Messenger zijn onderhevig aan de eigen privacyvoorwaarden, hierin staat uitgelegd wat er exact wordt bijgehouden. Ga goed om met de vertrouwen en doe er alles aan om dit vertrouwen uit te stralen.


Zeven gouden tips voor een succesvolle chatbot Be secure; chatbot, safety

7. Think big act small

Door klein te beginnen en steeds verder uit te bouwen kun je snel de waarde bewijzen en verbetering toepassen.


Zeven gouden tips voor een succesvolle chatbot Think big, act small, learn fast; chatbot, fast

Bij het ontwikkelen van een chatbot komt veel kijken, Benieuwd wat we voor jou kunnen betekenen? Neem contact op voor een vrijblijvend gesprek, we denken graag met je mee.

Deze blogpost verscheen op Colours.nl en Qdraw

Dit bericht is geschreven door: Dion van Velde

Tags: ,

Gecategoriseerd in:

29 mei 2017 • juni 6, 2017 at 5:33 pm Qdraw

De top zeven van intelligente Chatbot-tools

Chatbots zijn hot. Vorige week voorspelde onderzoeksbureau Juniper nog dat bedrijven in 2022 acht miljard dollar per jaar gaan besparen, dankzij chatbots. Maar wat zijn de allerbeste chatbot-tools? In dit overzicht is dit uitgezocht.

De ontwikkelingen gaan razendsnel. Chatbot-tools worden steeds beter in het begrijpen van zinnen. Wat voorheen alleen beschikbaar was in het Engels, is nu ook beschikbaar in het Nederlands.

Om een goed overzicht te krijgen van de verschillende chatbot-tools analyseerde ik de top zeven intelligente chatbot-tools. Hierbij wordt gefocust op ‘Natural language processing’-tools (NLP) en worden een aantal punten vergeleken. Deze punten zijn gebaseerd op zijn ervaring met chatbots, onder andere de chatbot voor Eneco.


De top zeven van intelligente Chatbot-tools ; | foto 1

Bij het ontwikkelen van een chatbot komt een hoop kijken. Zo heb ik meegewerkt aan de ontwikkeling van de Eneco Chatbot, een intelligente chatbot waarmee consumenten snel meterstanden kunnen doorgeven. Benieuwd wat we voor jou kunnen betekenen? Neem contact op voor een vrijblijvend gesprek.

Het artikel van Juniper: ‘Chatbots, a Game Changer for Banking & Healthcare, Saving $8 billion Annually by 2022’ is hier te vinden.

Dit bericht is geschreven door: Dion

Tags: , ,

Gecategoriseerd in:

2 mei 2017 • juli 16, 2017 at 6:20 pm Qdraw

Vanuit de cloud je eigen Hue-ledstrip besturen

Een computer is niet meer het enige device dat online is. Andere apparaten zoals een smartwatch of koelkast zijn ook online. Bij u thuis alleen al kan er een netwerk bestaan uit lampen, een thermostaat, sieraden, de auto’s, en uw koelkast. Samen vormen deze het ‘Internet of Things’.

Dankzij het netwerk van devices automatiseer je het hele huis. Natuurlijk kun je zelf ook op afstand je lampen blijven bedienen.

Een ‘smart home’ klinkt misschien ver weg, maar in dit artikel laten we zien hoe je zelf een Ledstrip smart maakt en deze bestuurt vanuit de cloud. Met niet meer dan een goedkoop ledstripje en een Raspberry Pi kun vanuit je eigen slack-app je kleuren instellen.

Een chatbot waarbij je kleuren kunt aanpassen

Vanuit de chatbot moet het mogelijk zijn om kleuren aan te passen. Gewoon omdat het cool is! In dit project zit het hele proces van het opzetten van een Internet-of-things-device (IOT). Van het aansturen van poorten tot het koppelen aan een internet dienst. Voor dit artikel heb ik gekozen om dit via Slack te doen. Slack is een chatprogramma om snel binnen teams te communiceren. Slack biedt ook de mogelijkheid om een chatbot in deze gesprekken te integreren.

Wat ben ik hiervoor nodig?

  • Raspberry Pi (2 of 3)
    • Micro SD –kaart
    • 2,5 Ampère Micro USB-voeding
  • Ledstrip (12V 5050 RGB-ledstrip)
  • 3 Transistors (BD139)
  • Breadboard en draadjes
  • Leddimmer. (PWM-board: PCA9685)

 

TL;DR

 

Raspberry Pi configuratie

Wanneer je Raspbian (Lite) hebt draaien op je Raspberry Pi dan kun je starten met deze tutorial. In de volgende stappen leg ik uit hoe je dit zelf kunt uitvoeren. Op de site van de Raspberry Pi-foundation staat een goede uitleg om het device te installeren. Zet de image van de site op het SD-kaartje en start de Raspberry Pi op. Standaard start het apparaat op met pi als gebruiker en raspberry als wachtwoord.

Installeer Node.JS

Mijn scripts draaien op Node.js. Node.js is softwareplatform waarop men applicaties kan ontwikkelen en draaien. Die applicaties worden geschreven in JavaScript. Normaal wordt JavaScript uitgevoerd door een webbrowser maar in dit geval wordt JavaScript uitgevoerd door de Raspberry Pi.

In de package-manager van Raspbian is Node.js sterk verouderd. Een package-manager is op dit platform de App-store. Dus daarom installeren we het programma vanaf de officiële website. In de volgende stappen leg ik uit hoe je dat doet.

In deze tutorial maak ik gebruik van Terminal commando’s. Wanneer je niet zo goed weet hoe dit werkt, klik dan hier Je kunt via een commando-regel inloggen vanaf een ander apparaat (SSH). Het is ook mogelijk om via het apparaat zelf commando’s in te geven. Op de Raspberry Pi-site wordt een uitleg gegeven van hoe SSH werkt. In dit artikel gebruik ik het dollar teken om aan te geven dat het een terminal commando is dat als normale gebruiker wordt uitgevoerd. Je hoeft het dollar-teken niet mee te kopieren.

Wanneer je bent ingelogd op het device. Vanaf deze site downloaden we een bestand.

$ wget https://nodejs.org/dist/v7.8.0/node-v7.8.0-linux-armv7l.tar.gz

Vervolgens pak ik dit bestand uit

$ tar -xvf node-v*-linux-armv7l.tar.gz

Wissel ik van map en ga naar de net uitgepakte map

$ cd node-v*-linux-armv7l

Nu ga ik kopieren met speciale rechten (sudo). Het kan zijn dat er gevraagd wordt om een wachtwoord, als je deze niet veranderd hebt is dit: raspberry

$ sudo cp -R * /usr/local/

In de volgende stap controleer je of de installatie goed is gegaan. Als het goed is antwoord het onderstaande commando: v7.8.0

$ node -v

Zet i2c aan

Om te communiceren met het bordje waarmee de leds gedimd worden maken we gebruik van I2C.  I2C is bedacht om op een snelle en goedkope manier te tussen chips te communiceren. Voor de data-overdracht wordt er gebruik gemaakt van twee draden. SCL wordt gebruikt om een klok-signaal door te geven en SDA zorgt voor de data.

Standaard staat I2C op een Raspberry Pi uit en in de onderstaande stappen leg ik uit hoe je dit kunt activeren.

In het volgende bestand verwijderen we het hekje voor de tekst. Om het bestand op te slaan en af te sluiten gebruik je de toetsen combinatie Ctrl-X en toets vervolgens Y voor Yes

$ sudo nano /boot/config.txt

#device_tree_param=i2c_arm=on

Even herstarten en de veranderingen zijn doorgevoerd

$ sudo reboot

Om te controleren of I2C werkt installeer ik i2cdetect

$ sudo apt-get install -y i2c-tools

Met dit commando controleer ik of I2C werkt

$ sudo i2cdetect -y 1

i2cdetect -y 1

Mocht de uitkomst van het commando anders zijn dan hierboven.
De website Adafruit heeft een uitgebreide uitleg over het aanzetten van i2c onder Raspbian.

Clone de webapp

De code van de webapp heb ik gehost op github. Door het volgende commando uit te voeren haal je de code binnen

$ git clone "https://github.com/qdraw/raspberry-pi-rgb-ledstrip"

$ cd raspberry-pi-rgb-ledstrip

Installeer de benodigde packages

$ npm install

Start de webapp

$ npm start

No key file found. One was generated. Here is the public key: mhvr00pcowwqobneq2

App is gestart op http://localhost:5037

https://mhv*q2.localtunnel.me/webhook

De hardware setup

Wanneer de vorige code wordt uitgevoerd gebeurt er nog niks, er is nog geen hardware aangesloten. In deze stap sluiten we de hardware aan. Bij een Raspberry Pi-project is de moeilijkheid dat de combinatie tussen de hardware en software goed moet werken.

Voor setup heb ik een schema gemaakt waarin beschreven staat hoe de aansluitingen gedaan moeten worden.

 


Vanuit de cloud je eigen Hue-ledstrip besturen ; | foto 1

Het aansluitschema (gebaseerd op: Adafruit-documentatie)

 


Vanuit de cloud je eigen Hue-ledstrip besturen ; | foto 2

Dit is de setup zoals het bij mij thuis eruitziet

De keuze om gebruik te maken van een PWM-board

Een Raspberry Pi heeft out-of-the-box 2 PWM-kanalen. Deze 2 PWM-kanalen zijn verdeeld over 4 GPIO-poorten.  Daarnaast heeft de Raspberry Pi ook nog de beperking dat het PWM gebruiken is of een normale schakeling.

Slack API

Slack biedt ook de mogelijkheid om een chatbot in deze gesprekken te integreren. Dit heet Slash Commands. Wanneer je een slack-app aanmaakt op https://api.slack.com/apps?new_app=1

In de volgende stappen lopen door de setup van Slack heen.


Vanuit de cloud je eigen Hue-ledstrip besturen ; | foto 3

Zo ziet het eerste proces van ‘Create an App eruit’


Vanuit de cloud je eigen Hue-ledstrip besturen ; | foto 4

We maken een Slash Command aan. Aan de linkerkant is het menu zichtbaar waar ‘Slash Commands’ zichtbaar zijn. Klik hier op om een nieuw Slash Command aan te maken. Vervolgens klik je op ‘Create New Command’ om verder te gaan.

 


Vanuit de cloud je eigen Hue-ledstrip besturen ; | foto 5

Voer hier de waardes in die de webapp weergeeft geeft. Op
deze manier weet Slack wat er moet gebeuren als er /mycommand wordt ingevoerd.
Tevens is het mogelijk om een omschrijving weer te geven.

Vanuit de cloud je eigen Hue-ledstrip besturen ; | foto 6

Het is gelukt, vanaf nu kun je vanuit Slack een ledstrip besturen. In het voorbeeld gebruik ik /kleur rood om de Raspberry Pi te activeren.


Vanuit de cloud je eigen Hue-ledstrip besturen ; | foto 7

Mocht je vragen hebben over deze tutorial of over de wereld van ‘Internet of Things’ 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.

Deze blogpost verscheen op Qdraw.nl

Dit bericht is geschreven door: Dion

Tags: ,

Gecategoriseerd in: