Stap 5: Haar Cascades--opleiding de Cascade
Dit is waar we een Haar Cascade classificatie OpenCV hulpprogramma van een andere trein. Gewapend met ongeveer 1000 negatieve beelden en 2000 positieve beelden, kunnen we lopen deze opdracht om te beginnen met opleiding:
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>
De meeste van deze zijn de standaardwaarden, een uitzondering is de verhoging van opslageenheid zede van 512Mb tot 2Gb. Ook een ander ding om nota, - numPos en -numNeg moet lager zijn dan het totale aantal beelden daadwerkelijk beschikbaar zijn en in de beschrijving/collectie bestanden beschreven. We vonden dit uit door trial and error, maar het lijkt alsof het hulpprogramma opencv_traincascade langzaam het aantal "verbruikt" beelden stijgt zoals het doorlopen van de opleiding, gaat om te voldoen aan de minHitRate - en - maxFalseAlarmRate, en wanneer er niet genoeg foto's om te consumeren, het verplettert. Bijvoorbeeld, we - numPos 1000 opgeven voor onze loopt, maar door 10e etappe, het "verbruikte" 1030 beelden.
Als alles goed gaat, moet een cascade.xml-bestand verschijnen in de outputDirectory na een paar uren (of dagen).
We schreven een script dat de meeste van dit proces automatiseert.
Met deze instellingen kostte het onze opleiding ongeveer 24 uur om te voltooien. Tijdens het wachten voor de 20 etappes te voltooien, kan dezelfde opencv_traincascade opdracht parallel aan een gedeeltelijke cascade-bestand maken vanuit de stadia die nog volledig worden uitgevoerd. Bijvoorbeeld de volgende opdracht genereert een cascade van de eerste 10 stadia van classificaties in de folder van de output:
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>
Het is in principe dezelfde opdracht, maar met - numStages ingesteld op 10.