Klasifikace a rozpoznávání Prezentace přednášek Ústav počítačové grafiky a multimédií
Téma přednášky Boosting Michal Hradiš UPGM FIT Brno University of Technology
Obsah: Co je to boosting? Algoritmus AdaBoost Slabé klasifikátory Využití algoritmu AdaBoost Modifikace algoritmu AdaBoost Počítačové vidění / Klasifikátor typu AdaBoost 3
Dostihy a sázky Počítačové vidění / Klasifikátor typu AdaBoost 4
Boosting Kombinace velmi špatných klasifikátorů do silného klasifikátoru Počítačové vidění / Klasifikátor typu AdaBoost 5
Boosting - historie 1984 Probably Approximatly Correct framework (Valiant) 1988 Can weak classifiers be boosted? 1989 First polynomial boosting alg. (Schapire) 1990 Boosting by majority (Freund) 1995 AdaBoost (Freund & Schapire) 1997 Generalized AdaBoost (Schapire & Singer) obrovské množství variací boosting algoritmů Počítačové vidění / Klasifikátor typu AdaBoost 6
Klasifikace formálně Vstup Trénovací data: Výstup Klasifikátor Binární klasifikace {( x y ), K, ( x, y m )}, Χ, y Υ 1, 1 m xi h : Χ Υ Υ = 1, +1 { } i Pojmy Příznak (feature) Vektor příznaků (feature vector) Klasifikátor klasifikační pravidlo (classifier, classification rule) Trénovací datová sada Validační datová sada Testovací datová sada Počítačové vidění / Klasifikátor typu AdaBoost 7
Co to je AdaBoost AdaBoost je zkratka pro Adaptive boosting Historicky se jedná o metodu, která umožňuje VHODNÉ spojení několika klasifikátorů s relativně špatnou úspěšností, tzv. SLABÝCH klasifikátorů do jednoho tzv. SILNÉHO klasifikátoru, který je úspěšnější než kterýkoli z oněch slabých klasifikátorů AdaBoost může být a také je užíván ke konstrukci silných klasifikátorů na základě velmi jednoduchých slabých klasifikátorů, které mají jako vstup pouze jeden příznak (threshold, histogram, rozhodovací strom) Počítačové vidění / Klasifikátor typu AdaBoost 8
Co to je AdaBoost Slabý klasifikátor Jediná podmínka chyba menší než 0.5 např.: práh jednoho příznaku, neuronová síť, naivní Bayes Často bývá jejich množina nekonečná ( x ), Χ { 1, 1} {h( x )}is infinite h t + Silný klasifikátor Lineární kombinace slabých klasifikátorů f ( x) α h ( ) = t T t t x H ( x) = sign( f ( x) ), Χ { 1, 1} H ( x) = sign[ α h ( x) + α h ( x) + α h ( x) Kα ( x) ] 1 1 2 2 3 3 T ht Počítačové vidění / Klasifikátor typu AdaBoost 9
Algoritmus AdaBoost Vstupní data: Distribuční funkce přes data (D t (i) je váha pro každé x i ) Opakuj T-krát: {( x y ), K, ( x, y m )}, Χ, y Υ 1, 1 m xi Vyber nebo vytvoř slabý klasifikátor minimalizující chybu na datech váženou pomocí D t (i) α t Výpočet váhy ( ) slabého klasifikátoru podle velikosti jeho chyby Upravení distribuční fce D t (i) (převážení dat). Váha u dobře klasifikovaných dat klesá, naopak u špatně klasifikovaných stoupá. Díky tomuto se nevybere v každém kroku stejný slabý klasifikátor. Váha vzorku lze přímo převést na výsledek klasifikátoru. i Počítačové vidění / Klasifikátor typu AdaBoost 10
Algoritmus AdaBoost FREUND, Y., SCHAPIRE, R. 1997. A decision-theoretic generalization of on-line learning and an application to boosting. Journal of Computer and System Sciences, 55(1):119--139. Počítačové vidění / Klasifikátor typu AdaBoost 11
AdaBoost - chyba na trénovacích datech AdaBoost minimalizuje chybu na trénovacích datech (exp. fce.) Skutečná chyba v kroku t je shora ohraničena pomocí: { i H( x ) } < [ 2 ε ( ε )] εt t ( i )[ yi h t ( x i )] 1 εtr = i y i t 1 m T Trénovací chyba klesá exponenciálně rychle Pokud se stále daří hledat slabé klasifikátory s chybou menší než 0.5, chyba na trénovacích datech v limitě klesne k nule t m = D i = 1 0,2 0,18 0,16 0,14 0,12 0,1 0,08 0,06 0,04 0,02 0 0 10 20 30 40 50 60 70 80 90 Počítačové vidění / Klasifikátor typu AdaBoost 12
AdaBoost - chyba na testovacích datech Existuje i teoretický a spočitatelný horní odhad chyby na testovacích datech (generalizace) založený na Margin Theory (složité) spojitost s SVM Praktické poznatky Na většině dat nemá tendenci se přetrénovat chyba na testovacích datech stále mírně klesá nebo stagnuje i pro vysoká T Dobrá generalizace Problém se šumem v datech Počítačové vidění / Klasifikátor typu AdaBoost 13
Margin theory Větší margin ----> lepší generalizace Does AdaBoost produce maximal margin NO, but is reasonably close Produces large margin classifiers (in hypotheses space) Počítačové vidění / Klasifikátor typu AdaBoost 14
Odolnost vůči šumu AB důvěřuje všem datům Existují i modifikace, které jsou více robustní vůči šumu, ale to vždy vyžaduje nastavení míry spolehlivosti dat Počítačové vidění / Klasifikátor typu AdaBoost 15
AdaBoost - souhrn vlastností Výsledný (silný) klasifikátor je lineární kombinací jednoduchých (slabých) klasifikátorů, ale NENÍ lineárním klasifikátorem Dobrá generalizace většinou se nepřetrénuje Není příliš odolný vůči šumu v datech První iterace trvá stejně dlouho jako 100. i 1000. iterace. Informace o úspěšnosti klasifikace dříve vybraných slabých klasifikátorů na jednotlivé vzory je obsažena v distribuční funkci (vahách) D t (i) Jsou známy rozumné horní odhady (meze) pro trénovací i testovací chybu Dobrý teoretický základ Počítačové vidění / Klasifikátor typu AdaBoost 16
AdaBoost modifikace Real AdaBoost Slabé klasifikátory dávají reálné hodnoty (už ne +1, -1, ale 4.2345) Velmi dobré a prospěšné Mnohem rychlejší konvergence (kratší klasifikátor) Pravděpodobně i lepší úspěšnost klasifikátoru na testovacích datech Real AdaBoost by měl být vaší první volbou, velmi často má v praktických úlohách nejlepší výsledky (i když existují algoritmy, které by měly mít teoreticky lepší vlastnosti) Počítačové vidění / Klasifikátor typu AdaBoost 17
Slabé klasifikátory Threshold Nalezen nejlepší (minimalizující kritérium z AB) v jednom průchodu Rozhodovací stromy Rekurzivní threshold Biny Najdi rozsah hodnot příznaku Rozsah rozděl na x stejných binů Pro každý bin vlastní predikce Raději náhodné transformace, než na začátku udělat PCA Počítačové vidění / Klasifikátor typu AdaBoost 18
Využití AB Pro co se hodí Když je velké množství příznaků (1000 10M) Když nevíte, jak transformovat data (jaké příznaky počítat), můžete zkusit všechno možné a AB si něco vybere Když potřebujete jednoduše vytvořit slušně rychlý klasifikátor Když chcete spojit několik klasifikátorů Počítačové vidění / Klasifikátor typu AdaBoost 19
Příklad: detekce střihu Příznaky Vzdálenost RGB histogramů Absolutní rozdíl hodnot pixelů (a také umocněný) Korelace Na gridu 4 x 4 Střední hodnota, medián, standard. odchylka, 4000 příznaků Slabé klasifikátory rozhodovací stromy AdaBoost je tu střih / není tu střih Počítačové vidění / Klasifikátor typu AdaBoost 20
Detekce obličeje Počítačové vidění / Klasifikátor typu AdaBoost 21
Detekce objektů v obraze s klasifikátory Skenování obrazu klasifikátorem Invariance vůči posunu = posun klasifikátoru Invariance vůči zvětšení = zvětšení klasifikátoru / zmenšení obrazu Invariance vůči rotaci = rotace obrazu Problém - milióny možných pozic (rychlost) Problém - objekty nejsou 2D c 1 Klasifikátor Pozadí Rogalo Počítačové vidění / Klasifikátor typu AdaBoost 22
Kaskáda klasifikátorů pro detekci Předpoklady: Potřebujeme nízkou False Alarm Rate (milióny pozic) Potřebujeme vysokou rychlost Máme neomezenou zásobu trénovacích dat pro třídu pozadí (náhodné výřezy z obrázků bez hledaného objektu) Každý stupeň kaskády zahodí výřezy, které určitě nejsou hledaným objektem, jinak se pokračuje dalším stupněm Postupně jsou stupně složitější F 1 < F 2 < F 3 Data se zahazují i při trénování Zahozená data se doplňují V obraze je většina výřezů bez hledaného objektu -> nízká doba vyhodnocení Počítačové vidění / Klasifikátor typu AdaBoost 23
Viola&Jones detekce obličeje Kaskáda klasifikátorů Stupně vytvořené pomocí alg. AdaBoost Jednoduché slabé klasifikátory threshold Vstupem slabých klasifikátorů nejsou hodnoty pixelů původního obrazu Transformace obrazu pomocí Haarových příznaků Využívá naše vědomosti o obrazu korelace sousedních pixelů Extrahují informace o lokální frekvenci Je jich hodně (180 000 v 24x24) -> AdaBoost má z čeho vybírat Rychlý výpočet pomocí integrálního obrazu 1,5 1 0,5 0-0,5-1 -1,5 VIOLA, P., JONES, M. 2001 Rapid object detection using a boosted cascade of simple features. In CVPR. Počítačové vidění / Klasifikátor typu AdaBoost 24
Integrální obraz SAT(x,y) = SUM( I(x-i,y-j)) Suma intenzity v osově souměrném obdélníku: =A-B-C+D Výpočet Haarovy vlnky Rychlost nezávisí na velikosti Umožňuje zvětšovat klasifikátor F = W-B F = (A-B-D+E)-(B-C-E+F) F = A+2E-2B-D+C-F W B Počítačové vidění / Klasifikátor typu AdaBoost 25
Trénovací data Počítačové vidění / Klasifikátor typu AdaBoost 26
Vyhodnocování chyb CMU+MIT Dataset Počítačové vidění / Klasifikátor typu AdaBoost 27
AdaBoost Možnosti modifikace Greedy Criterion for Weak Learner Optimal prediction Weight update (cost function) Počítačové vidění / Klasifikátor typu AdaBoost 28
AdaBoost - modifikace Optimalizace silného klasifikátoru Float Boost, Boosting Chain, Kullback-Leibler Boosting, Totally Corrective Updates Maximum margin klasifikátory Linear Programming Boosting, ε-boosting, Arc-GV, Marginal AdaBoost, Coordinate Ascent Boosting Nejsou výrazně lepší (vhodnější) než Real AdaBoost Počítačové vidění / Klasifikátor typu AdaBoost 29
Multi-class AdaBoost Jde to Samostatné binární klasifikátory + hlasování 1-N, 1-1 Jeden velký binární problém Přidají se kategorické příznaky 1-N 1-1 příznaky ID třídy - nový label ANO/NE Příznaky ID třídy 1 ID třídy 2 - nový label 1.tř / 2.tř Vybírají se slabé klasifikátory, které přinesou informaci pro všechny poblémy, ale celkově složitější Existují i lepší možnosti, ale jsou složitější Počítačové vidění / Klasifikátor typu AdaBoost 30
Shrnutí AdaBoost Lineární kombinace slabých klasifikátorů Slabé klasifikátory bývají často velmi jednoduché, ale může to být ve skutečnosti cokoliv. Podmínka: Chyba slabého klasifikátoru musí být menší než 0.5 na vážených datech. Váhy vzorku nesou veškerou informaci o předchozích iteracích Alfa je funkcí vážené chyby slabého klasifikátoru Chování chyby na trénovacích datech Chování chyby na testovacích datech Počítačové vidění / Klasifikátor typu AdaBoost 31
Shrnutí Detekce v obraze pomocí klasifikátorů Skenování obrazu klasifikátorem (posun, zoom, rotace) Milióny pozic -> potřebujeme rychlý klasifikátor, nízká False Alarm Rate Kaskáda klasifikátorů Co to je? Proč? -> rychlost, nízká FAR, máme nekonečně vzorků pozadí Viola&Jones AdaBoost, Kaskáda, thresholdy, Haarovy příznaky, integrální obraz Integrální obraz a Haarovy příznaky Co je to integrální obraz? Jak se spočítá odezva Haarových příznaků? Jak rychle? Na čem se trénuje detektor Co je to ROC? Počítačové vidění / Klasifikátor typu AdaBoost 32
Odkazy DEMO: http://cmp.felk.cvut.cz/demos/facedetection/ Viola, P., Jones, M.: Rapid object detection using a boosted cascade of simple features. In CVPR, 2001. Freund, Y., Schapire, R..: A short introduction to boosting. J. Japan. Soc. for Artif. Intel. 14(5), 1999, s. 771-780. Schapire, R.: The boosting approach to machine learning: An overview. In MSRI Workshop on Nonlinear Estimation and Classification, Berkeley, CA, Mar. 2001. Schapire, R., Singer, Y.: Improved boosting algorithms using confidence-rated predictions. In: Machine Learning, 37(3), 1999, s. 297-336. Počítačové vidění / Klasifikátor typu AdaBoost 33