Bagikan melalui


Tutorial: Mendeteksi keaktivaan di wajah

Dalam tutorial ini, Anda mempelajari cara mendeteksi liveness atau tanda kehidupan di wajah, menggunakan kombinasi kode sisi server dan aplikasi seluler klien.

Petunjuk / Saran

Untuk informasi umum tentang deteksi keaslian wajah, lihat panduan konseptual.

Tutorial ini menunjukkan cara mengoperasikan aplikasi frontend dan server aplikasi untuk melakukan deteksi liveness, termasuk langkah opsional verifikasi wajah, di berbagai platform dan bahasa.

Penting

SDK klien untuk Face dalam liveness adalah fitur yang memerlukan akses khusus. Anda harus meminta akses ke fitur keaktifan dengan mengisi formulir intake Pengenalan Wajah. Saat langganan Azure Anda diberikan akses, Anda dapat mengunduh Face liveness SDK.

Petunjuk / Saran

Setelah menyelesaikan prasyarat, Anda dapat mencoba pengalaman liveness iOS dari TestFlight dan pengalaman web-liveness dari Vision Studio. Selain itu, Anda juga dapat membuat dan menjalankan sampel frontend lengkap (baik di iOS, Android, atau Web) dari bagian Sampel .

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Akun Azure Anda harus memiliki peran Kontributor Cognitive Services yang ditetapkan supaya Anda dapat menyetujui persyaratan AI yang bertanggung jawab dan membuat sumber daya. Agar peran ini ditetapkan ke akun Anda, ikuti langkah-langkah dalam dokumentasi Menetapkan peran, atau hubungi administrator Anda.
  • Setelah Anda memiliki langganan Azure, buat sumber daya Face di portal Azure untuk mendapatkan kunci dan titik akhir. Setelah penerapan selesai, pilih Buka sumber daya.
    • Anda memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke layanan Face.
    • Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
  • Akses ke Azure AI Vision Face Client SDK untuk Ponsel (IOS dan Android) dan Web. Untuk memulai, Anda perlu mengajukan permohonan fitur Face Recognition Limited Access untuk mendapatkan akses ke SDK. Untuk informasi selengkapnya, lihat halaman Face Limited Access.
  • Memahami fitur deteksi keaslian wajah. Lihat panduan konseptual.

Menyiapkan SDK

Kami menyediakan SDK dalam bahasa yang berbeda untuk menyederhanakan pengembangan pada aplikasi frontend dan server aplikasi:

Unduh SDK untuk aplikasi frontend

Ikuti instruksi di repositori GitHub azure-ai-vision-sdk untuk mengintegrasikan UI dan kode ke dalam aplikasi seluler asli Anda. SDK liveness mendukung Java/Kotlin untuk aplikasi seluler Android, Swift untuk aplikasi seluler iOS dan JavaScript untuk aplikasi web:

Setelah Anda menambahkan kode ke dalam aplikasi, SDK menangani menghidupkan kamera, memandu pengguna akhir dalam menyesuaikan posisi mereka, menyusun data keaktifan, dan melakukan pemanggilan ke layanan cloud Azure AI Face untuk memproses data keaktifan.

Anda dapat memantau bagian Rilis dari repositori SDK untuk pembaruan versi SDK baru.

Mengunduh pustaka klien Azure AI Face untuk server aplikasi

Server/orkestrator aplikasi bertanggung jawab untuk mengontrol siklus hidup sesi liveness. Server aplikasi harus membuat sesi sebelum melakukan deteksi keaktifan, dan kemudian dapat memeriksa hasilnya dan menghapus sesi ketika pemeriksaan keaktifan selesai. Kami menawarkan pustaka dalam berbagai bahasa untuk mengimplementasikan server aplikasi Anda dengan mudah. Ikuti langkah-langkah berikut untuk menginstal paket yang Anda inginkan:

Penting

Untuk membuat variabel lingkungan untuk kunci dan titik akhir layanan Azure Face Anda, lihat panduan memulai

