Inom olika branscher, såsom finansiella tjänster, telekommunikation och hälso- och sjukvård, använder kunderna en digital identitetsprocess, som vanligtvis innefattar flera steg för att verifiera slutanvändare under onboarding online eller stegvis autentisering. Ett exempel på ett steg som kan användas är ansiktssökning, som kan hjälpa till att avgöra om en ny slutanvändares ansikte matchar de som är kopplade till ett befintligt konto.
Att bygga ett korrekt ansiktssökningssystem innefattar flera steg. Systemet måste kunna upptäcka mänskliga ansikten i bilder, extrahera ansiktena till vektorrepresentationer, lagra ansiktsvektorer i en databas och jämföra nya ansikten mot befintliga poster. Amazon-erkännande gör detta enkelt genom att ge dig förutbildade modeller som anropas via enkla API-anrop.
Amazon Rekognition gör att du kan uppnå mycket hög noggrannhet i ansiktssökning med en enda ansiktsbild. I vissa fall kan du använda flera bilder av samma persons ansikte för att skapa användarvektorer och förbättra noggrannheten ytterligare. Detta är särskilt användbart när bilder har variationer i ljussättning, poser och utseende.
I det här inlägget visar vi hur man använder Amazon Rekognition Face Search API:er med användarvektorer för att öka likhetspoängen för sanna matchningar och minska likhetspoängen för sanna icke-matchningar.
Vi jämför resultaten av att utföra ansiktsmatchning med och utan användarvektorer.
Amazon Rekognition ansiktsmatchning
Amazon Rekognition ansiktsmatchning gör det möjligt att mäta likheten mellan en ansiktsvektor extraherad från en bild och en ansiktsvektor extraherad från en annan bild. Ett par ansiktsbilder sägs vara en sann matchning om båda bilderna innehåller samma persons ansikte och en sann icke-matchning annat. Amazon Rekognition returnerar en poäng för likheten mellan källan och målansikten. Minsta likhetspoäng är 0, vilket innebär mycket liten likhet, och maximum är 100.
För att jämföra ett källansikte med en samling målansikten (1:N-matchning) låter Amazon Rekognition dig skapa ett samlingsobjekt och fylla det med ansikten från bilder med API-anrop.
När du lägger till ett ansikte till en samling lagrar Amazon Rekognition inte den faktiska bilden av ansiktet utan snarare ansiktsvektorn, en matematisk representation av ansiktet. Med Sökansikten API kan du jämföra ett källansikte med en eller flera samlingar av målansikten.
I juni 2023, AWS lanserade användarvektorer, en ny funktion som avsevärt förbättrar ansiktssökningsnoggrannheten genom att använda flera ansiktsbilder av en användare. Nu kan du skapa användarvektorer, som aggregerar flera ansiktsvektorer för samma användare. Användarvektorer erbjuder högre ansiktssökningsnoggrannhet med mer robusta avbildningar, eftersom de innehåller olika grader av ljus, skärpa, pose, utseende och mer. Detta förbättrar noggrannheten jämfört med sökning mot individuella ansiktsvektorer.
I följande avsnitt beskriver vi processen för att använda Amazon Rekognition-användarvektorer. Vi guidar dig genom att skapa en samling, lagra ansiktsvektorer i den samlingen, aggregera dessa ansiktsvektorer till användarvektorer och sedan jämföra resultaten av sökningen mot dessa individuella ansiktsvektorer och användarvektorer.
Lösningsöversikt
För denna lösning använder vi en Amazon Rekognition-samling av användare, var och en med tillhörande indexerade ansiktsvektorer från ett antal olika bilder av ansikten för varje användare.
Låt oss titta på arbetsflödet för att bygga en samling med användare och ansikten:
- Skapa en Amazon Rekognition-samling.
- Skapa en användare i samlingen för varje användare.
- För varje bild av användaren, lägg till ansiktet i samlingen (IndexFaces, som returnerar ansikts-ID som motsvarar varje ansiktsvektor).
- Associera alla indexerade ansikts-ID:n med användaren (detta är nödvändigt för användarvektorer).
Sedan kommer vi att jämföra följande arbetsflöden:
Söka med en ny given ingångsbild mot individuella ansiktsvektorer i vår samling:
- Få alla ansikten från en bild (Detektera ansikten).
- För varje ansikte, jämför med individuella ansikten i vår samling (SearchFacesByImage).
Söka med en ny given indatabild mot användarvektorer i vår samling:
- Få alla ansikten från en bild (Detektera ansikten).
- För varje ansikte, jämför med användarvektorn (SearchUsersByImage).
Låt oss nu beskriva lösningen i detalj.
Förutsättningar
Lägg till följande policy till din AWS identitets- och åtkomsthantering (IAM) användare eller roll. Policyn ger dig tillstånd till relevanta Amazon Rekognition API:er och tillåter åtkomst till en Amazon enkel lagringstjänst (Amazon S3) hink för att lagra bilderna:
Skapa en Amazon Rekognition-samling och lägg till användare och ansikten
Först skapar vi en S3-hink för att lagra användarnas bilder. Vi organiserar hinken genom att skapa en mapp för varje användare som innehåller deras personliga bilder. Vår bilder mappen ser ut som följande struktur:
Vår S3-hink har en katalog för varje användare som lagrar deras bilder. Det finns för närvarande två mappar, och var och en innehåller flera bilder. Du kan lägga till fler mappar för dina användare, var och en innehåller en eller flera bilder som ska indexeras.
Därefter skapar vi vår Amazon Rekognition-kollektion. Vi har levererat helpers.py, som innehåller olika metoder som vi använder:
- skapa_samling – Skapa en ny samling
- delete_collection – Ta bort en samling
- skapa användare – Skapa en ny användare i en samling
- add_faces_to_collection – Lägg till ansikten i samlingen
- associerade_ansikten – Associera face_ids till en användare i en samling
- get_subdirs – Hämta alla underkataloger under S3-prefixet
- get_filer – Hämta alla filer under S3-prefixet
Följande är en exempelmetod för att skapa en Amazon Rekognition-samling:
Skapa samlingen med följande kod:
Låt oss sedan lägga till ansiktsvektorerna i vår samling och aggregera dem till användarvektorer.
För varje användare i S3-katalogen skapar vi en användarvektor i samlingen. Sedan indexerar vi ansiktsbilderna för varje användare i samlingen som individuella ansiktsvektorer, vilket genererar ansikts-ID:n. Slutligen associerar vi ansikts-ID:n till lämplig användarvektor.
Detta skapar två typer av vektorer i vår samling:
- Individuella ansiktsvektorer
- Användarvektorer, som är byggda baserat på ansiktsvektor-ID:n som tillhandahålls med metoden
associate_faces
Se följande kod:
Vi använder följande metoder:
- get_subdirs – Returnerar en lista över alla användares kataloger. I vårt exempel är värdet [Swami,Werner].
- get_filer – Returnerar alla bildfiler under S3-prefixet för användaren.
- face_ids – Det här är en lista som innehåller alla ansikts-ID:n som tillhör en användare. Vi använder den här listan när vi ringer till AssociateFaces API.
Som förklarats tidigare kan du lägga till fler användare genom att lägga till mappar för dem (mappen anger användar-ID) och lägga till dina bilder i den mappen (ingen beställning krävs för filerna).
Nu när vår miljö är inställd och vi har både individuella ansiktsvektorer och användarvektorer, låt oss jämföra vår sökkvalitet med var och en av dem. För att göra det använder vi ett nytt foto med flera personer och försöker matcha deras ansikten mot vår samling, först mot de individuella ansiktsvektorerna och sedan mot användarvektorerna.
Ansiktssökning av bild mot en samling individuella ansiktsvektorer
För att söka mot våra individuella ansiktsvektorer använder vi Amazon Rekognition SearchFacesByImage API. Den här funktionen använder en källansiktsbild för att söka mot individuella ansiktsvektorer i vår samling och returnerar ansikten som matchar vårt definierade tröskelvärde för likhetspoäng.
En viktig faktor är att SearchFacesByImage
API kommer endast att fungera på det största ansiktet som upptäckts i bilden. Om det finns flera ansikten måste du beskära varje enskilt ansikte och skicka det separat till metoden för identifiering.
För att extrahera ansiktsdetaljer från en bild (som deras placering på bilden) använder vi Amazon Rekognition Detektera ansikten API.
Följande detektera_ansikten_i_bilden metoden upptäcker ansikten i en bild. För varje ansikte utför den följande åtgärder:
- Skriv ut dess placering av begränsningsrutan
- Beskär ansiktet från bilden och kontrollera om ett sådant ansikte finns i samlingen och skriv ut användaren eller "Okänd"
- Skriv ut likhetspoängen
Exempel Python-koden använder Kudde bibliotek för att göra bildmanipulationerna (såsom utskrift, ritning och beskärning).
Vi använder en tröskel för likhetspoäng på 99 %, vilket är en vanlig inställning för användningsfall för identitetsverifiering.
Kör följande kod:
file_key
är S3-objektnyckeln vi vill matcha mot vår samling. Vi har tillhandahållit en exempelbild (photo.jpeg
) under mappen bilder.
Följande bild visar våra resultat.
Med en tröskel på 99 % identifierades endast en person. Dr Werner Vogels flaggades som okänd. Om vi kör samma kod med en lägre tröskel på 90 (set threshold=90) får vi följande resultat.
Nu ser vi att Dr Werner Vogels ansikte har en likhetspoäng på 96.86%. Låt oss sedan kontrollera om vi kan få likhetspoängen över vår definierade tröskel genom att använda användarvektorer.
Ansiktssökning av bild mot en samling användarvektorer
För att söka mot våra användarvektorer använder vi Amazon Rekognition SearchUsersByImage API. Den här funktionen använder en källansiktsbild för att söka mot användarvektorer i vår samling och returnerar användare som matchar vårt definierade tröskelvärde för likhetspoäng.
Samma övervägande är relevant här – den SearchUsersByImage
API kommer endast att fungera på det största ansiktet som upptäckts i bilden. Om det finns flera ansikten måste du beskära varje enskilt ansikte och skicka det separat till metoden för identifiering.
För att extrahera ansiktsdetaljer från en bild (som deras placering på bilden) använder vi Amazon Rekognition Detektera ansikten API.
Följande detect_users_in_image metoden upptäcker ansikten i en bild. För varje ansikte utför den följande åtgärder:
- Skriv ut dess placering av begränsningsrutan
- Beskär ansiktet från bilden och kontrollera om ett sådant användaransikte finns i vår samling och skriv ut användaren eller "Okänd"
- Skriv ut likhetspoängen
Se följande kod:
Funktionen returnerar en modifierad bild med resultaten som kan sparas på Amazon S3 eller skrivas ut. Funktionen matar också ut statistik om de uppskattade åldrarna på ansiktena till terminalen.
Kör följande kod:
Följande bild visar våra resultat.
Användarna som finns i vår samling identifierades korrekt med hög likhet (över 99%).
Vi kunde öka likhetspoängen genom att använda tre ansiktsvektorer per användarvektor. När vi ökar antalet ansiktsvektorer som används förväntar vi oss att likhetspoängen för sanna matchningar också kommer att öka. Du kan använda upp till 100 ansiktsvektorer per användarvektor.
En exempelkod från ände till ände finns i GitHub repository. Den innehåller en detaljerad Jupyter anteckningsbok som du kan springa på Amazon SageMaker Studio (eller andra alternativ).
Städa upp
För att radera samlingen, använd följande kod:
Slutsats
I det här inlägget presenterade vi hur man använder Amazon Rekognition-användarvektorer för att implementera ansiktssökning mot en samling av användares ansikten. Vi visade hur man kan förbättra noggrannheten i ansiktssökning genom att använda flera ansiktsbilder per användare och jämförde det med individuella ansiktsvektorer. Dessutom beskrev vi hur du kan använda de olika Amazon Rekognition API:erna för att upptäcka ansikten. Den medföljande exempelkoden fungerar som en solid grund för att konstruera ett funktionellt ansiktssökningssystem.
För mer information om Amazon Rekognition-användarvektorer, se Söker ansikten i en samling. Om du är ny på Amazon Rekognition kan du använda vår Free Tier, som varar i 12 månader och inkluderar bearbetning av 5,000 1,000 bilder per månad och lagring av XNUMX XNUMX användarvektorobjekt per månad.
Om författarna
Arik Porat är Senior Startups Solutions Architect på Amazon Web Services. Han arbetar med startups för att hjälpa dem att bygga och designa sina lösningar i molnet, och brinner för maskininlärning och containerbaserade lösningar. På fritiden gillar Arik att spela schack och tv-spel.
Eliran Efron är en Startups Solutions Architect på Amazon Web Services. Eliran är en data- och datorentusiast som hjälper startups att designa sina systemarkitekturer. På fritiden gillar Eliran att bygga och tävla bilar i Touring-tävlingar och bygga IoT-enheter.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/improve-accuracy-of-amazon-rekognition-face-search-with-user-vectors/
- : har
- :är
- $UPP
- 000
- 1
- 10
- 100
- 12
- 12 månader
- 17
- 2023
- 28
- 30
- 7
- 9
- a
- Able
- Om oss
- ovan
- tillgång
- Konto
- noggrannhet
- exakt
- Uppnå
- Handling
- åtgärder
- faktiska
- lägga till
- tillsats
- Dessutom
- mot
- Åldrar
- aggregat
- aggregerande
- Alla
- tillåter
- tillåter
- redan
- också
- alternativ
- amason
- Amazon-erkännande
- Amazon Web Services
- an
- och
- Annan
- api
- API: er
- utseende
- framträdanden
- lämpligt
- arkitekturer
- ÄR
- array
- AS
- bistå
- Associate
- associerad
- At
- försök
- Autentisering
- AWS
- baserat
- BE
- därför att
- som tillhör
- mellan
- kropp
- båda
- Box
- boxar
- SLUTRESULTAT
- byggt
- men
- by
- beräkna
- Ring
- anropande
- Samtal
- KAN
- Kan få
- kapacitet
- bilar
- fall
- ta
- schack
- klient
- cloud
- koda
- samling
- samlingar
- Gemensam
- jämföra
- jämfört
- jämförande
- Compute
- övervägande
- konstruera
- innehålla
- innehåller
- konvertera
- korrekt
- Motsvarande
- skapa
- skapar
- Skapa
- gröda
- För närvarande
- Kunder
- datum
- Databas
- minskning
- definierade
- demonstrera
- demonstreras
- beskriva
- beskriven
- Designa
- design
- detaljerad
- detaljer
- upptäcka
- detekterad
- Bestämma
- enheter
- dikterar
- olika
- digital
- digital identitet
- kataloger
- katalog
- Visa
- do
- inte
- gör
- gjort
- dr
- dra
- ritning
- under
- varje
- Tidigare
- effekt
- enkel
- annars
- möjliggör
- början till slut
- entusiast
- Miljö
- speciellt
- beräknad
- Även
- exempel
- Utom
- existerar
- befintliga
- finns
- exits
- förvänta
- förklarade
- extrahera
- Ansikte
- ytorna
- Filer
- finansiella
- finansiella tjänster
- hitta
- Förnamn
- flaggad
- Flyta
- efter
- För
- format
- hittade
- fundament
- Fri
- från
- fungera
- funktionella
- ytterligare
- Games
- genererar
- skaffa sig
- ges
- Ge
- bidrag
- styra
- Har
- he
- hälso-och sjukvård
- höjd
- hjälpa
- hjälpare
- hjälp
- här.
- Hög
- högre
- hans
- Hur ser din drömresa ut
- How To
- html
- http
- HTTPS
- humant
- ID
- Identifiering
- identifierade
- Identitet
- Identitetsverifiering
- ids
- if
- bild
- bilder
- genomföra
- importera
- med Esport
- förbättra
- förbättrar
- in
- innefattar
- Öka
- index
- indexeras
- individuellt
- industrier
- informationen
- ingång
- in
- åberopas
- innebär
- iot
- iot enheter
- IT
- DESS
- jpeg
- juni
- Nyckel
- största
- slutligen
- lanserades
- inlärning
- vänster
- Bibliotek
- Belysning
- tycka om
- gillar
- Lista
- liten
- läsa in
- läge
- se
- UTSEENDE
- Låg
- lägre
- Maskinen
- maskininlärning
- GÖR
- manipulationer
- Match
- tändstickor
- matchande
- matte
- matematisk
- maximal
- mätning
- metod
- metoder
- minsta
- modeller
- modifierad
- Månad
- månader
- mer
- multipel
- måste
- namn
- nödvändigt för
- Behöver
- Nya
- Nästa
- Nej
- nu
- antal
- objektet
- objekt
- of
- erbjudanden
- Gamla
- on
- Onboarding
- ONE
- nätet
- endast
- driva
- or
- Övriga
- annat
- vår
- översikt
- utgångar
- över
- par
- passera
- brinner
- Personer
- för
- utför
- utför
- tillstånd
- personen
- personlig
- bild
- plato
- Platon Data Intelligence
- PlatonData
- Spela
- poäng
- policy
- utgör
- utgör
- Inlägg
- presentera
- presenteras
- Skriva ut
- tryckning
- process
- bearbetning
- förutsatt
- Python
- kvalitet
- Lopp
- tävlingar
- snarare
- hänvisa
- relevanta
- representation
- Obligatorisk
- resurs
- respons
- Resultat
- avkastning
- återgår
- robusta
- Roll
- Körning
- sagemaker
- Nämnda
- Samma
- sparade
- göra
- Sök
- söka
- sektioner
- se
- senior
- serverar
- Tjänster
- session
- in
- inställning
- flera
- Visar
- signifikant
- Enkelt
- enda
- Storlek
- fast
- lösning
- Lösningar
- några
- Källa
- Startups
- .
- statistik
- status
- Steg
- Steg
- förvaring
- lagra
- lagrar
- misslyckande
- ström
- struktur
- sådana
- levereras
- system
- Målet
- telekommunikationer
- terminal
- den där
- Smakämnen
- källan
- deras
- Dem
- sedan
- Där.
- de
- detta
- de
- tre
- tröskelvärde
- Genom
- djur
- tid
- till
- topp
- Touring
- sann
- prova
- två
- typer
- under
- okänd
- användning
- Begagnade
- Användare
- användare
- användningar
- med hjälp av
- vanligen
- värde
- variationer
- olika
- varierande
- Verifiering
- verifiera
- version
- mycket
- via
- Video
- videospel
- vill
- var
- we
- webb
- webbservice
- były
- när
- om
- som
- bredd
- kommer
- med
- utan
- arbetsflöde
- arbetsflöden
- fungerar
- skulle
- år
- Om er
- Din
- zephyrnet