Microsoft Cognitive Services Face API Teil 2

In Teil 1 ging es um das Erstellen einer einfachen App, um Gesichter auf Fotos mit der Face-API zu erkennen. Nun geht es darum, mehr über die Gesichter zu erfahren…

Ich habe das Beispiel aus dem Tutorial Get Started with Face API in C# etwas erweitert. Hier sehen wir das bisherige Ergebnis mit einer Person (mir) und dem erkannten Gesichtsfeld auf dem Foto. Sehen wir uns an, was die Face-API noch alles kann und welche Daten sie uns für eigene Apps liefern kann…

image_thumb[10]

Dazu habe ich das Sample (Code siehe hier) mit den Infos von der Face-API - How to Detect Faces in Image erweitert und mit demselben Bild (und weiteren, s.u.) experimentiert.

Somit habe ich einfach das verwendete Bild erneut mit FaceAttributes an das Service gesendet:

faceServiceClient.DetectAsync(s, returnFaceLandmarks: true, returnFaceAttributes: requiredFaceAttributes)

Der Screenshot zeigt die möglichen Attribute (Age, Gender, Smile, FacialHair, HeadPose, Glasses).

image_thumb[18]

Das Ergebnis und die erkannten Merkmale sind beeindruckend… von Alter, Geschlecht, Brillenträger-Info bis zum Smile-Faktor mit einer Wahrscheinlichkeit (0 bis 1 = 100%). Cool, oder?

image_thumb[22]

Schöner wird das Ganze, wenn man die Ergebnisse serialisiert und so ausgeben lässt:

var json = JsonConvert.SerializeObject(face);

image

Beim Erforschen entdeckt man weitere interessante Details… etwa in FacialHair, ob ein Bart, Schnurrbart oder Kotletten erkannt wurden.

Geliefert werden auch die X und Y-Position der wichtigsten Gesichtsmerkmale im Bild (FaceLandmarks). Das kann hilfreich für das Erkennen von Gesichtsausdrücken und für die Steuerung der eigenen App sein.

image

Diese Eigenschaften sind hier visualisiert.

image

…sowie die Haltung des Kopfes. In meinem Beispiel ist Pitch 0 Grad, Roll –1.8 Grad und Yaw +1 Grad. Die Person im Bild oben hat den Kopf ganz leicht nach links geneigt.

image

Die folgende Grafik aus dem Glossar und Infos aus Face API - V1.0 helfen, die Werte zu verstehen.

image

Natürlich habe ich auch mit weiteren Beispielbildern experimentiert. Bei einem Bild eines (grinsenden = 93% Wahrscheinlichkeit) Brillenträges (ReadingGlasses) hat das auch brav funktioniert…

image

Ebenso hat mein Versuch mit einem Bild von Martina gut geklappt… Winking smile

image_thumb[43]

image

Natürlich musste ich auch ein (spätes) Foto von Elvis Presley ausprobieren… es wäre wegen den Kotletten. Viel mehr Sideburns geht bei dem Foto (das ich aus Copryright Gründen hier nicht poste) eigentlich nicht, aber – you get the idea - die Sideburns werden erkannt: 0.2 und Beard 0.3. Das Alter…hm auch Elvis war mal jung…

image

Zugegeben, ich bin von diesem Service recht beeindruckt. Wie in Teil 1 erwähnt, muss die Qualität der Bilder, die Auflösung, die Lichtverhältnisse und die Konstellation der Personen für eine korrekte Erkennung natürlich ausreichen. Bei meinen Versuchen erkannte die Face-API – bei guter Bildqualität - recht zuverlässig Daten aus den Fotos. Umgekehrt gab es auch Fotos, wo gar keine Gesichter erkannt wurden.

Die Face-API liegt derzeit (siehe Endpoint https://api.projectoxford.ai/face/v1.0/detect) als Version 1.0 vor. Offensichtlich wird für die Public-Demo https://how-old.net/ eine ältere Version verwendet, diese liefert teilweise unterschiedliche Ergebnisse. Zum Herumspielen ist die Website aber allemal gut. Aus meiner Sicht liefert das eigene V1 Demo jedoch bessere Ergebnisse. Wichtig ist auch der Gesichtsausdruck. Je neutraler (Stichwort Passfoto), desto genauer ist auch die Altersermittlung.

Manche Cognitive Services können in eigenen Applikationen durchaus Sinn machen. Die Verwendung (der Face-API) ist denkbar einfach. Alleine die Möglichkeit solche Funktionen einfach zu benutzen (und nicht selbst entwickeln oder zukaufen zu müssen), beflügeln Gedanken zur Integration in eigene Software-Lösungen.

Die Spielwiese ist eröffnet! Viel Spaß beim Erforschen der Microsoft Cognitive Services!

In Teil 3 gibts dann noch Hinweise für weitere Beispiele.