“ID + Selfie” – Miglioramento della verifica dell'identità digitale utilizzando AWS PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

"ID + Selfie" – Miglioramento della verifica dell'identità digitale tramite AWS

La pandemia globale di COVID-19 ha accelerato la necessità di verificare e integrare gli utenti online in diversi settori, come i servizi finanziari, le assicurazioni e l'assistenza sanitaria. Quando si tratta dell'esperienza dell'utente, è fondamentale fornire una transazione senza attriti mantenendo uno standard elevato per la verifica dell'identità. La domanda è: come verificare le persone reali nel mondo digitale?

Rekognition di Amazon fornisce funzionalità di riconoscimento facciale e analisi pre-addestrate per la verifica dell'identità per le tue applicazioni online, come servizi bancari, vantaggi, e-commerce e molto altro.

In questo post presentiamo il design pattern di verifica dell'identità “ID + Selfie” e Codice d'esempio puoi utilizzare per creare il tuo endpoint REST di verifica dell'identità. Si tratta di un modello di progettazione comune che è possibile incorporare in soluzioni esistenti o nuove che richiedono la verifica dell'identità basata sul volto. L'utente presenta una forma di identificazione come la patente di guida o il passaporto. L'utente quindi cattura un selfie in tempo reale con l'applicazione. Quindi confrontiamo il volto del documento con il selfie in tempo reale scattato sul loro dispositivo.

L'API CompareFaces di Amazon Rekognition

Al centro del modello di design “ID + Selfie” c’è il confronto tra il volto nel selfie e il volto sul documento d’identità. Per questo utilizziamo Amazon Rekognition CompareFaces API. L'API confronta un volto nell'immagine di input di origine con uno o più volti rilevati nell'immagine di input di destinazione. Nell'esempio seguente confrontiamo un esempio di patente di guida (a sinistra) con un selfie (a destra).

Fonte Target
“ID + Selfie” – Miglioramento della verifica dell'identità digitale utilizzando AWS PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Di seguito è riportato un esempio del codice API:

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

Vengono restituiti diversi valori nel file Risposta API CompareFaces. Ci concentriamo su Similarity valore restituito in FaceMatches per convalidare il selfie corrisponde all'ID fornito.

Comprensione dei parametri chiave di ottimizzazione

SimilarityThreshold è impostato su 80% per impostazione predefinita e restituirà solo risultati con un punteggio di somiglianza maggiore o uguale all'80%. Regolare il valore specificando il SimilarityThreshold parametro.

QualityFilter è un parametro di input per filtrare i volti rilevati che non soddisfano la barra di qualità richiesta. La barra della qualità si basa su una varietà di casi d'uso comuni. Utilizzo QualityFilter per impostare la barra della qualità specificando LOW, MEDIUM, o HIGH. Se non vuoi filtrare i volti di scarsa qualità, specifica NONE. Il valore predefinito è NONE.

Panoramica della soluzione

Puoi creare un'API "ID + Selfie" per la verifica dell'identità digitale distribuendo i seguenti componenti:

  • Una API REST con metodo POST che ci permette di inviare il payload selfie e identificazione e restituisce una risposta, in questo caso il punteggio di somiglianza
  • Una funzione per ricevere il payload, convertire le immagini nel formato corretto e chiamare Amazon Rekognition compare_faces API.

Noi implementiamo Gateway API Amazon per la funzionalità API REST e AWS Lambda per la funzione.

Il diagramma seguente illustra l'architettura della soluzione e il flusso di lavoro.

“ID + Selfie” – Miglioramento della verifica dell'identità digitale utilizzando AWS PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Il flusso di lavoro contiene i seguenti passaggi:

  1. L'utente carica il documento di identità richiesto e un selfie.
  2. Il cliente invia il documento di identità e il selfie all'endpoint REST.
  3. L'endpoint REST restituisce un punteggio di somiglianza al client.
  4. Una valutazione viene eseguita tramite la logica aziendale nell'applicazione. Ad esempio, se il punteggio di somiglianza è inferiore all’80%, non supera il controllo dell’identità digitale; in caso contrario supera il controllo dell'identità digitale.
  5. Il client invia lo stato all'utente.

