“ID + Selfie” – Verbetering van de digitale identiteitsverificatie met behulp van AWS PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

“ID + Selfie” – Verbetering van digitale identiteitsverificatie met AWS

De wereldwijde pandemie van COVID-19 heeft de noodzaak om gebruikers online te verifiëren en te onboarden in verschillende sectoren, zoals financiële dienstverlening, verzekeringen en gezondheidszorg, versneld. Als het gaat om gebruikerservaring, is het cruciaal om een ​​soepele transactie te bieden met behoud van een hoge standaard voor identiteitsverificatie. De vraag is, hoe verifieer je echte mensen in de digitale wereld?

Amazon Rekognition biedt vooraf getrainde gezichtsherkenning en analysemogelijkheden voor identiteitsverificatie voor uw online toepassingen, zoals bankieren, voordelen, e-commerce en nog veel meer.

In dit bericht presenteren we het "ID + Selfie" ontwerppatroon voor identiteitsverificatie en voorbeeldcode u kunt gebruiken om uw eigen REST-eindpunt voor identiteitsverificatie te maken. Dit is een algemeen ontwerppatroon dat u kunt opnemen in bestaande of nieuwe oplossingen waarvoor identiteitsverificatie op basis van gezicht vereist is. De gebruiker presenteert een vorm van identificatie zoals een rijbewijs of paspoort. De gebruiker maakt dan een realtime selfie met de applicatie. Vervolgens vergelijken we het gezicht uit het document met de realtime selfie die op hun apparaat is gemaakt.

De Amazon Recognition CompareFaces API

De kern van het ontwerppatroon "ID + Selfie" is de vergelijking van het gezicht in de selfie met het gezicht op het identificatiedocument. Hiervoor gebruiken we de Amazon Rekognition CompareFaces API. De API vergelijkt een gezicht in de broninvoerafbeelding met een of meer gezichten die zijn gedetecteerd in de doelinvoerafbeelding. In het volgende voorbeeld vergelijken we een voorbeeldrijbewijs (links) met een selfie (rechts).

bron doelwit
“ID + Selfie” – Verbetering van de digitale identiteitsverificatie met behulp van AWS PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het volgende is een voorbeeld van de API-code:

response = client.compare_faces(SimilarityThreshold=80,
                              SourceImage={'Bytes': s_bytes},
                              TargetImage={'Bytes': t_bytes})

for faceMatch in response['FaceMatches']:
    position = faceMatch['Face']['BoundingBox']
    similarity = str(faceMatch['Similarity'])

Verschillende waarden worden geretourneerd in de CompareFaces API-antwoord. Wij richten ons op de Similarity waarde geretourneerd in FaceMatches om te valideren dat de selfie overeenkomt met de verstrekte ID.

De belangrijkste afstemmingsparameters begrijpen

SimilarityThreshold is standaard ingesteld op 80% en retourneert alleen resultaten met een overeenkomstscore groter dan of gelijk aan 80%. Pas de waarde aan door de . op te geven SimilarityThreshold parameter.

QualityFilter is een invoerparameter om gedetecteerde gezichten uit te filteren die niet voldoen aan een vereiste kwaliteitsbalk. De kwaliteitsbalk is gebaseerd op een verscheidenheid aan veelvoorkomende gebruiksscenario's. Gebruiken QualityFilter om de kwaliteitsbalk in te stellen door op te geven LOW, MEDIUMof HIGH. Als u gezichten van slechte kwaliteit niet wilt filteren, geeft u op NONE. De standaardwaarde is NONE.

Overzicht oplossingen

U kunt een "ID + Selfie" API maken voor digitale identiteitsverificatie door de volgende componenten in te zetten:

  • Een REST API met een POST-methode waarmee we de selfie- en identificatie-payload kunnen verzenden en een reactie kunnen retourneren, in dit geval de gelijkenisscore
  • Een functie om de payload te ontvangen, de afbeeldingen naar het juiste formaat te converteren en de Amazon Rekognition aan te roepen compare_faces API.

We implementeren Amazon API-gateway voor de REST API-functionaliteit en AWS Lambda voor de functie.

Het volgende diagram illustreert de oplossingsarchitectuur en workflow.

“ID + Selfie” – Verbetering van de digitale identiteitsverificatie met behulp van AWS PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De workflow bevat de volgende stappen:

  1. De gebruiker uploadt het benodigde legitimatiebewijs en een selfie.
  2. De klant dient het identificatiedocument en de selfie in bij het REST-eindpunt.
  3. Het REST-eindpunt retourneert een overeenkomstscore naar de client.
  4. Een evaluatie gebeurt via bedrijfslogica in uw applicatie. Als de gelijkenisscore bijvoorbeeld lager is dan 80%, komt deze niet door de digitale identiteitscontrole; anders doorstaat het de digitale identiteitscontrole.
  5. De client stuurt de status naar de gebruiker.

Lambda-code

De Lambda-functie converteert de inkomende payload van base64 naar byte voor elke afbeelding en stuurt vervolgens de bron (selfie) en het doel (identificatie) naar de Amazon Rekognition compare_faces API en retourneert de overeenkomstscore die is ontvangen in de hoofdtekst van het API-antwoord. Zie de volgende code:

import boto3
import sys
import json
import base64


