Bisher wurden für die Bestimmung eines Styles nur die Kleidungsstücke und ihre Merkmale ausgewertet. Die Kleidung einer Person bildet die wichtigste Datengrundlage für unsere Arbeit. Doch wir können weit mehr Daten aus einem Bild gewinnen, als nur Kleidungsstücke und Accessoires.
Für den nächsten Schritt werden wir unsere Feature Extraction Engine um eine Gesichtserkennung erweitern, um so zukünftig auch Merkmale, wie die Frisur und ihre Haarfarbe, einen Bart, Hut oder etwa Schminke erkennen zu können. All dies sind Merkmale, welche in die eigene äußere Erscheinung eingehen und wichtig für unsere Auswertung sind.
Für die Umsetzung muss zuerst bestimmt werden, wo und ob sich ein Kopf in dem betrachteten Bild befindet. Angelehnt an die Object Detection, welche für die Kleidungsstücke verwendet wird, setzen wir ein Mask RCNN, implementiert im Detectron 2, ein. Trainiert wird das neuronale Netz auf dem WIDER FACE Datensatz, der über 32.203 Bilder mit markierten Gesichtern verfügt.
Die Gesichtserkennung ist eines der prominentesten Beispiele, wie die künstliche Intelligenz Anwendung in unserem täglichen Leben findet. Als solches ist dieses Problem bereits in den vergangen Jahren stark untersucht worden. Die Qualität von modernen Datensätzen und immer effizientere neuronale Netze ermöglichen es uns Gesichter mit einer hohen Genauigkeit zu erkennen.
Der blau hervorgehobene Bereich im Bild ist die vom neuronalen Netz bestimmte Position des Gesichts. Um für unsere spätere Nutzung auch die Haare und mögliche Accessoires, wie Ketten, Fliegen oder Krawatten erkennen zu können skalieren wir den betrachteten Ausschnitt auf den rot dargestellten Bereich.
Nachdem die Position des Kopfes bestimmt wurde können wir mit der Feature Extraction beginnen. Genutzt werden zwei EfficientNet B0 Netze. Das erste Netz wurde auf dem CelebA Datensatz traniert, der viele unterschiedliche Merkmale zum Gesicht und Accessoires enthält. Aus dem Datensatz wurden dabei nur Merkmale übernommen, die zu einem Stil gezählt werden können. Äußere Merkmale, wie beispielsweise die Gesichtsform wurden bewusst ignoriert, da sie nicht von einer Person selbst bestimmt werden können. Das zweite Netz bestimmt ausschließlich die Frisur der Person und wurde auf dem Figaro1k Datensatz trainiert, der zwischen sieben Frisuren unterscheidet. Die erkannten Merkmale beider Netze können anschließend kombiniert werden.
Die für dieses Beispiel ermittelten Merkmale sind:
Frisur: gerade Haare
Bart: 5 o’clock Shadow
Erscheinung: Männlich
Schwierigkeiten bereitete uns bei dieser Aufgabe vor allem die Bestimmung der Frisur. Die Auswahl an Datensätzen, die Frisuren beinhalten ist sehr gering. Zudem war uns wichtig eine Frisur detailliert zu bestimmen, was die Auswahl weiter einschränkt. Der genutzte Figaro1k Datensatz besitzt vergleichsweise umfangreiche sieben Klassen, umfasst jedoch auch nur knapp über 1.000 Bilder. Um eine ausreichende Genauigkeit zu erreichen haben wir die Trainingsbilder umfassend mithilfe von Bild Augentation erweitern müssen.
Die Feature Extraction für Kopf und Haare trägt einen wichtigen Teil zur Bestimmung des Styles bei. Wir arbeiten auch weiterhin daran die Qualität unserer Auswertungen zu verbessern.