Codice Lambda

La funzione Lambda converte il payload in entrata da base64 a byte per ciascuna immagine e quindi invia l'origine (selfie) e la destinazione (identificazione) ad Amazon Rekognition compare_faces API e restituisce il punteggio di somiglianza ricevuto nel corpo della risposta API. Vedere il seguente codice:

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

  }

Distribuisci il progetto

Questo progetto è disponibile per la distribuzione Campioni AWS con la Kit di sviluppo cloud AWS (CDK AWS). Puoi clonare il repository e utilizzare il seguente processo AWS CDK per eseguire la distribuzione sul tuo account AWS.

  1. Configura un utente che disponga delle autorizzazioni per distribuire a livello di codice le risorse della soluzione tramite AWS CDK.
  2. Configura il Interfaccia della riga di comando di AWS (AWS CLI). Per istruzioni, fare riferimento a Configurazione dell'AWS CLI.
  3. Se è la prima volta che utilizzi AWS CDK, completa i prerequisiti elencati in Lavorare con AWS CDK in Python.
  4. Clona il file Repository GitHub.
  5. Creare l'ambiente virtuale. Il comando che usi dipende dal tuo sistema operativo:
    1. Se utilizzi Windows, esegui il comando seguente nella finestra del terminale dall'origine del repository clonato:
      ..venvScriptsactivate

    2. Se utilizzi Mac o Linux, esegui il seguente comando nella finestra del terminale dall'origine del repository clonato:
      .venv/bin/activate

  6. Dopo aver attivato l'ambiente virtuale, installa le dipendenze standard dell'app:
    python -m pip install -r requirements.txt

  7. Ora che l'ambiente è configurato e i requisiti sono soddisfatti, possiamo emettere il comando di distribuzione AWS CDK per distribuire questo progetto su AWS:
    CDK Deploy

Effettua chiamate API

Dobbiamo inviare il payload in formato base64 all'endpoint REST. Utilizziamo un file Python per effettuare la chiamata API, che ci consente di aprire i file di origine e di destinazione, convertirli in base64 e inviare il payload all'API Gateway. Questo codice è disponibile nel repository.

Notare quello SOURCE ed TARGET le posizioni dei file saranno sul file system locale e l'URL è l'URL API Gateway generato durante la creazione del progetto.

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

ripulire

Abbiamo utilizzato AWS CDK per creare questo progetto, quindi possiamo aprire il nostro progetto localmente ed emettere il seguente comando AWS CDK per ripulire le risorse:

CDK Destroy

Conclusione

Ecco qua, il design pattern “ID + Selfie” con una semplice API che puoi integrare con la tua applicazione per eseguire la verifica dell'identità digitale. Nel prossimo post della nostra serie, espanderemo ulteriormente questo modello estraendo il testo dal documento di identificazione ed effettuando una ricerca in una raccolta di volti per evitare duplicazioni.

Per saperne di più, dai un'occhiata al Guida per sviluppatori di Amazon Rekognition sul rilevamento e l'analisi dei volti.


Informazioni sugli autori

“ID + Selfie” – Miglioramento della verifica dell'identità digitale utilizzando AWS PlatoBlockchain Data Intelligence. Ricerca verticale. Ai. Mike Ames è Principal Applied AI/ML Solutions Architect presso AWS. Aiuta le aziende a utilizzare l'apprendimento automatico e i servizi di intelligenza artificiale per combattere frodi, sprechi e abusi. Nel tempo libero puoi trovarlo in mountain bike, kickboxing o suonare la chitarra in una band metal degli anni '90.

“ID + Selfie” – Miglioramento della verifica dell'identità digitale utilizzando AWS PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Noè Donaldson è un Solutions Architect presso AWS che supporta le organizzazioni finanziarie federali. È entusiasta della tecnologia AI/ML che può ridurre i processi manuali, migliorare l'esperienza dei clienti e aiutare a risolvere problemi interessanti. Fuori dal lavoro, gli piace passare il tempo sul ghiaccio con suo figlio giocando a hockey, cacciando con la figlia maggiore e tirando a canestro con la figlia più piccola.

Timestamp:

Di più da Apprendimento automatico di AWS