Face Detection using Haar Cascades¶

Basics¶

Object Detection using haar feature-based cascade classifiers is een effectieve object detectie methode voorgesteld door Paul Viola en Michael Jones in hun paper, “Rapid Object Detection using a Boosted Cascade of Simple Features” in 2001. Het is een op machine learning gebaseerde benadering waarbij een cascade-functie wordt getraind uit veel positieve en negatieve beelden. Het wordt dan gebruikt om objecten in andere beelden te detecteren.

Hier zullen we werken met gezichtsdetectie. Aanvankelijk heeft het algoritme veel positieve beelden (afbeeldingen van gezichten) en negatieve beelden (afbeeldingen zonder gezichten) nodig om de classifier te trainen. Dan moeten we er kenmerken uit halen. Voor deze, haar functies weergegeven in onderstaande afbeelding worden gebruikt. Ze zijn net als onze convolutionele kernel. Elke eigenschap is een enkele waarde die wordt verkregen door de som van pixels onder witte rechthoek af te trekken van de som van pixels onder zwarte rechthoek.

haar Features

nu worden alle mogelijke groottes en locaties van elke kernel gebruikt om veel functies te berekenen. (Stel je eens voor hoeveel berekening het nodig heeft? Zelfs een 24×24 venster resulteert in meer dan 160000 functies). Voor elke functieberekening moeten we de som van pixels vinden onder witte en zwarte rechthoeken. Om dit op te lossen, introduceerden ze de integrale beelden. Het vereenvoudigt de berekening van de som van pixels, hoe groot het aantal pixels kan zijn, om een operatie met slechts vier pixels. Mooi, hè? Het maakt dingen supersnel.

maar van al deze eigenschappen die we hebben berekend, zijn de meeste niet relevant. Denk bijvoorbeeld aan de afbeelding hieronder. Bovenste rij toont twee goede functies. De eerste functie geselecteerd lijkt te richten op de eigenschap dat het gebied van de ogen is vaak donkerder dan het gebied van de neus en wangen. De tweede functie geselecteerd is gebaseerd op de eigenschap dat de ogen donkerder zijn dan de brug van de neus. Maar dezelfde vensters van toepassing op wangen of een andere plaats is irrelevant. Dus hoe selecteren we de beste functies uit 160000 + functies? Het wordt bereikt door Adaboost.

gezichtsdetectie

hiervoor passen we elke functie toe op alle trainingsafbeeldingen. Voor elke functie vindt het de beste drempel die de gezichten zal classificeren naar positief en negatief. Maar uiteraard zullen er fouten of misclassificaties zijn. We selecteren de functies met een minimum foutenpercentage, wat betekent dat ze de functies zijn die het beste het gezicht en niet-Gezicht afbeeldingen classificeert. (Het proces is niet zo eenvoudig als dit. Elke afbeelding krijgt in het begin een gelijk gewicht. Na elke classificatie worden de gewichten van verkeerd geclassificeerde beelden verhoogd. Dan weer hetzelfde proces wordt gedaan. Nieuwe foutenpercentages worden berekend. Ook nieuwe gewichten. Het proces wordt voortgezet totdat de vereiste nauwkeurigheid of foutenpercentage is bereikt of het vereiste aantal functies is gevonden).

Eindclassificatie is een gewogen som van deze zwakke classifiers. Het wordt zwak genoemd omdat het alleen het beeld niet kan classificeren, maar samen met anderen een sterke classifier vormt. Het papier zegt zelfs 200 functies bieden detectie met 95% nauwkeurigheid. Hun laatste setup had ongeveer 6000 functies. (Stel je een vermindering van 160000+ functies tot 6000 functies. Dat is een grote winst).

dus nu neem je een afbeelding. Neem elk 24×24 venster. Pas 6000 functies toe. Kijk of het face is of niet. Wow.. Wow.. Is het niet een beetje inefficiënt en tijdrovend? Ja, dat is het. Auteurs hebben daar een goede oplossing voor.

in een afbeelding is het grootste deel van het afbeeldingsgebied niet-gelaatsgebied. Dus het is een beter idee om een eenvoudige methode om te controleren of een venster is niet een gezicht regio. Als dit niet het geval is, gooi het dan weg met één enkele injectie. Verwerk het niet meer. In plaats daarvan richten op regio waar er een gezicht kan zijn. Op deze manier kunnen we meer tijd vinden om een mogelijke gezichtsregio te controleren.

hiervoor introduceerden zij het concept van Cascade van Classifiers. In plaats van alle 6000 functies op een venster toe te passen, groepeer de functies in verschillende fasen van classifiers en toe te passen een-voor-een. (Normaal gesproken zullen de eerste paar fasen veel minder features bevatten). Als een venster de eerste fase faalt, gooi het dan weg. We overwegen niet de resterende functies op het. Als het passeert, de tweede fase van de functies toe te passen en het proces voort te zetten. Het venster dat alle etappes passeert is een gezichtstreek. Hoe is het plan !!!

De detector van de auteurs had meer dan 6000 functies in 38 fasen met 1, 10, 25, 25 en 50 functies in de eerste vijf fasen. (Twee functies in de bovenstaande afbeelding is eigenlijk verkregen als de beste twee functies van Adaboost). Volgens de auteurs, gemiddeld, 10 functies van 6000+ worden geëvalueerd per sub-venster.

Posted on

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.