Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Attention
L’accès au service visage est limité en fonction des critères d’éligibilité et d’utilisation afin de prendre en charge nos principes d’IA responsable. Le service visage est disponible uniquement pour les clients et partenaires gérés par Microsoft. Utilisez le Formulaire d’admission de la reconnaissance faciale pour demander l’accès. Pour plus d’informations, consultez la page Accès limité visage.
L’opération Rechercher des visages semblables permet de mettre en correspondance un visage cible avec un ensemble de visages candidats, en cherchant à obtenir un plus petit ensemble de visages ressemblant au visage cible. Cette API s’avère utile pour effectuer une recherche de visage par image.
Ce guide montre comment utiliser la fonctionnalité Rechercher similaire dans les différents kits SDK de langage. L’exemple de code suivant part du principe que vous avez déjà authentifié un objet client Visage. Pour plus d’informations sur la procédure à suivre, suivez un guide de démarrage rapide.
Détecter des visages pour les comparer
Avant de pouvoir comparer des images, vous devez les détecter dans les images. Dans ce guide, l'image distante suivante, appelée findsimilar.jpg, sera utilisée comme source :
Ce guide utilise des images distantes accessibles par URL. Enregistrez une référence à la chaîne d’URL de base. Toutes les images accessibles dans ce guide se trouvent à ce chemin d’URL.
string baseUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/";
Cette méthode de détection de visage suivante est optimisée pour les opérations de comparaison. Il n'extrait pas les attributs de visage détaillés et utilise un modèle de reconnaissance optimisé.
private static async Task<List<FaceDetectionResult>> DetectFaceRecognize(FaceClient faceClient, string url)
{
// Detect faces from image URL.
var response = await faceClient.DetectAsync(new Uri(url), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, true, [FaceAttributeType.QualityForRecognition]);
IReadOnlyList<FaceDetectionResult> detectedFaces = response.Value;
List<FaceDetectionResult> sufficientQualityFaces = new List<FaceDetectionResult>();
foreach (FaceDetectionResult detectedFace in detectedFaces)
{
QualityForRecognition? faceQualityForRecognition = detectedFace.FaceAttributes.QualityForRecognition;
if (faceQualityForRecognition.HasValue && (faceQualityForRecognition.Value != QualityForRecognition.Low))
{
sufficientQualityFaces.Add(detectedFace);
}
}
Console.WriteLine($"{detectedFaces.Count} face(s) with {sufficientQualityFaces.Count} having sufficient quality for recognition detected from image `{Path.GetFileName(url)}`");
return sufficientQualityFaces;
}
Le code suivant utilise la méthode ci-dessus pour obtenir des données de visage à partir d’une série d’images.
Console.WriteLine("========FIND SIMILAR========");
Console.WriteLine();
List<string> targetImageFileNames = new List<string>
{
"Family1-Dad1.jpg",
"Family1-Daughter1.jpg",
"Family1-Mom1.jpg",
"Family1-Son1.jpg",
"Family2-Lady1.jpg",
"Family2-Man1.jpg",
"Family3-Lady1.jpg",
"Family3-Man1.jpg"
};
string sourceImageFileName = "findsimilar.jpg";
List<Guid> targetFaceIds = new List<Guid>();
foreach (string targetImageFileName in targetImageFileNames)
{
// Detect faces from target image url.
List<FaceDetectionResult> faces = await DetectFaceRecognize(client, $"{baseUrl}{targetImageFileName}");
// Add detected faceId to list of GUIDs.
targetFaceIds.Add(faces[0].FaceId.Value);
}
// Detect faces from source image url.
List<FaceDetectionResult> detectedFaces = await DetectFaceRecognize(client, $"{baseUrl}{sourceImageFileName}");
Console.WriteLine();
Rechercher et imprimer des correspondances
Dans ce guide, le visage détecté dans l’image Family1-Dad1.jpg doit être retourné comme visage similaire au visage de l’image source.
Le code suivant appelle l’API Rechercher similaire dans la liste enregistrée des visages.
// Find a similar face(s) in the list of IDs. Comapring only the first in list for testing purposes.
var response = await client.FindSimilarAsync(detectedFaces[0].FaceId.Value, targetFaceIds);
List<FaceFindSimilarResult> similarResults = response.Value.ToList();
Le code suivant affiche les détails relatifs aux correspondances sur la console :
foreach (FaceFindSimilarResult similarResult in similarResults)
{
Console.WriteLine($"Faces from {sourceImageFileName} & ID:{similarResult.FaceId} are similar with confidence: {similarResult.Confidence}.");
}
Console.WriteLine();
Étape suivante
Dans ce guide, vous avez appris à appeler l’API Rechercher semblables pour effectuer une recherche de visages par similarité dans un plus grand groupe de visages. Découvrez ensuite les différents modèles de reconnaissance disponibles pour les opérations de comparaison des visages.