Melakukan deteksi keberlangsungan hidup

Langkah-langkah tingkat tinggi yang terlibat dalam orkestrasi keaktivaan diilustrasikan di bawah ini:

Diagram alur kerja keaktifan di Azure AI Face.

  1. Aplikasi frontend memulai pemeriksaan keaktifan dan memberi tahu server aplikasi.

  2. Server aplikasi membuat sesi keaktifan baru dengan Azure AI Face Service. Layanan ini membuat sesi keaktifan dan merespons kembali dengan token otorisasi sesi. Informasi lebih lanjut mengenai setiap parameter permintaan yang terlibat dalam membuat sesi liveness dirujuk dalam Liveness Create Session Operation.

    var endpoint = new Uri(System.Environment.GetEnvironmentVariable("FACE_ENDPOINT"));
    var credential = new AzureKeyCredential(System.Environment.GetEnvironmentVariable("FACE_APIKEY"));
    
    var sessionClient = new FaceSessionClient(endpoint, credential);
    
    var createContent = new CreateLivenessSessionContent(LivenessOperationMode.Passive)
    {
        DeviceCorrelationId = "723d6d03-ef33-40a8-9682-23a1feb7bccd",
        EnableSessionImage = true,
    };
    
    var createResponse = await sessionClient.CreateLivenessSessionAsync(createContent);
    var sessionId = createResponse.Value.SessionId;
    Console.WriteLine($"Session created.");
    Console.WriteLine($"Session id: {sessionId}");
    Console.WriteLine($"Auth token: {createResponse.Value.AuthToken}");
    

    Contoh isi respons:

    {
        "sessionId": "a6e7193e-b638-42e9-903f-eaf60d2b40a5",
        "authToken": "<session-authorization-token>",
        "status": "NotStarted",
        "modelVersion": "2024-11-15",
        "results": {
            "attempts": []
        }
    }
    
  3. Server aplikasi menyediakan token otorisasi sesi kembali ke aplikasi frontend.

  4. Aplikasi frontend menggunakan session-authorization-token untuk memulai face-liveness-detector yang akan memulai aliran liveness.

        FaceLivenessDetector(
            sessionAuthorizationToken = FaceSessionToken.sessionToken,
            verifyImageFileContent = FaceSessionToken.sessionSetInClientVerifyImage,
            deviceCorrelationId = "null",
            onSuccess = viewModel::onSuccess,
            onError = viewModel::onError
        )
    
  5. SDK kemudian memulai kamera, memandu pengguna untuk memposisikan dengan benar, lalu menyiapkan payload untuk memanggil titik akhir layanan deteksi keaktifan.

  6. SDK memanggil layanan Azure AI Vision Face untuk melakukan deteksi keberadaan hidup. Setelah layanan merespons, SDK memberi tahu aplikasi frontend bahwa pemeriksaan keaktivaan telah selesai.

  7. Aplikasi frontend menyampaikan penyelesaian pemeriksaan keaktivitas ke server aplikasi.

  8. Server aplikasi sekarang dapat mengkueri hasil deteksi keaktifan dari layanan Azure AI Vision Face.

    var getResultResponse = await sessionClient.GetLivenessSessionResultAsync(sessionId);
    
    var sessionResult = getResultResponse.Value;
    Console.WriteLine($"Session id: {sessionResult.Id}");
    Console.WriteLine($"Session status: {sessionResult.Status}");
    Console.WriteLine($"Liveness detection decision: {sessionResult.Result?.Response.Body.LivenessDecision}");
    

    Contoh isi respons:

    {
        "sessionId": "0acf6dbf-ce43-42a7-937e-705938881d62",
        "authToken": "",
        "status": "Succeeded",
        "modelVersion": "2024-11-15",
        "results": {
            "attempts": [
            {
                "attemptId": 1,
                "attemptStatus": "Succeeded",
                "result": {
                "livenessDecision": "realface",
                "targets": {
                    "color": {
                    "faceRectangle": {
                        "top": 763,
                        "left": 320,
                        "width": 739,
                        "height": 938
                    }
                    }
                },
                "digest": "517A0E700859E42107FA47E957DD12F54211C1A021A969CD391AC38BB88295A2",
                "sessionImageId": "Ab9tzwpDzqdCk35wWTiIHWJzzPr9fBCNSqBcXnJmDjbI"
                }
            }
            ]
        }
    }
    
  9. Server aplikasi dapat menghapus sesi setelah semua hasil sesi dikueri.

    await sessionClient.DeleteLivenessSessionAsync(sessionId);
    Console.WriteLine($"The session {sessionId} is deleted.");
    

