Rámec detekce objektů Viola – Jones - Viola–Jones object detection framework - Wikipedia
Tento článek možná bude muset být přepsáno vyhovět požadavkům Wikipedie standardy kvality.Února 2015) ( |
The Rámec detekce objektů Viola – Jones je detekce objektů rámec, který v roce 2001 navrhl Paul Viola a Michael Jones.[1][2] I když jej lze vycvičit k detekci různých tříd objektů, byl motivován především problémem detekce obličeje.
Popis problému
Problém, který je třeba vyřešit, je detekce tváří v obraze. Člověk to dokáže snadno, ale počítač potřebuje přesné pokyny a omezení. Aby byl úkol lépe zvládnutelný, vyžaduje Viola – Jones čelní vzpřímené tváře s plným výhledem. Aby mohla být detekována, musí celá tvář směřovat k fotoaparátu a neměla by být nakloněna na žádnou stranu. I když se zdá, že by tato omezení mohla poněkud snížit užitečnost algoritmu, protože po kroku detekce nejčastěji následuje krok rozpoznávání, v praxi jsou tyto limity polohy docela přijatelné.
Složky rámce
Typy funkcí a hodnocení
Vlastnosti algoritmu Viola – Jones, které z něj dělají dobrý detekční algoritmus, jsou:
- Robustní - velmi vysoká míra detekce (pravda-pozitivní míra) a velmi nízká míra falešně pozitivních výsledků vždy.
- Real time - U praktických aplikací musí být zpracovány minimálně 2 snímky za sekundu.
- Pouze detekce obličeje (ne rozpoznávání) - Cílem je odlišit tváře od jiných než tváří (detekce je prvním krokem v procesu rozpoznávání).
Algoritmus má čtyři fáze:
- Výběr funkcí Haar
- Vytvoření integrálního obrazu
- Adaboost školení
- Kaskádové klasifikátory
Funkce hledané v detekčním rámci obecně zahrnují součty obrazových pixelů v obdélníkových oblastech. Proto mají určitou podobnost Haarovy základní funkce, které byly dříve použity v oblasti detekce objektů na základě obrazu.[3] Jelikož se však funkce používané Violou a Jonesem spoléhají na více než jednu obdélníkovou oblast, jsou obecně složitější. Obrázek vpravo ilustruje čtyři různé typy funkcí použitých v rámci. Hodnota jakékoli dané funkce je součet pixelů v jasných obdélnících odečtených od součtu pixelů ve stínovaných obdélnících. Obdélníkové prvky tohoto druhu jsou primitivní ve srovnání s alternativami, jako je řiditelné filtry. I když jsou citliví na vertikální a horizontální prvky, jejich zpětná vazba je podstatně hrubší.
Funkce Haar
Všechny lidské tváře sdílejí některé podobné vlastnosti. Tyto zákonitosti lze přiřadit pomocí Funkce Haar.
Několik vlastností společných pro lidské tváře:
- Oční oblast je tmavší než horní líce.
- Oblast můstku nosu je jasnější než oči.
Složení vlastností tvořících srovnatelné rysy obličeje:
- Umístění a velikost: oči, ústa, hřbet nosu
- Hodnota: orientované přechody intenzit pixelů
Čtyři prvky odpovídající tomuto algoritmu jsou poté hledány v obraze tváře (zobrazeno vpravo).
Funkce obdélníku:
- Hodnota = Σ (pixely v černé oblasti) - Σ (pixely v bílé oblasti)
- Tři typy: dva, tři, čtyři obdélníky, Viola & Jones použila funkce dvou obdélníků
- Například: rozdíl v jasu mezi bílými a černými obdélníky nad určitou oblastí
- Každá funkce souvisí se zvláštním umístěním v dílčím okně
Tabulka sečtených ploch
Reprezentace obrazu zvaná integrální obraz vyhodnotí obdélníkové prvky v konstantní čas, což jim dává značnou rychlostní výhodu oproti propracovanějším alternativním funkcím. Protože obdélníková oblast každého prvku vždy sousedí s alespoň jedním dalším obdélníkem, vyplývá z toho, že jakýkoli prvek se dvěma obdélníky lze vypočítat v šesti odkazech na pole, jakýkoli prvek se třemi obdélníky v osmi a jakýkoli prvek se čtyřmi obdélníky v devíti.
Algoritmus učení
Rychlost, s jakou mohou být funkce vyhodnoceny, však jejich počet adekvátně nevykompenzuje. Například ve standardním dílčím okně 24x24 pixelů je celkem M = 162,336[4] možné funkce a jejich vyhodnocení při testování obrazu by bylo neúnosně nákladné. Rámec detekce objektů tedy využívá variantu algoritmu učení AdaBoost jak vybrat nejlepší funkce, tak trénovat klasifikátory, které je používají. Tento algoritmus konstruuje „silný“ klasifikátor jako lineární kombinaci vážených jednoduchých „slabých“ klasifikátorů.
Každý slabý klasifikátor je prahová funkce založená na funkci .
Prahová hodnota a polarita jsou určeny v tréninku, stejně jako koeficienty .
Zde je uvedena zjednodušená verze algoritmu učení:[5]
Vstup: Množina N pozitivní a negativní tréninkové obrázky s jejich štítky . Pokud obrázek i je tvář , Pokud ne .
- Inicializace: přiřadit váhu ke každému obrázku i.
- Pro každou funkci s
- Znovu normalizujte váhy tak, aby součet činil jednu.
- Použijte funkci na každý obrázek v tréninkové sadě a poté najděte optimální prahovou hodnotu a polaritu který minimalizuje váženou chybu klasifikace. To je kde
- Přiřaďte váhu na to je nepřímo úměrné míře chyb. Tímto způsobem jsou nejlepší klasifikátory považovány za více.
- Váhy pro další iteraci, tj. , jsou pro obrázky zmenšeny i které byly správně klasifikovány.
- Nastavte konečný klasifikátor na
Kaskádová architektura
- V průměru pouze 0,01% všech dílčích oken je kladných (tváře)
- Stejný výpočetní čas se vynakládá na všechna dílčí okna
- Musí trávit většinu času pouze na potenciálně pozitivních dílčích oknech.
- Jednoduchý klasifikátor se dvěma vlastnostmi může dosáhnout téměř 100% míry detekce s 50% rychlostí FP.
- Tento klasifikátor může fungovat jako první vrstva řady k odfiltrování většiny negativních oken
- 2. vrstva s 10 funkcemi zvládne „tvrdší“ negativní okna, která přežila 1. vrstvu atd. ...
- Kaskáda postupně složitějších klasifikátorů dosahuje ještě lepších rychlostí detekce. Vyhodnocení silných klasifikátorů generovaných procesem učení lze provést rychle, ale není dostatečně rychlé na to, aby fungovalo v reálném čase. Z tohoto důvodu jsou silné klasifikátory uspořádány do kaskády v pořadí složitosti, kde je každý následný klasifikátor trénován pouze na těch vybraných vzorcích, které procházejí předchozími klasifikátory. Pokud v kterékoli fázi kaskády klasifikátor odmítne kontrolované dílčí okno, neprovádí se žádné další zpracování a pokračuje v hledání dalšího dílčího okna. Kaskáda má tedy podobu zdegenerovaného stromu. V případě tváří používá první klasifikátor v kaskádě - nazývaný operátor pozornosti - pouze dvě funkce k dosažení míry falešně negativních výsledků přibližně 0% a falešně pozitivních hodnot 40%.[6] Účinkem tohoto jediného klasifikátoru je snížení zhruba polovičního počtu vyhodnocení celé kaskády.
Při kaskádování se každá fáze skládá ze silného klasifikátoru. Takže všechny funkce jsou seskupeny do několika fází, kde každá fáze má určitý počet funkcí.
Úkolem každé fáze je určit, zda dané podokno rozhodně není tváří nebo může být tváří. Dané dílčí okno je okamžitě zahozeno jako obličej, pokud selže v některé z fází.
Níže je uveden jednoduchý rámec pro kaskádové školení:
- f = maximální přijatelná míra falešně pozitivních výsledků na vrstvu.
- d = minimální přijatelná rychlost detekce na vrstvu.
- Ftarget = cílová celková míra falešně pozitivních výsledků.
- P = soubor pozitivních příkladů.
- N = soubor negativních příkladů.
F (0) = 1,0; D (0) = 1,0; i = 0zatímco F (i)> Ftarget zvýšit i n (i) = 0; F (i) = F (i-1) zatímco F (i)> f × F (i-1) zvýšit n (i) použít P a N k trénování klasifikátoru pomocí funkcí n (I) pomocí AdaBoost Vyhodnoťte aktuální kaskádový klasifikátor na ověřovací sadě a určete F (i) a D (i) pokles prahová hodnota pro i-tý klasifikátor (tj. kolik slabých klasifikátorů musí přijmout, aby silný klasifikátor akceptoval) dokud aktuální kaskádový klasifikátor má detekční rychlost alespoň d × D (i-1) (to má vliv i na F (i)) N = ∅ -li F (i)> Ftarget pak vyhodnotit aktuální kaskádový detektor na sadě ne-obličejových obrazů a do sady N dát jakékoli falešné detekce
Kaskádová architektura má zajímavé důsledky pro výkon jednotlivých klasifikátorů. Protože aktivace každého klasifikátoru závisí zcela na chování jeho předchůdce, míra falešně pozitivních výsledků pro celou kaskádu je:
Podobně je rychlost detekce:
Tudíž, aby se shodovaly s falešně pozitivními hodnotami typicky dosaženými jinými detektory, každý klasifikátor se může zbavit překvapivě špatného výkonu. Například pro 32stupňovou kaskádu dosáhnout falešně pozitivní rychlosti 10−6, každý klasifikátor musí dosáhnout pouze falešně pozitivního hodnocení asi 65%. Zároveň však musí být každý klasifikátor výjimečně schopný, má-li dosáhnout odpovídající rychlosti detekce. Například pro dosažení míry detekce asi 90% musí každý klasifikátor ve výše uvedené kaskádě dosáhnout míry detekce přibližně 99,7%.[7]
Použití nástroje Viola – Jones pro sledování objektů
U videí pohybujících se objektů nemusí být na každý snímek aplikována detekce objektů. Místo toho lze použít sledovací algoritmy, jako je Algoritmus KLT k detekci hlavních prvků v ohraničovacích rámečcích detekce a sledování jejich pohybu mezi snímky. Nejen, že to zlepší rychlost sledování odstraněním nutnosti znovu detekovat objekty v každém snímku, ale také to zlepší robustnost, protože hlavní rysy jsou odolnější než detekční rámec Viola-Jones vůči rotaci a fotometrickým změnám.[8]
Reference
- ^ Rychlá detekce objektů pomocí vylepšené kaskády jednoduchých funkcí
- ^ Viola, Jones: Robustní detekce objektů v reálném čase, IJCV 2001 Viz strany 1,3.
- ^ C. Papageorgiou, M. Oren a T. Poggio. Obecný rámec pro detekci objektů. Mezinárodní konference o počítačovém vidění, 1998
- ^ „Detekce obličeje Viola-Jonesové požaduje 180 tisíc funkcí“. stackoverflow.com. Citováno 2017-06-27.
- ^ R. Szeliski, Počítačové vidění, algoritmy a aplikaceSpringer
- ^ Viola, Jones: Robustní detekce objektů v reálném čase, IJCV 2001 Viz strana 11.
- ^ Torbert, Shane (2016). Aplikovaná informatika (2. vyd.). Springer. str. 122–131.
- ^ Detekce a sledování obličeje pomocí algoritmu KLT
externí odkazy
- Prezentace snímků
- Informace o základních funkcích Haar
- Rozšíření rámce Viola – Jones pomocí funkce SURF
- IMMI - rozšíření pro těžbu obrázků Rapidminer - open-source nástroj pro těžbu obrázků
- Robustní detekce obličeje v reálném čase
- Vylepšený algoritmus na detektoru objektů Viola-Jones
- Citace algoritmu Viola – Jones ve službě Google Scholar
- Video přednáška o algoritmu Viola – Jones na Youtube - Adaboost Vysvětlení z ppt Qing Chen, Discovery Labs, University of Ottawa a video přednáška Ramsri Goutham.
Implementace
- Implementace algoritmu detekce obličeje Viola – Jones autor: Ole Helvig Jensen
- MATLAB: [1], [2]
- OpenCV: implementováno jako
cvHaarDetectObjects ()
.