“ID + เซลฟี่” – ปรับปรุงการตรวจสอบตัวตนดิจิทัลโดยใช้ AWS PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

“ID + Selfie” – ปรับปรุงการยืนยันตัวตนดิจิทัลโดยใช้ AWS

การระบาดใหญ่ของโควิด-19 ทั่วโลกได้เร่งความจำเป็นในการตรวจสอบและเตรียมความพร้อมผู้ใช้ออนไลน์ในหลายอุตสาหกรรม เช่น บริการทางการเงิน ประกันภัย และการดูแลสุขภาพ เมื่อพูดถึงประสบการณ์ของผู้ใช้ สิ่งสำคัญคือต้องจัดเตรียมธุรกรรมที่ราบรื่นในขณะที่ยังคงรักษามาตรฐานระดับสูงสำหรับการยืนยันตัวตน คำถามคือ คุณจะตรวจสอบคนจริงในโลกดิจิทัลได้อย่างไร?

ความหมายของ Amazon ให้ความสามารถในการจดจำใบหน้าและการวิเคราะห์ล่วงหน้าสำหรับการยืนยันตัวตนสำหรับแอปพลิเคชันออนไลน์ของคุณ เช่น การธนาคาร สิทธิประโยชน์ อีคอมเมิร์ซ และอื่นๆ อีกมากมาย

ในโพสต์นี้ขอนำเสนอรูปแบบการออกแบบการยืนยันตัวตน “ID + Selfie” และ โค้ดตัวอย่าง คุณสามารถใช้เพื่อสร้างปลายทาง REST สำหรับการยืนยันตัวตนของคุณเอง นี่เป็นรูปแบบการออกแบบทั่วไปที่คุณสามารถรวมเข้ากับโซลูชันที่มีอยู่หรือโซลูชันใหม่ที่ต้องมีการยืนยันตัวตนด้วยใบหน้า ผู้ใช้แสดงรูปแบบการระบุตัวตน เช่น ใบขับขี่หรือหนังสือเดินทาง ผู้ใช้กว่าจะจับภาพเซลฟี่แบบเรียลไทม์ด้วยแอพพลิเคชั่น จากนั้นเราจะเปรียบเทียบใบหน้าจากเอกสารกับเซลฟี่แบบเรียลไทม์ที่ถ่ายบนอุปกรณ์ของพวกเขา

Amazon Rekognition CompareFaces API

หัวใจของรูปแบบการออกแบบ “ID + Selfie” คือการเปรียบเทียบใบหน้าในเซลฟี่กับใบหน้าในเอกสารระบุตัวตน สำหรับสิ่งนี้ เราใช้ Amazon Rekognition CompareFaces เอพีไอ API เปรียบเทียบใบหน้าในรูปภาพอินพุตต้นทางกับใบหน้าหรือใบหน้าที่ตรวจพบในรูปภาพอินพุตเป้าหมาย ในตัวอย่างต่อไปนี้ เราเปรียบเทียบตัวอย่างใบขับขี่ (ซ้าย) กับเซลฟี่ (ขวา)

แหล่ง เป้า
“ID + เซลฟี่” – ปรับปรุงการตรวจสอบตัวตนดิจิทัลโดยใช้ AWS PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ต่อไปนี้เป็นตัวอย่างของรหัส 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'])

ค่าหลายค่าถูกส่งกลับใน การตอบสนองของ CompareFaces API. เรามุ่งเน้นไปที่ Similarity มูลค่าที่ส่งคืนใน FaceMatches เพื่อตรวจสอบเซลฟีตรงกับ ID ที่ให้มา

ทำความเข้าใจกับพารามิเตอร์การปรับแต่งคีย์

SimilarityThreshold ถูกตั้งค่าเป็น 80% โดยค่าเริ่มต้น และจะส่งคืนผลลัพธ์ที่มีคะแนนความคล้ายคลึงกันมากกว่าหรือเท่ากับ 80% เท่านั้น ปรับค่าโดยระบุ SimilarityThreshold พารามิเตอร์.

