Ange en ansiktsavkänningsmodell
Den här guiden visar hur du anger en modell för ansiktsidentifiering för Azure AI Face-tjänsten.
Ansiktstjänsten använder maskininlärningsmodeller för att utföra åtgärder på mänskliga ansikten i bilder. Vi fortsätter att förbättra noggrannheten i våra modeller baserat på kundfeedback och framsteg inom forskning, och vi levererar dessa förbättringar som modelluppdateringar. Utvecklare kan ange vilken version av ansiktsigenkänningsmodellen de vill använda. de kan välja den modell som passar bäst för deras användningsfall.
Läs vidare för att lära dig hur du anger ansiktsidentifieringsmodellen i vissa ansiktsåtgärder. Ansiktstjänsten använder ansiktsidentifiering när den konverterar en bild av ett ansikte till någon annan form av data.
Om du inte är säker på om du ska använda den senaste modellen går du vidare till avsnittet Utvärdera olika modeller för att utvärdera den nya modellen och jämföra resultat med din aktuella datauppsättning.
Förutsättningar
Du bör känna till begreppet ai-ansiktsidentifiering. Om du inte är det kan du läsa den konceptuella guiden för ansiktsidentifiering eller instruktioner:
Utvärdera olika modeller
De olika modellerna för ansiktsidentifiering är optimerade för olika uppgifter. I följande tabell finns en översikt över skillnaderna.
Modell | beskrivning | Prestandaanteckningar | Landmärken |
---|---|---|---|
detection_01 | Standardval för alla ansiktsidentifieringsåtgärder. | Inte optimerad för små, sidovyer eller suddiga ansikten. | Returnerar ansiktsmärken om de anges i identifieringsanropet. |
detection_02 | Släpptes i maj 2019 och finns som valfritt i alla ansiktsidentifieringsåtgärder. | Förbättrad noggrannhet på små, sidovyer och suddiga ansikten. | Returnerar inte ansiktsmärken. |
detection_03 | Släpptes i februari 2021 och finns valfritt i alla ansiktsidentifieringsåtgärder. | Ytterligare förbättrad noggrannhet, inklusive på mindre ansikten (64 x 64 bildpunkter) och roterade ansiktsorienteringar. | Returnerar ansiktsmärken om de anges i identifieringsanropet. |
Attribut är en uppsättning funktioner som kan identifieras om de anges i identifieringsanropet:
Modell | tillbehör | Oskärpa | exponering | glasögon | headPose | mask | noise | Ocklusion | qualityForRecognition |
---|---|---|---|---|---|---|---|---|---|
detection_01 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (för recognition_03 eller 04) | |
detection_02 | |||||||||
detection_03 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (för recognition_03 eller 04) |
Det bästa sättet att jämföra prestanda för identifieringsmodellerna är att använda dem på en exempeldatauppsättning. Vi rekommenderar att du anropar Detect API på en mängd olika bilder, särskilt bilder av många ansikten eller ansikten som är svåra att se med varje identifieringsmodell. Var uppmärksam på antalet ansikten som varje modell returnerar.
Identifiera ansikten med angiven modell
Ansiktsidentifiering hittar avgränsningsrutans platser för mänskliga ansikten och identifierar deras visuella landmärken. Den extraherar ansiktets funktioner och lagrar dem för senare användning i igenkänningsåtgärder .
När du använder Identifierings-API:et kan du tilldela modellversionen med parametern detectionModel
. De tillgängliga värdena är:
detection_01
detection_02
detection_03
En begärande-URL för DETECT REST API ser ut så här:
https://westus.api.cognitive.microsoft.com/face/v1.0/detect?detectionModel={detectionModel}&recognitionModel={recognitionModel}&returnFaceId={returnFaceId}&returnFaceAttributes={returnFaceAttributes}&returnFaceLandmarks={returnFaceLandmarks}&returnRecognitionModel={returnRecognitionModel}&faceIdTimeToLive={faceIdTimeToLive}
Om du använder klientbiblioteket kan du tilldela värdet för detectionModel
genom att skicka in en lämplig sträng. Om du lämnar det otilldelat använder API:et standardmodellversionen (detection_01
). Se följande kodexempel för .NET-klientbiblioteket.
string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
var response = await faceClient.DetectAsync(new Uri(imageUrl), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false, returnFaceLandmarks: false);
var faces = response.Value;
Lägg till ansikte i Person med angiven modell
Ansiktstjänsten kan extrahera ansiktsdata från en bild och associera dem med ett personobjekt via ANSIKTS-API:et Lägg till persongrupp. I det här API-anropet kan du ange identifieringsmodellen på samma sätt som i Identifiera.
Se följande .NET-kodexempel.
// Create a PersonGroup and add a person with face detected by "detection_03" model
string personGroupId = "mypersongroupid";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My Person Group Name", ["recognitionModel"] = "recognition_04" }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PutAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}", content);
}
string? personId = null;
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My Person Name" }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
using (var response = await httpClient.PostAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}/persons", content))
{
string contentString = await response.Content.ReadAsStringAsync();
personId = (string?)(JsonConvert.DeserializeObject<Dictionary<string, object>>(contentString)?["personId"]);
}
}
string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["url"] = imageUrl }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PostAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}/persons/{personId}/persistedfaces?detectionModel=detection_03", content);
}
Den här koden skapar en PersonGroup med ID mypersongroupid
och lägger till en person i den. Sedan lägger den till ett ansikte till den här personen med hjälp av detection_03
modellen. Om du inte anger parametern detectionModel använder API:et standardmodellen . detection_01
Kommentar
Du behöver inte använda samma identifieringsmodell för alla ansikten i ett personobjekt och du behöver inte använda samma identifieringsmodell när du identifierar nya ansikten som ska jämföras med ett personobjekt (till exempel i API:et Identifiera från persongrupp ).
Lägg till ansikte i FaceList med angiven modell
Du kan också ange en identifieringsmodell när du lägger till ett ansikte i ett befintligt FaceList-objekt . Se följande .NET-kodexempel.
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My face collection", ["recognitionModel"] = "recognition_04" }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PutAsync($"{ENDPOINT}/face/v1.0/facelists/{faceListId}", content);
}
string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["url"] = imageUrl }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PostAsync($"{ENDPOINT}/face/v1.0/facelists/{faceListId}/persistedfaces?detectionModel=detection_03", content);
}
Den här koden skapar en Ansiktslista med namnet My face collection
och lägger till ett ansikte i den detection_03
med modellen. Om du inte anger parametern detectionModel använder API:et standardmodellen . detection_01
Kommentar
Du behöver inte använda samma identifieringsmodell för alla ansikten i ett FaceList-objekt och du behöver inte använda samma identifieringsmodell när du identifierar nya ansikten att jämföra med ett FaceList-objekt .
Nästa steg
I den här artikeln har du lärt dig hur du anger den identifieringsmodell som ska användas med olika ansikts-API:er. Följ sedan en snabbstart för att komma igång med ansiktsidentifiering och analys.