Próbuję trenować klasyfikatora Haar, który wykrywa Legos Twarze na zdjęciach, ale mam naprawdę trudno strojenie parametrów.

Wziąłem zdjęcia 3 Legos (50 zdjęć) i za pomocą OpenCV I odizolowałem ich głowy jako obrazy 40x40.

Przykładowy obraz jest następujący:

enter image description here

Dodano do tego, właśnie wziąłem 500 pustych obrazów tła, aby służyć jako negatywne obrazy w moim zestawie danych. Stworzyłem ścieżki i wyprodukowałem plik próbki.VEC, jak opisano w dokumentacji OpenCV.

Potem próbowałem trenować mój klasyfikator Haar. Użyłem tych parametrów, które znalazłem w innym podobnym projekcie: opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt\ -numStages 10 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 1000\ -numNeg 600 -w 40 -h 40 -mode ALL -precalcValBufSize 1024\ -precalcIdxBufSize 1024

Wyniki są naprawdę złe. Klasyfikator rozpoznaje Legos, gdzie nie istnieją, i dziwnie, nie rozpoznaje oczekiwanych twarzy Lego.

Naprawdę w związku z troamim tego klasyfikatora, ponieważ lista parametrów jest ogromna i nie mam żadnych wskazówek, jak ustawić wartości, które doprowadzi do wydajnego klasyfikatora i nie zajmuje wieków do trenowania.

Każda pomoc byłaby doceniana, zwłaszcza o tym, jak wybrać parametry i jaki jest oczekiwany czas szkolenia w "średniego" komputera. Dziękuję za Twój czas!

(P.S.: Czas trwania szkolenia wynosił 2 godziny, które myślę, jest zbyt szybkie, a może jest to przyczyna złego występu).

4
gdaras 8 wrzesień 2017, 15:31

2 odpowiedzi

Najlepsza odpowiedź

Spójrz na moją odpowiedź tutaj - Generowanie dobrych danych szkoleniowych dla Haar kaskady.

Jeśli twój zestaw treningowy jest naprawdę wielkością tego zdjęcia, którą wysłałeś, jest prawdopodobne, że 40x40 jest po prostu drogi do dużej szerokości i wysokości. 2 godziny jest w porządku do treningu, ale o 0,999 nie spodziewałbym się, że szybko dotrze do 10 etapów.

Jest to jeden z tych problemów, w których nie ma odpowiedzi "prawa". Zaproponowałem jednak obrazy o wyższej rezolucji.

odpowiada na pytania Pierwszy komentarz - Trenuj swój klasyfikator na zdjęciach, które będziesz używany, więc jeśli są one niski, a następnie trzymać się niskiej res. Może to być trudniejszy problem.

Drugi komentarz - Jeśli tylko trenujesz w jednej scenie, tj. Jeśli masz stoisko Photo LEGO z wyraźnym tłem i czy kiedykolwiek wykryjesz Int Hat, używaj wszystkiego z wyjątkiem funkcji pozytywnych. To znaczy. tło. Staje się łatwiejszym problemem CV, kiedy mówię, że negatywne jest "wszystko inne", mam na myśli w kategoriach, który próbujesz wykryć. Jeśli próbujesz wykryć Lego Men Chodząc po ulicach Londynu, będziesz potrzebował znacznie większego zestawu negatywnego niż jeśli są na tym samym tle. Może nawet pomóc, aby twoje tło wyraźny kolor lub coś, nie jestem pewien.

3
GPPK 9 wrzesień 2017, 13:15

Problem rozwiązany:

Potrzebowało wyższych obrazów rezolucji i mniejszych maxfalsalarmrate.

Prawdopodobnie niska rozdzielczość obrazu dodała dużo hałasu i wprowadzono w błąd klasyfikatora.

Sugerowałbym ponowne oceny i prawdopodobnie zrekonstruowanie zestawu danych, każdemu, kto stoi przed podobnym problemem.

0
gdaras 9 wrzesień 2017, 22:09