«ID + Селфи» — улучшение проверки цифровой личности с помощью AWS PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

«ID + Selfie» — улучшение проверки цифровой личности с помощью AWS

Глобальная пандемия COVID-19 ускорила необходимость проверки и адаптации пользователей в Интернете в нескольких отраслях, таких как финансовые услуги, страхование и здравоохранение. Когда дело доходит до пользовательского опыта, крайне важно обеспечить беспрепятственную транзакцию, сохраняя при этом высокий стандарт проверки личности. Вопрос в том, как вы проверяете реальных людей в цифровом мире?

Апостол предоставляет предварительно обученные возможности распознавания лиц и анализа для проверки личности в ваших онлайн-приложениях, таких как банковские услуги, льготы, электронная коммерция и многое другое.

В этом посте мы представляем шаблон проектирования проверки личности «ID + Selfie» и образец кода вы можете использовать для создания собственной конечной точки REST для проверки личности. Это распространенный шаблон проектирования, который можно включить в существующие или новые решения, требующие проверки подлинности по лицу. Пользователь предъявляет форму идентификации, такую ​​как водительские права или паспорт. Затем пользователь делает селфи в реальном времени с помощью приложения. Затем мы сравниваем лицо из документа с селфи, сделанным в реальном времени на их устройстве.

API Amazon Rekognition CompareFaces

В основе шаблона проектирования «ID + Selfie» лежит сравнение лица на селфи с лицом на документе, удостоверяющем личность. Для этого мы используем Amazon Rekognition CompareFaces API. API сравнивает лицо на исходном входном изображении с лицом или лицами, обнаруженными на целевом входном изображении. В следующем примере мы сравниваем образец водительского удостоверения (слева) с селфи (справа).

Источник цель
«ID + Селфи» — улучшение проверки цифровой личности с помощью AWS PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Ниже приведен пример кода 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'])

Несколько значений возвращаются в Ответ API CompareFaces. Мы ориентируемся на Similarity значение, возвращенное в FaceMatches чтобы убедиться, что селфи соответствует предоставленному идентификатору.

Основные параметры настройки

SimilarityThreshold по умолчанию установлено значение 80%, и будут возвращаться только результаты с оценкой сходства, превышающей или равной 80%. Отрегулируйте значение, указав SimilarityThreshold Параметр.

QualityFilter является входным параметром для фильтрации обнаруженных лиц, которые не соответствуют требуемой шкале качества. Панель качества основана на множестве распространенных вариантов использования. Использовать QualityFilter установить планку качества, указав LOW, MEDIUMили HIGH. Если вы не хотите фильтровать лица плохого качества, укажите NONE. Значение по умолчанию - NONE.

Обзор решения

Вы можете создать API «ID + Selfie» для проверки цифровой личности, развернув следующие компоненты:

  • REST API с методом POST, который позволяет нам отправлять полезную нагрузку для селфи и идентификации и возвращает ответ, в данном случае показатель сходства.
  • Функция для получения полезной нагрузки, преобразования изображений в нужный формат и вызова службы Amazon Rekognition. compare_faces API.

Мы реализуем Шлюз API Amazon для функциональности REST API и AWS Lambda для функции.

Следующая диаграмма иллюстрирует архитектуру решения и рабочий процесс.

«ID + Селфи» — улучшение проверки цифровой личности с помощью AWS PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рабочий процесс состоит из следующих этапов:

  1. Пользователь загружает требуемый документ, удостоверяющий личность, и селфи.
  2. Клиент отправляет документ, удостоверяющий личность, и селфи на конечную точку REST.
  3. Конечная точка REST возвращает клиенту оценку сходства.
  4. Оценка выполняется с помощью бизнес-логики вашего приложения. Например, если показатель сходства ниже 80 %, проверка цифровой идентичности не проходит; в противном случае он проходит проверку цифровой идентификации.
  5. Клиент отправляет статус пользователю.

Лямбда-код

Функция Lambda преобразует входящую полезную нагрузку из base64 в байты для каждого изображения, а затем отправляет источник (селфи) и цель (идентификацию) в Amazon Rekognition. compare_faces API и возвращает оценку сходства, полученную в теле ответа API. См. следующий код:

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

  }

Развернуть проект

Этот проект доступен для развертывания через Образцы AWS с Комплект для разработки облачных сервисов AWS (АВС ЦДК). Вы можете клонировать репозиторий и использовать следующий процесс AWS CDK для развертывания в своей учетной записи AWS.

  1. Настройте пользователя, у которого есть разрешения на программное развертывание ресурсов решения через AWS CDK.
  2. Настройте Интерфейс командной строки AWS (интерфейс командной строки AWS). Инструкции см. Настройка AWS CLI.
  3. Если вы впервые используете AWS CDK, выполните предварительные требования, перечисленные в Работа с AWS CDK в Python.
  4. Клонировать Репозиторий GitHub.
  5. Создайте виртуальную среду. Используемая команда зависит от вашей ОС:
    1. Если вы используете Windows, выполните следующую команду в окне терминала из источника клонированного репозитория:
      ..venvScriptsactivate

    2. Если вы используете Mac или Linux, выполните следующую команду в окне терминала из источника клонированного репозитория:
      .venv/bin/activate

  6. После активации виртуальной среды установите стандартные зависимости приложения:
    python -m pip install -r requirements.txt

  7. Теперь, когда среда настроена и требования выполнены, мы можем выполнить команду развертывания AWS CDK, чтобы развернуть этот проект на AWS:
    CDK Deploy

Выполнение вызовов API

Нам нужно отправить полезную нагрузку в формате base64 на конечную точку REST. Мы используем файл Python для выполнения вызова API, что позволяет нам открывать исходный и целевой файлы, преобразовывать их в base64 и отправлять полезную нагрузку на шлюз API. Этот код доступен в репозитории.

Обратите внимание, что SOURCE и TARGET расположения файлов будут находиться в вашей локальной файловой системе, а URL-адрес — это URL-адрес шлюза API, сгенерированный во время создания проекта.

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

Убирать

Мы использовали AWS CDK для создания этого проекта, поэтому мы можем открыть наш проект локально и выполнить следующую команду AWS CDK для очистки ресурсов:

CDK Destroy

Заключение

Вот он, шаблон проектирования «ID + Selfie» с простым API, который вы можете интегрировать со своим приложением для проверки цифровой личности. В следующем посте нашей серии мы расширим этот шаблон, извлекая текст из документа, удостоверяющего личность, и выполняя поиск в наборе лиц, чтобы предотвратить дублирование.

Чтобы узнать больше, ознакомьтесь с Руководство разработчика по Amazon Rekognition по обнаружению и анализу лиц.


Об авторах

«ID + Селфи» — улучшение проверки цифровой личности с помощью AWS PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Майк Эймс является главным архитектором прикладных решений AI/ML в AWS. Он помогает компаниям использовать услуги машинного обучения и искусственного интеллекта для борьбы с мошенничеством, расточительством и злоупотреблениями. В свободное время он катается на горном велосипеде, занимается кикбоксингом или играет на гитаре в метал-группе 90-х.

«ID + Селфи» — улучшение проверки цифровой личности с помощью AWS PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Ной Дональдсон является архитектором решений в AWS, поддерживающей федеральные финансовые организации. Он в восторге от технологии AI/ML, которая может сократить ручные процессы, повысить качество обслуживания клиентов и помочь решить интересные проблемы. В свободное от работы время он любит проводить время на льду со своим сыном, играть в хоккей, охотиться со старшей дочерью и стрелять в кольцо с младшей дочерью.

Отметка времени:

Больше от Машинное обучение AWS