Verbind je met ons

Artificial Intelligence

DeepFace voor geavanceerde gezichtsherkenning

mm

Gezichtsherkenning is al enkele jaren een trending vakgebied op het gebied van AI en ML, en de wijdverbreide culturele en sociale implicaties van gezichtsherkenning reiken verstrekkend. Er bestaat echter een prestatiekloof tussen menselijke visuele systemen en machines die momenteel de toepassingen van gezichtsherkenning beperkt. 

Om de buffer te overwinnen die door de prestatiekloof is gecreëerd en om nauwkeurigheid op menselijk niveau te leveren, introduceerde Meta Diep gezicht, een raamwerk voor gezichtsherkenning. Het DeepFace-model is getraind op een grote gezichtsdataset die aanzienlijk verschilt van de datasets die worden gebruikt om de evaluatiebenchmarks samen te stellen, en heeft het potentieel om met minimale aanpassingen beter te presteren dan bestaande raamwerken. Bovendien produceert het DeepFace-framework compacte gezichtsrepresentaties in vergelijking met andere systemen die duizenden gezichtskenmerken produceren. 

Het voorgestelde DeepFace-framework maakt gebruik van Diepe leren trainen op een grote dataset die bestaat uit verschillende vormen van gegevens, waaronder afbeeldingen, video's en grafische afbeeldingen. De DeepFace-netwerkarchitectuur gaat ervan uit dat zodra de uitlijning is voltooid, de locatie van elk gezichtsgebied op pixelniveau wordt vastgelegd. Daarom is het mogelijk om de onbewerkte pixel-RGB-waarden te gebruiken zonder meerdere convolutionele lagen te gebruiken, zoals in andere raamwerken wordt gedaan. 

De conventionele pijplijn van moderne raamwerken voor gezichtsherkenning omvat vier fasen: detectie, afstemming, representatie en classificatie. Het DeepFace-framework maakt gebruik van expliciete 3D-gezichtsmodellering om een ​​stukje-gewijze transformatie toe te passen, en gebruikt een diep neuraal netwerk uit negen lagen om een ​​gezichtsrepresentatie af te leiden. Het DeepFace-framework probeert de volgende bijdragen te leveren

  1. Ontwikkel een effectieve DNN- of Deep Neural Network-architectuur die een grote dataset kan gebruiken om een ​​gezichtsrepresentatie te creëren die kan worden gegeneraliseerd naar andere datasets. 
  2. Gebruik expliciete 3D-modellering om een ​​effectief systeem voor gezichtsuitlijning te ontwikkelen. 

De werking van het DeepFace-model begrijpen

Gezichtsuitlijning

Face Alignment is een techniek die het beeld van een persoon roteert op basis van de hoek van de ogen. Face Alignment is een populaire praktijk die wordt gebruikt om gegevens voor te verwerken gezichtsherkenning, en op het gezicht uitgelijnde datasets helpen bij het verbeteren van de nauwkeurigheid van herkenningsalgoritmen door een genormaliseerde invoer te geven. Het op een ongedwongen manier uitlijnen van gezichten kan echter een uitdagende taak zijn vanwege de vele factoren die hierbij een rol spelen, zoals niet-starre uitdrukkingen, lichaamshoudingen en meer. Verschillende geavanceerde uitlijningstechnieken, zoals het gebruik van een analytisch 3D-model van het gezicht of het zoeken naar vaste punten uit een externe dataset, kunnen ontwikkelaars in staat stellen de uitdagingen te overwinnen. 

Hoewel uitlijning de meest populaire methode is voor onbeperkte gezichtsverificatie en -herkenning, bestaat er momenteel geen perfecte oplossing. Er worden ook 3D-modellen gebruikt, maar hun populariteit is de afgelopen jaren aanzienlijk afgenomen, vooral als er in een omgeving zonder beperkingen wordt gewerkt. Omdat menselijke gezichten echter 3D-objecten zijn, kan dit, als het correct wordt gebruikt, de juiste aanpak zijn. Het DeepFace-model maakt gebruik van een systeem dat vaste punten gebruikt om een ​​analytische 3D-modellering van het gezicht te creëren. Deze 3D-modellering wordt vervolgens gebruikt om een ​​gezichtsuitsnede naar een frontale 3D-modus te vervormen. 

