Dela via


Ange en ansiktsigenkänningsmodell

Varning

Åtkomsten till ansiktstjänsten är begränsad baserat på berättigande- och användningskriterier för att stödja våra principer för ansvarsfull AI. Ansiktstjänsten är endast tillgänglig för Microsofts hanterade kunder och partner. Använd formuläret ansiktsigenkänning för att ansöka om åtkomst. Mer information finns på sidan ansiktsbegränsade åtkomst .

Den här guiden visar hur du anger en ansiktsigenkänningsmodell för ansiktsigenkänning, identifiering och likhetssökning med hjälp av Azure AI Face-tjänsten.

Ansiktstjänsten använder maskininlärningsmodeller för att utföra åtgärder på synliga 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 och välja den modell som passar bäst för deras användningsfall.

Modellkompatibilitet

Azure AI Face-tjänsten har fyra tillgängliga igenkänningsmodeller. Modellerna recognition_01 (publicerad 2017), recognition_02 (publicerad 2019) och recognition_03 (publicerad 2020) stöds kontinuerligt för att säkerställa bakåtkompatibilitet för kunder som använder FaceLists eller PersonGroups som skapats med dessa modeller. En Ansiktslista eller PersonGroup använder alltid den igenkänningsmodell som den skapades med, och nya ansikten associeras med den här modellen när de läggs till. Detta kan inte ändras när de har skapats och kunderna måste använda motsvarande igenkänningsmodell med motsvarande FaceList eller PersonGroup.

Du kan flytta till senare igenkänningsmodeller när det passar dig. Du måste dock skapa nya FaceLists och PersonGroups med valfri igenkänningsmodell.

Den recognition_04 modellen (publicerad 2021) är den mest exakta modellen som för närvarande är tillgänglig. Om du är en ny kund rekommenderar vi att du använder den här modellen. Recognition_04 ger bättre noggrannhet för både likhetsjämförelser och personmatchningsjämförelser. Recognition_04 förbättrar igenkänningen för registrerade användare som bär ansiktsskydd (kirurgiska masker, N95-masker, tygmasker). Nu kan du skapa säkra och smidiga användarupplevelser som använder den senaste detection_03 modellen för att identifiera om en registrerad användare bär ett ansiktsskydd. Sedan kan du använda den senaste recognition_04-modellen för att identifiera deras identitet. Varje modell fungerar oberoende av de andra, och ett förtroendetröskelvärde som anges för en modell är inte avsett att jämföras mellan de andra igenkänningsmodellerna.

Läs vidare för att lära dig hur du anger en vald modell i olika ansiktsåtgärder samtidigt som du undviker modellkonflikter. Om du är en avancerad användare och vill avgöra om du ska byta till den senaste modellen går du vidare till avsnittet Utvärdera olika modeller . Du kan utvärdera den nya modellen och jämföra resultat med din aktuella datauppsättning.

Förutsättningar

Du bör känna till begreppen ai-ansiktsidentifiering och identifiering. Om du inte är det kan du läsa de här guiderna först:

Identifiera ansikten med angiven modell

Ansiktsidentifiering identifierar de visuella landmärkena för mänskliga ansikten och hittar deras avgränsningsfältsplatser. Det extraherar också ansiktets funktioner och lagrar dem tillfälligt i upp till 24 timmar för användning i identifiering. All denna information utgör representationen av ett ansikte.

Igenkänningsmodellen används när ansiktsfunktionerna extraheras, så du kan ange en modellversion när du utför åtgärden Identifiera.

När du använder identifierings-API:et tilldelar du modellversionen med parametern recognitionModel . De tillgängliga värdena är:

  • recognition_01
  • recognition_02
  • recognition_03
  • recognition_04

Du kan också ange parametern returnRecognitionModel (standard false) för att ange om recognitionModel ska returneras som svar. Därför ser en begärande-URL för DETECT REST API 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 recognitionModel genom att skicka en sträng som representerar versionen. Om du lämnar den otilldelade används en standardmodellversion av recognition_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: true, returnFaceLandmarks: true, returnRecognitionModel: true);
var faces = response.Value;

Kommentar

Parametern returnFaceId måste anges till true för att aktivera scenarier för ansiktsigenkänning i senare steg.

Identifiera ansikten med den angivna modellen

