البرنامج التعليمي: الكشف عن الحياة في الوجوه

يمكن استخدام الكشف عن فعالية الوجه لتحديد ما إذا كان الوجه في دفق فيديو الإدخال حقيقيا (مباشرا) أو مزيفا (تزييف هوية). هذه لبنة بناء حاسمة في نظام المصادقة البيومترية لمنع هجمات تزييف الهوية من المحتالين الذين يحاولون الوصول إلى النظام باستخدام صورة فوتوغرافية أو فيديو أو قناع أو وسائل أخرى لانتحال شخصية شخص آخر.

الهدف من الكشف عن الحياة هو التأكد من أن النظام يتفاعل مع شخص حي موجود فعليا في وقت المصادقة. وقد أصبحت هذه الأنظمة ذات أهمية متزايدة مع تزايد التمويل الرقمي والتحكم في الوصول عن بعد وعمليات التحقق من الهوية عبر الإنترنت.

يدافع حل الكشف عن الحياة بنجاح ضد أنواع الانتحال المختلفة التي تتراوح بين النسخ المطبوعة الورقية والأقنعة 2d/3d والعروض التقديمية للانتحال على الهواتف وأجهزة الكمبيوتر المحمولة. يعد الكشف عن الحياة مجالا نشطا من مجالات البحث، مع إجراء تحسينات مستمرة لمواجهة هجمات الانتحال المعقدة بشكل متزايد بمرور الوقت. سيتم طرح التحسينات المستمرة للعميل ومكونات الخدمة بمرور الوقت حيث يصبح الحل العام أكثر قوة لأنواع جديدة من الهجمات.

هام

تعد مجموعات SDK لعميل Face للحيوية ميزة مسورة. يجب عليك طلب الوصول إلى ميزة الحياة عن طريق ملء نموذج كمية التعرف على الوجه. عند منح اشتراك Azure حق الوصول، يمكنك تنزيل Face liveness SDK.

المتطلبات الأساسية

  • يجب أن يكون لحساب Azure دور المساهم في الخدمات المعرفية المعين لكي توافق على الشروط المسؤولة الذكاء الاصطناعي وإنشاء مورد. للحصول على هذا الدور المعين لحسابك، اتبع الخطوات الواردة في وثائق تعيين الأدوار، أو اتصل بالمسؤول.
  • بمجرد اشتراكك في Azure، أنشئ مورد Face في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. بعد انتشاره، حدد "Go to resource".
    • تحتاج إلى المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لتوصيل التطبيق الخاص بك بخدمة Face. ستقوم بلصق المفتاح ونقطة النهاية في التعليمة البرمجية لاحقاً في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
  • الوصول إلى Azure الذكاء الاصطناعي Vision Face Client SDK للجوال (IOS وAndroid). للبدء، تحتاج إلى التقدم بطلب للحصول على ميزات الوصول المحدود للتعرف على الوجه للوصول إلى SDK. لمزيد من المعلومات، راجع صفحة Face Limited Access .

إجراء الكشف عن الحياة

يتضمن تكامل حل الحياة مكونين مختلفين: تطبيق الأجهزة المحمولة وخادم/منسق التطبيق.

دمج الحياة في تطبيق الهاتف المحمول

بمجرد أن يكون لديك حق الوصول إلى SDK، اتبع التعليمات في مستودع Azure-ai-vision-sdk GitHub لدمج واجهة المستخدم والتعليمات البرمجية في تطبيق الهاتف المحمول الأصلي الخاص بك. يدعم SDK للحيوية كلا من Java/Kotlin لنظام التشغيل Android وSwift لتطبيقات الأجهزة المحمولة التي تعمل بنظام التشغيل iOS:

  • بالنسبة إلى Swift iOS، اتبع الإرشادات الواردة في نموذج iOS
  • بالنسبة إلى Kotlin/Java Android، اتبع الإرشادات الموجودة في نموذج Android

بمجرد إضافة التعليمات البرمجية إلى التطبيق الخاص بك، تعالج SDK بدء تشغيل الكاميرا، وتوجيه المستخدم النهائي لضبط موضعه، وإنشاء حمولة الحياة، واستدعاء خدمة سحابة Azure الذكاء الاصطناعي Face لمعالجة حمولة الحياة.

