Pan / Tilt ' face-tracking met de raspberry pi (6 / 6 stap)

Stap 6: Denken en leren


Kijken maar de broncode, het is goed gereageerd om uit te leggen hoe alles werkt, maar in principe wordt er gezocht naar een frontale gezicht, dan een juiste profiel gezicht, dan een linker profiel gezicht. Het lussen totdat het er één vindt. Indien zij, bijvoorbeeld, een linker profiel gezicht vaststelt, stopt het zoeken naar de rechter- en front- en houdt herhalen en op zoek naar links (om te versnellen detectie). Als er ooit geen dat gezicht van links gevonden, gaat het terug naar het zoeken naar alle drie weer. Wanneer het vindt een gezicht, het krijgt het centrum coördinaten van dat gezicht en die info gebruikt om te bepalen welke manier / als om de servomotoren-- en hoe ver moet verplaatsen van hen-- en hoe snel om ze te verplaatsen:

Ja, hoe snel, het maakt twee subprocessen één voor elke servo, wanneer een servo wordt verteld om te bewegen, een snelheid is geboden. De subproces een lus en wordt de positie van de servo verhoogd met één met elke pass - totdat de gewenste positie wordt bereikt. Hoe snel het loops is gebaseerd op de gegeven snelheid-parameter. Dit kunt u verplaatsen van de servomotoren op verschillende snelheden, hoewel de motorsnelheid niet verstelbaar. Ik oorspronkelijk uitgevoerd dit met draden, maar python bleek te hebben zeer slechte afhandeling van draden bij hoge CPU-belasting.

Net als vrijwel alle open source facial recognitie applicatie, we OpenCV van haar-classificatie trapsgewijs gebruiken om te zoeken naar patronen die overeenkomen met die gevonden in de FrontalFace.xml opgenomen. Maar er lijken er enkele slecht begrepen en gedocumenteerd de aspecten van de parameters van de functie cvHaarDetectObjects die een grote invloed op de prestaties van het programma hebben.

De eerste parameter is natuurlijk het beeld. Passeer de functie de afbeelding die u wilt zoeken naar gezichten binnen, er lijkt te zijn van enige verwarring zelfs bij deze stap - mensen lijken te denken dat door het eerste omzetten in het beeld grijs-schaal, de verwerking sneller zal zijn. Een eenvoudige benchmark zal laten zien dat dit niet waar - in feite het het proces langzamer maken zal, omdat u een extra stap uitvoert. Mensen ook lijken te denken dat eerst de afbeelding te schalen naar beneden dingen sneller maken zal-dit intuïtief gevoel, maakt want nu is er een kleinere afbeelding om te zoeken naar een gezicht binnen, maar dit niet de meest efficiënte methode, dat me bij de volgende parameter is brengt,

Scalefactor--de forum bewoners lijken te geven suggesties over wat dit moet worden ingesteld op zonder veel uitleg over wat het is. Om volledig te begrijpen, moet u weten hoe OpenCV ontdekt gezichten:

OpenCV Face Detection: gevisualiseerd van Adam Harvey op Vimeo.

Bekijk deze video en bijzondere aandacht aan het einde. Merk op dat een vierkantje van linksboven naar rechts beweegt. Telkens als het beweegt, wordt er gezocht naar een patroon binnen het--in dit geval een gezicht, maar met OpenCV dat patroon kon worden iets. Zie hoe het maakt één keer en wordt groter, dan gaat het weer? Het bedrag dat het groter wordt met elke pass is de scalefactor. Als u het instelt op 1.1 zal zou ontvang 1.1 maal groter (10%) met elke pass 1.3 maken krijgen 1,3 keer zo groot is met elke pass--30%. Natuurlijk hoe sneller het groeit in omvang, hoe sneller het voltooit, maar ten koste van het eventueel ontbreken van een gezicht dat er was.