QualityFilter เป็นพารามิเตอร์อินพุตเพื่อกรองใบหน้าที่ตรวจพบซึ่งไม่ตรงตามแถบคุณภาพที่กำหนด แถบคุณภาพขึ้นอยู่กับกรณีการใช้งานทั่วไปที่หลากหลาย ใช้ QualityFilter เพื่อกำหนดแถบคุณภาพโดยระบุ LOW, MEDIUM,หรือ HIGH. หากคุณไม่ต้องการกรองใบหน้าที่มีคุณภาพต่ำ ให้ระบุ NONE. ค่าเริ่มต้นคือ NONE.

ภาพรวมโซลูชัน

คุณสามารถสร้าง API “ID + Selfie” สำหรับการยืนยันตัวตนดิจิทัลได้โดยการปรับใช้องค์ประกอบต่อไปนี้:

  • REST API ที่มีวิธีการ POST ที่ช่วยให้เราส่งเพย์โหลดเซลฟี่และการระบุตัวตนและส่งคืนการตอบกลับ ในกรณีนี้ คะแนนความคล้ายคลึงกัน
  • ฟังก์ชันสำหรับรับเพย์โหลด แปลงรูปภาพให้อยู่ในรูปแบบที่เหมาะสม และเรียกใช้ Amazon Rekognition compare_faces API

เราดำเนินการ Amazon API Gateway Amazon สำหรับฟังก์ชัน REST API และ AWS แลมบ์ดา สำหรับฟังก์ชั่น

ไดอะแกรมต่อไปนี้แสดงสถาปัตยกรรมโซลูชันและเวิร์กโฟลว์

“ID + เซลฟี่” – ปรับปรุงการตรวจสอบตัวตนดิจิทัลโดยใช้ AWS PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เวิร์กโฟลว์ประกอบด้วยขั้นตอนต่อไปนี้:

  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 Cloud (AWS CDK). คุณสามารถโคลนที่เก็บและใช้กระบวนการ AWS CDK ต่อไปนี้เพื่อปรับใช้กับบัญชี AWS ของคุณ

  1. ตั้งค่าผู้ใช้ที่มีสิทธิ์ในการปรับใช้ทรัพยากรโซลูชันทางโปรแกรมผ่าน AWS CDK
  2. ตั้งค่า อินเทอร์เฟซบรรทัดคำสั่ง AWS AWS (AWS CLI). สำหรับคำแนะนำ โปรดดูที่ การกำหนดค่า 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 Gateway รหัสนี้มีอยู่ในที่เก็บ

โปรดทราบว่า 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. ไมค์ เอมส์ เป็น Principal Applied AI/ML Solutions Architect กับ AWS เขาช่วยให้บริษัทต่างๆ ใช้บริการแมชชีนเลิร์นนิงและบริการ AI เพื่อต่อสู้กับการฉ้อโกง ขยะ และการละเมิด ในเวลาว่าง คุณสามารถหาเขาปั่นจักรยานเสือภูเขา คิกบ็อกซิ่ง หรือเล่นกีตาร์ในวงดนตรีเมทัลยุค 90

“ID + เซลฟี่” – ปรับปรุงการตรวจสอบตัวตนดิจิทัลโดยใช้ AWS PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.โนอาห์ โดนัลด์สัน เป็นสถาปนิกโซลูชันที่ AWS ซึ่งสนับสนุนองค์กรทางการเงินของรัฐบาลกลาง เขารู้สึกตื่นเต้นกับเทคโนโลยี AI/ML ที่สามารถลดขั้นตอนการทำงานด้วยตนเอง ปรับปรุงประสบการณ์ของลูกค้า และช่วยแก้ปัญหาที่น่าสนใจ นอกงาน เขาสนุกกับการใช้เวลาบนน้ำแข็งกับลูกชายของเขาเล่นฮอกกี้ ล่าสัตว์กับลูกสาวคนโตของเขา และยิงห่วงยางกับลูกสาวคนสุดท้องของเขา

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS