« ID + Selfie » – Amélioration de la vérification de l'identité numérique à l'aide d'AWS PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

« ID + Selfie » – Améliorer la vérification de l'identité numérique à l'aide d'AWS

La pandémie mondiale de COVID-19 a accéléré le besoin de vérifier et d'intégrer les utilisateurs en ligne dans plusieurs secteurs, tels que les services financiers, les assurances et les soins de santé. Lorsqu'il s'agit d'expérience utilisateur, il est crucial de fournir une transaction fluide tout en maintenant un niveau élevé de vérification d'identité. La question est : comment vérifier de vraies personnes dans le monde numérique ?

Amazon Reconnaissance fournit des capacités de reconnaissance faciale et d'analyse pré-entraînées pour la vérification d'identité de vos applications en ligne, telles que les services bancaires, les avantages sociaux, le commerce électronique et bien plus encore.

Dans cet article, nous présentons le modèle de conception de vérification d'identité « ID + Selfie » et exemple de code vous pouvez utiliser pour créer votre propre point de terminaison REST de vérification d’identité. Il s'agit d'un modèle de conception courant que vous pouvez intégrer dans des solutions existantes ou nouvelles qui nécessitent une vérification d'identité basée sur le visage. L'utilisateur présente une forme d'identification comme un permis de conduire ou un passeport. L'utilisateur capture ensuite un selfie en temps réel avec l'application. Nous comparons ensuite le visage du document avec le selfie en temps réel pris sur leur appareil.

L'API CompareFaces d'Amazon Rekognition

Au cœur du modèle de conception « ID + Selfie » se trouve la comparaison du visage du selfie avec celui du document d’identification. Pour cela, nous utilisons Amazon Rekognition CompareFaces API. L'API compare un visage dans l'image d'entrée source avec un ou plusieurs visages détectés dans l'image d'entrée cible. Dans l'exemple suivant, nous comparons un exemple de permis de conduire (à gauche) avec un selfie (à droite).

Identifier Target
« ID + Selfie » – Amélioration de la vérification de l'identité numérique à l'aide d'AWS PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Voici un exemple du code 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'])

Plusieurs valeurs sont renvoyées dans le Réponse de l'API CompareFaces. Nous nous concentrons sur la Similarity valeur renvoyée dans FaceMatches pour valider que le selfie correspond à l'identifiant fourni.

Comprendre les paramètres de réglage clés

SimilarityThreshold est défini sur 80 % par défaut et ne renverra que des résultats avec un score de similarité supérieur ou égal à 80 %. Ajustez la valeur en spécifiant le SimilarityThreshold paramètre.

QualityFilter est un paramètre d'entrée permettant de filtrer les visages détectés qui ne répondent pas à une barre de qualité requise. La barre de qualité est basée sur une variété de cas d’utilisation courants. Utiliser QualityFilter pour définir la barre de qualité en spécifiant LOW, MEDIUMou HIGH. Si vous ne souhaitez pas filtrer les visages de mauvaise qualité, précisez NONE. La valeur par défaut est NONE.

Vue d'ensemble de la solution

Vous pouvez créer une API « ID + Selfie » pour la vérification de l'identité numérique en déployant les composants suivants :

  • Une API REST avec une méthode POST qui nous permet d'envoyer la charge utile de selfie et d'identification et renvoie une réponse, dans ce cas le score de similarité
  • Une fonction pour recevoir la charge utile, convertir les images au format approprié et appeler Amazon Rekognition compare_faces API.

Nous mettons en œuvre Passerelle d'API Amazon pour la fonctionnalité de l'API REST et AWS Lambda pour la fonction.

Le diagramme suivant illustre l'architecture et le flux de travail de la solution.

« ID + Selfie » – Amélioration de la vérification de l'identité numérique à l'aide d'AWS PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Le workflow contient les étapes suivantes:

  1. L'utilisateur télécharge le document d'identification requis et un selfie.
  2. Le client soumet le document d'identification et le selfie au point de terminaison REST.
  3. Le point de terminaison REST renvoie un score de similarité au client.
  4. Une évaluation est effectuée via la logique métier dans votre application. Par exemple, si le score de similarité est inférieur à 80 %, le contrôle d’identité numérique échoue ; sinon, il passe le contrôle d’identité numérique.
  5. Le client envoie le statut à l'utilisateur.

