Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Dostęp do usługi rozpoznawania twarzy jest ograniczony na podstawie kryteriów kwalifikowalności i użycia w celu obsługi naszych zasad odpowiedzialnej sztucznej inteligencji. Usługa rozpoznawania twarzy jest dostępna tylko dla klientów i partnerów zarządzanych przez firmę Microsoft. Użyj formularza zgłoszeniowego rozpoznawania twarzy, aby ubiegać się o dostęp. Aby uzyskać więcej informacji, zobacz stronę Ograniczonego dostępu.
Operacja Znajdź podobne wykonuje dopasowywanie twarzy między twarzą docelową a zestawem twarzy kandydatów, wyszukując mniejszy zestaw twarzy, które wyglądają podobnie do twarzy docelowej. Jest to przydatne w przypadku wyszukiwania twarzy według obrazu.
W tym przewodniku pokazano, jak używać funkcji Znajdź podobne w różnych zestawach SDK języka. Poniższy przykładowy kod zakłada, że obiekt klienta rozpoznawania twarzy został już uwierzytelniony. Aby uzyskać szczegółowe informacje na temat tego, jak to zrobić, postępuj zgodnie z przewodnikiem Szybki start.
Wykrywanie twarzy na potrzeby porównania
Aby można było je porównać, musisz wykryć twarze na obrazach. W tym przewodniku jako źródło zostanie użyty następujący obraz zdalny o nazwie findsimilar.jpg:
W tym przewodniku używane są obrazy zdalne, do których uzyskuje się dostęp za pomocą adresu URL. Zapisz odwołanie do podstawowego ciągu adresu URL. Wszystkie obrazy dostępne w tym przewodniku znajdują się w tej ścieżce adresu URL.
string baseUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/";
Poniższa metoda wykrywania twarzy jest zoptymalizowana pod kątem operacji porównania. Nie wyodrębnia szczegółowych atrybutów twarzy i używa zoptymalizowanego modelu rozpoznawania.
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;
}
Poniższy kod używa powyższej metody do pobierania danych twarzy z serii obrazów.
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();
Znajdowanie i drukowanie dopasowań
W tym przewodniku twarz wykryta na obrazie Family1-Dad1.jpg powinna zostać zwrócona jako twarz podobna do twarzy obrazu źródłowego.
Poniższy kod wywołuje API "Find Similar" na zapisanej liście twarzy.
// 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();
Poniższy kod wyświetla szczegóły dopasowania na konsoli.
foreach (FaceFindSimilarResult similarResult in similarResults)
{
Console.WriteLine($"Faces from {sourceImageFileName} & ID:{similarResult.FaceId} are similar with confidence: {similarResult.Confidence}.");
}
Console.WriteLine();
Następny krok
W tym przewodniku przedstawiono sposób wywoływania interfejsu API znajdź podobne w celu wyszukiwania twarzy według podobieństwa w większej grupie twarzy. Następnie dowiedz się więcej o różnych modelach rozpoznawania dostępnych dla operacji porównania twarzy.