Delen via


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.