Znajdź źródła: „Cascading classifiers” – news – newspapers – books – scholar – JSTOR (June 2019) (Learn how and when to remove this template message)
Skalowanie i rotacjeEdit
Z tego opisu wynika, że klasyfikator nie zaakceptuje twarzy, które są odwrócone do góry nogami (brwi nie są w prawidłowej pozycji) lub z boku twarzy (nos nie jest już w centrum, a cieni z boku nosa może brakować). Oddzielne klasyfikatory kaskadowe muszą być wytrenowane dla każdego obrotu, który nie jest w płaszczyźnie obrazu (bok twarzy) i będą musiały być ponownie wytrenowane lub uruchomione na obróconych cechach dla każdego obrotu, który jest w płaszczyźnie obrazu (twarz do góry nogami lub przechylona na bok). Skalowanie nie jest problemem, ponieważ cechy mogą być skalowane (centerpixel, leftpixels i rightpixels mają wymiar tylko w stosunku do badanego prostokąta). W ostatnich kaskadach wartości pikseli z jakiejś części prostokąta w porównaniu z inną zostały zastąpione falkami Haara.
Właściwości etapówEdit
Aby uzyskać dobrą ogólną wydajność, muszą być spełnione następujące kryteria:
- Każdy etap musi zweryfikować wszystkie twarze i może dać wiele wyników fałszywie pozytywnych. Na przykład, jeśli etap 1 oznaczałby jako „nie zawiera twarzy” 20% prostokątów zawierających twarze (współczynnik fałszywych negatywów=20%), to całkowita wydajność łańcucha nie może być wyższa niż 80% prawdziwych pozytywów, niezależnie od tego, jakie są następne etapy, ponieważ 20% twarzy zostało już odrzuconych.
- Sugeruje to, że dobry etap musi mieć 100% prawdziwych pozytywów i na przykład 40% fałszywych pozytywów, czyli akceptować wszystkie prostokąty zawierające twarze i błędnie oznaczać wiele prostokątów jako potencjalnie zawierające twarze, które zostaną wyeliminowane przez późniejsze etapy. Dla pierwszego etapu, 100% true positive i 40% false positive nadal daje dużo false negative, jeśli tylko 1 na 1000 prostokątów w obrazie zawiera twarz, nadal będzie 400 do 1 false możliwych twarzy po pierwszym etapie.
- Jeśli pierwszy etap jest bardzo szybki (kilka operacji), mamy wyeliminowane 60% prostokątów nie zawierających twarzy bardzo szybko.
Procedura treningowa dla jednego etapu polega więc na tym, aby mieć wiele słabych uczących (proste operatory różnicy pikseli), trenować je jako grupę (podnosić ich wagę, jeśli dają poprawny wynik), ale pamiętać o tym, aby mieć tylko kilka aktywnych słabych uczących, aby czas obliczeń pozostał niski.
Pierwszy detektor Violi & Jones miał 38 etapów, z 1 cechą w pierwszym etapie, następnie 10, 25, 25, 50 w kolejnych pięciu etapach, w sumie 6000 cech. Pierwsze etapy szybko usuwają niechciane prostokąty, aby uniknąć ponoszenia kosztów obliczeniowych kolejnych etapów, dzięki czemu czas obliczeniowy jest poświęcany na dogłębną analizę części obrazu, które z dużym prawdopodobieństwem zawierają obiekt.
Trening kaskadowyEdit
Kaskady są zwykle wykonywane poprzez świadomy kosztów ADAboost. Próg czułości (0.8 w naszym przykładzie) może być dostosowany tak, aby było blisko 100% prawdziwych pozytywów i kilka fałszywych pozytywów. Procedura może być następnie rozpoczęta ponownie dla etapu 2, aż do osiągnięcia pożądanej dokładności/czasu obliczeń.
Po wstępnym algorytmie zrozumiano, że szkolenie kaskady jako całości może być zoptymalizowane, aby osiągnąć pożądany wskaźnik prawdziwej wykrywalności przy minimalnej złożoności. Przykładami takich algorytmów są RCBoost, ECBoost lub RCECBoost. W najbardziej podstawowych wersjach można je rozumieć jako wybieranie, na każdym etapie, pomiędzy dodaniem etapu lub dodaniem słabego uczącego się do poprzedniego etapu, w zależności od tego, który z nich jest mniej kosztowny, aż do osiągnięcia pożądanej dokładności. Każdy etap klasyfikatora nie może mieć wskaźnika wykrywalności (czułości) poniżej pożądanego wskaźnika, więc jest to ograniczony problem optymalizacyjny. Dokładnie mówiąc, całkowita czułość będzie iloczynem czułości etapów.
Klasyfikatory kaskadowe są dostępne w OpenCV, z wstępnie wytrenowanymi kaskadami dla twarzy czołowych i górnej części ciała. Trening nowej kaskady w OpenCV jest również możliwy za pomocą metod haar_training lub train_cascades. Może to być wykorzystane do szybkiego wykrywania bardziej specyficznych obiektów, w tym obiektów innych niż ludzkie z cechami Haar-like. Proces wymaga dwóch zestawów próbek: negatywnych i pozytywnych, gdzie próbki negatywne odpowiadają arbitralnym obrazom nie-obiektów. Ograniczenie czasowe w trenowaniu klasyfikatora kaskadowego może być ominięte przy użyciu metod cloud-computing.