De volgende parameter heeft geen invloed op de prestaties, dus voor zover ik kan vertellen. MinNeighbors vertelt het programma hoe kieskeurig te zijn over wat zij beschouwt als een match. De functie is op zoek naar patronen en controles als die patronen overeenkomen met haar patronendatabase - een XML-bestand. Ik denk dat de standaard het 3--wat betekent dat als er 3 patronen binnen het plein waar het naar op zoek is, die overeenkomen met patronen gevonden in het XML-bestand, dan overwegen het een match. Ik stel mij op 4. Hoe hoger u het instelt, hoe meer zeker dat u kan zijn dat wanneer het zegt dat het een gevonden het klopt. Echter, het te laag en hij denkt dat alles wat die ze ziet is een gezicht. Het te hoog en het zal problemen ondervindt bij het vangen van de werkelijke gezichten.

De volgende parameter vlaggen; Dit zijn de Boole-waarden die u inschakelen kunt om te tweaken dingen:
een is CV_HAAR_DO_CANNY_PRUNING. Deze vlag werd ontworpen alleen voor gezichten; het vertelt de functie overslaan zoeken over gebieden met scherpe randen... omdat gezichten in het algemeen geen geen scherpe randen hebben. (Zie bijgevoegde afbeelding, soms ze misschien...) Dit versnelt dingen afhankelijk van de achtergrond.
een ander voorbeeld is de HAAR_FIND_BIGGEST_OBJECT dit vertelt de functie op enige teruggave het grootste object dat het gevonden.
een ander voorbeeld is CV_HAAR_DO_ROUGH_SEARCH die de functie om te stoppen met kijken vertelt zodra het iets vindt, het is bedoeld om te worden gebruikt met HAAR_FIND_BIGGEST_OBJECT en sterk verbetert de prestaties wanneer u slechts probeert om te vinden van een gezicht.

De laatste twee parameters zijn belangrijk, of ten minste een van hen is - ze zijn minimaal en MaxSize. Een gemeenschappelijke methode voor het zoeken versnellen lijkt te zijn te verkleinen van afbeeldingen, als u wilt dubbele van de snelheid van de detectie van een gezicht in een afbeelding van 800 x 600, schalen tot 400 x 300. Het probleem met deze logica is dat u potentiële gezichten zijn krimpen, en haar niet betrouwbaar gezichten kleiner dan 20 x 20 pixels vinden. Niet alleen dat, nu u computerbronnen gebruikt om dat beeld krimpen. U kunt de dezelfde snelheid te verhogen door te geven van een minimaal voor het gezicht krijgen. 20 x 20 is de standaard, maar 40 x 40 zal gek snel in vergelijking. Hoe hoger je gaat, hoe sneller het zoeken zal worden, maar u kunt beginnen met het ontbreken van kleinere gezichten.

Wilde alleen maar duidelijk dat omhoog...

Ik hoop dat dit helpt, en ik hoop dat iedereen geniet van het werken met de Raspberry Pi en OpenCV zo veel als ik deed.
Dit is mijn eerste instructable. Ik zou graag zien uw opmerkingen.
Bedankt,
Chris

Gerelateerde Artikelen

Bouw een 3D Pan Tilt geval afgedrukt voor een Raspberry Pi

Bouw een 3D Pan Tilt geval afgedrukt voor een Raspberry Pi

Dit instructable beschrijft het gebouw van een zaak voor een Raspberry Pi waarin een vergadering van de pan-tilt voor de Pi-Camera.Mijn doel was het ontwerpen van een 3D afdrukbare geval dat netjes de Raspberry Pi terwijl ook het verstrekken van ruim
Bouwen van een GPS tracker met de Raspberry Pi (Auteur: Arnoud Buzing)

Bouwen van een GPS tracker met de Raspberry Pi (Auteur: Arnoud Buzing)

Dit bericht laat zien hoe het bouwen van een eenvoudige GPS tracker met de Wolfram taal op een Raspberry Pi.Stap 1: HardwareDit experiment opnieuw moet u de volgende hardware (naast de Raspberry Pi zelf):Ultieme GPS BreakoutUSB naar TTL seriële kabel
Face Tracking met verwerking en OpenCV

Face Tracking met verwerking en OpenCV

Computer-visie is ongelooflijk. Hierdoor computationele processen de kans om de wereld om hen heen te zien. Het is noodzakelijk voor een heleboel robotic toepassingen, machinaal leren of interactieve projecten. OpenCV is een opensource computer visie
Pan Tilt camera Arduino met Joystick

Pan Tilt camera Arduino met Joystick

