Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Achtung
Der Zugriff auf den Gesichtserkennungsdienst ist auf der Grundlage von Berechtigungs- und Nutzungskriterien begrenzt, um unsere Prinzipien für verantwortungsvolle KI zu unterstützen. Der Gesichtserkennungsdienst ist nur für von Microsoft verwaltete Kunden und Partner verfügbar. Verwenden Sie das Aufnahmeformular für die Gesichtserkennung, um sich für den Zugriff zu bewerben. Weitere Informationen finden Sie auf der Seite Eingeschränkter Zugriff auf die Gesichtserkennung.
Der Vorgang Ähnliches finden führt einen Gesichtsabgleich zwischen einem Ziel-Gesicht und einer Menge von Kandidaten-Gesichtern durch und findet eine kleinere Menge von Gesichtern, die dem Ziel-Gesicht ähnlich sehen. Dies ist hilfreich, wenn eine Gesichtserkennungssuche anhand von Bildern durchgeführt werden soll.
In diesem Leitfaden wird veranschaulicht, wie Sie die Funktion Ähnliche Suchen in den verschiedenen Sprach-SDKs verwenden. Beim folgenden Beispielcode wird davon ausgegangen, dass Sie bereits ein Gesichtserkennungs-Client-Objekt authentifiziert haben. Ausführliche Informationen dazu erhalten Sie in einer Schnellstart.
Erkennen von Gesichtern zum Vergleich
Damit Gesichter in Bildern verglichen werden können, müssen sie zunächst erkannt werden. In dieser Anleitung wird das folgende Remote-Image, findsimilar.jpg genannt, als Quelle verwendet:
In diesem Leitfaden werden Remote-Images verwendet, auf die über die URL zugegriffen wird. Speichern Sie einen Verweis auf die Basis-URL-Zeichenfolge. Alle Bilder, auf die in diesem Leitfaden zugegriffen wird, befinden sich unter diesem URL-Pfad.
string baseUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/";
Diese Gesichtserkennungsmethode ist für Vergleichsvorgänge optimiert. Sie extrahiert keine detaillierten Gesichtsattribute und sie verwendet ein optimiertes Erkennungsmodell.
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;
}
Der folgende Code verwendet die oben genannte Methode, um Gesichtsdaten aus einer Reihe von Images abzurufen.
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();
Suchen und Drucken von Übereinstimmungen
In diesem Programm sollte das in diesem Family1-Dad1.jpg-Image erkannte Gesicht als das Gesicht zurückgegeben werden, das dem Gesicht im Quellbild ähnelt.
Der folgende Code ruft die Find Similar API in der gespeicherten Liste der Gesichter auf.
// 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();
Mit dem folgenden Code werden Übereinstimmungsdetails an der Konsole ausgegeben:
foreach (FaceFindSimilarResult similarResult in similarResults)
{
Console.WriteLine($"Faces from {sourceImageFileName} & ID:{similarResult.FaceId} are similar with confidence: {similarResult.Confidence}.");
}
Console.WriteLine();
Nächster Schritt
In diesem Leitfaden haben Sie gelernt, wie Sie die Suchfunktion Find Similar API aufrufen, um eine Gesichtssuche nach Ähnlichkeit in einer größeren Gruppe von Gesichtern durchzuführen. Erfahren Sie als Nächstes mehr über die verschiedenen Erkennungsmodelle, die für Gesichtsvergleichsvorgänge verfügbar sind.