Een model voor gezichtsdetectie opgeven
In deze handleiding ziet u hoe u een model voor gezichtsdetectie 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. Ontwikkelaars kunnen opgeven welke versie van het gezichtsdetectiemodel ze willen gebruiken; ze kunnen het model kiezen dat het beste past bij hun gebruiksscenario.
Lees verder voor meer informatie over het opgeven van het gezichtsdetectiemodel in bepaalde gezichtsbewerkingen. 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, gaat u naar 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 | Prestatienotities | Oriëntatiepunten |
---|---|---|---|
detection_01 | Standaardkeuze voor alle gezichtsdetectiebewerkingen. | Niet geoptimaliseerd voor kleine, zijweergave of wazige gezichten. | Retourneert gezichtsoriëntatiepunten als deze zijn opgegeven in de detectieaanroep. |
detection_02 | Uitgebracht in mei 2019 en optioneel beschikbaar in alle gezichtsdetectiebewerkingen. | Verbeterde nauwkeurigheid van kleine, zijweergave 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 deze zijn opgegeven in de detectieaanroep. |
Kenmerken zijn een set functies die optioneel kunnen worden gedetecteerd als ze zijn opgegeven in de detectie-aanroep:
Modelleren | accessoires | vervagen | Blootstelling | bril | headPose | masker | lawaai | occlusie | qualityForRecognition |
---|---|---|---|---|---|---|---|---|---|
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. We raden u aan om de Detect-API aan te roepen 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 met opgegeven model detecteren
Gezichtsdetectie vindt de begrenzingsvaklocaties van menselijke gezichten en identificeert hun visuele oriëntatiepunten. Het extraheert de functies van het gezicht 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_01
detection_02
detection_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 deze niet-toegewezen laat, 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 extraheren uit een afbeelding en deze koppelen aan een persoonsobject via de Face-API Voor persoonsgroep toevoegen. 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 Face 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 stappen
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.