“ID + Selfie” – Melhorando a verificação de identidade digital usando AWS PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

“ID + Selfie” – Melhorando a verificação de identidade digital usando a AWS

A pandemia global da COVID-19 acelerou a necessidade de verificar e integrar utilizadores online em vários setores, como serviços financeiros, seguros e cuidados de saúde. Quando se trata da experiência do usuário, é crucial fornecer uma transação sem atrito e, ao mesmo tempo, manter um alto padrão de verificação de identidade. A questão é: como você verifica pessoas reais no mundo digital?

Reconhecimento da Amazônia fornece recursos pré-treinados de reconhecimento facial e análise para verificação de identidade para seus aplicativos on-line, como bancos, benefícios, comércio eletrônico e muito mais.

Neste post, apresentamos o padrão de design de verificação de identidade “ID + Selfie” e Código de amostra você pode usar para criar seu próprio endpoint REST de verificação de identidade. Este é um padrão de design comum que você pode incorporar em soluções novas ou existentes que exigem verificação de identidade baseada em rosto. O usuário apresenta uma forma de identificação como carteira de motorista ou passaporte. O usuário então captura uma selfie em tempo real com o aplicativo. Em seguida, comparamos o rosto do documento com a selfie em tempo real tirada no dispositivo.

A API CompareFaces do Amazon Rekognition

No centro do padrão de design “ID + Selfie” está a comparação do rosto na selfie com o rosto no documento de identificação. Para isso, utilizamos o Amazon Rekognition CompareFaces API. A API compara um rosto na imagem de entrada de origem com um rosto ou rostos detectados na imagem de entrada de destino. No exemplo a seguir, comparamos um exemplo de carteira de motorista (esquerda) com uma selfie (direita).

fonte Target
“ID + Selfie” – Melhorando a verificação de identidade digital usando AWS PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

A seguir está um exemplo do código da 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'])

Vários valores são retornados no Resposta da API CompareFaces. Nós nos concentramos no Similarity valor retornado em FaceMatches para validar se a selfie corresponde ao ID fornecido.

Compreendendo os principais parâmetros de ajuste

SimilarityThreshold é definido como 80% por padrão e retornará apenas resultados com pontuação de similaridade maior ou igual a 80%. Ajuste o valor especificando o SimilarityThreshold parâmetro.

QualityFilter é um parâmetro de entrada para filtrar rostos detectados que não atendem a uma barra de qualidade exigida. A barra de qualidade é baseada em vários casos de uso comuns. Usar QualityFilter para definir a barra de qualidade especificando LOW, MEDIUMou HIGH. Se você não quiser filtrar rostos de baixa qualidade, especifique NONE. o valor padrão é NONE.

Visão geral da solução

Você pode criar uma API “ID + Selfie” para verificação de identidade digital implantando os seguintes componentes:

  • Uma API REST com um método POST que nos permite enviar o payload de selfie e identificação e retornar uma resposta, neste caso a pontuação de similaridade
  • Uma função para receber a carga útil, converter as imagens para o formato adequado e chamar o Amazon Rekognition compare_faces API.

Nós implementamos Gateway de API da Amazon para a funcionalidade da API REST e AWS Lambda para a função.

O diagrama a seguir ilustra a arquitetura e o fluxo de trabalho da solução.

“ID + Selfie” – Melhorando a verificação de identidade digital usando AWS PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

O fluxo de trabalho contém as seguintes etapas:

  1. O usuário carrega o documento de identificação necessário e uma selfie.
  2. O cliente envia o documento de identificação e a selfie para o endpoint REST.
  3. O endpoint REST retorna uma pontuação de similaridade para o cliente.
  4. Uma avaliação é feita por meio da lógica de negócios da sua aplicação. Por exemplo, se a pontuação de similaridade for inferior a 80%, ele será reprovado na verificação de identidade digital; caso contrário, ele passará na verificação de identidade digital.
  5. O cliente envia o status ao usuário.

Código lambda

A função Lambda converte a carga recebida de base64 em byte para cada imagem e, em seguida, envia a origem (selfie) e o destino (identificação) para o Amazon Rekognition compare_faces API e retorna a pontuação de similaridade recebida no corpo da resposta da API. Veja o seguinte código:

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

  }

Implantar o projeto

Este projeto está disponível para implantação por meio de Amostras da AWS com o Kit de desenvolvimento em nuvem da AWS (AWSCDK). Você pode clonar o repositório e usar o seguinte processo do AWS CDK para implantar em sua conta da AWS.

  1. Configure um usuário que tenha permissões para implantar programaticamente os recursos da solução por meio do AWS CDK.
  2. Configure o Interface de linha de comando da AWS (AWS CLI). Para obter instruções, consulte Configurando o AWS CLI.
  3. Se esta for a primeira vez que você usa o AWS CDK, preencha os pré-requisitos listados em Trabalhando com o AWS CDK em Python.
  4. Clone o Repositório GitHub.
  5. Crie o ambiente virtual. O comando que você usa depende do seu sistema operacional:
    1. Se estiver usando o Windows, execute o seguinte comando na janela do terminal a partir da origem do repositório clonado:
      ..venvScriptsactivate

    2. Se estiver usando Mac ou Linux, execute o seguinte comando na janela do terminal a partir da origem do repositório clonado:
      .venv/bin/activate

  6. Após ativar o ambiente virtual, instale as dependências padrão do app:
    python -m pip install -r requirements.txt

  7. Agora que o ambiente está configurado e os requisitos atendidos, podemos emitir o comando de implantação do AWS CDK para implantar este projeto na AWS:
    CDK Deploy

Faça chamadas de API

Precisamos enviar a carga no formato base64 para o endpoint REST. Usamos um arquivo Python para fazer a chamada da API, o que nos permite abrir os arquivos de origem e destino, convertê-los para base64 e enviar a carga útil para o API Gateway. Este código está disponível no repositório.

Observe que o SOURCE e TARGET os locais dos arquivos estarão em seu sistema de arquivos local e o URL é o URL do API Gateway gerado durante a criação do projeto.

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

limpar

Usamos o AWS CDK para construir este projeto, para que possamos abrir nosso projeto localmente e emitir o seguinte comando AWS CDK para limpar os recursos:

CDK Destroy

Conclusão

Aí está, o padrão de design “ID + Selfie” com uma API simples que você pode integrar ao seu aplicativo para realizar a verificação de identidade digital. Na próxima postagem de nossa série, expandiremos ainda mais esse padrão, extraindo texto do documento de identificação e pesquisando uma coleção de rostos para evitar duplicação.

Para saber mais, confira o Guia do desenvolvedor do Amazon Rekognition na detecção e análise de rostos.


Sobre os autores

“ID + Selfie” – Melhorando a verificação de identidade digital usando AWS PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai. Mike Ames é arquiteto principal de soluções de IA/ML aplicadas na AWS. Ele ajuda as empresas a usar serviços de aprendizado de máquina e IA para combater fraudes, desperdícios e abusos. Nas horas vagas, você pode encontrá-lo praticando mountain bike, praticando kickboxing ou tocando guitarra em uma banda de metal dos anos 90.

“ID + Selfie” – Melhorando a verificação de identidade digital usando AWS PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Noah Donaldson é arquiteto de soluções na AWS, apoiando organizações financeiras federais. Ele está entusiasmado com a tecnologia de IA/ML que pode reduzir processos manuais, melhorar a experiência do cliente e ajudar a resolver problemas interessantes. Fora do trabalho, ele gosta de passar o tempo no gelo com o filho jogando hóquei, caçando com a filha mais velha e jogando basquete com a filha mais nova.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS