Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leest u hoe u een gezichtsdetectiemodel voor de Azure AI Face-service opgeeft.
De Face-service maakt gebruik van machine learning-modellen om bewerkingen uit te voeren op menselijke gezichten in afbeeldingen. We blijven de nauwkeurigheid van onze modellen verbeteren op basis van feedback van klanten en vooruitgang in onderzoek, en we leveren deze verbeteringen als modelupdates. U kunt opgeven welke versie van het gezichtsdetectiemodel u wilt gebruiken. Kies het model dat het beste past bij uw use-case. Lees verder om te leren hoe je het gezichtsdetectiemodel in bepaalde gezichtsbewerkingen specificeert. De Face-service maakt gebruik van gezichtsdetectie wanneer een afbeelding van een gezicht wordt geconverteerd naar een andere vorm van gegevens.
Als u niet zeker weet of u het meest recente model moet gebruiken, raadpleegt u de sectie Verschillende modellen evalueren om het nieuwe model te evalueren en resultaten te vergelijken met behulp van uw huidige gegevensset.
Vereisten
U moet bekend zijn met het concept van AI-gezichtsdetectie. Als u dat niet doet, raadpleegt u de conceptuele handleiding voor gezichtsdetectie of instructies:
Verschillende modellen evalueren
De verschillende modellen voor gezichtsdetectie zijn geoptimaliseerd voor verschillende taken. Zie de volgende tabel voor een overzicht van de verschillen.
| Modelleren | Beschrijving | Prestatierapport | Oriëntatiepunten |
|---|---|---|---|
| detection_01 | Standaardkeuze voor alle gezichtsdetectiebewerkingen. | Niet geoptimaliseerd voor kleine, zijweergave of wazige gezichten. | Retourneert gezichtsoriëntatiepunten als u deze opgeeft in de detectieaanroep. |
| detection_02 | Uitgebracht in mei 2019 en optioneel beschikbaar in alle gezichtsdetectiebewerkingen. | Verbeterde nauwkeurigheid van kleine, zijaanzicht, en wazige gezichten. | Retourneert geen gezichtsoriëntatiepunten. |
| detection_03 | Uitgebracht in februari 2021 en optioneel beschikbaar in alle gezichtsdetectiebewerkingen. | Verder verbeterde nauwkeurigheid, waaronder op kleinere gezichten (64x64 pixels) en gedraaide gezichtsstanden. | Retourneert gezichtsoriëntatiepunten als u deze opgeeft in de detectieaanroep. |
Kenmerken zijn een set functies die u optioneel kunt detecteren als u deze opgeeft in de aanroep detecteren:
| Modelleren | accessoires | vervagen | Blootstelling | brillen | hoofdhouding | masker | lawaai | occlusie | kwaliteitVoorHerkenning |
|---|---|---|---|---|---|---|---|---|---|
| detection_01 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (voor recognition_03 of 04) | |
| detection_02 | |||||||||
| detection_03 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (voor recognition_03 of 04) |
De beste manier om de prestaties van de detectiemodellen te vergelijken, is door ze te gebruiken op een voorbeeldgegevensset. Roep de Detect-API aan op verschillende afbeeldingen, met name afbeeldingen van veel gezichten of gezichten die moeilijk te zien zijn, met behulp van elk detectiemodel. Let op het aantal gezichten dat elk model retourneert.
Gezichten detecteren met opgegeven model
Gezichtsdetectie vindt de coördinaten van omhullende vakken van menselijke gezichten en identificeert hun visuele kenmerken. Het extraheert de gelaatskenmerken en slaat deze op voor later gebruik in herkenningsbewerkingen.
Wanneer u de Detect-API gebruikt, kunt u de modelversie toewijzen met de detectionModel parameter. De beschikbare waarden zijn:
detection_01detection_02detection_03
Een aanvraag-URL voor de Detect REST API ziet er als volgt uit:
https://westus.api.cognitive.microsoft.com/face/v1.0/detect?detectionModel={detectionModel}&recognitionModel={recognitionModel}&returnFaceId={returnFaceId}&returnFaceAttributes={returnFaceAttributes}&returnFaceLandmarks={returnFaceLandmarks}&returnRecognitionModel={returnRecognitionModel}&faceIdTimeToLive={faceIdTimeToLive}
Als u de clientbibliotheek gebruikt, kunt u de waarde detectionModel toewijzen door een geschikte tekenreeks door te geven. Als u geen waarde toewijst, gebruikt de API de standaardmodelversie (detection_01). Zie het volgende codevoorbeeld voor de .NET-clientbibliotheek.
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;
Gezicht toevoegen aan persoon met opgegeven model
De Face-service kan gezichtsgegevens uit een afbeelding extraheren en deze via de Add Person Group Person Face API koppelen aan een Persoonsobject. In deze API-aanroep kunt u het detectiemodel op dezelfde manier opgeven als in Detect.
Zie het volgende .NET-codevoorbeeld.
// 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);
}
Met deze code wordt een PersonGroup met id mypersongroupid gemaakt en wordt er een persoon aan toegevoegd. Vervolgens wordt een Face aan deze persoon toegevoegd met behulp van het detection_03 model. Als u de parameter detectionModel niet opgeeft, gebruikt de API het standaardmodel. detection_01
Notitie
U hoeft niet hetzelfde detectiemodel te gebruiken voor alle gezichten in een persoonsobject en u hoeft niet hetzelfde detectiemodel te gebruiken bij het detecteren van nieuwe gezichten om te vergelijken met een persoonsobject (bijvoorbeeld in de API Identificeren van personengroep ).
Face toevoegen aan FaceList met opgegeven model
U kunt ook een detectiemodel opgeven wanneer u een gezicht toevoegt aan een bestaand FaceList-object . Zie het volgende .NET-codevoorbeeld.
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);
}
Met deze code maakt u een FaceList aangeroepen My face collection en voegt u er een gezicht aan toe met het detection_03 model. Als u de parameter detectionModel niet opgeeft, gebruikt de API het standaardmodel. detection_01
Notitie
U hoeft niet hetzelfde detectiemodel te gebruiken voor alle gezichten in een FaceList-object en u hoeft niet hetzelfde detectiemodel te gebruiken bij het detecteren van nieuwe gezichten om te vergelijken met een FaceList-object .
Volgende stap
In dit artikel hebt u geleerd hoe u het detectiemodel opgeeft dat moet worden gebruikt met verschillende Face-API's. Volg vervolgens een quickstart om aan de slag te gaan met gezichtsdetectie en -analyse.