تنسيق حل الحياة

يتم توضيح الخطوات عالية المستوى المتضمنة في تنسيق الحياة أدناه:

رسم تخطيطي لسير عمل الحياة في Azure الذكاء الاصطناعي Face.

  1. يبدأ تطبيق الهاتف المحمول فحص الحياة ويعلم خادم التطبيق.

  2. ينشئ خادم التطبيق جلسة عمل جديدة للحيوية باستخدام Azure الذكاء الاصطناعي Face Service. تنشئ الخدمة جلسة عمل ديناميكية وتستجيب مرة أخرى برمز مميز لتخويل الجلسة.

    Request:
    curl --location '<insert-api-endpoint>/face/v1.1-preview.1/detectliveness/singlemodal/sessions' \
    --header 'Ocp-Apim-Subscription-Key:<insert-api-key>
    --header 'Content-Type: application/json' \
    --data '{
      "livenessOperationMode": "passive",
      "deviceCorrelationId": "723d6d03-ef33-40a8-9682-23a1feb7bccd",
      "sendResultsToClient": "false"
    }'
     
    Response:
    {
        "sessionId": "a6e7193e-b638-42e9-903f-eaf60d2b40a5",
        "authToken": <session-authorization-token>
    }
    
  3. يوفر خادم التطبيق الرمز المميز لتخويل الجلسة مرة أخرى إلى تطبيق الأجهزة المحمولة.

  4. يوفر تطبيق الهاتف المحمول الرمز المميز لتخويل الجلسة أثناء تهيئة Azure الذكاء الاصطناعي Vision SDK.

    mServiceOptions?.setTokenCredential(com.azure.android.core.credential.TokenCredential { _, callback ->
        callback.onSuccess(com.azure.android.core.credential.AccessToken("<INSERT_TOKEN_HERE>", org.threeten.bp.OffsetDateTime.MAX))
    })
    
    serviceOptions?.authorizationToken = "<INSERT_TOKEN_HERE>"
    
  5. ثم يبدأ SDK الكاميرا، ويرشد المستخدم إلى الوضع بشكل صحيح ثم يعد الحمولة لاستدعاء نقطة نهاية خدمة الكشف عن الحياة.

  6. يستدعي SDK خدمة Azure الذكاء الاصطناعي Vision Face لإجراء الكشف عن الحياة. بمجرد استجابة الخدمة، يقوم SDK بإعلام تطبيق الهاتف المحمول بأنه قد تم إكمال فحص الحياة.

  7. ينقل تطبيق الأجهزة المحمولة إكمال التحقق من الحياة إلى خادم التطبيق.

  8. يمكن لخادم التطبيق الآن الاستعلام عن نتيجة الكشف عن الحياة من خدمة Azure الذكاء الاصطناعي Vision Face.

    Request:
    curl --location '<insert-api-endpoint>/face/v1.1-preview.1/detectliveness/singlemodal/sessions/a3dc62a3-49d5-45a1-886c-36e7df97499a' \
    --header 'Ocp-Apim-Subscription-Key: <insert-api-key>
    
    Response:
    {
        "status": "ResultAvailable",
        "result": {
            "id": 1,
            "sessionId": "a3dc62a3-49d5-45a1-886c-36e7df97499a",
            "requestId": "cb2b47dc-b2dd-49e8-bdf9-9b854c7ba843",
            "receivedDateTime": "2023-10-31T16:50:15.6311565+00:00",
            "request": {
                "url": "/face/v1.1-preview.1/detectliveness/singlemodal",
                "method": "POST",
                "contentLength": 352568,
                "contentType": "multipart/form-data; boundary=--------------------------482763481579020783621915",
                "userAgent": ""
            },
            "response": {
                "body": {
                    "livenessDecision": "realface",
                    "target": {
                        "faceRectangle": {
                            "top": 59,
                            "left": 121,
                            "width": 409,
                            "height": 395
                        },
                        "fileName": "video.webp",
                        "timeOffsetWithinFile": 0,
                        "imageType": "Color"
                    },
                    "modelVersionUsed": "2022-10-15-preview.04"
                },
                "statusCode": 200,
                "latencyInMilliseconds": 1098
            },
            "digest": "537F5CFCD8D0A7C7C909C1E0F0906BF27375C8E1B5B58A6914991C101E0B6BFC"
        },
        "id": "a3dc62a3-49d5-45a1-886c-36e7df97499a",
        "createdDateTime": "2023-10-31T16:49:33.6534925+00:00",
        "authTokenTimeToLiveInSeconds": 600,
        "deviceCorrelationId": "723d6d03-ef33-40a8-9682-23a1feb7bccd",
        "sessionExpired": false
    }
    
    

إجراء الكشف عن الحياة مع التحقق من الوجه

يتيح الجمع بين التحقق من الوجه والكشف عن الحياة التحقق البيومتري لشخص معين ذي أهمية مع ضمان إضافي بأن الشخص موجود فعليا في النظام. هناك جزأان لدمج الحياة مع التحقق:

  1. حدد صورة مرجعية جيدة.
  2. إعداد تنسيق الحياة مع التحقق.

رسم تخطيطي لسير عمل فعالية مع التحقق من Azure الذكاء الاصطناعي Face.

تحديد صورة مرجعية جيدة

استخدم التلميحات التالية للتأكد من أن صور الإدخال تعطي نتائج التعرف الأكثر دقة.

متطلبات تقنية:

  • تنسيقات صورة الإدخال المدعومة هي JPEG وPNG وGIF (الإطار الأول) وBMP.
  • يجب ألا يزيد حجم ملف الصورة عـن 6 ميغابايت.
  • يمكنك استخدام السمة qualityForRecognition في عملية الكشف عن الوجه عند استخدام نماذج الكشف القابلة للتطبيق كإرشادات عامة حول ما إذا كان من المحتمل أن تكون الصورة ذات جودة كافية لمحاولة التعرف على الوجه. "high" يوصى فقط بصور الجودة لتسجيل الشخص والجودة عند أو أعلى "medium" لسيناريوهات تحديد الهوية.

متطلبات التكوين:

  • الصورة واضحة وحادة، وليست ضبابية أو منقطة أو مشوهة أو تالفة.
  • لا يتم تغيير الصورة لإزالة عيوب الوجه أو مظهر الوجه.
  • يجب أن تكون الصورة بتنسيق مدعوم بلون RGB (JPEG، PNG، WEBP، BMP). حجم الوجه الموصى به هو 200 بكسل × 200 بكسل. لن تؤدي أحجام الوجه التي يزيد حجمها عن 200 بكسل × 200 بكسل إلى جودة الذكاء الاصطناعي أفضل، ولا يزيد حجمها عن 6 ميغابايت.
  • المستخدم لا يرتدي النظارات أو الأقنعة أو القبعات أو سماعات الرأس أو أغطية الرأس أو أغطية الوجه. يجب أن يكون الوجه خاليا من أي عوائق.
  • يسمح بمجوهرات الوجه شريطة ألا تخفي وجهك.
  • يجب أن يكون وجه واحد فقط مرئيا في الصورة.
  • يجب أن يكون الوجه في وضعية أمامية محايدة مع فتح العينين، إغلاق الفم، مع عدم وجود تعبيرات الوجه المتطرفة أو إمالة الرأس.
  • يجب أن يكون الوجه خاليا من أي ظلال أو عيون حمراء. أعد التقاط الصورة إذا حدث أي منهما.
  • يجب أن تكون الخلفية موحدة وسهلة، وخالية من أي ظلال.
  • يجب توسيط الوجه داخل الصورة وتعبئة 50٪ على الأقل من الصورة.

إعداد تنسيق الحياة مع التحقق.

وفيما يلي الخطوات رفيعة المستوى المتضمنة في التعايش مع تزامن التحقق:

  1. قم بتوفير صورة مرجع التحقق بأي من الطريقتين التاليتين:

    • يوفر خادم التطبيق الصورة المرجعية عند إنشاء جلسة العمل.

      Request:
      curl --location '<insert-api-endpoint>/face/v1.1-preview.1/detectlivenesswithverify/singlemodal/sessions' \
      --header 'Ocp-Apim-Subscription-Key: <api_key>' \
      --form 'Parameters="{
        \"livenessOperationMode\": \"passive\",
        \"deviceCorrelationId\": \"723d6d03-ef33-40a8-9682-23a1feb7bccd\"
      }"' \
      --form 'VerifyImage=@"test.png"'
      
      Response:
      {
          "verifyImage": {
              "faceRectangle": {
                  "top": 506,
                  "left": 51,
                  "width": 680,
                  "height": 475
              },
              "qualityForRecognition": "high"
          },
          "sessionId": "3847ffd3-4657-4e6c-870c-8e20de52f567",
          "authToken":<session-authorization-token>
      }
      
      
    • يوفر تطبيق الهاتف المحمول الصورة المرجعية عند تهيئة SDK.

      val singleFaceImageSource = VisionSource.fromFile("/path/to/image.jpg")
      mFaceAnalysisOptions?.setRecognitionMode(RecognitionMode.valueOfVerifyingMatchToFaceInSingleFaceImage(singleFaceImageSource))
      
      if let path = Bundle.main.path(forResource: "<IMAGE_RESOURCE_NAME>", ofType: "<IMAGE_RESOURCE_TYPE>"),
         let image = UIImage(contentsOfFile: path),
         let singleFaceImageSource = try? VisionSource(uiImage: image) {
          try methodOptions.setRecognitionMode(.verifyMatchToFaceIn(singleFaceImage: singleFaceImageSource))
      }
      
  2. يمكن لخادم التطبيق الآن الاستعلام عن نتيجة التحقق بالإضافة إلى نتيجة الحياة.

    Request:
    curl --location '<insert-api-endpoint>/face/v1.1-preview.1/detectlivenesswithverify/singlemodal/sessions/3847ffd3-4657-4e6c-870c-8e20de52f567' \
    --header 'Content-Type: multipart/form-data' \
    --header 'apim-recognition-model-preview-1904: true' \
    --header 'Authorization: Bearer.<session-authorization-token> \
    --form 'Content=@"video.webp"' \
    --form 'Metadata="<insert-metadata>"
    
    Response:
    {
        "status": "ResultAvailable",
        "result": {
            "id": 1,
            "sessionId": "3847ffd3-4657-4e6c-870c-8e20de52f567",
            "requestId": "f71b855f-5bba-48f3-a441-5dbce35df291",
            "receivedDateTime": "2023-10-31T17:03:51.5859307+00:00",
            "request": {
                "url": "/face/v1.1-preview.1/detectlivenesswithverify/singlemodal",
                "method": "POST",
                "contentLength": 352568,
                "contentType": "multipart/form-data; boundary=--------------------------590588908656854647226496",
                "userAgent": ""
            },
            "response": {
                "body": {
                    "livenessDecision": "realface",
                    "target": {
                        "faceRectangle": {
                            "top": 59,
                            "left": 121,
                            "width": 409,
                            "height": 395
                        },
                        "fileName": "video.webp",
                        "timeOffsetWithinFile": 0,
                        "imageType": "Color"
                    },
                    "modelVersionUsed": "2022-10-15-preview.04",
                    "verifyResult": {
                        "matchConfidence": 0.9304124,
                        "isIdentical": true
                    }
                },
                "statusCode": 200,
                "latencyInMilliseconds": 1306
            },
            "digest": "2B39F2E0EFDFDBFB9B079908498A583545EBED38D8ACA800FF0B8E770799F3BF"
        },
        "id": "3847ffd3-4657-4e6c-870c-8e20de52f567",
        "createdDateTime": "2023-10-31T16:58:19.8942961+00:00",
        "authTokenTimeToLiveInSeconds": 600,
        "deviceCorrelationId": "723d6d03-ef33-40a8-9682-23a1feb7bccd",
        "sessionExpired": true
    }
    

تنظيف الموارد

إذا كنت ترغب في تنظيف اشتراك خدمات Azure الذكاء الاصطناعي وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.

الخطوات التالية

راجع مرجع Azure الذكاء الاصطناعي Vision SDK للتعرف على الخيارات الأخرى في واجهات برمجة التطبيقات الديناميكية.

راجع مرجع واجهة برمجة تطبيقات REST للجلسة لمعرفة المزيد حول الميزات المتوفرة لتنسيق حل الحياة.