Pan / Tilt visage suivi avec la framboise pi (6 / 6 étapes)

Étape 6: Réfléchir et apprendre

Paraître si le code source, il est bien commenté pour expliquer comment tout fonctionne, mais fondamentalement, il cherche un frontal visage, puis un visage de profil droit, puis un visage de profil gauche. Il effectue une boucle jusqu'à ce qu’il en trouve un. Si elle constate, par exemple, un visage de profil gauche, il arrêtera de chercher d’avant, droite et continue en boucle et en recherchant à gauche (accélérer la détection). S’il ne trouve pas toujours ce visage de gauche, il remonte à nouveau à la recherche pour les trois. Lorsqu’il détecte un visage, il obtient les coordonnées du centre de cette surface et utilise ces informations pour définir la manière dont / si pour déplacer les moteurs servo--et comment bien se déplacer eux--et rapidité pour les déplacer :

Oui, à quelle vitesse, il crée deux sous-processus celui pour chaque servo, quand un servo est dit de se déplacer, une vitesse est fournie. Le sous-processus en boucle et incrémente la position du servo par une avec chaque pass - jusqu'à ce qu’il atteigne la position voulue. À quelle vitesse il boucle est basé sur le paramètre de vitesse fourni. Cela vous permet de déplacer les servo-moteurs à différentes vitesses, même si la vitesse du moteur n’est pas réglable. Initialement, j’ai implémenté cela avec les threads, mais python s’est avéré pour avoir très mauvaise manipulation de threads à haute charge CPU.

À l’instar de quasiment n’importe quelle application de reconnaissance faciale de source ouverte, nous utilisons cascade de haar-classificateur de OpenCV pour rechercher des modèles correspondent à celles trouvées dans les FrontalFace.xml inclus. Mais là, il semble y être certains mal compris et documenté des aspects des paramètres de la fonction cvHaarDetectObjects qui ont un impact majeur sur l’exécution du programme.

Le premier paramètre est bien sûr l’image. Vous passez à la fonction de l’image que vous souhaitez rechercher des visages au sein, il semble y avoir une certaine confusion même à cette étape - les gens semblent penser qu’en premier convertissant l’image en échelle de gris, le traitement sera plus rapide. Un repère simple montrera que c’est faux - en fait, il rendra le processus plus lent parce que vous effectuez une étape supplémentaire. Aussi, les gens semblent penser que tout d’abord mise à l’échelle l’image vers le bas va rendre les choses plus vite - c’est logique intuitive, parce qu’il y a maintenant une image plus petite pour rechercher une face au sein, mais ce n'est pas la méthode la plus efficace, ce qui m’amène au paramètre suivant,

ScaleFactor--les habitants de forum semblent donner des suggestions sur ce que cela doit être réglé sur sans donner beaucoup d’explications sur ce qu’il est. Pour bien comprendre, vous devez savoir comment OpenCV détecte les visages :

Détection de visage OpenCV : visualisé de Adam Harvey sur Vimeo.

Regardez cette vidéo et une attention particulière vers la fin. Notez qu’un carré se déplace du coin supérieur gauche pour en bas à droite. Chaque fois qu’elle bouge, elle recherche une séquence qu’il--dans ce cas-ci, un visage, mais avec OpenCV, ce modèle pourrait être n’importe quoi. Voir comment il fait un passage et s’agrandit, puis va à elle encore ? Le montant qu’il augmente de volume à chaque passage est le scalefactor. Si vous le réglez à 1.1, qu'il va obtenir 1,1 fois plus grand (10 %) avec chaque passage 1.3 rendrait obtenir 1,3 fois plus grand à chaque passage--30 %. Évidemment plus vite il se développe en taille, plus vite il se complète, mais au détriment de manque peut-être un visage qui était là.

