I forskellige brancher, såsom finansielle tjenester, telekommunikation og sundhedspleje, bruger kunder en digital identitetsproces, som normalt involverer flere trin til at verificere slutbrugere under online-onboarding eller step-up-godkendelse. Et eksempel på et trin, der kan bruges, er ansigtssøgning, som kan hjælpe med at afgøre, om en ny slutbrugers ansigt matcher dem, der er knyttet til en eksisterende konto.
Opbygning af et nøjagtigt ansigtssøgningssystem involverer flere trin. Systemet skal være i stand til at detektere menneskelige ansigter i billeder, udtrække ansigterne til vektorrepræsentationer, gemme ansigtsvektorer i en database og sammenligne nye ansigter med eksisterende poster. Amazon-anerkendelse gør dette ubesværet ved at give dig fortrænede modeller, der påkaldes via simple API-kald.
Amazon Rekognition giver dig mulighed for at opnå en meget høj ansigtssøgningsnøjagtighed med et enkelt ansigtsbillede. I nogle tilfælde kan du bruge flere billeder af den samme persons ansigt til at oprette brugervektorer og forbedre nøjagtigheden yderligere. Dette er især nyttigt, når billeder har variationer i belysning, positurer og udseende.
I dette indlæg demonstrerer vi, hvordan man bruger Amazon Rekognition Face Search API'er med brugervektorer til at øge lighedsscoren for sande match og reducere lighedsscore for ægte ikke-matches.
Vi sammenligner resultaterne af at udføre ansigtsmatchning med og uden brugervektorer.
Amazon Rekognition ansigtsmatchning
Amazon Rekognition face matching gør det muligt at måle ligheden mellem en ansigtsvektor ekstraheret fra et billede med en ansigtsvektor ekstraheret fra et andet billede. Et par ansigtsbilleder siges at være en ægte match hvis begge billeder indeholder ansigtet af den samme person, og en ægte ikke-match Ellers. Amazon Rekognition returnerer en score for ligheden mellem kilde- og målansigterne. Den mindste lighedsscore er 0, hvilket betyder meget lidt lighed, og maksimum er 100.
For at sammenligne et kildeansigt med en samling af målflader (1:N-matchning), giver Amazon Rekognition dig mulighed for at oprette et samlingsobjekt og udfylde det med ansigter fra billeder ved hjælp af API-kald.
Når du føjer et ansigt til en samling, gemmer Amazon Rekognition ikke det faktiske billede af ansigtet, men snarere ansigtsvektoren, en matematisk repræsentation af ansigtet. Med Søgeansigter API, kan du sammenligne et kildeansigt med en eller flere samlinger af målansigter.
I juni 2023, AWS lancerede brugervektorer, en ny funktion, der markant forbedrer ansigtssøgnings nøjagtighed ved at bruge flere ansigtsbilleder af en bruger. Nu kan du oprette brugervektorer, som samler flere ansigtsvektorer af den samme bruger. Brugervektorer tilbyder højere ansigtssøgningsnøjagtighed med mere robuste afbildninger, fordi de indeholder forskellige grader af belysning, skarphed, positur, udseende og mere. Dette forbedrer nøjagtigheden sammenlignet med søgning mod individuelle ansigtsvektorer.
I de følgende afsnit skitserer vi processen med at bruge Amazon Rekognition-brugervektorer. Vi guider dig gennem oprettelse af en samling, lagring af ansigtsvektorer i den samling, aggregering af disse ansigtsvektorer til brugervektorer og derefter sammenligning af resultaterne af søgning mod disse individuelle ansigtsvektorer og brugervektorer.
Løsningsoversigt
Til denne løsning bruger vi en Amazon Rekognition-samling af brugere, hver med tilhørende indekserede ansigtsvektorer fra en række forskellige billeder af ansigter for hver bruger.
Lad os se på arbejdsgangen for at opbygge en samling med brugere og ansigter:
- Opret en Amazon Rekognition-samling.
- For hver bruger skal du oprette en bruger i samlingen.
- For hvert billede af brugeren skal du tilføje ansigtet til samlingen (Indeksansigter, som returnerer ansigts-ID svarende til hver ansigtsvektor).
- Tilknyt alle indekserede ansigts-id'er til brugeren (dette er nødvendigt for brugervektorer).
Derefter vil vi sammenligne følgende arbejdsgange:
Søgning med et nyt givet inputbillede mod individuelle ansigtsvektorer i vores samling:
- Få alle ansigter fra et billede (Opdag ansigter).
- For hvert ansigt, sammenligne med individuelle ansigter i vores samling (SearchFacesByImage).
Søgning med et nyt givet inputbillede mod brugervektorer i vores samling:
- Få alle ansigter fra et billede (Opdag ansigter).
- For hvert ansigt skal du sammenligne med brugervektoren (SearchUsersByImage).
Lad os nu beskrive løsningen i detaljer.
Forudsætninger
Tilføj følgende politik til din AWS identitets- og adgangsstyring (IAM) bruger eller rolle. Politikken giver dig tilladelse til de relevante Amazon Rekognition API'er og giver adgang til en Amazon Simple Storage Service (Amazon S3) spand til at gemme billederne:
Opret en Amazon Rekognition-samling, og tilføj brugere og ansigter
Først opretter vi en S3-bøtte til at gemme brugernes billeder. Vi organiserer bøtten ved at oprette en mappe til hver bruger, der indeholder deres personlige billeder. Vores billeder mappe ser ud som følgende struktur:
Vores S3-bøtte har en mappe for hver bruger, der gemmer deres billeder. Der er i øjeblikket to mapper, og hver indeholder flere billeder. Du kan tilføje flere mapper til dine brugere, som hver indeholder et eller flere billeder, der skal indekseres.
Dernæst opretter vi vores Amazon Rekognition-kollektion. Vi har leveret hjælpere.py, som indeholder forskellige metoder, som vi bruger:
- oprette_samling – Opret en ny samling
- delete_collection – Slet en samling
- oprette_bruger – Opret en ny bruger i en samling
- tilføje_ansigter_til_samling - Føj ansigter til samlingen
- associerede_ansigter – Tilknyt face_ids til en bruger i en samling
- get_subdirs – Hent alle undermapper under S3-præfikset
- get_filer – Hent alle filer under S3-præfikset
Følgende er et eksempel på en metode til oprettelse af en Amazon Rekognition-samling:
Opret samlingen med følgende kode:
Lad os derefter tilføje ansigtsvektorerne til vores samling og aggregere dem i brugervektorer.
For hver bruger i S3-biblioteket opretter vi en brugervektor i samlingen. Derefter indekserer vi ansigtsbillederne for hver bruger i samlingen som individuelle ansigtsvektorer, hvilket genererer ansigts-id'er. Til sidst knytter vi ansigts-id'erne til den relevante brugervektor.
Dette skaber to typer vektorer i vores samling:
- Individuelle ansigtsvektorer
- Brugervektorer, som er bygget baseret på ansigtsvektor-id'erne, der leveres ved hjælp af metoden
associate_faces
Se følgende kode:
Vi bruger følgende metoder:
- get_subdirs – Returnerer en liste over alle brugernes mapper. I vores eksempel er værdien [Swami,Werner].
- get_filer – Returnerer alle billedfiler under S3-præfikset for brugeren.
- ansigts-id'er – Dette er en liste, der indeholder alle de ansigts-id'er, der tilhører en bruger. Vi bruger denne liste, når vi ringer til AssociateFaces API.
Som forklaret tidligere, kan du tilføje flere brugere ved at tilføje mapper til dem (mappen dikterer bruger-id'et) og tilføje dine billeder i den mappe (ingen bestilling er nødvendig for filerne).
Nu hvor vores miljø er sat op, og vi har både individuelle ansigtsvektorer og brugervektorer, lad os sammenligne vores søgekvalitet med hver af dem. For at gøre det bruger vi et nyt foto med flere personer og forsøger at matche deres ansigter mod vores samling, først mod de individuelle ansigtsvektorer og derefter mod brugervektorerne.
Ansigtssøgning af billede mod en samling af individuelle ansigtsvektorer
For at søge mod vores individuelle ansigtsvektorer bruger vi Amazon-genkendelsen SearchFacesByImage API. Denne funktion bruger et kildeansigtsbillede til at søge mod individuelle ansigtsvektorer i vores samling og returnerer ansigter, der matcher vores definerede lighedsscoretærskel.
En vigtig overvejelse er, at SearchFacesByImage
API vil kun fungere på det største ansigt, der er registreret på billedet. Hvis der er flere ansigter til stede, skal du beskære hvert enkelt ansigt og videregive det separat til metoden til identifikation.
Til at udtrække ansigtsdetaljer fra et billede (såsom deres placering på billedet), bruger vi Amazon-genkendelsen Opdag ansigter API.
Følgende detect_faces_in_image metoden registrerer ansigter i et billede. For hvert ansigt udfører den følgende handlinger:
- Udskriv dens afgrænsningsboksplacering
- Beskær ansigtet fra billedet og tjek om et sådant ansigt findes i samlingen og udskriv brugeren eller 'Ukendt'
- Udskriv lighedsscore
Eksemplet på Python-koden bruger Pude bibliotek til at udføre billedmanipulationer (såsom udskrivning, tegning og beskæring).
Vi bruger en tærskelværdi for lighedsscore på 99 %, hvilket er en almindelig indstilling for brugssager med identitetsbekræftelse.
Kør følgende kode:
file_key
er den S3 objektnøgle, vi ønsker at matche mod vores samling. Vi har leveret et eksempelbillede (photo.jpeg
) under billedmappen.
Følgende billede viser vores resultater.
Ved at bruge en tærskel på 99 % blev kun én person identificeret. Dr. Werner Vogels blev markeret som ukendt. Hvis vi kører den samme kode med en lavere tærskel på 90 (set threshold=90), får vi følgende resultater.
Nu ser vi Dr. Werner Vogels ansigt har en lighedsscore på 96.86%. Lad os derefter tjekke, om vi kan få lighedsscoren over vores definerede tærskel ved at bruge brugervektorer.
Ansigtssøgning af billede mod en samling af brugervektorer
For at søge mod vores brugervektorer bruger vi Amazon Rekognition SearchUsersByImage API. Denne funktion bruger et kildeansigtsbillede til at søge mod brugervektorer i vores samling og returnerer brugere, der matcher vores definerede lighedsscoretærskel.
Den samme betragtning er relevant her - den SearchUsersByImage
API vil kun fungere på det største ansigt, der er registreret på billedet. Hvis der er flere ansigter til stede, skal du beskære hvert enkelt ansigt og videregive det separat til metoden til identifikation.
Til at udtrække ansigtsdetaljer fra et billede (såsom deres placering på billedet), bruger vi Amazon-genkendelsen Opdag ansigter API.
Følgende detect_users_in_image metoden registrerer ansigter i et billede. For hvert ansigt udfører den følgende handlinger:
- Udskriv dens afgrænsningsboksplacering
- Beskær ansigtet fra billedet og kontroller, om et sådant brugeransigt findes i vores samling, og udskriv brugeren eller 'Ukendt'
- Udskriv lighedsscore
Se følgende kode:
Funktionen returnerer et ændret billede med de resultater, der kan gemmes på Amazon S3 eller udskrives. Funktionen udsender også statistik om de anslåede alder af ansigterne til terminalen.
Kør følgende kode:
Følgende billede viser vores resultater.
De brugere, der findes i vores samling, blev identificeret korrekt med høj lighed (over 99%).
Vi var i stand til at øge lighedsscoren ved at bruge tre ansigtsvektorer pr. brugervektor. Efterhånden som vi øger antallet af brugte ansigtsvektorer, forventer vi, at lighedsscoren for sande kampe også vil stige. Du kan bruge op til 100 ansigtsvektorer pr. brugervektor.
En ende-til-ende eksempelkode kan findes i GitHub repository. Den indeholder en detaljeret Jupyter notesbog som du kan løbe på Amazon SageMaker Studio (eller andre alternativer).
Ryd op
For at slette samlingen skal du bruge følgende kode:
Konklusion
I dette indlæg præsenterede vi, hvordan man bruger Amazon Rekognition-brugervektorer til at implementere ansigtssøgning mod en samling af brugeres ansigter. Vi demonstrerede, hvordan man forbedrer ansigtssøgningsnøjagtigheden ved at bruge flere ansigtsbilleder pr. bruger og sammenlignede det med individuelle ansigtsvektorer. Derudover beskrev vi, hvordan du kan bruge de forskellige Amazon Rekognition API'er til at opdage ansigter. Den medfølgende eksempelkode tjener som et solidt grundlag for at konstruere et funktionelt ansigtssøgningssystem.
For mere information om Amazon Rekognition-brugervektorer, se Søger ansigter i en samling. Hvis du er ny til Amazon Rekognition, kan du bruge vores gratis niveau, som varer 12 måneder og inkluderer behandling af 5,000 billeder om måneden og lagring af 1,000 brugervektorobjekter om måneden.
Om forfatterne
Arik Porat er Senior Startups Solutions Architect hos Amazon Web Services. Han arbejder med startups for at hjælpe dem med at bygge og designe deres løsninger i skyen og brænder for machine learning og containerbaserede løsninger. I sin fritid kan Arik godt lide at spille skak og videospil.
Eliran Efron er Startups Solutions Architect hos Amazon Web Services. Eliran er en data- og computerentusiast, der hjælper startups med at designe deres systemarkitekturer. I sin fritid kan Eliran godt lide at bygge og køre biler i Touring-løb og bygge IoT-enheder.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- PlatoHealth. Bioteknologiske og kliniske forsøgs intelligens. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/improve-accuracy-of-amazon-rekognition-face-search-with-user-vectors/
- :har
- :er
- $OP
- 000
- 1
- 10
- 100
- 12
- 12 måneder
- 17
- 2023
- 28
- 30
- 7
- 9
- a
- I stand
- Om
- over
- adgang
- Konto
- nøjagtighed
- præcis
- opnå
- Handling
- aktioner
- faktiske
- tilføje
- tilføje
- Derudover
- mod
- Ages
- aggregat
- aggregere
- Alle
- tillade
- tillader
- allerede
- også
- alternativer
- Amazon
- Amazon-anerkendelse
- Amazon Web Services
- an
- ,
- En anden
- api
- API'er
- udseende
- optrædener
- passende
- arkitekturer
- ER
- Array
- AS
- bistår
- Associate
- forbundet
- At
- forsøg
- Godkendelse
- AWS
- baseret
- BE
- fordi
- tilhører
- mellem
- krop
- både
- Boks
- kasser
- bygge
- bygget
- men
- by
- beregne
- ringe
- ringer
- Opkald
- CAN
- Kan få
- kapacitet
- biler
- tilfælde
- kontrollere
- skak
- kunde
- Cloud
- kode
- samling
- samlinger
- Fælles
- sammenligne
- sammenlignet
- sammenligne
- Compute
- overvejelse
- konstruere
- indeholder
- indeholder
- konvertere
- korrekt
- Tilsvarende
- skabe
- skaber
- Oprettelse af
- afgrøde
- For øjeblikket
- Kunder
- data
- Database
- falde
- definerede
- demonstrere
- demonstreret
- beskrive
- beskrevet
- Design
- designe
- detaljeret
- detaljer
- opdage
- opdaget
- Bestem
- Enheder
- dikterer
- forskellige
- digital
- digital identitet
- mapper
- Vejviser
- Skærm
- do
- Er ikke
- gør
- færdig
- dr
- tegne
- tegning
- i løbet af
- hver
- tidligere
- effekt
- nemt
- andet
- muliggør
- ende til ende
- entusiast
- Miljø
- især
- anslået
- Endog
- eksempel
- Undtagen
- eksisterer
- eksisterende
- eksisterer
- udgange
- forvente
- forklarede
- ekstrakt
- Ansigtet
- ansigter
- Filer
- finansielle
- finansielle tjenesteydelser
- Finde
- Fornavn
- Markeret
- Flyde
- efter
- Til
- format
- fundet
- Foundation
- Gratis
- fra
- funktion
- funktionel
- yderligere
- Spil
- genererer
- få
- given
- Give
- tilskud
- vejlede
- Have
- he
- sundhedspleje
- højde
- hjælpe
- hjælpere
- hjælpsom
- link.
- Høj
- højere
- hans
- Hvordan
- How To
- HTML
- http
- HTTPS
- menneskelig
- ID
- Identifikation
- identificeret
- Identity
- Identitetsbekræftelse
- id'er
- if
- billede
- billeder
- gennemføre
- importere
- vigtigt
- Forbedre
- forbedrer
- in
- omfatter
- Forøg
- indeks
- indekseret
- individuel
- industrier
- oplysninger
- indgang
- ind
- påberåbes
- involverer
- tingenes internet
- iot-enheder
- IT
- ITS
- jpeg
- juni
- Nøgle
- største
- endelig
- lanceret
- læring
- til venstre
- Bibliotek
- Belysning
- ligesom
- synes godt om
- Liste
- lidt
- belastning
- placering
- Se
- UDSEENDE
- Lav
- lavere
- maskine
- machine learning
- maerker
- manipulationer
- Match
- tændstikker
- matchende
- matematik
- matematiske
- maksimal
- måling
- metode
- metoder
- minimum
- modeller
- modificeret
- Måned
- måned
- mere
- flere
- skal
- navn
- nødvendig
- Behov
- Ny
- næste
- ingen
- nu
- nummer
- objekt
- objekter
- of
- tilbyde
- Gammel
- on
- onboarding
- ONE
- online
- kun
- betjene
- or
- Andet
- Ellers
- vores
- skitse
- udgange
- i løbet af
- par
- passerer
- lidenskabelige
- Mennesker
- per
- udfører
- udfører
- tilladelse
- person,
- personale
- foto
- plato
- Platon Data Intelligence
- PlatoData
- Leg
- punkter
- politik
- udgør
- udgør
- Indlæg
- præsentere
- forelagt
- trykning
- behandle
- forarbejdning
- forudsat
- Python
- kvalitet
- Løb
- løb
- hellere
- henvise
- relevant
- repræsentation
- påkrævet
- ressource
- svar
- Resultater
- afkast
- afkast
- robust
- roller
- Kør
- sagemaker
- Said
- samme
- gemt
- score
- Søg
- søgning
- sektioner
- se
- senior
- tjener
- Tjenester
- Session
- sæt
- indstilling
- flere
- Shows
- betydeligt
- Simpelt
- enkelt
- Størrelse
- solid
- løsninger
- Løsninger
- nogle
- Kilde
- Nystartede
- Statement
- statistik
- Status
- Trin
- Steps
- opbevaring
- butik
- forhandler
- lagring
- strøm
- struktur
- sådan
- tilført
- systemet
- mål
- telekommunikation
- terminal
- at
- The Source
- deres
- Them
- derefter
- Der.
- de
- denne
- dem
- tre
- tærskel
- Gennem
- tier
- tid
- til
- top
- touring
- sand
- prøv
- to
- typer
- under
- ukendt
- brug
- anvendte
- Bruger
- brugere
- bruger
- ved brug af
- sædvanligvis
- værdi
- variationer
- forskellige
- Varierende
- Verifikation
- verificere
- udgave
- meget
- via
- video
- videospil
- ønsker
- var
- we
- web
- webservices
- var
- hvornår
- hvorvidt
- som
- bredde
- vilje
- med
- uden
- workflow
- arbejdsgange
- virker
- ville
- år
- Du
- Din
- zephyrnet