Bovendien maakt de DeepFace-uitlijning, net als de meeste uitlijningspraktijken, ook gebruik van referentiepuntdetectoren om het uitlijningsproces te sturen. Hoewel het DeepFace-model gebruikmaakt van een eenvoudige puntdetector, past het deze in verschillende iteraties toe om de uitvoer te verfijnen. Een Support Vector Regressor of SVR die is getraind om puntconfiguraties te beïnvloeden, haalt bij elke iteratie de referentiepunten uit een beelddescriptor. De afbeeldingsdescriptor van DeepFace is gebaseerd op LBP-histogrammen, maar houdt ook rekening met andere functies. 

2D-uitlijning

Ocuco's Medewerkers Diep gezicht Het model initieert het uitlijningsproces door zes referentiepunten binnen het detectiegewas te detecteren, gecentreerd in het midden van de ogen, de mondlocaties en de punt van de neus. Ze worden gebruikt om het beeld te roteren, te schalen en te vertalen naar zes ankerlocaties, en het vervormde beeld te herhalen totdat er geen zichtbare verandering meer is. De geaggregeerde transformatie genereert vervolgens een 2D-uitgelijnde corp. De uitlijningsmethode lijkt veel op die van LFW-a, en is door de jaren heen gebruikt in een poging de nauwkeurigheid van het model te vergroten. 

3D-uitlijning

Om vlakken uit te lijnen zonder rotaties buiten het vlak, gebruikt het DeepFace-framework een generiek 3D-vormmodel en registreert het een 3D-camera die kan worden gebruikt om het 2D-uitgelijnde lichaam naar de 3D-vorm in zijn beeldvlak te wikkelen. Als gevolg hiervan genereert het model de 3D-uitgelijnde versie van het corp, en dit wordt bereikt door nog eens 67 referentiepunten in het 2D-uitgelijnde corp te lokaliseren met behulp van een tweede SVR of Support Vector Regressor. 

Het model plaatst vervolgens handmatig de 67 ankerpunten op de 3D-vorm en kan zo een volledige overeenkomst bereiken tussen 3D-referenties en de bijbehorende referentiepunten. In de volgende stap wordt een 3D-naar-2D-affiene camera toegevoegd met behulp van een gegeneraliseerde kleinste kwadratenoplossing aan de lineaire systemen met een bekende covariantiematrix die bepaalde verliezen minimaliseert. 

Frontalisering

Omdat niet-stijve vervormingen en volledige perspectiefprojecties niet worden gemodelleerd, dient de gemonteerde 3D-naar-2D-camera slechts als benadering. In een poging om de corruptie van belangrijke identiteitsdragende factoren tot de uiteindelijke warp terug te brengen, voegt het DeepFace-model de overeenkomstige residuen toe aan de xy-componenten van elk referentiepunt. Een dergelijke versoepeling met als doel het 2D-beeld te vervormen met minder vervormingen van de identiteit is plausibel, en zonder deze versoepeling zouden de gezichten in 3D in dezelfde vorm zijn vervormd en daarbij belangrijke onderscheidende factoren verloren zijn gegaan. 

Ten slotte bereikt het model frontalisering door gebruik te maken van een stuksgewijs affiene transformatie, geregisseerd door de Delaunay-triangulatie, afgeleid van 67 vaste punten. 

  1. Gedetecteerd gezicht met 6 referentiepunten. 
  2. Geïnduceerde 2D-uitgelijnde corp. 
  3. 67 referentiepunten op het 2D-uitgelijnde corp. 
  4. Referentie 3D-vorm getransformeerd naar 2D-uitgelijnd bedrijfsbeeld. 
  5. Driehoekzichtbaarheid ten opzichte van de 3D-2D-camera. 
  6. 67 referentiepunten geïnduceerd door het 3D-model. 
  7. 3D-uitgelijnde versie van het definitieve corp. 
  8. Nieuwe weergave gegenereerd door het 3D-model. 

