Öğretici: Yüzlerdeki canlılığı algılama

Yüz Canlılığı algılama, giriş video akışındaki bir yüzün gerçek mi (canlı) yoksa sahte mi (sahte) olduğunu belirlemek için kullanılabilir. Bu, bir fotoğraf, video, maske veya başka bir kişinin kimliğine bürünmek için başka bir araç kullanarak sisteme erişmeye çalışan sahtekarların kimlik sahtekarlığı saldırılarını önlemek için biyometrik kimlik doğrulama sistemindeki önemli bir yapı taşıdır.

Canlılık algılamanın amacı, sistemin kimlik doğrulaması sırasında fiziksel olarak mevcut bir canlı kişiyle etkileşimde bulunduğundan emin olmaktır. Dijital finans, uzaktan erişim denetimi ve çevrimiçi kimlik doğrulama süreçlerinin artmasıyla bu tür sistemler giderek daha önemli hale gelmiştir.

Canlılık algılama çözümü, telefonlarda ve dizüstü bilgisayarlarda kağıt çıktılar, 2b/3d maskeler ve sahte sunulardan oluşan çeşitli sahtekarlık türlerine karşı başarıyla savunma sağlar. Canlılık algılama, zaman içinde giderek daha karmaşık hale gelen kimlik sahtekarlığı saldırılarına karşı sürekli iyileştirmeler yapılan aktif bir araştırma alanıdır. Genel çözüm yeni saldırı türlerine karşı daha sağlam hale geldiğinden istemciye ve hizmet bileşenlerine zaman içinde sürekli iyileştirmeler sunulacaktır.

Önemli

Canlılık için Yüz Tanıma istemcisi SDK'ları geçitli bir özelliktir. Yüz Tanıma giriş formunu doldurarak canlılık özelliğine erişim istemeniz gerekir. Azure aboneliğinize erişim verildiğinde Yüz Tanıma canlılığı SDK'sını indirebilirsiniz.

Önkoşullar

  • Sorumlu yapay zeka koşullarını kabul edebilmeniz ve bir kaynak oluşturabilmeniz için Azure hesabınızın atanmış bir Bilişsel Hizmetler Katkıda Bulunanı rolü olması gerekir. Bu rolün hesabınıza atanmasını sağlamak için Rol atama belgelerindeki adımları izleyin veya yöneticinize başvurun.
  • Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portalında bir Yüz Tanıma kaynağı oluşturun. Dağıtıldıktan sonra Kaynağa git'i seçin.
    • Uygulamanızı Yüz Tanıma hizmetine bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız vardır. Anahtarınızı ve uç noktanızı hızlı başlangıcın ilerleyen bölümlerinde koda yapıştıracaksınız.
    • Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) kullanabilirsiniz.
  • Mobil cihazlar (IOS ve Android) için Azure AI Vision Yüz Tanıma İstemciSI SDK'sına erişim. Başlamak için SDK'ya erişim elde etmek için Yüz Tanıma Sınırlı Erişim özelliklerine başvurmanız gerekir. Daha fazla bilgi için Yüz Tanıma Sınırlı Erişim sayfasına bakın.

Canlılık algılama gerçekleştirme

Canlılık çözümü tümleştirmesi iki farklı bileşenden oluşur: mobil uygulama ve uygulama sunucusu/düzenleyici.

Canlılığı mobil uygulamayla tümleştirme

SDK'ya erişiminiz olduğunda, kullanıcı arabirimini ve kodu yerel mobil uygulamanızla tümleştirmek için azure-ai-vision-sdk GitHub deposundaki yönergeleri izleyin. Canlılık SDK'sı hem Android için Java/Kotlin hem de iOS mobil uygulamaları için Swift'i destekler:

Kodu uygulamanıza ekledikten sonra SDK kamerayı başlatır ve son kullanıcıya konumunu ayarlaması, canlılık yükünü oluşturması ve canlılık yükünü işlemek için Azure AI Yüz Tanıma bulut hizmetini çağırması için yol gösterir.

Canlılık çözümünü düzenleme

Canlılık düzenlemesinde yer alan üst düzey adımlar aşağıda gösterilmiştir:

Diagram of the liveness workflow in Azure AI Face.

  1. Mobil uygulama canlılık denetimini başlatır ve uygulama sunucusuna bildirir.

  2. Uygulama sunucusu, Azure AI Yüz Tanıma Hizmeti ile yeni bir canlılık oturumu oluşturur. Hizmet bir canlılık oturumu oluşturur ve bir session-authorization-token ile yanıt verir.

    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. Uygulama sunucusu, mobil uygulamaya session-authorization-token'ı geri sağlar.

  4. Mobil uygulama, Azure AI Vision SDK'sının başlatılması sırasında oturum yetkilendirme belirtecini sağlar.

    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 daha sonra kamerayı başlatır, kullanıcıya doğru konumlandırması için yol gösterir ve ardından yükü canlılık algılama hizmet uç noktasını çağırmak için hazırlar.

  6. SDK, canlılık algılamasını gerçekleştirmek için Azure AI Vision Yüz Tanıma hizmetini çağırır. Hizmet yanıt verdikten sonra SDK, mobil uygulamaya canlılık denetiminin tamamlandığını bildirir.

  7. Mobil uygulama, canlılık denetimi tamamlama işlemini uygulama sunucusuna aktarır.

  8. Uygulama sunucusu artık Azure AI Vision Yüz Tanıma hizmetinden canlılık algılama sonucunu sorgulayabilir.

    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
    }
    
    

Yüz doğrulama ile canlılık algılama gerçekleştirme

Yüz doğrulamayı canlılık algılama ile birleştirmek, ilgili kişinin sistemde fiziksel olarak bulunduğuna ilişkin ek bir garanti ile biyometrik doğrulamayı sağlar. Canlılığı doğrulamayla tümleştirmenin iki bölümü vardır:

  1. İyi bir başvuru görüntüsü seçin.
  2. Doğrulama ile canlılık düzenlemesini ayarlayın.

Diagram of the liveness-with-verify workflow of Azure AI Face.

İyi bir başvuru görüntüsü seçin

Giriş görüntülerinizin en doğru tanıma sonuçlarını vermesini sağlamak için aşağıdaki ipuçlarını kullanın.

Teknik gereksinimler:

  • Desteklenen giriş görüntüsü biçimleri JPEG, PNG, GIF (ilk kare), BMP'dir.
  • Görüntü dosyası boyutu 6 MB'tan büyük olmamalıdır.
  • Geçerli algılama modellerini kullanırken yüz algılama işleminde özniteliğini, görüntünün yüz tanımayı deneyecek kadar kaliteli olup olmadığının genel bir yönergesi olarak kullanabilirsinizqualityForRecognition. Kişi kaydı için yalnızca "high" kaliteli görüntüler önerilir ve tanımlama senaryolarında veya üzerinde "medium" kalite önerilir.

Kompozisyon gereksinimleri:

  • Fotoğraf net ve keskindir, bulanık değildir, pikselleştirilmiş, bozuk veya hasarlı değildir.
  • Fotoğraf, yüz lekelerini veya yüz görünümünü kaldırmak için değiştirilmez.
  • Fotoğraf RGB rengi desteklenen bir biçimde olmalıdır (JPEG, PNG, WEBP, BMP). Önerilen Yüz Tanıma boyutu 200 piksel x 200 pikseldir. 200 piksel x 200 pikselden büyük yüz boyutları daha iyi yapay zeka kalitesine ve 6 MB'tan büyük boyuta neden olmaz.
  • Kullanıcı gözlük, maske, şapka, kulaklık, baş kaplama veya yüz kaplaması takmıyor. Yüz, herhangi bir engelden arınmalıdır.
  • Yüzünüzü gizlememeleri şartıyla yüz takılarına izin verilir.
  • Fotoğrafta yalnızca bir yüz görünür olmalıdır.
  • Yüz, her iki gözü açık, ağzı kapalı, aşırı yüz ifadeleri veya baş eğme olmadan nötr ön görünümde olmalıdır.
  • Yüz, gölgelerden veya kırmızı gözlerden arınmalıdır. Bunlardan herhangi biri gerçekleşirse fotoğrafı yeniden çekin.
  • Arka plan, herhangi bir gölge olmadan tekdüzen ve düz olmalıdır.
  • Yüz resmin içinde ortalanmalı ve resmin en az %50'sini doldurmalıdır.

Doğrulama ile canlılık düzenlemesini ayarlayın.

Doğrulama düzenlemesi ile canlılık konusunda üst düzey adımlar aşağıda gösterilmiştir:

  1. Doğrulama başvuru görüntüsünü aşağıdaki iki yöntemden biriyle sağlayın:

    • Uygulama sunucusu canlılık oturumu oluştururken başvuru görüntüsünü sağlar.

      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>
      }
      
      
    • Mobil uygulama, SDK'yi başlatırken başvuru görüntüsünü sağlar.

      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. Uygulama sunucusu artık canlılık sonucuna ek olarak doğrulama sonucunu sorgulayabilir.

    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
    }
    

Kaynakları temizleme

Azure AI hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler.

Sonraki adımlar

Canlılık API'lerindeki diğer seçenekler hakkında bilgi edinmek için bkz. Azure AI Vision SDK başvurusu.

Canlılık çözümünü düzenlemeye yönelik özellikler hakkında daha fazla bilgi edinmek için Oturum REST API başvurusuna bakın.