def lambda_handler(event, context):

  client = boto3.client('rekognition')

  payload_dict = json.loads(json.loads(event['body']))
  selfie = payload_dict['selfie']
  dl = payload_dict['dl']

  # convert text to base64
  s_base64 = dl.encode('utf-8')
  t_base64 = selfie.encode('utf-8')
  #convert base64 to bytes
  s_bytes = base64.b64decode(s_base64)
  t_bytes = base64.b64decode(t_base64)
  response = client.compare_faces(SimilarityThreshold=80,
                                SourceImage={'Bytes': s_bytes},
                                TargetImage={'Bytes': t_bytes})

  for faceMatch in response['FaceMatches']:
      position = faceMatch['Face']['BoundingBox']
      similarity = str(faceMatch['Similarity'])

  return {

    'statusCode': response['ResponseMetadata']['HTTPStatusCode'],

    'body': similarity

  }

Het project implementeren

Dit project is beschikbaar voor implementatie via: AWS-voorbeelden met de AWS Cloud-ontwikkelingskit (AWS CDK). U kunt de repository klonen en het volgende AWS CDK-proces gebruiken om te implementeren op uw AWS-account.

  1. Stel een gebruiker in die machtigingen heeft om de oplossingsbronnen programmatisch te implementeren via de AWS CDK.
  2. Stel de AWS-opdrachtregelinterface (AWS CLI). Raadpleeg voor instructies: Configureren van de AWS CLI.
  3. Als dit de eerste keer is dat u de AWS CDK gebruikt, voltooi dan de vereisten vermeld in: Werken met de AWS CDK in Python.
  4. Kloon het GitHub-repository.
  5. Creëer de virtuele omgeving. De opdracht die u gebruikt, is afhankelijk van uw besturingssysteem:
    1. Als u Windows gebruikt, voert u de volgende opdracht uit in uw terminalvenster vanuit de bron van de gekloonde repository:
      ..venvScriptsactivate

    2. Als u Mac of Linux gebruikt, voert u de volgende opdracht uit in uw terminalvenster vanuit de bron van de gekloonde repository:
      .venv/bin/activate

  6. Installeer na het activeren van de virtuele omgeving de standaard afhankelijkheden van de app:
    python -m pip install -r requirements.txt

  7. Nu de omgeving is ingesteld en aan de vereisten is voldaan, kunnen we de AWS CDK-implementatieopdracht geven om dit project op AWS te implementeren:
    CDK Deploy

API-aanroepen doen

We moeten de payload in base64-indeling naar het REST-eindpunt sturen. We gebruiken een Python-bestand om de API-aanroep te doen, waarmee we de bron- en doelbestanden kunnen openen, ze naar base64 kunnen converteren en de payload naar de API Gateway kunnen sturen. Deze code is beschikbaar in de repository.

Merk op dat de SOURCE en TARGET bestandslocaties bevinden zich op uw lokale bestandssysteem en de URL is de API Gateway-URL die is gegenereerd tijdens het maken van het project.

import requests
from base64 import b64encode
from json import dumps

TARGET = '.png'
SOURCE = .png'
URL = "https://.execute-api..amazonaws.com//ips"
ENCODING = 'utf-8'
JSON_NAME = 'output.json'

# first: reading the binary stuff
with open(SOURCE, 'rb') as source_file:
    s_byte_content = source_file.read()
with open(TARGET, 'rb') as target_file:
    t_byte_content = target_file.read()

# second: base64 encode read data
s_base64_bytes = b64encode(s_byte_content)
t_base64_bytes = b64encode(t_byte_content)

# third: decode these bytes to text
s_base64_string = s_base64_bytes.decode(ENCODING)
t_base64_string = t_base64_bytes.decode(ENCODING)

# make raw data for json
raw_data = {
    " dl ": s_base64_string,
    " selfie ": t_base64_string
}

# now: encoding the data to json
json_data = dumps(raw_data, indent=2)

response = requests.post(url=URL, json=json_data)
response.raise_for_status()

print("Status Code", response.status_code)
print("Body ", response.json())

Opruimen

We hebben de AWS CDK gebruikt om dit project te bouwen, zodat we ons project lokaal kunnen openen en de volgende AWS CDK-opdracht kunnen geven om de bronnen op te schonen:

CDK Destroy

Conclusie

Daar heb je het, het "ID + Selfie" ontwerppatroon met een eenvoudige API die je kunt integreren met je applicatie om digitale identiteitsverificatie uit te voeren. In de volgende post in onze serie breiden we dit patroon verder uit door tekst uit het identificatiedocument te extraheren en een verzameling gezichten te doorzoeken om duplicatie te voorkomen.

Kijk voor meer informatie op de Handleiding voor ontwikkelaars van Amazon-herkenning over het detecteren en analyseren van gezichten.


Over de auteurs

“ID + Selfie” – Verbetering van de digitale identiteitsverificatie met behulp van AWS PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai. Mike Ames is een Principal Applied AI/ML Solutions Architect bij AWS. Hij helpt bedrijven machine learning en AI-diensten te gebruiken om fraude, verspilling en misbruik tegen te gaan. In zijn vrije tijd vind je hem mountainbiken, kickboksen of gitaar spelen in een metalband uit de jaren 90.

“ID + Selfie” – Verbetering van de digitale identiteitsverificatie met behulp van AWS PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Noach Donaldson is Solutions Architect bij AWS en ondersteunt federale financiële organisaties. Hij is enthousiast over AI/ML-technologie die handmatige processen kan verminderen, klantervaringen kan verbeteren en interessante problemen kan helpen oplossen. Naast zijn werk brengt hij graag tijd door op het ijs met zijn zoon die hockey speelt, jaagt met zijn oudste dochter en hoepels schiet met zijn jongste dochter.

Tijdstempel:

Meer van AWS-machine learning