Pourquoi créer vos propres cascades Haar-classifier?
J'ai trouvé cette tutoriel sur la création de votre propre haar-classificateur cascades.
Cela a soulevé la question avec moi: quels sont les avantages, le cas échéant, de l'exécution HaarTraining, et de la création de votre propre classificateur (par opposition à l'aide de l'cascades fournis par OpenCv)?
source d'informationauteur wen
Vous devez vous connecter pour publier un commentaire.
De Haar ou LBP cascades les classificateurs sont des techniques courantes utilisées pour la détection ou d'objets rigides. Donc, ici, sont deux points importants pour la formation de vos propres cascade:
Cascades de venir avec OpenCV ne pas couvrir l'ensemble des types d'objet. Ainsi, vous pouvez utiliser l'un des OpenCV cascades si vous allez créer une face de détection de l'application, mais il n'y pas de prêts à utiliser des cascades si vous avez besoin de détecter par exemple les chiens.
Et cascades de OpenCV sont bons, mais ils ne sont pas le meilleur possible. C'est une tâche difficile, mais il est possible de former une cascade qui ont un taux de détection supérieur et de produire moins de faux positifs et de faux négatifs.
Et l'un des principaux remarque: haartraining de l'application utilisée dans votre tutoriel est maintenant considéré comme obsolète par OpenCV équipe.
opencv_traincascade
est une version plus récente et il a 2 caractéristiques importantes: il prend en charge LBP fonctionnalités et il supporte le multi-threading (TBB). Typique différence ressemble à cecihaartraining + singlecore > 3 semaines pour un classificateur.
traincascades + multicœur < 30 minutes, pour un classificateur.
Mais le pire de tout, je ne connais pas de bons tutoriels expliquant l'utilisation de
opencv_traincascade
. Voir ce fil pour plus de détails.Je peux vous donner un Linux par exemple. Le code et les techniques ont été tirés à partir d'une variété de sources. Il suit cet exemple mais avec une version de python de mergevec, de sorte que vous n'avez pas à compiler le mergevec.cpp fichier.
En supposant que vous avez deux dossiers avec recadrée & prêt positif & images négatives (.les fichiers png dans cet exemple), vous créez deux fichiers texte avec tous les noms de l'image:
Puis, à l'aide de la createsamples.pl script fourni par Naotoshi Seo (dans le OpenCV/bin), qui prend les deux fichiers texte et un dossier de sortie, et de crée la .vec des fichiers:
Qui suivent avec un script python créé par Blake Wulfe Ouest appelé mergevec.py qui va créer une sortie.vec fichier en combinant tous les .vec les fichiers dans le sous-dossier
En supposant que tout est fait, à l'aide de opencv_traincascade comme suit devrait vous aider:
Si tout va bien, utilisez votre nouvellement créé cascade (classifier/cascade.xml) avec quelque chose comme facedetect.py de opencv échantillons: