Angeben eines Gesichtserkennungsmodells
In diesem Leitfaden erfahren Sie, wie Sie ein Gesichtserkennungsmodell für den Azure KI-Gesichtserkennungsdienst angeben.
Der Gesichtserkennungsdienst nutzt Machine Learning-Modelle für Vorgänge mit menschlichen Gesichter in Bildern. Wir verbessern die Genauigkeit unserer Modelle auf der Grundlage von Kundenfeedback und Forschungsergebnissen kontinuierlich, und wir stellen diese Verbesserungen als Modellaktualisierungen zur Verfügung. Entwickler können angeben, welche Version des Gesichtserkennungsmodells sie verwenden möchten. Sie können das Modell auswählen, das am besten zu ihrem Anwendungsfall passt.
Im Folgenden erfahren Sie, wie Sie in bestimmten Gesichtserkennungsvorgängen das Gesichtserkennungsmodell angeben. Der Gesichtserkennungsdienst verwendet die Gesichtserkennung, sobald das Bild eines Gesichts in eine andere Datenform konvertiert wird.
Wenn Sie nicht sicher sind, ob Sie das neueste Modell verwenden sollten, gehen Sie zum Abschnitt Auswerten unterschiedlicher Modelle über, um das neue Modell zu testen und die Ergebnisse anhand Ihres aktuellen Datasets zu vergleichen.
Voraussetzungen
Sie sollten mit den Konzepten der KI-Gesichtserkennung vertraut sein. Falls nicht, informieren Sie sich im konzeptionellen Leitfaden oder in der Schrittanleitung:
Auswerten unterschiedlicher Modelle
Die verschiedenen Gesichtserkennungsmodelle wurden für unterschiedliche Aufgaben optimiert. In der folgenden Tabelle sind die Unterschiede übersichtlich dargestellt.
Modell | Beschreibung | Leistungshinweise | Sehenswürdigkeiten |
---|---|---|---|
detection_01 | Standardauswahl für alle Gesichtserkennungsvorgänge. | Nicht optimiert für kleine oder unscharfe Gesichter bzw. Gesichter in der Profilansicht. | Gibt Orientierungspunkte im Gesicht zurück, wenn sie im Erkennungsaufruf angegeben werden. |
detection_02 | Im Mai 2019 veröffentlich und optional in allen Gesichtserkennungsvorgängen verfügbar. | Verbesserte Genauigkeit bei kleinen oder unscharfen Gesichtern bzw. Gesichtern in der Profilansicht. | Gibt keine Orientierungspunkte im Gesicht zurück. |
detection_03 | Im Februar 2021 veröffentlich und optional bei allen Gesichtserkennungsvorgängen verfügbar. | Weitere Verbesserung der Genauigkeit, auch bei kleineren Gesichtern (64 × 64 Pixel) und bei gedrehten Gesichtern. | Gibt Orientierungspunkte im Gesicht zurück, wenn sie im Erkennungsaufruf angegeben werden. |
Attribute sind ein Satz von Merkmalen, die optional erkannt werden können, wenn sie im Erkennungsaufruf angegeben sind:
Modell | Zubehör | Weichzeichnung | Belichtung | glasses (Brillen) | Kopfhaltung | mask | noise | occlusion | Erkennungsqualität |
---|---|---|---|---|---|---|---|---|---|
detection_01 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (für Erkennung_03 oder 04) | |
detection_02 | |||||||||
detection_03 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (für Erkennung_03 oder 04) |
Am besten lassen sich die Ergebnisse der Erkennungsmodelle anhand eines Beispieldatasets vergleichen. Es wird empfohlen die API Erkennung unter Verwendung der beiden Erkennungsmodelle für verschiedene Bilder aufzurufen, insbesondere für Bilder mit zahlreichen oder schwer erkennbaren Gesichtern. Achten Sie auf die Anzahl der Gesichter, die jedes Modell zurückgibt.
Erkennen von Gesichtern mit dem angegebenen Modell
Bei der Gesichtserkennung werden die Positionen von menschlichen Gesichtern im Begrenzungsrahmen gesucht und ihre besonderen visuellen Merkmale identifiziert. Dabei werden die Gesichtsmerkmale extrahiert und gespeichert, um sie später in Gesichtserkennungsvorgängen zu nutzen.
Bei Verwendung der API Erkennung können Sie die Modellversion mit dem Parameter detectionModel
zuweisen. Die verfügbaren Werte sind:
detection_01
detection_02
detection_03
Eine Anforderungs-URL für die REST-API zur Erkennung sieht wie folgt aus:
https://westus.api.cognitive.microsoft.com/face/v1.0/detect?detectionModel={detectionModel}&recognitionModel={recognitionModel}&returnFaceId={returnFaceId}&returnFaceAttributes={returnFaceAttributes}&returnFaceLandmarks={returnFaceLandmarks}&returnRecognitionModel={returnRecognitionModel}&faceIdTimeToLive={faceIdTimeToLive}
Wenn Sie die Clientbibliothek verwenden, können Sie den Wert für detectionModel
zuweisen, indem Sie eine geeignete Zeichenfolge übergeben. Wenn Sie diesen Wert nicht zuweisen, verwendet die API die Standardmodellversion (detection_01
). Nachfolgend ist ein Codebeispiel für die .NET-Clientbibliothek aufgeführt.
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;
Hinzufügen eines Gesichts zu einem Person-Objekt mit einem angegebenen Modell
Der Gesichtserkennungsdienst kann Gesichtsdaten aus einem Bild extrahieren und über die API Personengruppe hinzufügen – Gesicht hinzufügen einem Person-Objekt zuordnen. In diesem API-Aufruf können Sie das Erkennungsmodell auf die gleiche Weise wie bei Erkennung angeben.
Betrachten Sie das folgende .NET-Codebeispiel.
// 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);
}
Mit diesem Code wird ein PersonGroup-Objekt mit der ID mypersongroupid
erstellt. Anschließend wird dem Objekt ein Person-Objekt hinzugefügt. Danach wird diesem Person-Objekt unter Verwendung des Modells detection_03
ein Gesicht hinzugefügt. Wenn Sie den detectionModel-Parameter nicht angeben, verwendet die API das Standardmodell detection_01
.
Hinweis
Sie müssen nicht dasselbe Erkennungsmodell für alle Gesichter in einem Person-Objekt verwenden. Es ist auch nicht erforderlich, dasselbe Erkennungsmodell bei der Erkennung neuer Gesichter zu verwenden, um diese mit einem Person-Objekt zu vergleichen (beispielsweise in der API Identifizieren aus Personengruppe).
Hinzufügen eines Gesichts zu einem FaceList-Objekt mit einem angegebenen Modell
Sie können auch ein Erkennungsmodell angeben, wenn Sie ein Gesicht einem vorhandenen FaceList-Objekt hinzufügen. Betrachten Sie das folgende .NET-Codebeispiel.
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);
}
Mit diesem Code wird ein FaceList-Objekt namens My face collection
erstellt. Anschließend wird dem Objekt mit dem Modell detection_03
ein Gesicht hinzugefügt. Wenn Sie den detectionModel-Parameter nicht angeben, verwendet die API das Standardmodell detection_01
.
Hinweis
Sie müssen nicht dasselbe Erkennungsmodell für alle Gesichter in einem FaceList-Objekt verwenden. Es ist auch nicht erforderlich, dasselbe Erkennungsmodell bei der Erkennung neuer Gesichter zu verwenden, um diese mit einem FaceList-Objekt zu vergleichen.
Nächste Schritte
In diesem Artikel haben Sie gelernt, wie Sie das Erkennungsmodell angeben, das für verschiedene Gesichtserkennungs-APIs verwendet werden soll. Durchlaufen Sie als Nächstes eine Schnellstartanleitung zu den ersten Schritten mit der Gesichtserkennung und der Analyse.