Le paramètre suivant n’a aucun impact sur le rendement pour autant que je peux dire. MinNeighbors indique au programme comment pointilleux pour tout ce qu’il considère comme une correspondance. La fonction cherche des modèles et vérifie si ces schémas correspondent à sa base de données de schéma - un fichier xml. Je pense que la valeur par défaut il 3--ce qui signifie que s’il y a 3 modèles à l’intérieur il est carré où il est à la recherche, qui correspond à des modèles trouvés dans le fichier xml, puis considérez-le comme une correspondance. J’ai mis le mien à 4. Plus vous le réglez, plus sûr, que vous pouvez être que quand il dit qu'il trouve une correspondance, il est juste. Cependant, il trop faible et il pense que tout ce qu’il voit est un visage. Il est trop haut et il auront du mal à attraper les visages réels.

Le prochain paramètre Flags ; Ce sont des valeurs booléennes qui vous permettent de régler les choses :
l’une est CV_HAAR_DO_CANNY_PRUNING. Ce drapeau a été conçu uniquement pour les visages ; Il indique à la fonction d’ignorer la recherche sur des zones avec des arêtes vives... parce que les visages n’ont généralement pas de bords tranchants. (Voir image en pièce jointe, parfois ils pussent...) Cela accélère les choses vers le haut selon le contexte.
un autre est HAAR_FIND_BIGGEST_OBJECT, cela indique la fonction de retour seulement le plus grand objet qu'il trouvé.
un autre CV_HAAR_DO_ROUGH_SEARCH qui indique la fonction d’arrêter de chercher dès qu’il a trouvé quelque chose, il est destiné à être utilisé avec HAAR_FIND_BIGGEST_OBJECT et améliore considérablement les performances lorsque vous essayez de trouver une face seulement.

Les deux derniers paramètres sont importants, ou au moins un d’eux est - ils sont MinSize et MaxSize. Une méthode commune pour accélérer la recherche semble être de réduire les images, si vous voulez doubler la vitesse de la détection d’un visage dans une image en 800 x 600, redimensionnez-la à 400 x 300. Le problème avec cette logique est que vous se réduisent les visages possibles et haar ne trouve fiable faces inférieures de 20 x 20 pixels. Non seulement cela, maintenant, vous utilisez des ressources informatiques pour réduire cette image. Vous pouvez obtenir le boost de vitesse même en spécifiant un MinSize pour le visage. 20 x 20 est la valeur par défaut, mais 40 x 40 ira fou rapide en comparaison. Plus vous allez, plus vite la recherche sera, mais vous pouvez commencer manque de petits visages.

Je voulais juste clarifier ce point...

J’espère que cette aide, et j’espère que tout le monde aime travailler avec le Raspberry Pi et OpenCV autant que j’ai fait.
Il s’agit de mon premier instructable. Je serais ravi de voir vos commentaires.
Merci,
Chris

Articles Liés

Arduino - WEBCAM PAN TILT CONTROL Using servos & KY 023 Joystick

Arduino - WEBCAM PAN TILT CONTROL Using servos & KY 023 Joystick

Salut tout le monde! Aujourd'hui, j'ai fait un Pan tilt contrôle avec une vieille webcam, ne me dérange pas la mauvaise vidéo, j'ai dit « Vieux » LoL ! Son assez facile à construire dont vous avez besoin 2 servos un joystick, le schéma, le code et un
Construire un 3D imprimé Pan Tilt cas pour une framboise Pi

Construire un 3D imprimé Pan Tilt cas pour une framboise Pi

Cette instructable décrit la construction d'un cas pour un Pi de framboise qui incorpore une Assemblée pan-tilt pour la caméra de Pi.Mon but était de concevoir un cas imprimable 3D qui engloberait soigneusement le Raspberry Pi tout en offrant l'espac
ITO : Raspberry Pi Robot avec commande à distance caméra Pan/Tilt et de Streamer de la vidéo sur internet

ITO : Raspberry Pi Robot avec commande à distance caméra Pan/Tilt et de Streamer de la vidéo sur internet

