Étape 5: Haar Cascades--formation de la Cascade
C’est où nous formons un classifieur de Cascade de Haar en utilisant un autre utilitaire de OpenCV. Armé avec environ 1000 images négatives et 2000 images positives, nous pouvons exécuter cette commande pour démarrer la formation :
opencv_traincascade -data outputDirectory opencv_traincascade -data outputDirectory -vec cropped.vec \
-bg negativeImageDirectory/negatives.txt \
-numPos 1000 -numNeg 600 -numStages 20 \
-precalcValBufSize 1024 -precalcIdxBufSize 1024 \
-featureType HAAR \
-minHitRate 0.995 -maxFalseAlarmRate 0.5 \
-w 48 -h 48</p>
La plupart d'entre eux est les valeurs par défaut, une exception notable est l’utilisation de la mémoire augmentation de 512 Mo à 2 Go. Aussi, une autre chose à la note, numPos - et numNeg - doit être inférieur au nombre total d’images réellement disponibles et décrite dans les fichiers de description/collection. Nous avons découvert cela par essai et erreur, mais il semble que l’utilitaire opencv_traincascade augmente lentement le nombre d’images « consommé », car il passe par les étapes de la formation, afin de répondre à la - minHitRate et - maxFalseAlarmRate, et quand il n’y a pas assez d’images à consommer, il se bloque. Par exemple, nous spécifié - numPos 1000 pour nos courses, mais par l’étape 10, il a été « consommer » images de 1030.
Si tout va bien, un fichier cascade.xml doit apparaître dans l’outputDirectory après quelques heures (ou jours).
Nous avons écrit un script qui automatise la majeure partie de ce processus.
Avec ces paramètres, il a fallu notre formation environ 24 heures terminer. En attendant les 20 étapes finir, la même commande opencv_traincascade peut être exécutée en parallèle pour créer un fichier de cascade partielle dès les stades qui sont déjà achevées. Par exemple, la commande suivante génère une cascade des 10 premières étapes des classificateurs dans le répertoire de sortie :
opencv_traincascade -data outputDirectory opencv_traincascade -data outputDirectory -vec cropped.vec \
-bg negativeImageDirectory/negatives.txt \
-numPos 1000 -numNeg 600 -numStages 10 \
-precalcValBufSize 1024 -precalcIdxBufSize 1024 \
-featureType HAAR \
-minHitRate 0.995 -maxFalseAlarmRate 0.5 \
-w 48 -h 48</p>
C’est fondamentalement la même commande, mais avec - numStages la valeur 10.