Code lambda

La fonction Lambda convertit la charge utile entrante de base64 en octets pour chaque image, puis envoie la source (selfie) et la cible (identification) à Amazon Rekognition. compare_faces API et renvoie le score de similarité reçu dans le corps de la réponse de l'API. Voir le code suivant :

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

  }

Déployer le projet

Ce projet est disponible pour être déployé via Exemples AWS les Kit de développement AWS Cloud (AWSCDK). Vous pouvez cloner le référentiel et utiliser le processus AWS CDK suivant pour le déployer sur votre compte AWS.

  1. Configurez un utilisateur disposant des autorisations nécessaires pour déployer par programmation les ressources de la solution via AWS CDK.
  2. Mettre en place le Interface de ligne de commande AWS (AWS CLI). Pour obtenir des instructions, reportez-vous à Configuration de l'AWS CLI.
  3. Si c'est la première fois que vous utilisez AWS CDK, remplissez les conditions préalables répertoriées dans Travailler avec AWS CDK en Python.
  4. Cloner le GitHub référentiel.
  5. Créez l'environnement virtuel. La commande que vous utilisez dépend de votre système d'exploitation :
    1. Si vous utilisez Windows, exécutez la commande suivante dans la fenêtre de votre terminal à partir de la source du référentiel cloné :
      ..venvScriptsactivate

    2. Si vous utilisez Mac ou Linux, exécutez la commande suivante dans la fenêtre de votre terminal à partir de la source du référentiel cloné :
      .venv/bin/activate

  6. Après avoir activé l'environnement virtuel, installez les dépendances standards de l'application :
    python -m pip install -r requirements.txt

  7. Maintenant que l'environnement est configuré et que les exigences sont remplies, nous pouvons émettre la commande de déploiement AWS CDK pour déployer ce projet sur AWS :
    CDK Deploy

Effectuer des appels API

Nous devons envoyer la charge utile au format base64 au point de terminaison REST. Nous utilisons un fichier Python pour effectuer l'appel API, ce qui nous permet d'ouvrir les fichiers source et cible, de les convertir en base64 et d'envoyer la charge utile à la passerelle API. Ce code est disponible dans le référentiel.

Notez que le SOURCE ainsi que TARGET les emplacements des fichiers se trouveront sur votre système de fichiers local et l'URL est l'URL API Gateway générée lors de la création du projet.

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

Nettoyer

Nous avons utilisé AWS CDK pour créer ce projet, afin que nous puissions ouvrir notre projet localement et émettre la commande AWS CDK suivante pour nettoyer les ressources :

CDK Destroy

Conclusion

Voilà, le modèle de conception « ID + Selfie » avec une API simple que vous pouvez intégrer à votre application pour effectuer une vérification d'identité numérique. Dans le prochain article de notre série, nous développerons davantage ce modèle en extrayant le texte du document d'identification et en recherchant une collection de visages pour éviter la duplication.

Pour en savoir plus, consultez le Guide du développeur Amazon Rekognition sur la détection et l'analyse des visages.


À propos des auteurs

« ID + Selfie » – Amélioration de la vérification de l'identité numérique à l'aide d'AWS PlatoBlockchain Data Intelligence. Recherche verticale. Aï. Mike Ames est un architecte principal de solutions IA/ML appliquées chez AWS. Il aide les entreprises à utiliser les services d'apprentissage automatique et d'IA pour lutter contre la fraude, le gaspillage et les abus. Dans ses temps libres, vous pouvez le trouver en train de faire du VTT, du kickboxing ou de jouer de la guitare dans un groupe de metal des années 90.

« ID + Selfie » – Amélioration de la vérification de l'identité numérique à l'aide d'AWS PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Noah Donaldson est architecte de solutions chez AWS qui soutient les organisations financières fédérales. Il est enthousiasmé par la technologie IA/ML qui peut réduire les processus manuels, améliorer l'expérience client et aider à résoudre des problèmes intéressants. En dehors du travail, il aime passer du temps sur la glace avec son fils, jouer au hockey, chasser avec sa fille aînée et tirer au cerceau avec sa plus jeune fille.

Horodatage:

Plus de Apprentissage automatique AWS