Melakukan deteksi liveness dengan verifikasi wajah

Menggabungkan verifikasi wajah dengan deteksi keaktifan memungkinkan verifikasi biometrik orang tertentu yang tertarik dengan jaminan tambahan bahwa orang tersebut secara fisik ada dalam sistem.

Diagram alur kerja liveness-with-face-verification Azure AI Face.

Ada dua bagian untuk mengintegrasikan liveness dengan verifikasi:

Langkah 1 - Pilih gambar referensi

Ikuti tips yang tercantum dalam persyaratan komposisi untuk skenario verifikasi ID untuk memastikan bahwa gambar input Anda memberikan hasil pengenalan yang paling akurat.

Langkah 2 - Siapkan orkestrasi liveness dengan verifikasi.

Langkah-langkah tingkat tinggi yang terlibat dalam keakuratan dengan orkestrasi verifikasi diilustrasikan di bawah ini:

  1. Menyediakan gambar referensi verifikasi dengan salah satu dari dua metode berikut:

    • Server aplikasi menyediakan gambar referensi saat membuat sesi liveness. Informasi lebih lanjut mengenai setiap parameter permintaan yang terlibat dalam membuat sesi liveness dengan verifikasi dirujuk dalam Liveness With Verify Create Session Operation.

      var endpoint = new Uri(System.Environment.GetEnvironmentVariable("FACE_ENDPOINT"));
      var credential = new AzureKeyCredential(System.Environment.GetEnvironmentVariable("FACE_APIKEY"));
      
      var sessionClient = new FaceSessionClient(endpoint, credential);
      
      var createContent = new CreateLivenessWithVerifySessionContent(LivenessOperationMode.Passive)
      {
          DeviceCorrelationId = "723d6d03-ef33-40a8-9682-23a1feb7bccd",
          EnableSessionImage = true,
      };
      using var fileStream = new FileStream("test.png", FileMode.Open, FileAccess.Read);
      
      var createResponse = await sessionClient.CreateLivenessWithVerifySessionAsync(createContent, fileStream);
      
      var sessionId = createResponse.Value.SessionId;
      Console.WriteLine("Session created.");
      Console.WriteLine($"Session id: {sessionId}");
      Console.WriteLine($"Auth token: {createResponse.Value.AuthToken}");
      Console.WriteLine("The reference image:");
      Console.WriteLine($"  Face rectangle: {createResponse.Value.VerifyImage.FaceRectangle.Top}, {createResponse.Value.VerifyImage.FaceRectangle.Left}, {createResponse.Value.VerifyImage.FaceRectangle.Width}, {createResponse.Value.VerifyImage.FaceRectangle.Height}");
      Console.WriteLine($"  The quality for recognition: {createResponse.Value.VerifyImage.QualityForRecognition}");
      

      Contoh isi respons:

      {
          "sessionId": "3847ffd3-4657-4e6c-870c-8e20de52f567",
          "authToken": "<session-authorization-token>",
          "status": "NotStarted",
          "modelVersion": "2024-11-15",
          "results": {
              "attempts": [],
              "verifyReferences": [
              {
                  "referenceType": "image",
                  "faceRectangle": {
                  "top": 98,
                  "left": 131,
                  "width": 233,
                  "height": 300
                  },
                  "qualityForRecognition": "high"
              }
              ]
          }
      }
      
    • Aplikasi frontend menyediakan gambar referensi saat menginisialisasi SDK. Skenario ini tidak didukung dalam solusi web.

          FaceLivenessDetector(
              sessionAuthorizationToken = FaceSessionToken.sessionToken,
              verifyImageFileContent = FaceSessionToken.sessionSetInClientVerifyImage,
              deviceCorrelationId = "null",
              onSuccess = viewModel::onSuccess,
              onError = viewModel::onError
          )
      
  2. Server aplikasi sekarang dapat mengkueri hasil verifikasi selain hasil keaktivaan.

    var getResultResponse = await sessionClient.GetLivenessWithVerifySessionResultAsync(sessionId);
    var sessionResult = getResultResponse.Value;
    Console.WriteLine($"Session id: {sessionResult.Id}");
    Console.WriteLine($"Session status: {sessionResult.Status}");
    Console.WriteLine($"Liveness detection decision: {sessionResult.Result?.Response.Body.LivenessDecision}");
    Console.WriteLine($"Verification result: {sessionResult.Result?.Response.Body.VerifyResult.IsIdentical}");
    Console.WriteLine($"Verification confidence: {sessionResult.Result?.Response.Body.VerifyResult.MatchConfidence}");
    

    Contoh isi respons:

    {
        "sessionId": "93fd6f13-4161-41df-8a22-80a38ef53836",
        "authToken": "",
        "status": "Succeeded",
        "modelVersion": "2024-11-15",
        "results": {
            "attempts": [
                {
                    "attemptId": 1,
                    "attemptStatus": "Succeeded",
                    "result": {
                    "livenessDecision": "realface",
                    "targets": {
                        "color": {
                            "faceRectangle": {
                                "top": 669,
                                "left": 203,
                                "width": 646,
                                "height": 724
                            }
                        }
                    },
                    "digest": "EE664438FDF0535C6344A468181E4DDD4A34AC89582D4FD6E9E8954B843C7AA7",
                    "verifyResult": {
                            "matchConfidence": 0.08172279,
                            "isIdentical": false
                        }
                    }
                }
            ],
            "verifyReferences": [
            {
                "faceRectangle": {
                    "top": 98,
                    "left": 131,
                    "width": 233,
                    "height": 300
                    },
                "qualityForRecognition": "high"
            }
            ]
        }
    }
    
  3. Server aplikasi dapat menghapus sesi jika Anda tidak mengkueri hasilnya lagi.

    await sessionClient.DeleteLivenessWithVerifySessionAsync(sessionId);
    Console.WriteLine($"The session {sessionId} is deleted.");
    

