„ID + Selfie” – Usprawnienie weryfikacji tożsamości cyfrowej przy użyciu AWS PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

„ID + Selfie” – Usprawnienie weryfikacji tożsamości cyfrowej za pomocą AWS

Globalna pandemia COVID-19 przyspieszyła potrzebę weryfikacji i wprowadzania użytkowników online w kilku branżach, takich jak usługi finansowe, ubezpieczenia i opieka zdrowotna. Jeśli chodzi o wrażenia użytkownika, kluczowe znaczenie ma zapewnienie bezproblemowej transakcji przy zachowaniu wysokiego standardu weryfikacji tożsamości. Pytanie brzmi, jak weryfikuje się prawdziwych ludzi w cyfrowym świecie?

Amazon Rekognition zapewnia przeszkolone możliwości rozpoznawania twarzy i analizy w celu weryfikacji tożsamości w aplikacjach internetowych, takich jak bankowość, świadczenia, e-commerce i wiele innych.

W tym poście przedstawiamy wzorzec projektowy weryfikacji tożsamości „ID + Selfie” oraz przykładowy kod możesz użyć do utworzenia własnego punktu końcowego REST weryfikacji tożsamości. Jest to typowy wzorzec projektowy, który można włączyć do istniejących lub nowych rozwiązań wymagających weryfikacji tożsamości opartej na twarzy. Użytkownik przedstawia formę identyfikacji, taką jak prawo jazdy lub paszport. Użytkownik następnie przechwytuje selfie w czasie rzeczywistym za pomocą aplikacji. Następnie porównujemy twarz z dokumentu z selfie zrobionym w czasie rzeczywistym na ich urządzeniu.

API Amazon Rekognition CompareFaces

U podstaw wzoru projektowego „ID + Selfie” leży porównanie twarzy na selfie z twarzą na dokumencie identyfikacyjnym. W tym celu używamy Amazon Rekognition CompareFaces API. Interfejs API porównuje twarz w źródłowym obrazie wejściowym z twarzą lub twarzami wykrytymi w docelowym obrazie wejściowym. W poniższym przykładzie porównujemy przykładowe prawo jazdy (po lewej) z selfie (po prawej).

Źródło cel
„ID + Selfie” – Usprawnienie weryfikacji tożsamości cyfrowej przy użyciu AWS PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Poniżej znajduje się przykład kodu 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'])

Kilka wartości jest zwracanych w Odpowiedź interfejsu API CompareFace. Skupiamy się na Similarity wartość zwrócona w FaceMatches aby potwierdzić, że selfie pasuje do podanego identyfikatora.

Zrozumienie kluczowych parametrów strojenia

SimilarityThreshold jest domyślnie ustawione na 80% i zwróci tylko wyniki z wynikiem podobieństwa większym lub równym 80%. Dostosuj wartość, określając SimilarityThreshold parametr.

QualityFilter to parametr wejściowy służący do odfiltrowywania wykrytych twarzy, które nie spełniają wymaganego paska jakości. Pasek jakości opiera się na różnych typowych przypadkach użycia. Posługiwać się QualityFilter aby ustawić pasek jakości, określając LOW, MEDIUMlub HIGH. Jeśli nie chcesz filtrować twarzy o niskiej jakości, określ NONE. Domyślna wartość to NONE.

Omówienie rozwiązania

Możesz utworzyć interfejs API „ID + Selfie” do weryfikacji tożsamości cyfrowej, wdrażając następujące komponenty:

  • REST API z metodą POST, które pozwala na przesłanie selfie i ładunku identyfikacyjnego oraz zwraca odpowiedź, w tym przypadku wynik podobieństwa
  • Funkcja odbierania ładunku, konwertowania obrazów do odpowiedniego formatu i wywoływania Amazon Rekognition compare_faces API.

Wdrażamy Brama Amazon API dla funkcjonalności REST API oraz AWS Lambda dla funkcji.

Poniższy diagram ilustruje architekturę rozwiązania i przepływ pracy.

„ID + Selfie” – Usprawnienie weryfikacji tożsamości cyfrowej przy użyciu AWS PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Przepływ pracy obejmuje następujące kroki:

  1. Użytkownik przesyła wymagany dokument tożsamości oraz selfie.
  2. Klient przesyła dokument identyfikacyjny i selfie do punktu końcowego REST.
  3. Punkt końcowy REST zwraca klientowi wynik podobieństwa.
  4. Ocena odbywa się za pomocą logiki biznesowej w aplikacji. Na przykład, jeśli wynik podobieństwa jest niższy niż 80%, sprawdzanie tożsamości cyfrowej nie powiedzie się; w przeciwnym razie przechodzi kontrolę tożsamości cyfrowej.
  5. Klient wysyła status do użytkownika.

