Aracılığıyla paylaş


Detect API'sini çağırma

Dikkat

Yüz tanıma hizmeti erişimi, Sorumlu yapay zeka ilkelerimizi desteklemek için uygunluk ve kullanım ölçütlerine göre sınırlıdır. Yüz tanıma hizmeti yalnızca Microsoft tarafından yönetilen müşteriler ve iş ortakları tarafından kullanılabilir. Erişim için başvurmak için Yüz Tanıma giriş formunu kullanın. Daha fazla bilgi için Yüz sınırlı erişim sayfasına bakın.

Dikkat

Microsoft' un kullanımdan kaldırılmış veya sınırlı yüz tanıma özellikleri vardır ve bu özellikler, kötüye kullanıldığında, insanların stereotipleme, ayrımcılığa veya haksız hizmet reddine maruz kalabilecek duygusal durumları ve kimlik özniteliklerini çıkarsamak için kullanılabilir. Kullanımdan kaldırılacak özellikler duygu ve cinsiyettir. Sınırlı yetenekler yaş, gülümseme, yüz kılları, saç ve makyajdır. Sınırlı özelliklerden herhangi birinin kullanımından yararlanabilecek sorumlu bir kullanım örneğine sahipseniz Azure Yüz Tanıma API'sine e-posta gönderin. Bu karar hakkında daha fazla bilgiyi burada bulabilirsiniz.

Bu kılavuzda, belirli bir görüntüden öznitelikleri ayıklamak için yüz algılama API'sinin nasıl kullanılacağı gösterilmektedir. Bu API'nin davranışını gereksinimlerinizi karşılayacak şekilde yapılandırmanın farklı yollarını öğreneceksiniz.

Bu kılavuzdaki kod parçacıkları, Azure AI Yüz Tanıma istemci kitaplığı kullanılarak C# dilinde yazılmıştır. Aynı işlev REST API aracılığıyla da kullanılabilir.

Ayarlama

Bu kılavuzda, yüz anahtarı ve uç nokta URL'si kullanarak adlı faceClientbir FaceClient nesnesi oluşturduğunuz varsayılır. Bu özelliği ayarlama yönergeleri için hızlı başlangıçlardan birini izleyin.

Hizmete veri gönderme

Yüzleri bulmak ve görüntüdeki konumlarını almak için DetectAsync'i çağırın. Giriş olarak bir URL dizesi veya ham görüntü ikili dosyası alır.

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

Hizmet, aşağıda belirtilen farklı bilgi türleri için sorgulayabileceğiniz bir FaceDetectionResult nesnesi döndürür.

Yüzün konumunu ve boyutlarını ayrıştırma hakkında bilgi için bkz . FaceRectangle. Bu dikdörtgen genellikle gözleri, kaşları, burnu ve ağzı içerir. Başın, kulakların ve çenenin üstü mutlaka dahil değildir. Yüz dikdörtgenini kullanarak tam bir başı kırpmak veya orta çekim bir dikey resim almak için dikdörtgeni her yönde genişletmeniz gerekir.

Verilerin nasıl işleneceğini belirleme

Bu kılavuz, hangi bağımsız değişkenleri geçirebileceğiniz ve döndürülen verilerle neler yapabileceğiniz gibi Detect çağrısının özelliklerine odaklanır. Yalnızca ihtiyacınız olan özellikleri sorgulamanızı öneririz. Her işlemin tamamlanması daha uzun sürer.

Yüz kimliğini alma

returnFaceId true parametresini (yalnızca onaylı müşteriler) olarak ayarlarsanız, her yüz için benzersiz kimliği alabilirsiniz ve bu kimliği daha sonraki yüz tanıma görevlerinde kullanabilirsiniz.

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

İsteğe bağlı faceIdTimeToLive parametresi, yüz kimliğinin sunucuda ne kadar süre (saniye) depolanması gerektiğini belirtir. Bu süre dolduktan sonra yüz kimliği kaldırılır. Varsayılan değer 86400'dür (24 saat).

Yüz tanıma yer işaretlerini alma

Yüz yer işaretleri, göz bebekleri veya burnun ucu gibi bir yüz üzerinde bulunması kolay noktalar kümesidir. Yüz tanıma yer işareti verilerini almak için detectionModel parametresini olarakFaceDetectionModel.Detection03, returnFaceLandmarks parametresini olarak trueayarlayın.

// 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;

Yüz özniteliklerini alma

Yüz dikdörtgenlerinin ve yer işaretlerinin yanı sıra, yüz algılama API'si yüzün çeşitli kavramsal özniteliklerini analiz edebilir. Tam liste için Yüz öznitelikleri kavramsal bölümüne bakın.

Yüz özniteliklerini analiz etmek için detectionModel parametresini FaceDetectionModel.Detection03 ve returnFaceAttributes parametresini FaceAttributeType Enum değerlerinin listesine ayarlayın.

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;

Hizmetten sonuç alma

Yüz tanıma yer işareti sonuçları

Aşağıdaki kod, burun ve göz bebeklerinin konumlarını nasıl alabileceğinizi gösterir:

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;

Yüzün yönünü doğru şekilde hesaplamak için yüz işareti verilerini de kullanabilirsiniz. Örneğin, yüzün dönüşünü ağzın ortasından gözlerin ortasına bir vektör olarak tanımlayabilirsiniz. Aşağıdaki kod bu vektöri hesaplar:

    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;
}

Yüzün yönünü bildiğinizde dikdörtgen yüz çerçevesini daha düzgün hizalamak için döndürebilirsiniz. Bir görüntüdeki yüzleri kırpmak için, görüntüyü program aracılığıyla döndürerek yüzlerin her zaman dik görünmesini sağlayabilirsiniz.

Yüz özniteliği sonuçları

Aşağıdaki kod, özgün çağrıda istediğiniz yüz özniteliği verilerini nasıl alabileceğinizi gösterir.

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;
}

Özniteliklerin her biri hakkında daha fazla bilgi edinmek için Yüz algılama ve öznitelikler kavramsal kılavuzuna bakın.

Sonraki adımlar

Bu kılavuzda, yüz algılama ve analizinin çeşitli işlevlerini kullanmayı öğrendiniz. Ardından, kullanıcılardan yüz verileri eklemek için bu özellikleri bir uygulamayla tümleştirin.