Bagikan melalui


Memanggil API Deteksi

Perhatian

Akses layanan Face dibatasi berdasarkan kelayakan dan kriteria penggunaan untuk mendukung prinsip AI kami yang Bertanggung Jawab. Layanan Face hanya tersedia untuk pelanggan dan mitra terkelola Microsoft. Gunakan formulir pengambilan Pengenalan Wajah untuk mengajukan akses. Untuk informasi selengkapnya, lihat halaman Akses terbatas Wajah.

Perhatian

Microsoft telah menghentikan atau membatasi kemampuan pengenalan wajah yang dapat digunakan untuk mencoba menyimpulkan status emosional dan atribut identitas yang, jika disalahgunakan, dapat membuat orang tunduk pada stereotip, diskriminasi, atau penolakan layanan yang tidak wajar. Kemampuan yang dihentikan adalah emosi dan jenis kelamin. Kemampuan yang terbatas adalah usia, senyum, rambut wajah, rambut, dan makeup. Email Azure Face API jika Anda memiliki kasus penggunaan yang bertanggung jawab yang akan mendapat manfaat dari penggunaan salah satu kemampuan terbatas. Baca selengkapnya tentang keputusan ini di sini.

Panduan ini menunjukkan cara menggunakan API deteksi wajah untuk mengekstrak atribut dari gambar tertentu. Anda akan mempelajari berbagai cara untuk mengonfigurasi perilaku API ini untuk memenuhi kebutuhan Anda.

Cuplikan kode dalam panduan ini ditulis dalam C# dengan menggunakan pustaka klien Azure AI Face. Fungsionalitas yang sama tersedia melalui REST API.

Siapkan

Panduan ini mengasumsikan bahwa Anda sudah membuat objek FaceClient , bernama faceClient, menggunakan kunci Wajah dan URL titik akhir. Untuk petunjuk tentang cara menyiapkan fitur ini, ikuti salah satu mulai cepat.

Kirimkan data ke layanan

Untuk menemukan wajah dan mendapatkan lokasinya dalam gambar, panggil DetectAsync. Dibutuhkan string URL atau biner gambar mentah sebagai input.

var response = await faceClient.DetectAsync(new Uri(imageUrl), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false);
IReadOnlyList<FaceDetectionResult> faces = response.Value;

Layanan mengembalikan objek FaceDetectionResult , yang dapat Anda kueri untuk berbagai jenis informasi, yang ditentukan di bawah ini.

Untuk informasi tentang cara mengurai lokasi dan dimensi wajah, lihat FaceRectangle. Biasanya, persegi panjang ini berisi mata, alis, hidung, dan mulut. Bagian atas kepala, telinga, dan dagu belum tentu disertakan. Untuk menggunakan persegi wajah untuk memangkas kepala keseluruhan atau mendapatkan potret bidikan tengah, Anda dapat memperluas persegi ke setiap arah.

Tentukan cara memproses data

Panduan ini berfokus pada spesifikasi panggilan Deteksi, seperti argumen apa yang bisa Anda lewati dan apa yang bisa Anda lakukan dengan data yang dikembalikan. Sebaiknya Anda mengkueri hanya fitur yang Anda butuhkan. Setiap operasi membutuhkan waktu lebih panjang untuk selesai.

Dapatkan ID wajah

Jika Anda mengatur parameter returnFaceId ke true (hanya pelanggan yang disetujui), Anda bisa mendapatkan ID unik untuk setiap wajah, yang dapat Anda gunakan dalam tugas pengenalan wajah nanti.

foreach (var face in faces)
{
    string id = face.FaceId.ToString();
    FaceRectangle rect = face.FaceRectangle;
}

Parameter faceIdTimeToLive opsional menentukan berapa lama (dalam detik) ID wajah harus disimpan di server. Setelah waktu ini kedaluwarsa, ID wajah dihapus. Nilai defaultnya adalah 86400 (24 jam).

Mendapatkan tengara wajah

Tengara wajah adalah satu set titik yang mudah ditemukan di wajah, seperti pupil atau ujung hidung. Untuk mendapatkan data penanda wajah, atur parameter detectionModel ke FaceDetectionModel.Detection03 dan parameter returnFaceLandmarks ke true.

