"ID + Selfie" - تحسين التحقق من الهوية الرقمية باستخدام AWS PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

"ID + Selfie" - تحسين التحقق من الهوية الرقمية باستخدام AWS

سرّع الوباء العالمي COVID-19 الحاجة إلى التحقق من المستخدمين وإدخالهم عبر الإنترنت في العديد من الصناعات ، مثل الخدمات المالية والتأمين والرعاية الصحية. عندما يتعلق الأمر بتجربة المستخدم ، فمن الأهمية بمكان توفير معاملة خالية من الاحتكاك مع الحفاظ على مستوى عالٍ للتحقق من الهوية. السؤال هو ، كيف تتحقق من الأشخاص الحقيقيين في العالم الرقمي؟

الأمازون إعادة الاعتراف يوفر إمكانات التعرف على الوجه والتحليل المدربة مسبقًا للتحقق من الهوية لتطبيقاتك عبر الإنترنت ، مثل الخدمات المصرفية والفوائد والتجارة الإلكترونية وغير ذلك الكثير.

في هذا المنشور ، نقدم نمط تصميم التحقق من الهوية "ID + Selfie" و عينة من الرموز يمكنك استخدامها لإنشاء نقطة نهاية REST للتحقق من الهوية الخاصة بك. هذا نمط تصميم شائع يمكنك دمجه في الحلول الحالية أو الجديدة التي تتطلب التحقق من الهوية المستند إلى الوجه. يقدم المستخدم استمارة تعريف مثل رخصة القيادة أو جواز السفر. يقوم المستخدم بالتقاط صورة شخصية في الوقت الحقيقي مع التطبيق. ثم نقارن الوجه من المستند بالصورة الذاتية في الوقت الفعلي التي تم التقاطها على أجهزتهم.

واجهة برمجة تطبيقات Amazon Rekognition CompareFaces

يكمن جوهر نمط تصميم "ID + Selfie" في مقارنة الوجه في الصورة الشخصية بالوجه في مستند التعريف. لهذا ، نستخدم Amazon Rekognition CompareFaces API. تقارن واجهة برمجة التطبيقات (API) وجهًا في صورة إدخال المصدر مع وجه أو وجوه تم اكتشافها في صورة إدخال الهدف. في المثال التالي ، نقارن نموذج رخصة قيادة (يسار) مع صورة شخصية (يمين).

مصدر الهدف
"ID + Selfie" - تحسين التحقق من الهوية الرقمية باستخدام 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. نحن نركز على Similarity تم إرجاع القيمة في FaceMatches للتحقق من صحة الصورة الشخصية تتطابق مع المعرف المقدم.

فهم معلمات ضبط المفاتيح

SimilarityThreshold يتم تعيينه إلى 80٪ افتراضيًا ولن يُرجع إلا نتائج بدرجة تشابه أكبر من أو تساوي 80٪. اضبط القيمة بتحديد SimilarityThreshold المعلمة.

QualityFilter هي معلمة إدخال لتصفية الوجوه المكتشفة التي لا تلبي شريط الجودة المطلوب. يعتمد شريط الجودة على مجموعة متنوعة من حالات الاستخدام الشائعة. يستخدم QualityFilter لتعيين شريط الجودة عن طريق تحديد LOW, MEDIUMالطرق أو HIGH. إذا كنت لا ترغب في تصفية الوجوه ذات الجودة الرديئة ، فحدد NONE. النظام الأساسي NONE.

حل نظرة عامة

يمكنك إنشاء واجهة برمجة تطبيقات "ID + Selfie" للتحقق من الهوية الرقمية من خلال نشر المكونات التالية:

  • واجهة برمجة تطبيقات REST مع طريقة POST تتيح لنا إرسال حمولة الصور الشخصية وتحديد الهوية وإرجاع استجابة ، وفي هذه الحالة درجة التشابه
  • وظيفة لاستلام الحمولة وتحويل الصور إلى التنسيق المناسب واستدعاء Amazon Rekognition compare_faces API.

ننفذ بوابة أمازون API لوظيفة REST API و AWS لامدا للوظيفة.

يوضح الرسم البياني التالي بنية الحل وسير العمل.

"ID + Selfie" - تحسين التحقق من الهوية الرقمية باستخدام 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. استنساخ مستودع جيثب.
  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" مع واجهة برمجة تطبيقات بسيطة يمكنك دمجها مع تطبيقك لإجراء التحقق من الهوية الرقمية. في المنشور التالي في سلسلتنا ، نتوسع في هذا النمط أكثر عن طريق استخراج النص من وثيقة التعريف والبحث في مجموعة من الوجوه لمنع الازدواجية.

لمعرفة المزيد ، تحقق من دليل مطور Amazon Rekognition على كشف وتحليل الوجوه.


حول المؤلف

"ID + Selfie" - تحسين التحقق من الهوية الرقمية باستخدام AWS PlatoBlockchain Data Intelligence. البحث العمودي. عاي. مايك أميس هو مهندس رئيسي لحلول الذكاء الاصطناعي / التعلم الآلي مع AWS. إنه يساعد الشركات على استخدام التعلم الآلي وخدمات الذكاء الاصطناعي لمكافحة الاحتيال والهدر وإساءة الاستخدام. في أوقات فراغه ، يمكنك أن تجده يركب الدراجة الجبلية أو الكيك بوكسينغ أو يعزف على الجيتار في فرقة معدنية من التسعينيات.

"ID + Selfie" - تحسين التحقق من الهوية الرقمية باستخدام AWS PlatoBlockchain Data Intelligence. البحث العمودي. عاي.نوح دونالدسون هو مهندس حلول في AWS يدعم المؤسسات المالية الفيدرالية. إنه متحمس لتقنية الذكاء الاصطناعي / التعلم الآلي التي يمكنها تقليل العمليات اليدوية وتحسين تجارب العملاء والمساعدة في حل المشكلات المثيرة للاهتمام. خارج العمل ، يستمتع بقضاء الوقت على الجليد مع ابنه يلعب الهوكي ، والصيد مع ابنته الكبرى ، وإطلاق النار على الأطواق مع ابنته الصغرى.

الطابع الزمني:

اكثر من التعلم الآلي من AWS