Určení modelu detekce obličeje
V této příručce se dozvíte, jak zadat model detekce tváří pro službu Azure AI Face.
Služba Rozpoznávání tváře používá modely strojového učení k provádění operací s lidskými tvářemi na obrázcích. Stále vylepšujeme přesnost našich modelů na základě zpětné vazby zákazníků a pokroků ve výzkumu a tato vylepšení přinášíme jako aktualizace modelu. Vývojáři můžou určit, jakou verzi modelu rozpoznávání tváře chtějí použít; můžou zvolit model, který nejlépe vyhovuje případu použití.
Přečtěte si, jak určit model rozpoznávání tváře v určitých operacích tváří. Služba Rozpoznávání tváře používá rozpoznávání tváře pokaždé, když převede obrázek tváře na nějakou jinou formu dat.
Pokud si nejste jistí, jestli byste měli použít nejnovější model, přeskočte do části Vyhodnocení různých modelů a vyhodnoťte nový model a porovnejte výsledky pomocí aktuální datové sady.
Požadavky
Měli byste být obeznámeni s konceptem detekce tváří umělé inteligence. Pokud nejste, přečtěte si koncepční průvodce rozpoznáváním tváře nebo návody:
Vyhodnocení různých modelů
Různé modely detekce tváří jsou optimalizované pro různé úlohy. Přehled rozdílů najdete v následující tabulce.
Model | Popis | Poznámky k výkonu | Značky |
---|---|---|---|
detection_01 | Výchozí volba pro všechny operace detekce tváří. | Není optimalizované pro malé, boční zobrazení nebo rozmazané tváře. | Vrátí orientační body tváře, pokud jsou zadané ve volání detect. |
detection_02 | Vydáno v květnu 2019 a volitelně dostupné ve všech operacích detekce tváří. | Vylepšili jsme přesnost malých, bočních a rozmazaných tváří. | Nevrací orientační body tváře. |
detection_03 | Vydáno v únoru 2021 a volitelně dostupné ve všech operacích detekce tváří. | Dále se zlepšila přesnost, včetně menších tváří (64 × 64 pixelů) a otočených orientací obličeje. | Vrátí orientační body tváře, pokud jsou zadané ve volání detect. |
Atributy jsou sada funkcí, které je možné volitelně zjistit, pokud jsou zadané ve volání detect:
Model | příslušenství | šmouha | Vystavení | brýle | headPose | Vlastnost maska | hluk | okluze | qualityForRecognition |
---|---|---|---|---|---|---|---|---|---|
detection_01 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (pro recognition_03 nebo 04) | |
detection_02 | |||||||||
detection_03 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (pro recognition_03 nebo 04) |
Nejlepší způsob, jak porovnat výkon modelů detekce, je použít je u ukázkové datové sady. Doporučujeme volat rozhraní DETECT API na různých obrázcích, zejména na obrázcích mnoha tváří nebo tváří, které jsou obtížně vidět, pomocí jednotlivých modelů detekce. Věnujte pozornost počtu tváří, které každý model vrací.
Rozpoznávání tváří pomocí zadaného modelu
Detekce tváře najde ohraničující umístění lidských tváří a identifikuje jejich vizuální orientační body. Extrahuje funkce tváře a uloží je pro pozdější použití v operacích rozpoznávání .
Při použití rozhraní Detect API můžete přiřadit verzi modelu pomocí parametru detectionModel
. Dostupné hodnoty jsou:
detection_01
detection_02
detection_03
Adresa URL požadavku pro rozhraní REST API pro detekci vypadá takto:
https://westus.api.cognitive.microsoft.com/face/v1.0/detect?detectionModel={detectionModel}&recognitionModel={recognitionModel}&returnFaceId={returnFaceId}&returnFaceAttributes={returnFaceAttributes}&returnFaceLandmarks={returnFaceLandmarks}&returnRecognitionModel={returnRecognitionModel}&faceIdTimeToLive={faceIdTimeToLive}
Pokud používáte klientskou knihovnu, můžete ji detectionModel
přiřadit předáním příslušného řetězce. Pokud ji necháte nepřiřazenou, rozhraní API použije výchozí verzi modelu (detection_01
). Podívejte se na následující příklad kódu pro klientskou knihovnu .NET.
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;
Přidání tváře k osobě se zadaným modelem
Služba Rozpoznávání tváře může extrahovat data tváře z obrázku a přidružit je k objektu Person prostřednictvím rozhraní API pro přidání osoby skupiny osob . V tomto volání rozhraní API můžete model detekce zadat stejným způsobem jako v části Zjistit.
Podívejte se na následující příklad kódu .NET.
// 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);
}
Tento kód vytvoří Skupinu PersonGroup s ID mypersongroupid
a přidá do ní osobu . Pak přidá tvář této osobě pomocí detection_03
modelu. Pokud nezadáte parametr detectionModel , rozhraní API použije výchozí model detection_01
.
Poznámka:
Nemusíte používat stejný model detekce pro všechny tváře v objektu Person a nemusíte používat stejný model detekce při zjišťování nových tváří k porovnání s objektem Person (například v rozhraní API pro identifikaci ze skupiny osob).
Přidání tváře do facelistu se zadaným modelem
Model detekce můžete zadat také při přidání tváře do existujícího objektu FaceList . Podívejte se na následující příklad kódu .NET.
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);
}
Tento kód vytvoří volaný My face collection
FaceList a přidá do něj tvář s modelemdetection_03
. Pokud nezadáte parametr detectionModel , rozhraní API použije výchozí model detection_01
.
Poznámka:
Pro všechny tváře v objektu FaceList nemusíte používat stejný model detekce a při zjišťování nových tváří k porovnání s objektem FaceList nemusíte používat stejný model detekce.
Další kroky
V tomto článku jste zjistili, jak určit model detekce, který se má použít s různými rozhraními API pro rozpoznávání tváře. Pak postupujte podle rychlého startu a začněte s detekcí a analýzou tváří.