Melakukan operasi wajah lainnya setelah deteksi keaktifan

Secara opsional, Anda dapat melakukan operasi wajah lebih lanjut setelah pemeriksaan keaktifan, seperti analisis fitur wajah (untuk mendapatkan atribut wajah, misalnya) atau operasi identitas wajah.

  1. Untuk mengaktifkan ini, Anda harus mengatur parameter "enableSessionImage" ke "true" selama langkahSession-Creation.
  2. Setelah sesi selesai, Anda dapat mengekstrak "sessionImageId" dari langkah Sesi-Get-Result.
  3. Anda sekarang dapat mengunduh gambar sesi (direferensikan dalam Liveness Get Session Image Operation API), atau menyediakan "sessionImageId" dalam operasi Detect from Session Image ID API untuk terus melakukan analisis wajah atau operasi identitas wajah lainnya. Untuk informasi selengkapnya tentang operasi ini, lihat Konsep deteksi wajah dan konsep Pengenalan Wajah.

Opsi dukungan

Selain menggunakan opsi dukungan layanan Azure AI utama, Anda juga dapat memposting pertanyaan Anda di bagian masalah repositori SDK.

Untuk mempelajari cara mengintegrasikan solusi deteksi keaktifan ke dalam aplikasi Anda yang ada, lihat panduan referensi Azure AI Vision SDK.

Untuk mempelajari selengkapnya tentang fitur yang tersedia untuk mengatur solusi keaktivaan, lihat referensi REST API Sesi.