(Si vous aimez ce Instructable, n'oubliez pas de voter là-dessus - au-dessus : drapeau de coin à droite. Il est en concurrence sur l'INTERNET des objets et des concours d'automatisation. Merci beaucoup! ;-)Il s'agit d'une deuxième partie de mon précé
Pirater une caméra Pan-Tilt WiFi de 30 $ - contrôle vidéo, Audio et moteur avec Python

Pirater une caméra Pan-Tilt WiFi de 30 $ - contrôle vidéo, Audio et moteur avec Python

Dans ce Instructable, vous apprendrez comment intercepter la vidéo, un micro et contrôles de la caméra pan / tilt sans fil de 30 $ Kaicong SIP1602 sur Windows, Linux ou OSX ! Tout est parfaitement intégrée scripts python ; vous pouvez utiliser les do
Pan Tilt contrôlée par téléphone portable

Pan Tilt contrôlée par téléphone portable

Bonjour à tous,En cela mon nouveau projet je vais présenter vous une Pan-Tilt contrôlée par téléphone cellulaire.Tous les mouvements du téléphone cellulaire sont reproduits dans l'appareil de la pan-tilt via Bluetooth.La construction est très simple
Time-lapse Pan & Tilt Robot

Time-lapse Pan & Tilt Robot

Hey tout le monde ! Je suis de retour avec certains plus Lego Robotics. Ce Robot Lego Mindstorms peut automatiquement pan et tilt un iPhone en très petits incréments pour capturer étonnant moment-est caduque. J'ai eu l'idée pour cela après avoir vu l
3D imprimé Pan Tilt iPad Mont

3D imprimé Pan Tilt iPad Mont

Je suis actuellement un étudiant de premier cycle de génie électrique à la Washington State University. Dans notre dernière année, nous complétons un cours intitulé conception senior. Pour projet de conception senior de mon équipe nous avons été char
Arduino Pan Tilt contrôlée

Arduino Pan Tilt contrôlée

Nous allons vérifier avec pan tilt potentiomètre dans ce projet. Dans ce projet, deux potentiomètre reliés à notre appareil de moteur servo Arduino Uno 2 qui permet le contrôle de caméra Pan-Tilt Fpv, nous avons vérifié à moindre coût. Contrôle Pan T
3D imprimé Pan-Tilt Camera/Laser trépied

3D imprimé Pan-Tilt Camera/Laser trépied

c'est simple, peu coûteux et facile à construire le projet qui utilise l'impression 3D à construire de petites pièces avec des tolérances serrées.  L'objectif de ce projet était de construire un système pan / tilt pour un petit laser et une caméra mi
Panorama motorisé et timelapse pan tilt sytem

Panorama motorisé et timelapse pan tilt sytem

Il s'agit de mon deuxième panorama motorisé et timelapse pan tilt système.Celui-ci est plus portable, économie d'énergie et plus efficace.Deux 01:50 moteurs engrenages harmonique sont adoptés comme clé de voituremécanisme. En raison de la faible réac
Caméscope Pan & Tilt...

Caméscope Pan & Tilt...

Bon, si vous souhaitez imprimer votre propre Pan & Tilt (rotation et inclinaison même pour votre caméscope) ou GoPro pour accrocher pour la sécurité ou à accrocher sous un flyer R/C à portée dehors le secteur comme un hélico drone ou nouvelles milita
Mont vidéo HDSLR de Pan/Tilt/chariot motorisé bricolage (Camera Slider)

Mont vidéo HDSLR de Pan/Tilt/chariot motorisé bricolage (Camera Slider)

Montage vidéo HDSLR de Pan/Tilt/chariot motorisé bricolage de Brad Justinen sur Vimeo.Mise à jour septembre 2013 : ce qui a commencé comme un passe-temps s'est transformé en quelque chose de très grave.  Nous sommes prépare le lancement d'une plate-f
Tête de suivi avec une webcam

Tête de suivi avec une webcam

c'est comme la tête de suivi avec la wiimote, mais tout ce qui est nécessaire est un pc et une webcam, même mes œuvres de webcam de très mauvaise qualité !Étape 1: Connectez une webcam... Connectez votre webcam. le logiciel nécessite que la webcam es
Sans fil pan et tilt camera rig avec arduino

Sans fil pan et tilt camera rig avec arduino

Il s'agit d'un projet de petite arduino avec le NRF24L01 sans fil émetteurs-récepteurs modules ans 2 servo-moteurs.le gréement est contrôlé par une manette de jeu sans fil et qu'il peut contenir un appareil photo, laser ou quoi que ce soit, que vous