Détecter et analyser les visages

Effectué

Pour utiliser l’API Visage Azure Vision, vous devez provisionner une ressource pour le service dans un abonnement Azure. Vous pouvez provisionner Visage en tant que ressource à service unique, ou utiliser l’API Visage dans une ressource multiservices Foundry Tools, qui peuvent être provisionnées en tant que ressource autonome ou dans le cadre d’un projet Microsoft Foundry.

Pour utiliser votre ressource à partir d’une application cliente, vous devez vous connecter à son point de terminaison à l’aide de l’authentification basée sur des clés ou de l’authentification Microsoft Entra AI. Lorsque vous utilisez l’interface REST, vous pouvez fournir la clé d’authentification ou le jeton dans l’en-tête de requête. Lorsque vous utilisez un SDK spécifique au langage (par exemple, le package Python azure-ai-vision-face ou le package Microsoft .NET Azure.AI.Vision.Face ), vous utilisez un objet FaceClient pour vous connecter au service.

from azure.ai.vision.face import FaceClient
from azure.ai.vision.face.models import *
from azure.core.credentials import AzureKeyCredential

face_client = FaceClient(
    endpoint="<YOUR_RESOURCE_ENDPOINT>",
    credential=AzureKeyCredential("<YOUR_RESOURCE_KEY>"))
using Azure;
using Azure.AI.Vision.Face;

FaceClient faceClient = new FaceClient(
    new Uri("<YOUR_RESOURCE_ENDPOINT>"),
    new AzureKeyCredential("<YOUR_RESOURCE_KEY>"));

Pour détecter et analyser des visages dans une image, vous devez spécifier les fonctionnalités spécifiques au modèle que vous souhaitez que le service retourne, puis utiliser le client pour appeler la méthode Detect .

# Specify facial features to be retrieved
features = [FaceAttributeTypeDetection01.HEAD_POSE,
            FaceAttributeTypeDetection01.OCCLUSION,
            FaceAttributeTypeDetection01.ACCESSORIES]

# Use client to detect faces in an image
with open("<IMAGE_FILE_PATH>", mode="rb") as image_data:
    detected_faces = face_client.detect(
        image_content=image_data.read(),
        detection_model=FaceDetectionModel.DETECTION01,
        recognition_model=FaceRecognitionModel.RECOGNITION01,
        return_face_id=True,
        return_face_attributes=features,
    )
// Specify facial features to be retrieved
FaceAttributeType[] features = new FaceAttributeType[]
{
    FaceAttributeType.Detection01.HeadPose,
    FaceAttributeType.Detection01.Occlusion,
    FaceAttributeType.Detection01.Accessories
};

// Use client to detect faces in an image
using (var imageData = File.OpenRead(imageFile))
{    
    var response = await faceClient.DetectAsync(
        BinaryData.FromStream(imageData),
        FaceDetectionModel.Detection01,
        FaceRecognitionModel.Recognition01,
        returnFaceId: false,
        returnFaceAttributes: features);
    IReadOnlyList<FaceDetectionResult> detected_faces = response.Value;
}

La réponse du service dépend des éléments suivants :

  • Fonctionnalités spécifiques au modèle demandées.
  • Nombre de visages détectés dans l’image.

Une réponse pour une image contenant un seul visage peut ressembler à l’exemple suivant :

[
    {
        'faceRectangle': {'top': 174, 'left': 247, 'width': 246, 'height': 246}
        'faceAttributes':
        {
            'headPose':{'pitch': 3.7, 'roll': -7.7, 'yaw': -20.9},
            'accessories':
                [
                    {'type': 'glasses', 'confidence': 1.0}
                ],
            'occlusion':{'foreheadOccluded': False, 'eyeOccluded': False, 'mouthOccluded': False}
        }
    }
]