"מזהה + סלפי" - שיפור אימות זהות דיגיטלית באמצעות AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

"מזהה + סלפי" - שיפור אימות הזהות הדיגיטלית באמצעות AWS

מגיפת COVID-19 הגלובלית האיצה את הצורך לאמת ולהכניס משתמשים מקוונים במספר תעשיות, כגון שירותים פיננסיים, ביטוח ושירותי בריאות. בכל הנוגע לחוויית משתמש חיוני לספק עסקה ללא חיכוך תוך שמירה על סטנדרט גבוה לאימות זהות. השאלה היא איך מאמתים אנשים אמיתיים בעולם הדיגיטלי?

אמזון מספק יכולות זיהוי וניתוח פנים מאומנות מראש לאימות זהות ליישומים המקוונים שלך, כגון בנקאות, הטבות, מסחר אלקטרוני ועוד הרבה יותר.

בפוסט זה, אנו מציגים את דפוס עיצוב אימות הזהות "מזהה + סלפי". קוד לדוגמא אתה יכול להשתמש כדי ליצור נקודת קצה REST לאימות זהות משלך. זהו דפוס עיצוב נפוץ שתוכלו לשלב בפתרונות קיימים או חדשים הדורשים אימות זהות מבוסס פנים. המשתמש מציג סוג של זיהוי כמו רישיון נהיגה או דרכון. המשתמש מצלם תמונת סלפי בזמן אמת עם האפליקציה. לאחר מכן אנו משווים את הפנים מהמסמך עם הסלפי בזמן אמת שצולם במכשיר שלהם.

ה-API של Amazon Rekognition CompareFaces

בבסיס תבנית העיצוב "מזהה + סלפי" נמצאת ההשוואה של הפנים בסלפי לפנים על מסמך הזיהוי. לשם כך, אנו משתמשים בזיהוי אמזון CompareFaces ממשק API. ה-API משווה פנים בתמונת קלט המקור עם פנים או פנים שזוהו בתמונת קלט היעד. בדוגמה הבאה, אנו משווים רישיון נהיגה לדוגמה (משמאל) לסלפי (מימין).

מָקוֹר יעד
"מזהה + סלפי" - שיפור אימות זהות דיגיטלית באמצעות 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'])

מספר ערכים מוחזרים ב- CompareFaces API תגובה. אנו מתמקדים ב 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 של אמזון עבור הפונקציונליות של REST API ו AWS למבדה עבור הפונקציה.

התרשים הבא ממחיש את ארכיטקטורת הפתרון וזרימת העבודה.

"מזהה + סלפי" - שיפור אימות זהות דיגיטלית באמצעות 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 CDK הבא כדי לפרוס לחשבון AWS שלך.

  1. הגדר משתמש שיש לו הרשאות לפרוס באופן תכנותי את משאבי הפתרון דרך AWS CDK.
  2. הגדר את ממשק שורת הפקודה של 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 מיקומי הקבצים יהיו במערכת הקבצים המקומית שלך, וכתובת האתר היא כתובת ה-API Gateway שנוצרה במהלך יצירת הפרויקט.

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 פשוט שתוכל לשלב עם האפליקציה שלך כדי לבצע אימות זהות דיגיטלית. בפוסט הבא בסדרה שלנו, אנו מרחיבים את הדפוס הזה עוד יותר על ידי חילוץ טקסט ממסמך הזיהוי וחיפוש באוסף של פרצופים כדי למנוע כפילות.

למידע נוסף, עיין ב מדריך למפתחים של אמזון זיהוי על איתור וניתוח פנים.


על הכותבים

"מזהה + סלפי" - שיפור אימות זהות דיגיטלית באמצעות AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי. מייק איימס הוא ארכיטקט פתרונות AI/ML יישומי ראשי עם AWS. הוא עוזר לחברות להשתמש בשירותי למידת מכונה ובינה מלאכותית כדי להילחם בהונאה, בזבוז וניצול לרעה. בזמנו הפנוי, אתה יכול למצוא אותו רוכב על אופני הרים, קיקבוקסינג או מנגן בגיטרה בלהקת מטאל משנות ה-90.

"מזהה + סלפי" - שיפור אימות זהות דיגיטלית באמצעות AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.נועה דונלדסון הוא אדריכל פתרונות ב-AWS התומך בארגונים פיננסיים פדרליים. הוא מתלהב מטכנולוגיית AI/ML שיכולה לצמצם תהליכים ידניים, לשפר את חוויות הלקוחות ולעזור בפתרון בעיות מעניינות. מחוץ לעבודה, הוא נהנה לבלות על הקרח עם בנו במשחק הוקי, לצוד עם בתו הבכורה ולירות חישוקים עם בתו הצעירה.

בול זמן:

עוד מ למידת מכונות AWS