"ID + Selfie" – Förbättring av digital identitetsverifiering med AWS PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

"ID + Selfie" – Förbättring av digital identitetsverifiering med AWS

Den globala covid-19-pandemin har ökat behovet av att verifiera och integrera användare online i flera branscher, såsom finansiella tjänster, försäkringar och hälsovård. När det kommer till användarupplevelse är det avgörande att tillhandahålla en friktionsfri transaktion samtidigt som en hög standard för identitetsverifiering upprätthålls. Frågan är, hur verifierar man riktiga människor i den digitala världen?

Amazon-erkännande ger förutbildade ansiktsigenkännings- och analysfunktioner för identitetsverifiering till dina onlineapplikationer, såsom banktjänster, förmåner, e-handel och mycket mer.

I det här inlägget presenterar vi designmönstret för identitetsverifiering "ID + Selfie" och Exempelkod du kan använda för att skapa din egen REST-slutpunkt för identitetsverifiering. Detta är ett vanligt designmönster som du kan införliva i befintliga eller nya lösningar som kräver ansiktsbaserad identitetsverifiering. Användaren uppvisar en form av identifiering som ett körkort eller pass. Användaren tar sedan en selfie i realtid med applikationen. Vi jämför sedan ansiktet från dokumentet med realtidsselfien som tagits på deras enhet.

Amazon Rekognition CompareFaces API

Kärnan i designmönstret "ID + Selfie" är jämförelsen av ansiktet i selfien med ansiktet på identifikationsdokumentet. För detta använder vi Amazon Rekognition CompareFaces API. API:n jämför ett ansikte i källinmatningsbilden med ett eller flera ansikten som detekteras i målinmatningsbilden. I följande exempel jämför vi ett exempel på körkort (vänster) med en selfie (höger).

Källa Målet
"ID + Selfie" – Förbättring av digital identitetsverifiering med AWS PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Följande är ett exempel på API-koden:

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'])

Flera värden returneras i Jämför Faces API-svar. Vi fokuserar på Similarity värde som returneras in FaceMatches för att validera att selfien stämmer överens med det angivna ID.

Förstå nyckelinställningsparametrar

SimilarityThreshold är inställd på 80 % som standard och ger endast resultat med ett likhetspoäng som är större än eller lika med 80 %. Justera värdet genom att ange SimilarityThreshold parameter.

QualityFilter är en indataparameter för att filtrera bort upptäckta ansikten som inte uppfyller en obligatorisk kvalitetsstapel. Kvalitetsfältet är baserat på en mängd vanliga användningsfall. Använda sig av QualityFilter för att ställa in kvalitetsfältet genom att ange LOW, MEDIUM, eller HIGH. Om du inte vill filtrera ansikten av dålig kvalitet, specificera NONE. Standardvärdet är NONE.

Lösningsöversikt

Du kan skapa ett "ID + Selfie" API för digital identitetsverifiering genom att distribuera följande komponenter:

  • Ett REST API med en POST-metod som låter oss skicka selfie- och identifieringsnyttolasten och returnerar ett svar, i det här fallet likhetspoängen
  • En funktion för att ta emot nyttolasten, konvertera bilderna till rätt format och anropa Amazon Rekognition compare_faces API.

Vi implementerar Amazon API Gateway för REST API-funktionalitet och AWS Lambda för funktionen.

Följande diagram illustrerar lösningsarkitekturen och arbetsflödet.

"ID + Selfie" – Förbättring av digital identitetsverifiering med AWS PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Arbetsflödet innehåller följande steg:

  1. Användaren laddar upp det nödvändiga identifieringsdokumentet och en selfie.
  2. Klienten skickar in identifieringsdokumentet och selfien till REST-slutpunkten.
  3. REST-slutpunkten returnerar ett likhetspoäng till klienten.
  4. En utvärdering görs genom affärslogik i din ansökan. Till exempel, om likhetspoängen är under 80 %, klarar den inte den digitala identitetskontrollen; annars klarar den den digitala identitetskontrollen.
  5. Klienten skickar status till användaren.

Lambdakod

Lambdafunktionen konverterar den inkommande nyttolasten från base64 till byte för varje bild och skickar sedan källan (selfie) och målet (identifikation) till Amazon Rekognition compare_faces API och returnerar likhetspoängen som erhållits i huvuddelen av API-svaret. Se följande kod:

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

  }

Implementera projektet

Detta projekt är tillgängligt att distribuera genom AWS-prover med AWS Cloud Development Kit (AWS CDK). Du kan klona förvaret och använda följande AWS CDK-process för att distribuera till ditt AWS-konto.

  1. Konfigurera en användare som har behörighet att programmässigt distribuera lösningsresurserna via AWS CDK.
  2. Ställ in AWS-kommandoradsgränssnitt (AWS CLI). För instruktioner, se Konfigurera AWS CLI.
  3. Om det här är första gången du använder AWS CDK, fyll i förutsättningarna som anges i Arbeta med AWS CDK i Python.
  4. Klona GitHub repository.
  5. Skapa den virtuella miljön. Kommandot du använder beror på ditt operativsystem:
    1. Om du använder Windows, kör följande kommando i ditt terminalfönster från källan till det klonade förvaret:
      ..venvScriptsactivate

    2. Om du använder Mac eller Linux, kör följande kommando i ditt terminalfönster från källan till det klonade förvaret:
      .venv/bin/activate

  6. När du har aktiverat den virtuella miljön installerar du appens standardberoenden:
    python -m pip install -r requirements.txt

  7. Nu när miljön är konfigurerad och kraven är uppfyllda kan vi utfärda AWS CDK-distributionskommandot för att distribuera detta projekt till AWS:
    CDK Deploy

Gör API-anrop

Vi måste skicka nyttolasten i base64-format till REST-slutpunkten. Vi använder en Python-fil för att göra API-anropet, vilket gör att vi kan öppna käll- och målfilerna, konvertera dem till base64 och skicka nyttolasten till API-gatewayen. Denna kod är tillgänglig i förvaret.

Observera att SOURCE och TARGET filplatser kommer att finnas på ditt lokala filsystem, och URL:en är API Gateway URL som genererades under skapandet av projektet.

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())

Städa upp

Vi använde AWS CDK för att bygga detta projekt, så vi kan öppna vårt projekt lokalt och utfärda följande AWS CDK-kommando för att rensa upp resurserna:

CDK Destroy

Slutsats

Där har du det, designmönstret "ID + Selfie" med ett enkelt API som du kan integrera med din applikation för att utföra digital identitetsverifiering. I nästa inlägg i vår serie utökar vi detta mönster ytterligare genom att extrahera text från identifieringsdokumentet och söka igenom en samling ansikten för att förhindra dubbelarbete.

För att lära dig mer, kolla in Amazon Rekognition Developer Guide på att upptäcka och analysera ansikten.


Om författarna

"ID + Selfie" – Förbättring av digital identitetsverifiering med AWS PlatoBlockchain Data Intelligence. Vertikal sökning. Ai. Mike Ames är en Principal Applied AI/ML Solutions Architect med AWS. Han hjälper företag att använda maskininlärning och AI-tjänster för att bekämpa bedrägerier, slöseri och missbruk. På fritiden kan du hitta honom på mountainbike, kickboxning eller gitarr i ett 90-tals metalband.

"ID + Selfie" – Förbättring av digital identitetsverifiering med AWS PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Noah Donaldson är en lösningsarkitekt på AWS som stödjer federala finansiella organisationer. Han är entusiastisk över AI/ML-teknik som kan minska manuella processer, förbättra kundupplevelser och hjälpa till att lösa intressanta problem. Utanför jobbet gillar han att tillbringa tid på isen med sin son och spela hockey, jaga med sin äldsta dotter och skjuta ringar med sin yngsta dotter.

Tidsstämpel:

Mer från AWS maskininlärning