Kurz: Detekce živého života v tvářích

Rozpoznávání živé tváře se dá použít k určení, jestli je tvář ve vstupním video streamu skutečná (živá) nebo falešná (falšování). Jedná se o zásadní stavební blok v biometrickém ověřovacím systému, který brání útokům na falšování identity od imposterů, kteří se snaží získat přístup k systému pomocí fotografie, videa, masky nebo jiných prostředků k zosobnění jiné osoby.

Cílem detekce aktivity je zajistit, aby systém pracoval s fyzicky přítomným živým člověkem v době ověřování. Tyto systémy jsou stále důležitější díky nárůstu digitálních financí, řízení vzdáleného přístupu a procesů online ověřování identit.

Řešení detekce živě se úspěšně brání různým typům falšování od výtisků papíru, 2d/3d masek a falšování prezentací na telefonech a přenosných počítačích. Detekce živého života je aktivní oblastí výzkumu, kdy se průběžně vylepšují stále sofistikovanější útoky na falšování identity v průběhu času. Pro klienta a komponenty služby se postupně nasadí průběžná vylepšení, protože celkové řešení bude pro nové typy útoků robustnější.

Důležité

Klientské sady SDK pro rozpoznávání tváře jsou vrátnou funkcí. Musíte požádat o přístup k funkci liveness vyplněním formuláře pro příjem rozpoznávání tváře. Po udělení přístupu k předplatnému Azure si můžete stáhnout sadu SDK pro rozpoznávání tváře.

Požadavky

  • Váš účet Azure musí mít přiřazenou roli Přispěvatel služeb Cognitive Services, abyste mohli souhlasit s zodpovědnými podmínkami AI a vytvořit prostředek. Pokud chcete tuto roli přiřadit k vašemu účtu, postupujte podle pokynů v dokumentaci k přiřazování rolí nebo se obraťte na správce.
  • Jakmile budete mít předplatné Azure, vytvořte prostředek rozpoznávání tváře na webu Azure Portal, abyste získali klíč a koncový bod. Po nasazení vyberte Přejít k prostředku.
    • K připojení aplikace ke službě Rozpoznávání tváře potřebujete klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložíte do kódu později v rychlém startu.
    • K vyzkoušení služby můžete použít cenovou úroveňF0 Free a později upgradovat na placenou úroveň pro produkční prostředí.
  • Přístup k sadě Azure AI Vision Face Client SDK pro mobilní zařízení (iOS a Android). Abyste mohli začít, musíte požádat o funkce omezeného přístupu k rozpoznávání tváře, abyste získali přístup k sadě SDK. Další informace najdete na stránce s omezeným přístupem k rozpoznávání tváře.

Detekce živé aktivity

Integrace řešení liveness zahrnuje dvě různé komponenty: mobilní aplikaci a aplikační server nebo orchestrátor.

Integrace živé aktivity do mobilní aplikace

Jakmile budete mít přístup k sadě SDK, postupujte podle pokynů v úložišti Azure-ai-vision-sdk Na GitHubu a integrujte uživatelské rozhraní a kód do vaší nativní mobilní aplikace. Sada LIVEness SDK podporuje Java/Kotlin pro Android i Swift pro mobilní aplikace pro iOS:

  • V případě Swiftu pro iOS postupujte podle pokynů v ukázce iOS.
  • V případě Kotlin/Java Android postupujte podle pokynů v ukázce Androidu .

Jakmile do aplikace přidáte kód, sada SDK zpracuje spuštění kamery, provede koncového uživatele, aby upravil svoji pozici, sestavil datovou část živé aktivity a volal cloudovou službu Azure AI Face, aby zpracovávala datovou část aktivity.

Orchestrace řešení živosti

Základní kroky, které jsou součástí orchestrace aktivity, jsou znázorněny níže:

Diagram of the liveness workflow in Azure AI Face.

  1. Mobilní aplikace spustí kontrolu aktivity a upozorní aplikační server.

  2. Aplikační server vytvoří novou relaci živé aktivity se službou Azure AI Face Service. Služba vytvoří relaci živé aktivity a vrátí odpověď pomocí tokenu session-authorization-token.

    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. Aplikační server poskytuje token autorizace relace zpět do mobilní aplikace.

  4. Mobilní aplikace poskytuje token autorizace relace během inicializace sady Azure AI 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. Sada SDK pak spustí kameru, provede uživatele, aby správně umístil a pak připraví datovou část tak, aby volala koncový bod služby detekce živě.

  6. Sada SDK volá službu Azure AI Vision Face, která provádí detekci živé aktivity. Jakmile služba odpoví, sada SDK oznámí mobilní aplikaci, že kontrola aktivity byla dokončena.

  7. Mobilní aplikace předá dokončení kontroly aktivity na aplikační server.

  8. Aplikační server se teď může dotazovat na výsledek detekce živého stavu ze služby Azure AI 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
    }
    
    

Detekce živé aktivity s ověřením tváře

Kombinace ověřování tváře s detekcí živé aktivity umožňuje biometrické ověřování konkrétní osoby, která má zájem, s přidanou zárukou, že osoba je fyzicky přítomná v systému. Existují dvě části integrace živé aktivity s ověřením:

  1. Vyberte dobrý referenční obrázek.
  2. Nastavte orchestraci živé aktivity s ověřením.

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

Výběr vhodného referenčního obrázku

Pomocí následujících tipů zajistíte, aby vstupní obrázky poskytovaly nejpřesnější výsledky rozpoznávání.

Technické požadavky:

  • Podporované vstupní formáty obrázků jsou JPEG, PNG, GIF (první snímek), BMP.
  • Velikost souboru obrázku by neměla být větší než 6 MB.
  • Atribut v operaci rozpoznávání tváře můžete využít qualityForRecognition při použití příslušných modelů detekce jako obecného vodítka, jestli je pravděpodobné, že obrázek má dostatečnou kvalitu pro pokus o rozpoznávání tváře. Pro scénáře identifikace se doporučují pouze "high" kvalitní obrázky pro registraci osob a kvalitu na nebo vyšší úrovni "medium" .

Požadavky na složení:

  • Fotografie je jasná a ostrá, není rozmazaná, pixelovaná, zkreslená nebo poškozená.
  • Fotka není změněna tak, aby se odebraly obličeje nebo vzhled obličeje.
  • Fotka musí být ve formátu podporovaném barvou RGB (JPEG, PNG, WEBP, BMP). Doporučená velikost tváře je 200 pixelů x 200 pixelů. Velikosti tváře větší než 200 pixelů x 200 pixelů nebudou mít za následek lepší kvalitu umělé inteligence a velikost není větší než 6 MB.
  • Uživatel nemá brýle, masky, klobouky, sluchátka, kryty hlavy nebo kryty obličeje. Obličej by měl být bez jakýchkoli překážek.
  • Obličejové šperky jsou povoleny za předpokladu, že neskryjí vaši tvář.
  • Na fotce by měl být viditelný jenom jeden obličej.
  • Obličej by měl být v neutrální přední pozici s otevřenýma očima, zavřenými ústy, bez extrémních výrazů obličeje nebo naklonění hlavy.
  • Tvář by měla být bez jakýchkoli stínů nebo červených očí. Pokud dojde k některé z těchto akcí, můžete fotku znovu vyfotit.
  • Pozadí by mělo být jednotné a prosté, bez jakýchkoli stínů.
  • Tvář by měla být na střed uvnitř obrázku a vyplnit alespoň 50 % obrázku.

Nastavte orchestraci živé aktivity s ověřením.

Základní kroky související s orchestrací ověřování jsou znázorněny níže:

  1. Zadejte referenční obrázek ověření některou z následujících dvou metod:

    • Aplikační server poskytuje referenční obrázek při vytváření relace živé aktivity.

      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>
      }
      
      
    • Mobilní aplikace poskytuje referenční image při inicializaci sady 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. Aplikační server teď může kromě výsledku aktivity zadat dotaz na výsledek ověření.

    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
    }
    

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné služeb Azure AI, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky, které jsou k ní přidružené.

Další kroky

Další informace o dalších možnostech v rozhraních API pro živé aktivity najdete v referenčních informacích k sadě Azure AI Vision SDK.

Další informace o funkcích dostupných k orchestraci řešení liveness najdete v referenčních informacích k rozhraní REST API relace.