Haar Cascade OpenCV Object Detection

Aujourd'hui, vous pouvez voir votre visage se reconnu par téléphone android ou n’importe où. C’est très cool ! Mais reconnaissant des visages en images ou en vidéo est aussi de parler tous les jours. Alors laissez nous parlons maintenant de détecter et reconnaître somethings de notre choix à l’aide de haar cascade opencv.

Démo

Dans le premier mot, je pense que vous devez laisser le temps de regarder le tutoriel après lecture de ce post pour plus facile à comprendre. Parce que cette tâche prend beaucoup de temps pour moi d’apprendre. Et c’est pourquoi je suis pressé d’écrire ce post.
Et cette page est une bibliothèque de vision informatique open source.

Commençant par un habitat vert :

257262

Préparation du matériel et des logiciels
Former nos propres classifieur OpenCV Haar Cascade

Tout d’abord, nous parlons de certaines théories.

ÉCHANTILLONS

Pour former nos propres classificateur, nous avons besoin de beaucoup d’échantillons. Un exemple est les données d’apprentissage qui contient l’échantillon positif et négatif. En particulier, un simple positif contient beaucoup d’images qui montrent l’objet nous voulons détecter. Et un négatif contient des images sans objet. En outre, le nombre d’échantillons dépendre de divers facteurs, dont la qualité des images, l’objet que vous souhaitez reconnaître, la méthode permettant de générer les échantillons, etc.. Par exemple, nous avons des succès avec 2000 échantillons créés à l’aide des images positives 100 et 135 images négatives avec createsamples outil d’OpenCV.

IMAGES POSITIVES

Image positive contient l’objet à reconnaître qui est faite par une partie de l’objet de cultures de la grande image. Donc nous devons obtenir angle différent des images positives, jets latéraux, etc.. Mais dans notre projet, nous ne reconnaît que l’objet de la vue de face.
Certains échantillons positifs :

257262

IMAGES NÉGATIVES

L’image négative ne contiennent pas l’objet de reconnaître. L’image négative peut-être créé par rogner la partie qui ne contient pas d’objet. Toutefois, pour la plus facile et plus rapide, nous pouvons prendre une image sans n’importe quel objet.
Certains échantillons négatifs :

3 13

Préparation des données de l’outil de OpenCV

Vous pouvez créer manuellement les données d’apprentissage. Ou à l’aide d’autre programme comme « indice de l’objet ». Toutefois, dans ce post, nous allons parler à l’aide d’outil de OpenCV.
Besoin de préparer :

  • Dossier d’images positives : positif
  • Dossier d’images négatives : négatif
  • Cloner le code de référence : https://github.com/Booppey/haarcascade.git

Après cela, vous pouvez créer votre fichier « samples.txt » :

CD à l’espace de travail
trouver le positif - iname « *.png » > positives.txt
trouver négatif - iname « *.png » > negatives.txt
perl code_ref/createsamples.pl positives.txt negatives.txt échantillons 2000 « opencv_createsamples - bgcolor 0 - bgthresh 0 - maxxangle 1.1 - maxyangle 1.1 maxzangle 0,5 - maxidev 40 -w 60 - h 60 »

trouver des échantillons - nom ' * .vec ' > samples.txt

Puis créez votre « samples.vec » utilisé pour former le détecteur.

CP opencv-haar-classifier-training/src/mergevec.cpp ~/opencv-2.4.11/apps/haartraining
CD ~/opencv-2.4.11/apps/haartraining
g ++ « pkg-config--libs--cflags opencv »-i -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp cvsamplesoutput.cpp-lopencv_core-lopencv_imgproc-lopencv_highgui-lopencv_imgproc-lopencv_features2d-lopencv_flann-lopencv_nonfree-lopencv_calib3d-lopencv_objdetect
CD your_workspace_name
CP ~/opencv-2.4.11/apps/haartraining/mergevec.
. / mergevec samples.txt samples.vec
Le classificateur de formation

Maintenant former notre détecteur à l’aide de samples.vec en tapant sur le terminal :

opencv_traincascade-classificateur - vec samples.vec bg - negatives.txt - numStages 20 - minHitRate 0,999 - maxFalseAlarmRate 0,5 - numPos 1500 - numNeg 135 -w 60 - h 60 - mode données tous les precalcValBufSize - 2048 - precalcIdxBufSize 2048
En utilisant nos propres classifieur pour détection d’objet

Après la formation, le détecteur peut comprendre quel est l’objet sera détecté par le fichier cascade.xml. Alors maintenant, vous devez utiliser ce fichier à la détection. Enfin, consultez nos github pour voir le code source pour cette tâche.

Vérifiez notre github
git clone https://github.com/Booppey/haarcascade.git
Fermeture

Haar Cascade est une méthode simple et efficace pour détecter 1 type d’objet à temps. Mais cette approche ne peut détecter qu’un seul objet. Si vous voulez détecter multi type d’objet, vous pouvez également utiliser d’autre méthode comme sac de Visual Word (BoVW) à l’aide de SIFT/SURF, KMEAN, SVM. Ce genre de méthode non seulement détecte 1 objet, mais ses également détecter plusieurs objets.

Share This:

Leave a Reply

Your email address will not be published. Required fields are marked *