hoe maak je een pan tilt camerasysteem met behulp van een oude psx stok en arduino.Dit systeem kunt u instellen van de houding van een cam bijvoorbeeld, laser, of wat u wilt koppelen.Hier vindt u de code en de beschrijving (Italiaans) hier:http://sel
Snelle geïmproviseerde ' face-tracking camera met behulp van een Intel Edison

Snelle geïmproviseerde ' face-tracking camera met behulp van een Intel Edison

Dit is een tutorial over het bouwen van een eenvoudige camera van de face-tracking met arduino breakout board, een android-smartphone, een servomotor en een paar andere dingen die kan je rondslingeren in uw bureau met behulp van een Edison. De code i
Gezicht detectie en tracking met Arduino en OpenCV

Gezicht detectie en tracking met Arduino en OpenCV

UPDATES20 februari 2013: In antwoord op een vraag van de student Hala Abuhasna wilt u de seriële .NET-klasse gebruiken, gebruiken de naamgevingsconventie "\\\.\\COMn" en n vervangen door een nummer > 9 te definiëren uw com-poort voor COM-poor
IoT: Raspberry Pi Robot met Video Streamer en Pan/Tilt camera afstandsbediening via internet

IoT: Raspberry Pi Robot met Video Streamer en Pan/Tilt camera afstandsbediening via internet

(Als je dit Instructable, vergeet dan niet te stemmen - boven: rechts hoek vlag. Het is concurreren op INTERNET of THINGS en automatisering wedstrijden. Heel hartelijk bedankt! ;-)Dit is een tweede deel van mijn vorige Intructable: IoT - een Raspberr
Real Time ' Face-Tracking Robot met Arduino en Matlab

Real Time ' Face-Tracking Robot met Arduino en Matlab

Real time ' face-tracking verwijst naar de taak van het opsporen van menselijke gezichten in een video-stream en bijhouden van de gedetecteerde of herkende gezichten. Er zijn tegenwoordig veel echte wereld toepassingen van gezichtsherkenning en ander
Hack een $30 WiFi Pan-Tilt Camera - Video, Audio en Motor control met Python

Hack een $30 WiFi Pan-Tilt Camera - Video, Audio en Motor control met Python

In dit Instructable leert u hoe te onderscheppen van de video, microfoon en besturingselementen van de $30 Kaicong SIP1602 draadloze pan-tilt camera op Windows, Linux of OSX! Alles is netjes gerold in python scripts; u kunt de uitvoergegevens voor di
Basaal pan tilt met behulp van arduino

Basaal pan tilt met behulp van arduino

voor dit instructable u zult leren de basisprincipes van arduino en codes voor de arduino.video van pan/tilt arduino project (Opgelet, deze video bevat aweful indrukken van batman)Als om het even wie me om te zetten naar meer foto's op dit project wi
RasPi + OpenCV = Face Tracking

RasPi + OpenCV = Face Tracking

Dit instructable leert u alles wat u moet weten over het installeren van uw nieuwe RasPi-Camera naar uw Raspberry Pi en implementeren van OpenCV van ' Face-tracking bibliotheken. De tutorial zal niet wordt verondersteld dat u weet hoe program of begr
Externe auto Monitoring en Tracking met Intel Edison

Externe auto Monitoring en Tracking met Intel Edison

Ik ben meestal uitgebreid, maar voor dit deel zal ik proberen te beknopt zijn. Dit project is:Een Intel Edison + een GPS-ontvanger + een Bluetooth OBD-II-lezer (optioneel aftermarket auto sensoren) + een auto.Voeg in sommige software en kunt u de pos
3D afgedrukt Pan Tilt iPad Mount

3D afgedrukt Pan Tilt iPad Mount

Ik ben momenteel een Electrical Engineering Undergraduate Student aan de Washington State University. In ons laatste jaar voltooien we een cursus genaamd senior ontwerp. Voor mijn team van senior design project waren we belast met het creëren van een
Pan-Tilt gecontroleerd door Cell Phone

Pan-Tilt gecontroleerd door Cell Phone

Hallo allemaal,In dit mijn nieuwe project laat ik aan u een Pan-Tilt gecontroleerd door Cell Phone.Alle bewegingen van de mobiele telefoon worden gereproduceerd in de pan-tilt-apparaat via Bluetooth.De bouw is zeer eenvoudig met behulp van een Arduin