Vertegenwoordiging

Met een toename van de hoeveelheid trainingsgegevens zijn op leer gebaseerde methoden efficiënter en nauwkeuriger gebleken in vergelijking met technische functies, vooral omdat op leer gebaseerde methoden functies voor een specifieke taak kunnen ontdekken en optimaliseren. 

DNN-architectuur en training

De DeepFace DNN is getraind in een gezichtsherkenningstaak met meerdere klassen die de identiteit van een gezichtsafbeelding classificeert. 

De bovenstaande afbeelding geeft de algemene architectuur van het DeepFace-model weer. Het model heeft een convolutionele laag (C1) met 32 ​​filters van grootte 11x11x3 die wordt gevoed met een 3D-uitgelijnde 3-kanaals RGB-afbeelding van grootte 152x152 pixels, en dit resulteert in 32 feature maps. Deze kenmerkkaarten worden vervolgens naar een Max Pooling-laag of M2 gevoerd die het maximum over 3×3 ruimtelijke buurten haalt, en een stap van 2 heeft, afzonderlijk voor elk kanaal. Daarop volgt nog een convolutionele laag (C3) die bestaat uit 16 filters, elk met de afmetingen 9x9x16. Het primaire doel van deze lagen is het extraheren van kenmerken op laag niveau, zoals textuur en eenvoudige randen. Het voordeel van het gebruik van Max Pooling-lagen is dat het de uitvoer die door de convolutionele lagen wordt gegenereerd robuuster maakt voor lokale vertalingen, en wanneer toegepast op uitgelijnde gezichtsbeelden, maken ze het netwerk veel robuuster voor registratiefouten op kleine schaal. 

Meerdere niveaus van pooling maken het netwerk robuuster voor bepaalde situaties, maar zorgen er ook voor dat het netwerk informatie verliest over de precieze positie van microtexturen en gedetailleerde gezichtsstructuren. Om te voorkomen dat het netwerk de informatie verliest, gebruikt het DeepFace-model alleen een maximale poolinglaag met de eerste convolutionele laag. Deze lagen worden vervolgens door het model geïnterpreteerd als een front-end adaptieve voorverwerkingsstap. Hoewel ze het grootste deel van de berekeningen uitvoeren, hebben ze zelf beperkte parameters en breiden ze de invoer alleen maar uit naar een reeks lokale kenmerken. 

De volgende lagen L4, L5 en L6 zijn lokaal met elkaar verbonden en passen net als een convolutionele laag een filterbank toe waarbij elke locatie in de featurekaart een unieke set filters leert. Omdat verschillende regio's in een uitgelijnd beeld verschillende lokale statistieken hebben, kan het niet voldoen aan de aanname van ruimtelijke stationariteit. Het gebied tussen de wenkbrauwen en de ogen heeft bijvoorbeeld een groter onderscheidingsvermogen vergeleken met het gebied tussen de mond en de neus. Het gebruik van loyale lagen heeft invloed op het aantal parameters dat moet worden getraind, maar heeft geen invloed op de rekenlast tijdens de functie-extractie. 

Het DeepFace-model gebruikt in de eerste plaats alleen drie lagen omdat het over een grote hoeveelheid goed gelabelde trainingsgegevens beschikt. Het gebruik van lokaal verbonden lagen kan verder worden gerechtvaardigd omdat elke uitvoereenheid van een lokaal verbonden laag kan worden beïnvloed door een groot aantal invoergegevens. 

Ten slotte zijn de bovenste lagen volledig verbonden, waarbij elke uitvoereenheid is verbonden met alle ingangen. De twee lagen kunnen de correlaties vastleggen tussen kenmerken die in verschillende delen van de gezichtsafbeeldingen zijn vastgelegd, zoals de positie en vorm van de mond, en de positie en vorm van de ogen. De uitvoer van de eerste volledig verbonden laag (F7) zal door het netwerk worden gebruikt als de ruwe gezichtsrepresentatie-kenmerkvector. Het model zal vervolgens de uitvoer van de laatste volledig verbonden laag (F8) naar een K-way softmax sturen die een verdeling over klassenlabels produceert. 

datasets

Het DeepFace-model maakt gebruik van een combinatie van datasets, waarbij de Social Face Classification- of SFC-dataset de primaire is. Bovendien maakt het DeepFace-model ook gebruik van de LFW-dataset en de YTF-dataset. 

SFC-gegevensset

De SFC-dataset is afkomstig uit een verzameling afbeeldingen van Facebook en bestaat uit 4.4 miljoen gelabelde afbeeldingen van 4,030 mensen, met elk 800 tot 1200 gezichten. De meest recente 5% van de gezichtsafbeeldingen van elke identiteit in de SFC-dataset worden weggelaten voor testdoeleinden.

LFW-gegevensset

De LFW-dataset bestaat uit 13,323 foto's van meer dan vijfduizend beroemdheden, die vervolgens zijn onderverdeeld in 6,000 gezichtsparen, verdeeld over 10 delen. 

YTF-gegevensset

De YTF-dataset bestaat uit 3,425 video's van 1,595 onderwerpen en is een subset van de beroemdheden in de LFW-dataset. 

Resultaten

Zonder frontalisatie en bij gebruik van alleen de 2D-uitlijning behaalt het model een nauwkeurigheidsscore van slechts ongeveer 94.3%. Wanneer het model gebruikmaakt van het middelste gedeelte van de gezichtsdetectie, wordt er geen gebruik gemaakt van uitlijning. In dit geval retourneert het model een nauwkeurigheidsscore van 87.9%, omdat sommige delen van het gezichtsgebied buiten het middelste gedeelte kunnen vallen. Om het onderscheidend vermogen van gezichtsrepresentatie afzonderlijk te evalueren, volgt het model de leeromgeving zonder toezicht om het innerlijke product van genormaliseerde kenmerken te vergelijken. Het verhoogt de gemiddelde nauwkeurigheid van het model tot 95.92% 

Het bovenstaande model vergelijkt de prestaties van het DeepFace-model in vergelijking met andere geavanceerde modellen voor gezichtsherkenning. 

De bovenstaande afbeelding toont de ROC-curven op de dataset. 

Conclusie

Idealiter zal een gezichtsclassificator gezichten kunnen herkennen met de nauwkeurigheid van een mens, en een hoge nauwkeurigheid kunnen opleveren, ongeacht de beeldkwaliteit, pose, uitdrukking of belichting. Bovendien zal een ideaal raamwerk voor gezichtsherkenning met weinig of geen aanpassingen op een verscheidenheid aan toepassingen kunnen worden toegepast. Hoewel DeepFace momenteel een van de meest geavanceerde en efficiënte raamwerken voor gezichtsherkenning is, is het niet perfect en kan het in bepaalde situaties mogelijk geen nauwkeurige resultaten opleveren. Maar de Diep gezicht Framework is een belangrijke mijlpaal in de gezichtsherkenningsindustrie, en het dicht de prestatiekloof door gebruik te maken van een krachtige metrische leertechniek, en zal in de loop van de tijd steeds efficiënter worden. 

"Een ingenieur van beroep, een schrijver in hart en nieren". Kunal is een technisch schrijver met een diepe liefde voor en begrip van AI en ML, toegewijd aan het vereenvoudigen van complexe concepten op deze gebieden door middel van zijn boeiende en informatieve documentatie.