Einblick in die Object Detection und Instance Segmentation

Ein großer Bestandteil der Projektgruppe ist die Nutzung von Machine Learning Methoden, um Bilder automatisiert auswerten zu können. Dabei werden aktuell neuronale Netze genutzt, um zu erkennen, ob sich in einem Bild Kleidungsstücke befinden, und wenn ja, wo und welche. Diese Informationen werden weiterverarbeitet, um den Style der auf dem Bild dargestellten Person zu extrahieren und entsprechend Brillen vorzuschlagen.

Der erste Schritt in diesem Ablauf ist die Object Detection. Hierbei werden in einem Bild nahezu beliebig viele Kleidungsstücke lokalisiert, klassifiziert und im Bild segmentiert. Es kommt aktuell ein Mask R-CNN Modell zum Einsatz um diese Aufgaben zu bewältigen.

Hier ein Beispiel:

Der Input des Modells ist ein normales Bild einer Person: hier ein Bild unseres PG-Mitglieds JP.
Daraufhin werden aus dem Bild verschiedene Teilregionen bestimmt und klassifiziert. In diesem Bild wurden drei Regionen identifiziert die für uns relevant sind – Oberkörper in Rot, Unterkörper un Gelb und Fußbekleidung in Grün.

Zusätzlich wird noch eine Segmentation Mask gebildet, die für jeden Pixel bestimmt, ob dieser Teil der klassifizierten Region ist, oder nicht (hier am Beispiel des Oberkörpers).

Insgesamt erhält man folgende Informationen:

Region 1:
Klasse: Oberkörper (p=0.9898845)


Region 2:
Klasse: Unterhörper (p=0.9970329)


Region 3:
Klasse: Footwear (p=0.9986494)

Abschließend noch einige Anmerkungen:
Auch wenn dieses Beispiel suggeriert, dass das Problem der Object Detection und Segmentation nahezu gelöst ist, ist dies bei weitem nicht der Fall. Das hier gewählte Bild ist für die Aufgabe optimal und recht realitätsfern. Auch ist die Auswahl der Klassen auf unseren Anwendungsfall angepasst und deshalb überschaubar. Weiterhin sind die Klassenwahrscheinlichkeiten mit >98% utopisch und unrealistisch für realitätsnahere Bilder.

Dennoch sollte dieses Model eine gute Basis für das weitere Vorgehen bieten.

Info: Das hier genutzte Modell ist ein Mask R-CNN mit einem ResNet50 Backbone, trainiert auf MSCOCO2017 mit Finetuning auf iMaterialist2019 (fünf Epochen); implementiert in Detectron2 von FAIR. Die trainierten Klassen sind „Upperbody“, „Lowerbody“, „Wholebody“, „Footwear“ und „Accessoires“.