// Note DetectionModel.Detection02 cannot be used with returnFaceLandmarks.
var response2 = await faceClient.DetectAsync(new Uri(imageUrl), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false, returnFaceLandmarks: true);
IReadOnlyList<FaceDetectionResult> faces2 = response2.Value;

Dapatkan atribut wajah

Selain persegi panjang dan tengara wajah, API deteksi wajah dapat menganalisis beberapa atribut konseptual wajah. Untuk daftar lengkap, lihat bagian konseptual Atribut wajah.

Untuk menganalisis atribut wajah, atur parameter detectionModel ke FaceDetectionModel.Detection03 dan parameter returnFaceAttributes ke daftar nilai FaceAttributeType Enum.

var requiredFaceAttributes = new FaceAttributeType[] {
    FaceAttributeType.Detection03.Blur,
    FaceAttributeType.Detection03.HeadPose,
    FaceAttributeType.Detection03.Mask,
    FaceAttributeType.Recognition04.QualityForRecognition
};
// Note DetectionModel.Detection02 cannot be used with returnFaceAttributes.
var response3 = await faceClient.DetectAsync(new Uri(imageUrl), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false, returnFaceAttributes: requiredFaceAttributes);
IReadOnlyList<FaceDetectionResult> faces3 = response3.Value;

Dapatkan hasil dari layanan

Hasil penanda wajah

Kode berikut menunjukkan bagaimana Anda dapat mengambil lokasi hidung dan pupil:

foreach (var face in faces2)
{
    var landmarks = face.FaceLandmarks;

    double noseX = landmarks.NoseTip.X;
    double noseY = landmarks.NoseTip.Y;

    double leftPupilX = landmarks.PupilLeft.X;
    double leftPupilY = landmarks.PupilLeft.Y;

    double rightPupilX = landmarks.PupilRight.X;
    double rightPupilY = landmarks.PupilRight.Y;

Anda juga dapat menggunakan data penanda wajah untuk mengalkulasi arah wajah secara akurat. Misalnya, Anda dapat menentukan rotasi wajah sebagai vektor dari tengah mulut ke tengah mata. Kode berikut mengalkulasi vektor ini:

    var upperLipBottom = landmarks.UpperLipBottom;
    var underLipTop = landmarks.UnderLipTop;

    var centerOfMouth = new Point(
        (int)((upperLipBottom.X + underLipTop.X) / 2),
        (int)((upperLipBottom.Y + underLipTop.Y) / 2));

    var eyeLeftInner = landmarks.EyeLeftInner;
    var eyeRightInner = landmarks.EyeRightInner;

    var centerOfTwoEyes = new Point(
        (int)((eyeLeftInner.X + eyeRightInner.X) / 2),
        (int)((eyeLeftInner.Y + eyeRightInner.Y) / 2));

    var faceDirectionVectorX = centerOfTwoEyes.X - centerOfMouth.X;
    var faceDirectionVectorY = centerOfTwoEyes.Y - centerOfMouth.Y;
}

Ketika Anda mengetahui arah wajah, Anda dapat memutar bingkai persegi panjang wajah untuk menyelaraskannya dengan lebih baik. Untuk memangkas wajah dalam gambar, Anda dapat memutar gambar secara terprogram sehingga wajah selalu tampak tegak.

Hasil atribut wajah

Kode berikut menunjukkan cara Anda dapat mengambil data atribut wajah yang Anda minta dalam panggilan asli.

foreach (var face in faces3)
{
    var attributes = face.FaceAttributes;
    var blur = attributes.Blur;
    var headPose = attributes.HeadPose;
    var mask = attributes.Mask;
    var qualityForRecognition = attributes.QualityForRecognition;
}

Untuk mempelajari lebih lanjut tentang masing-masing atribut, lihat panduan konseptual Deteksi wajah dan atribut.

Langkah berikutnya

Dalam panduan ini, Anda mempelajari cara menggunakan berbagai fungsionalitas pendeteksi wajah dan analisis. Selanjutnya, integrasikan fitur ini ke dalam aplikasi untuk menambahkan data wajah dari pengguna.