2016-07-28 8 views
9

Używam opencv_traincascade do wykrywania obiektów. Próbuję znaleźć okulary na zdjęciu. W tym celu pobrałem 830 zdjęć takich jak to: http://pi1.lmcdn.ru/product/V/I/VI060DWIHZ27_1_v2.jpgWyjątek OpenCV po 1 dniu obliczeń

Następnie pobrałem wiele zdjęć z modelem w sukienkach lub po prostu sukienkami, 1799 zdjęć.

Pozostaje już rozpocząć opencv_traincascade parametrów: opencv_traincascade -Data Funkcja/klasyfikatora -vec samples.vec -bg negatives.txt -numStages 10 -minHitRate 0,999 -maxFalseAlarmRate 0,5 -numPos 830 -numNeg 1799 -w 60 -h 90 -mode ALL -precalcValBufSize 1024 -precalcIdxBufSize 1024

Ale po kroku 4 otrzymuję komunikat: Zbiór danych o ruchu na etapie tymczasowym nie może zostać wypełniony. Szkolenie oddziałowe zakończyło się.

Pełne StackTrace jest:

➜ pictureFeature opencv_traincascade -data Feature/classifier -vec samples.vec -bg negatives.txt -numStages 10 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 830 -numNeg 1799 -w 60 -h 90 -mode ALL -precalcValBufSize 1024 -precalcIdxBufSize 1024 

PARAMETERS: 
cascadeDirName: Feature/classifier 
vecFileName: samples.vec 
bgFileName: negatives.txt 
numPos: 830 
numNeg: 1799 
numStages: 10 
precalcValBufSize[Mb] : 1024 
precalcIdxBufSize[Mb] : 1024 
acceptanceRatioBreakValue : -1 
stageType: BOOST 
featureType: HAAR 
sampleWidth: 60 
sampleHeight: 90 
boostType: GAB 
minHitRate: 0.999 
maxFalseAlarmRate: 0.5 
weightTrimRate: 0.95 
maxDepth: 1 
maxWeakCount: 100 
mode: ALL 



===== TRAINING 0-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 1 
Precalculation time: 26 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  1| 
+----+---------+---------+ 
| 2|  1|  1| 
+----+---------+---------+ 
| 3|  1| 0.145636| 
+----+---------+---------+ 

END> 
Training until now has taken 0 days 5 hours 22 minutes 10 seconds. 

===== TRAINING 1-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 0.145715 
Precalculation time: 24 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  1| 
+----+---------+---------+ 
| 2|  1|  1| 
+----+---------+---------+ 
| 3|  1|  1| 
+----+---------+---------+ 
| 4|  1| 0.762646| 
+----+---------+---------+ 
| 5|  1| 0.432462| 
+----+---------+---------+ 

END> 
Training until now has taken 0 days 14 hours 38 minutes 28 seconds. 

===== TRAINING 2-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 0.062696 
Precalculation time: 28 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  1| 
+----+---------+---------+ 
| 2|  1|  1| 
+----+---------+---------+ 
| 3|  1|  1| 
+----+---------+---------+ 
| 4|  1| 0.590328| 
+----+---------+---------+ 
| 5|  1| 0.187326| 
+----+---------+---------+ 

END> 
Training until now has taken 0 days 23 hours 21 minutes 4 seconds. 

===== TRAINING 3-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 0.0117929 
Precalculation time: 21 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  1| 
+----+---------+---------+ 
| 2|  1|  1| 
+----+---------+---------+ 
| 3|  1|0.0944969| 
+----+---------+---------+ 

END> 
Training until now has taken 1 days 3 hours 47 minutes 34 seconds. 

===== TRAINING 4-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 0.00112161 
Precalculation time: 18 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  0| 
+----+---------+---------+ 

END> 
Training until now has taken 1 days 5 hours 4 minutes 35 seconds. 

===== TRAINING 5-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
Train dataset for temp stage can not be filled. Branch training terminated. 

Próbowałem użyć cascade.xml do wyszukiwania obiektów, ale wynik był całkowicie zawodzą.

enter image description here

Może ktoś pomóc z moim problemem?

+0

sklasyfikować: musisz zebrać pozytywne i negatywne wizerunki szkoleniowych (pozytywne: słuchawki + okulary i negatywne: tylko głowa) na twojej próbce img jest tylko okulary przeciwsłoneczne na zdjęciu –

+0

Czy plik bg.txt został wygenerowany w systemie Windows? –

Odpowiedz

3

Jeśli spojrzysz na błąd, okaże się, że zatrzymał się on przy "NEG count", co oznacza, że ​​wystąpił problem z odczytaniem negatywnych obrazów zestawu danych treningowych na etapie 5.Musisz więc poprawić ścieżkę do negatywnych próbek treningowych, aby działała.

Oto szczegółowa dyskusja na ten temat, który może być pomocny: Cascade Training Error OpenCV 2.4.4

może być również problem z plikiem bg.txt, tutaj jest inna odpowiedź: error in train casacde.

Kolejny post z podobnym error: Train dataset for temp stage can not be filled.

Jeśli nic nie działa spróbuj użyć innej wersji otwartej CV: http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download

3

To dość powszechny błąd. Nie znam się zbyt dobrze na tym błędzie i mogę tylko odgadnąć rozwiązanie, ponieważ istnieje wiele możliwych przyczyn tego błędu.

To może być w stosunku do struktury katalogów (tylko zauważyć, że droga do negatywnych przykładów powinny być w stosunku do bieżącego katalogu)

lub z powodu przerwy w linii bg pliku (negatives.txt w danym przypadku) są źle zakodowane. Czy możesz jeszcze raz sprawdzić, czy ostatni znak każdej linii w pliku "negatives.txt" to "\ n", a nie "\ r"?

Należy także stara się utrzymać pozytywny stosunek do negatywnej próbki około 25% -30%

I wreszcie mieć pewność, że wszystkie pozytywne i negatywne obrazy zawierają oblicze głowy:

w obrazie próbki (jeden z 830) widać tylko jedno okulary przeciwsłoneczne (bez głowy, nie słychać, nie ma włosów) tylko białe tło, więc klasyfikator nareszcie będzie trenował, aby rozpoznawać okulary tylko na białym tle, więc nie ma szansy rozpoznać okulary przeciwsłoneczne, gdy twarz jest widoczna;

staraj się przestrzegać:

  • pozytywny obraz = headface okulary

  • negatywny obraz = headface tylko

Pozdrowienia

Powiązane problemy