Ansiktstjänsten kan extrahera ansiktsdata från en bild och associera dem med ett Person-objekt (till exempel via anropet Lägg till persongruppsperson för ansikts-API ) och flera personobjekt kan lagras tillsammans i en PersonGroup. Sedan kan ett nytt ansikte jämföras med en PersonGroup (med anropet Identifiera från persongrupp ) och den matchande personen i gruppen kan identifieras.

En PersonGroup bör ha en unik igenkänningsmodell för alla personer, och du kan ange detta med hjälp av parametern recognitionModel när du skapar gruppen (Skapa persongrupp eller Skapa stor persongrupp). Om du inte anger den här parametern används den ursprungliga recognition_01 modellen. En grupp använder alltid den igenkänningsmodell som den skapades med, och nya ansikten associeras med den här modellen när de läggs till i den. Detta kan inte ändras när en grupp har skapats. Om du vill se vilken modell en PersonGroup har konfigurerats med använder du API:et Get Person Group med parametern returnRecognitionModel som true.

Se följande .NET-kodexempel.

// Create an empty PersonGroup with "recognition_04" 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);
}

I den här koden skapas en PersonGroup med ID mypersongroupid och den har konfigurerats för att använda recognition_04-modellen för att extrahera ansiktsfunktioner.

På motsvarande sätt måste du ange vilken modell som ska användas när du identifierar ansikten som ska jämföras med den här PersonGroup (via identifierings-API:et). Den modell som du använder ska alltid vara konsekvent med PersonGroups konfiguration. Annars misslyckas åtgärden på grund av inkompatibla modeller.

Det finns ingen ändring i API:et Identifiera från persongrupp . Du behöver bara ange modellversionen i identifieringen.

Hitta liknande ansikten med den angivna modellen

Du kan också ange en igenkänningsmodell för likhetssökning. Du kan tilldela modellversionen med recognitionModel när du skapar ansiktslistan med SKAPA ANSIKTSLISTA API eller Skapa stor ansiktslista. Om du inte anger den här parametern recognition_01 används modellen som standard. En ansiktslista använder alltid den igenkänningsmodell som den skapades med, och nya ansikten associeras med den här modellen när de läggs till i listan. Du kan inte ändra detta när du har skapat den. Om du vill se vilken modell en ansiktslista har konfigurerats med använder du API:et Hämta ansiktslista med parametern returnRecognitionModel som true.

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);
}

Den här koden skapar en Ansiktslista med namnet My face collection, med hjälp av recognition_04-modellen för extrahering av funktioner. När du söker i den här ansiktslistan efter liknande ansikten som ett nytt identifierat ansikte måste det ansiktet ha identifierats (Identifiera) med hjälp av recognition_04 modellen. Precis som i föregående avsnitt måste modellen vara konsekvent.

Det finns ingen ändring i Sök liknande API. Du anger bara modellversionen i identifieringen.

Verifiera ansikten med den angivna modellen

API:et Verifiera ansikte mot ansikte kontrollerar om två ansikten tillhör samma person. Det finns ingen ändring i Verifiera API när det gäller igenkänningsmodeller, men du kan bara jämföra ansikten som har identifierats med samma modell.

Utvärdera olika modeller

Om du vill jämföra prestanda för olika igenkänningsmodeller på dina egna data måste du:

  1. Skapa fyra PersonGroupsmed hjälp av recognition_01, recognition_02, recognition_03 respektive recognition_04 .
  2. Använd dina bilddata för att identifiera ansikten och registrera dem till Personinom dessa fyra PersonGroups.
  3. Träna dina PersonGroupsmed hjälp av API:et för gruppen Träna person .
  4. Testa med Identifiera från persongrupp på alla fyra PersonGroupsoch jämför resultatet.

Om du normalt anger ett förtroendetröskelvärde (ett värde mellan noll och ett som avgör hur säker modellen måste vara för att identifiera ett ansikte) kan du behöva använda olika tröskelvärden för olika modeller. Ett tröskelvärde för en modell är inte avsett att delas med en annan och ger inte nödvändigtvis samma resultat.

Nästa steg

I den här artikeln har du lärt dig hur du anger den igenkänningsmodell som ska användas med olika Ansiktstjänst-API:er. Följ sedan en snabbstart för att komma igång med ansiktsidentifiering.