ansigtsgenkendelse ved hjælp af Haar Cascades Karra

Basics Karra

Object Detection ved hjælp af Haar feature-baserede kaskadeklassifikatorer er en effektiv objektdetekteringsmetode foreslået af Paul Viola og Michael Jones i deres papir, “Rapid Object Detection using a Boosted Cascade of Simple Features” i 2001. Det er en maskinlæringsbaseret tilgang, hvor en kaskadefunktion trænes ud fra en masse positive og negative billeder. Det bruges derefter til at registrere objekter i andre billeder.

Her vil vi arbejde med ansigtsgenkendelse. I første omgang har algoritmen brug for mange positive billeder (billeder af ansigter) og negative billeder (billeder uden ansigter) for at træne klassifikatoren. Så skal vi udtrække funktioner fra det. Til dette bruges haar-funktioner vist i nedenstående billede. De er ligesom vores convolutional kerne. Hver funktion er en enkelt værdi opnået ved at trække summen af billedpunkter under hvidt rektangel fra summen af billedpunkter under sort rektangel.

Haar funktioner

nu bruges alle mulige størrelser og placeringer af hver kerne til at beregne masser af funktioner. (Forestil dig, hvor meget beregning Det har brug for? Selv et 24h24 vindue resulterer i over 160000 funktioner). For hver funktion beregning, er vi nødt til at finde summen af billedpunkter under hvide og sorte rektangler. For at løse dette introducerede de de integrerede billeder. Det forenkler beregningen af summen af billedpunkter, hvor stort antallet af billedpunkter kan være, til en operation, der kun involverer fire billedpunkter. Flot, ikke? Det gør tingene superhurtige.

men blandt alle disse funktioner, vi har beregnet, er de fleste af dem irrelevante. For eksempel overveje billedet nedenfor. Øverste række viser to gode funktioner. Den første valgte funktion ser ud til at fokusere på ejendommen, at øjenområdet ofte er mørkere end næsen og kinderne. Den anden valgte funktion er afhængig af ejendommen, at øjnene er mørkere end næsebroen. Men de samme vinduer, der gælder på kinder eller ethvert andet sted, er irrelevante. Så hvordan vælger vi de bedste funktioner ud af 160000 + funktioner? Det opnås ved Adaboost.

ansigtsgenkendelse

til dette anvender vi hver eneste funktion på alle træningsbillederne. For hver funktion finder den den bedste tærskel, der klassificerer ansigterne til positive og negative. Men selvfølgelig vil der være fejl eller fejlklassifikationer. Vi vælger funktionerne med minimal fejlfrekvens, hvilket betyder, at de er de funktioner, der bedst klassificerer ansigt og ikke-ansigtsbilleder. (Processen er ikke så enkel som denne . Hvert billede får en lige vægt i starten. Efter hver klassificering øges vægten af forkert klassificerede billeder. Så igen samme proces er færdig. Nye fejlprocenter beregnes. Også nye vægte. Processen fortsættes, indtil den krævede nøjagtighed eller fejlfrekvens er opnået, eller det krævede antal funktioner findes).

endelig klassifikator er en vægtet sum af disse svage klassifikatorer. Det kaldes svagt, fordi det alene ikke kan klassificere billedet, men sammen med andre danner en stærk klassifikator. Papiret siger, at selv 200 funktioner giver detektion med 95% nøjagtighed. Deres endelige opsætning havde omkring 6000 funktioner. (Forestil dig en reduktion fra 160000 + funktioner til 6000 funktioner. Det er en stor gevinst).

så nu tager du et billede. Tag hvert 24h24 vindue. Anvend 6000 funktioner til det. Kontroller, om det er ansigt eller ej. Wow.. Wow.. Er det ikke lidt ineffektivt og tidskrævende? Jo, det er. Forfattere har en god løsning til det.

i et billede er det meste af billedområdet ikke-ansigtsområde. Så det er en bedre ide at have en enkel metode til at kontrollere, om et vindue ikke er et ansigtsområde. Hvis det ikke er tilfældet, skal du kassere det i et enkelt skud. Behandl det ikke igen. I stedet fokusere på region, hvor der kan være et ansigt. På denne måde kan vi finde mere tid til at kontrollere en mulig ansigtsregion.

til dette introducerede de begrebet kaskade af klassifikatorer. I stedet for at anvende alle de 6000 funktioner på et vindue, gruppere funktionerne i forskellige faser af klassifikatorer og anvende en-efter-en. (Normalt første par etaper vil indeholde meget mindre antal funktioner). Hvis et vindue fejler det første trin, skal du kassere det. Vi overvejer ikke de resterende funktioner på den. Hvis det passerer, skal du anvende den anden fase af funktioner og fortsætte processen. Vinduet, der passerer alle faser, er et ansigtsområde. Hvordan er planen !!!

forfatteres detektor havde 6000+ funktioner med 38 trin med 1, 10, 25, 25 og 50 funktioner i de første fem trin. (To funktioner i ovenstående billede er faktisk opnået som de bedste to funktioner fra Adaboost). Ifølge forfattere vurderes i gennemsnit 10 funktioner ud af 6000+ pr.

Posted on

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.