Étape 2: Haar Cascades--une Intro
Pour le meilleur ou le pire, la plupart des téléphones cellulaires et des appareils photo numériques aujourd'hui peut détecter les visages humains, et, comme on le voit dans l’étape précédente, il ne faut pas trop d’effort pour obtenir le code de détection de visage simple en cours d’exécution sur un téléphone Android (ou toute autre plate-forme), en utilisant OpenCV.
C’est grâce à l’algorithme d’Alto-Jones pour la détection de visage, à l’aide de classifieurs axée sur le Haar cascade. Il y a beaucoup d’informations à ce sujet en ligne, mais une très belle explication peut être trouvée sur le site de OpenCV.
Il s’agit d’une algorithme qui utilise un tas d’images de visages et de non-faces pour former un classifieur qui plus tard peut être utilisé pour détecter des visages en temps réel d’apprentissage de la machine.
L’algorithme implémenté dans OpenCV peut également servir pour détecter d’autres choses, aussi longtemps que vous avez les classificateurs droite. Ma distribution OpenCV fourni avec classificateurs pour les yeux, partie supérieure du corps, mains, visage frontale et visage de profil. Tout en recherchant des informations sur la façon de les former, j’ai trouvé des classificateurs pour les bananes, stylos et iPhones.
En fait, ce dernier lien est pour plus que juste des iPhones. Dans son projet de Test de miroir , Jeff Thompson est effectivement formation ordinateurs de se reconnaître dans un "acte poétique/technologique non utilitaires, vicié".
Similaire à ce que nous voulons, mais puisque nous avons un très spécifique téléphone pour détecter, nous avons décidé de former nos propres classifieur.
Le OpenCV tutoriel pour formation Cascade classificateurs est un très bon endroit pour commencer. Il explique les 2 utilitaires binaires utilisés dans le processus (opencv_createsamples et opencv_traincascade) et tous leurs arguments de ligne de commande et les options, mais il ne donne vraiment pas un exemple d’un flux à suivre, ni faut-il expliquer toutes les utilisations possibles de l’utilitaire opencv_createsamples .
En revanche, tutoriel de Naotoshi Seo est effectivement très complet et explique les 4 différents utilise pour l’utilitaire opencv_createsamples . Thorsten Ball a écrit un tutoriel à l’aide de scripts de Naotoshi Seo pour former un classifieur à détecter des bananes, mais il exige en cours d’exécution des scripts perl et la compilation de certains C++... trop de travail...
Jeff a aussi quelques belles notes sur comment il a préparé ses données et un script de parcourir automatiquement les deux options pour les 2 utilitaires.
La façon dont nous l’avons fait a été inspirée par l’ensemble de ces tutoriels, avec quelques légères modifications et optimisations.