Kod lambda

Funkcja Lambda konwertuje przychodzący ładunek z base64 na bajt dla każdego obrazu, a następnie wysyła źródło (selfie) i cel (identyfikację) do Amazon Rekognition compare_faces API i zwraca wynik podobieństwa otrzymany w treści odpowiedzi API. Zobacz następujący 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

  }

Wdróż projekt

Ten projekt jest dostępny do wdrożenia przez Próbki AWS z Zestaw programistyczny AWS Cloud (AWS CDK). Możesz sklonować repozytorium i użyć następującego procesu AWS CDK do wdrożenia na swoim koncie AWS.

  1. Skonfiguruj użytkownika, który ma uprawnienia do programowego wdrażania zasobów rozwiązania za pośrednictwem zestawu AWS CDK.
  2. Skonfiguruj Interfejs wiersza poleceń AWS (AWS CLI). Aby uzyskać instrukcje, zobacz Konfigurowanie interfejsu wiersza polecenia AWS.
  3. Jeśli używasz AWS CDK po raz pierwszy, wypełnij wymagania wstępne wymienione w Praca z AWS CDK w Pythonie.
  4. Sklonuj Repozytorium GitHub.
  5. Utwórz środowisko wirtualne. Używane polecenie zależy od systemu operacyjnego:
    1. Jeśli używasz systemu Windows, uruchom następujące polecenie w oknie terminala ze źródła sklonowanego repozytorium:
      ..venvScriptsactivate

    2. Jeśli używasz systemu Mac lub Linux, uruchom następujące polecenie w oknie terminala ze źródła sklonowanego repozytorium:
      .venv/bin/activate

  6. Po aktywacji środowiska wirtualnego zainstaluj standardowe zależności aplikacji:
    python -m pip install -r requirements.txt

  7. Teraz, gdy środowisko jest skonfigurowane i wymagania są spełnione, możemy wydać polecenie wdrożenia AWS CDK, aby wdrożyć ten projekt w AWS:
    CDK Deploy

Wykonuj wywołania API

Musimy wysłać ładunek w formacie base64 do punktu końcowego REST. Używamy pliku Python do wykonania wywołania API, co pozwala nam otworzyć pliki źródłowe i docelowe, przekonwertować je na base64 i wysłać ładunek do API Gateway. Ten kod jest dostępny w repozytorium.

Zauważ, że SOURCE i TARGET lokalizacje plików będą znajdować się w lokalnym systemie plików, a adres URL to adres URL bramy interfejsu API wygenerowany podczas tworzenia projektu.

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

Sprzątać

Do zbudowania tego projektu użyliśmy AWS CDK, więc możemy otworzyć nasz projekt lokalnie i wydać następujące polecenie AWS CDK w celu oczyszczenia zasobów:

CDK Destroy

Wnioski

Masz to, wzorzec projektowy „ID + Selfie” z prostym interfejsem API, który możesz zintegrować ze swoją aplikacją, aby przeprowadzić weryfikację tożsamości cyfrowej. W następnym poście z naszej serii rozwijamy ten wzór dalej, wyodrębniając tekst z dokumentu tożsamości i przeszukując kolekcję twarzy, aby zapobiec powielaniu.

Aby dowiedzieć się więcej, sprawdź Przewodnik dla programistów Amazon Rekognition na wykrywaniu i analizowaniu twarzy.


O autorach

„ID + Selfie” – Usprawnienie weryfikacji tożsamości cyfrowej przy użyciu AWS PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Mike'a Amesa jest głównym architektem rozwiązań AI/ML w AWS. Pomaga firmom wykorzystywać usługi uczenia maszynowego i sztucznej inteligencji do zwalczania oszustw, marnotrawstwa i nadużyć. W wolnym czasie można go spotkać na kolarstwie górskim, kickboxingu lub graniu na gitarze w zespole metalowym z lat 90.

„ID + Selfie” – Usprawnienie weryfikacji tożsamości cyfrowej przy użyciu AWS PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Noah Donaldsona jest architektem rozwiązań w AWS wspierającym federalne organizacje finansowe. Jest podekscytowany technologią AI/ML, która może zredukować ręczne procesy, poprawić doświadczenia klientów i pomóc w rozwiązywaniu interesujących problemów. Poza pracą lubi spędzać czas na lodzie z synem grającym w hokeja, polować z najstarszą córką i strzelać do kosza z najmłodszą córką.

Znak czasu:

Więcej z Uczenie maszynowe AWS