Serhii Maksymenko,
Data Science Solution Architect
Fansiktsigenkänningstekniken framstår i ett annat ljus idag. Användningsområdena omfattar en bred tillämpning från brottsdetektering till identifiering av genetiska sjukdomar.
Men medan regeringar över hela världen har investerat i system för ansiktsigenkänning har vissa amerikanska städer som Oakland, Somerville och Portland förbjudit det på grund av oro för medborgerliga rättigheter och integritet.
Vad är det – en tidsinställd bomb eller ett tekniskt genombrott? Den här artikeln öppnar upp för vad ansiktsigenkänning är ur ett tekniskt perspektiv och hur djupinlärning ökar dess kapacitet. Endast genom att inse hur tekniken för ansiktsigenkänning fungerar inifrån och ut är det möjligt att förstå vad den är kapabel till.
Uppdaterad 06/09/2020:
Hur djupinlärning kan modernisera ansiktsigenkänningsmjukvara
Ladda ner PDF
Hur fungerar ansiktsigenkänning?
Datoralgoritmen för programvaran för ansiktsigenkänning liknar lite människans visuella erkännande. Men om människor lagrar visuella data i en hjärna och automatiskt återkallar visuella data när de behöver dem, bör datorer begära data från en databas och matcha dem för att identifiera ett mänskligt ansikte.
I ett nötskal kan man säga att ett datoriserat system som är utrustat med en kamera upptäcker och identifierar ett mänskligt ansikte, extraherar ansiktsdrag som avståndet mellan ögonen, längden på näsan, formen på pannan och kindbenen. Därefter känner systemet igen ansiktet och matchar det med bilder som finns lagrade i en databas.
Den traditionella tekniken för ansiktsigenkänning är dock inte helt perfekt ännu. Den har både styrkor och svagheter:
Styrkor
Kontaktlös biometrisk identifiering Upp till en sekunds databehandling Kompatibilitet med de flesta kameror Lätt integrering |
Svagheter
Twins. och rasbias Problem med datasekretess Presentationsattacker (PA) Låg noggrannhet vid dåliga ljusförhållanden |
Redovisning av ansiktsigenkänningssystemens svagheter, gick datavetenskapsmännen vidare. Genom att tillämpa traditionella datorseende tekniker och algoritmer för djupinlärning finjusterade de ansiktsigenkänningssystemet för att förhindra attacker och öka noggrannheten. Det är så som en teknik för att motverka ansiktsspaning fungerar.
Hur djupinlärning uppgraderar programvaran för ansiktsigenkänning
Djupinlärning är ett av de mest nya sätten att förbättra tekniken för ansiktsigenkänning. Tanken är att extrahera ansiktsinbäddningar från bilder med ansikten. Sådana ansiktsinbäddningar kommer att vara unika för olika ansikten. Och träning av ett djupt neuralt nätverk är det mest optimala sättet att utföra denna uppgift.
Avhängigt av en uppgift och tidsramar finns det två vanliga metoder för att använda djupinlärning för ansiktsigenkänningssystem:
Använda förtränade modeller som dlib, DeepFace, FaceNet och andra. Den här metoden tar mindre tid och ansträngning eftersom förtränade modeller redan har en uppsättning algoritmer för ansiktsigenkänning. Vi kan också finjustera förtränade modeller för att undvika bias och låta ansiktsigenkänningssystemet fungera korrekt.
Utveckla ett neuralt nätverk från grunden. Den här metoden är lämplig för komplexa system för ansiktsigenkänning som har funktionalitet för flera olika ändamål. Den tar mer tid och ansträngning och kräver miljontals bilder i träningsdatasetet, till skillnad från en förtränad modell som endast kräver tusentals bilder vid överföringsinlärning.
Men om ansiktsigenkänningssystemet innehåller unika funktioner kan det vara ett optimalt sätt på lång sikt. De viktigaste punkterna att uppmärksamma är:
- Det korrekta valet av CNN-arkitektur och förlustfunktion
- Optimering av inferenstid
- Hårdvarans kraft
Det rekommenderas att använda konvolutionella neurala nätverk (CNN) när man utvecklar en nätverksarkitektur, eftersom de har visat sig effektiva vid bildigenkänning och klassificeringsuppgifter. För att få förväntade resultat är det bättre att använda en allmänt accepterad arkitektur för neurala nätverk som grund, till exempel ResNet eller EfficientNet.
När vi tränar ett neuralt nätverk för utveckling av programvara för ansiktsigenkänning bör vi i de flesta fall minimera felen. Här är det avgörande att ta hänsyn till förlustfunktioner som används för att beräkna felet mellan verklig och förutspådd utgång. De vanligaste funktionerna i ansiktsigenkänningssystem är trippelförlust och AM-Softmax.
- Trippelförlustfunktionen innebär att man har tre bilder av två olika personer. Det finns två bilder – ankare och positiv – för en person och den tredje – negativ – för en annan person. Nätverksparametrarna lärs in så att samma personer kommer närmare varandra i funktionsutrymmet och att olika personer skiljs åt.
- AM-Softmax-funktionen är en av de senaste ändringarna av standard softmax-funktionen, som utnyttjar en särskild reglering baserad på en additiv marginal. Den gör det möjligt att uppnå bättre separerbarhet av klasser och förbättrar därför noggrannheten hos ansiktsigenkänningssystemet.
Det finns också flera tillvägagångssätt för att förbättra ett neuralt nätverk. I ansiktsigenkänningssystem är de mest intressanta kunskapsdestillation, överföringsinlärning, kvantisering och djupseparerbara konvolutioner.
- Kunskapsdestillation involverar två nätverk av olika storlek när ett stort nätverk lär ut sin egen mindre variant. Nyckelvärdet är att efter träningen arbetar det mindre nätverket snabbare än det stora och ger samma resultat.
- Med hjälp av metoden för överföringsinlärning kan man förbättra noggrannheten genom att träna hela nätverket eller endast vissa lager på en specifik datamängd. Om ansiktsigenkänningssystemet till exempel har problem med rasbias kan vi ta en särskild uppsättning bilder, låt oss säga bilder av kineser, och träna nätverket så att det uppnår högre noggrannhet.
- Kvantiseringsmetoden förbättrar ett neuralt nätverk så att det uppnår högre bearbetningshastighet. Genom att approximera ett neuralt nätverk som använder flyttal med ett neuralt nätverk med tal med låg bitbredd kan vi minska minnesstorleken och antalet beräkningar.
- Depthwise separable convolutions är en klass av lager som gör det möjligt att bygga CNN med en mycket mindre uppsättning parametrar jämfört med vanliga CNN:er. Samtidigt som den här funktionen har ett litet antal beräkningar kan den förbättra ansiktsigenkänningssystemet så att det lämpar sig för mobila visionstillämpningar.
Den viktigaste beståndsdelen i teknik för djupinlärning är kravet på kraftfull hårdvara. När man använder djupa neurala nätverk för utveckling av programvara för ansiktsigenkänning är målet inte bara att förbättra igenkänningsnoggrannheten utan också att minska svarstiden. Det är därför GPU, till exempel, är mer lämplig för djupinlärningsdrivna ansiktsigenkänningssystem än CPU.
Hur vi implementerade Deep Learning-Powered Face Recognition App
När vi utvecklade Big Brother (en demokameraapp) på MobiDev, hade vi som mål att skapa programvara för biometrisk verifiering med videoströmning i realtid. Eftersom Big Brother är en lokal konsolapp för Ubuntu och Raspbian är den skriven i Golang och konfigurerad med lokalt kamera-ID och kameraläsartyp via JSON-konfigurationsfilen. Den här videon beskriver hur Big Brother fungerar i praktiken:
Från insidan består Big Brother-appens arbetscykel av:
1. Ansiktsdetektering
Appen upptäcker ansikten i en videoström. När ansiktet har fångats beskärs bilden och skickas till baksidan via en HTTP-formulärdataförfrågan. Backend-API:et sparar bilden till ett lokalt filsystem och sparar en post i Detection Log med ett personID.
Backend:et använder Golang och MongoDB Collections för att lagra medarbetardata. Alla API-förfrågningar är baserade på RESTful API.
2. Omedelbar ansiktsigenkänning
Backändan har en bakgrundsarbetare som hittar nya oklassificerade poster och använder Dlib för att beräkna den 128-dimensionella deskriptorvektorn av ansiktsegenskaper. När en vektor beräknas jämförs den med flera referensansiktsbilder genom att beräkna det euklidiska avståndet till varje funktionsvektor för varje person i databasen och hitta en matchning.
Om det euklidiska avståndet till den upptäckta personen är mindre än 0,6 anger arbetaren ett personID till detektionsloggen och markerar den som klassificerad. Om avståndet överstiger 0,6 skapar den ett nytt personID till loggen.
3. Uppföljningsåtgärder: varning, bevilja tillträde och annat
Bilder av en oidentifierad person skickas till motsvarande chef med meddelanden via chatbots i messengers. I Big Brother-appen använde vi Microsoft Bot Framework och Python-baserade Errbot, vilket gjorde att vi kunde implementera varnings-chatbotten inom fem dagar.
Efteråt kan dessa poster hanteras via administratörspanelen, som lagrar foton med ID i databasen. Programvaran för ansiktsigenkänning fungerar i realtid och utför uppgifter för ansiktsigenkänning omedelbart. Genom att använda Golang och MongoDB Collections för lagring av medarbetardata gick vi in i ID-databasen, inklusive 200 poster.
Här är hur Big Brother-appen för ansiktsigenkänning är utformad:
Inför skalning upp till 10 000 poster rekommenderar vi att vi förbättrar ansiktsigenkänningssystemet för att hålla hög igenkänningshastighet på baksidan. Ett av de optimala sätten är att använda parallellisering. Genom att sätta upp en lastbalanserare och bygga flera webworker kan vi se till att en backend-del fungerar korrekt och att hela systemet är optimalt snabbt.
Andra användningsfall för djupinlärningsbaserad igenkänning
Ansiktsigenkänning är inte den enda uppgiften där djupinlärningsbaserad mjukvaruutveckling kan förbättra prestandan. Andra exempel är:
Detektering och igenkänning av maskerade ansikten
Sedan COVID-19 fick människor i många länder att bära ansiktsmask har tekniken för ansiktsigenkänning blivit mer avancerad. Genom att använda den djupa inlärningsalgoritmen baserad på konvolutionella neurala nätverk kan kameror nu känna igen ansikten som är täckta med masker. Data science-ingenjörer använder sådana algoritmer som ansiktsögonbaserade multi-granularitetsmodeller och periokulära igenkänningsmodeller för att förbättra ansiktsigenkänningssystemets kapacitet. Genom att identifiera sådana ansiktsdrag som panna, ansiktskontur, okulära och periokulära detaljer, ögonbryn, ögon och kindben gör dessa modeller det möjligt att känna igen maskerade ansikten med upp till 95 % noggrannhet.
Ett bra exempel på ett sådant system är den teknik för ansiktsigenkänning som skapats av ett av de kinesiska företagen. Systemet består av två algoritmer: deep learning-baserad ansiktsigenkänning och temperaturmätning med infraröd värmekamera. När personer med ansiktsmask står framför kameran extraherar systemet ansiktsdrag och jämför dem med befintliga bilder i databasen. Samtidigt mäter den infraröda temperaturmätningsmekanismen temperaturen och upptäcker på så sätt personer med onormal temperatur.
Detektering av defekter
Under de senaste åren har tillverkare använt AI-baserad visuell inspektion för att upptäcka defekter. Utvecklingen av algoritmer för djupinlärning gör det möjligt för detta system att definiera de minsta repor och sprickor automatiskt och undvika mänskliga faktorer.
Detektering av kroppsavvikelser
Det israeliska företaget Aidoc har utvecklat en djupinlärningsbaserad lösning för radiologi. Genom att analysera medicinska bilder upptäcker systemet avvikelser i bröstet, ryggraden, huvudet och buken.
Talaridentifiering
Talaridentifieringsteknik som skapats av företaget Phonexia identifierar också högtalare genom att utnyttja metoden för metrisk inlärning. Systemet känner igen talare med hjälp av rösten och producerar matematiska modeller av mänskligt tal som kallas röstavtryck. Dessa röstavtryck lagras i databaser, och när en person talar identifierar talartekniken det unika röstavtrycket.
Röstigenkänning
Röstigenkänning av mänskliga känslor är en uppgift som går att göra idag. Genom att spåra ansiktets rörelser via kameran kategoriserar tekniken för emotionsigenkänning mänskliga känslor. Djupinlärningsalgoritmen identifierar landmärkespunkter i ett mänskligt ansikte, upptäcker ett neutralt ansiktsuttryck och mäter avvikelser i ansiktsuttrycken för att känna igen mer positiva eller negativa ansiktsuttryck.
Aktionsigenkänning
Visuellt Ett företag, som är en leverantör av Nest Cams, har drivit sin produkt med AI. Genom att använda djupinlärningstekniker har de finjusterat Nest Cams så att de inte bara kan känna igen olika objekt som människor, husdjur, bilar osv. utan även identifiera handlingar. De handlingar som ska kännas igen kan anpassas och väljas av användaren. En kamera kan till exempel känna igen en katt som kliar på dörren eller ett barn som leker med spisen.
För att sammanfatta är djupa neurala nätverk ett kraftfullt verktyg för mänskligheten. Och endast en människa bestämmer vilken teknisk framtid som kommer härnäst.
Hur djup inlärning kan modernisera ansiktsigenkänningsmjukvara
Ladda ner PDF
.