AI-United » Allgemein » Die Optimierung des E-Commerce-Prozesses in der Mode mithilfe des tiefen Lernens

Die Optimierung des E-Commerce-Prozesses in der Mode mithilfe des tiefen Lernens

Wie wird die Auswahl von Miniaturbildern für Schuhe automatisiert?

Die Optimierung des E-Commerce-Prozesses

Beim Erlernen der Methode des überwachten Lernens stößt man auf verschiedene Clustering-Methoden wie K-Means, hierarchische Clusteranalyse und versucht, sie für reale Probleme einzusetzen. Die E-Commerce-Systeme, d. h. Systeme des elektronischen Handels, stehen im Mittelpunkt der Aufmerksamkeit vieler Datenwissenschaftler und Forscher. In diesem Artikel wird eins der aktuellsten Probleme dieses Bereiches behandelt.

Es handelt sich um die Automatisierung des Prozesses der Auswahl von Miniaturbildern für E-Commerce in der Mode (Schuhe). Folgende Unterthemen werden erörtert:

  • Wie werden Features aus Bildern unter Verwendung des tiefen Lernens für Clustering-Prozesse erstellt?
  • Wie wird die optimale Clusteranzahl für K-Means (Elbow-Methode) gefunden?
  • Welche Architektur eignet sich für die Feature-Extraktion am besten? 

Problematik

Stellen Sie sich beispielsweise vor, dass Sie in einem Mode-E-Commerce-Unternehmen tätig sind und die Anbieter Ihnen täglich Tausende von Schuhbildern liefern. Ihre Aufgabe besteht darin, das richtige Bild für die Miniaturansicht auszuwählen, d. h. ein solches Bild, das den Benutzer dazu anregen kann, das Produkt weiter anzusehen oder zu kaufen.

Schnürschuhe

Sie müssen das beste Ansichtsbild, das als Miniaturbild aus mehreren Schuhbildern verwendet wird, sowie die Art der Schuhe bestimmen. Wenn Sie das obige Bild betrachten, dann sehen Sie, dass das rechte Bild das beste ist und als Miniaturbild verwendet werden kann.

Begründung der Notwendigkeit

  •  Da jedes Produkt mehrere Ansichten (links, rechts, vorne, hinten) hat und nur wenige passende Informationen über dieses Produkt liefert, wird die beste Ansicht als Miniaturbild ausgewählt. Dadurch werden bestimmte manuell ausgeführte Prozesse automatisiert.
  • Darüber hinaus ist die Auswahl der besten Ansicht beim Training des Klassifikators zur Bestimmung der Art von Schuhen sehr hilfreich. Dadurch werden nur Features aus der Ansicht gelernt, die die meisten Informationen wie Vorder- oder Seitenansicht liefert. Wenn dem Klassifikator die Ansicht zugeführt wird, die die Beschreibung der Schuhsohle enthält, werden die Features nicht gelernt, die für die Klassifizierung des Schuhtyps wichtiger sind. Wie bei Schnürschuhen ist die Ansicht, die Informationen über den Schnürsenkel enthält, das nützlichste Feature für den Klassifikator und auf keinen Fall die Informationen über die Sohle.

Daten

In diesem Artikel werden die Daten vom E-Commerce-Unternehmen Fynd-Fashion verwendet. Es handelt sich um eine CSV-Datei, die Spaltenname „Klasse“ und Bild-URLs zu verschiedenen Ansichten (5 verschiedene Ansichten) enthält. Die heruntergeladenen Bilder von URLs wurden in folgendem Format gespeichert: footweartype_id_viewid.jpg.  Beim Betrachten des Bildes muss nicht immer view_1 die Vorderansicht von Schuhen sein.

Im Datensatz sind also insgesamt 6 Schuhklassen vorhanden.

Quelle: Fynd. Arten von Schuhen

Ansatz

Daten enthalten keine Information darüber, welche Ansicht für das Miniaturbild ausgewählt wurde. Es wurden nur unterschiedliche Ansichten über ein bestimmtes Schuhwerk und die Art des Schuhwerks vermittelt. Wie wird ein Klassifikator trainiert, wenn die Daten nicht mit der besten Ansicht beschriftet sind? Diese Art von Problem wird vom unüberwachten Lernen gelöst. Und für unüberwachtes Lernen können zur Beschriftung der Daten die Methoden wie Clustering verwendet werden.

Bevor man zu einer der Methoden des unüberwachten Lernens übergeht, ist es notwendig, das Problem zu verallgemeinern, um den Ansatz zu vereinfachen. Nach dem Betrachten des Datensatzes stößt  man auf folgende Dinge:

  • Für Arten von Schuhen wir Schnür-, Schnallenschuhe, Slip-on, Hakenschleife- und Riemchenschuhe ist die Vorder- oder Seitenansicht am wichtigsten.
  • Für die Reißverschlussart ist die Ansicht, die Informationen über Reißverschluss enthält, am wichtigsten.

Bestimmte Dinge wurden festgelegt, die das Problem verallgemeinern werden. Kommen wir nun zu Methoden des unüberwachten Lernens weiter und identifizieren mit deren Hilfe die obigen Ansichten für die Art der Schuhe.

Wie wird Clustering eingesetzt?

Der nächste Schritt besteht darin, Bilder mit denselben Ansichten zuzuordnen. In diesem Fall wird K-Means für Clusteranalyse verwendet. Die Clustering-Algorithmen wie K-Means können nur dann verwendet werden, wenn bestimmte Bildfeatures übergeben werden. Es handelt sich um Features wie Form-Kontext, GIST, HOG, Heuristik, die den Clustering-Algorithmen zugeführt werden. Nachdem die Cluster für jede Art von Schuhen visualisiert worden waren, gab es einige schlechte Bilder, die nicht zu diesen Clustern gehören.

Als nächstes werden Methoden des tiefen Lernens zur Clusteranalyse verwendet. Kommt dies etwas unerwartet vor?

Wie funktioniert es? Die Bilder werden an ein vortrainiertes Netzwerk übergeben und dann wird die oberste Schicht des Modells entfernt und das Output der letzten Schicht wird an den Clustering-Algorithmus übergeben.

Die Verwendung des vortrainierten Netzwerks des tiefen Lernens hat ihre Vorteile, da die in den Schichten erlernten Abstraktionen alles, Form, Muster und vieles mehr erfassen würden. Deshalb ist es nicht erforderlich, die Features aus Bildern manuell zu extrahieren. Ist es nicht magisch?

Es gibt viele verschiedene vortrainierte Modelle wie ResNet50, VGG16, VGG19 usw. Um zu entscheiden, welche Architektur ausgewählt werden soll, kann der Silhouettenkoeffizient verwendet werden, mit dessen Hilfe das beste Cluster gefunden werden kann.

Der Silhouettenkoeffizient dient zum Messen, wie nahe sich jeder Punkt in einem Cluster an den Punkten in den Nachbarclustern befindet. Mit seiner Hilfe kann der optimale Wert für k bei der k-Means-Clusteranalyse sehr bequem ermittelt werden. Silhouette-Werte befinden sich im Bereich von [-1, 1]. Ein Wert von +1 bedeutet, dass die Stichprobe weit von dem Nachbarcluster und sehr nah an dem zugeordneten Cluster liegt. Genauso bedeutet der Wert -1, dass der Punkt näher an dem Nachbarcluster als dem zugeordneten Cluster liegt. Und zum Schluss bedeutet ein Wert von 0, dass sich der Punkt an der Grenze des Abstands zwischen den beiden Clustern befindet. Der Wert von +1 ist also eine Idee und der Wert von -1 ist am wenigsten bevorzugt. Ein höherer Wert führt zu besserer Cluster-Konfiguration.

Die obige Grafik stellt dar, dass mit zunehmender Anzahl von Clustern ResNet besser funktioniert als VGG16. Dies lässt sich dadurch erklären, dass ResNet50 tiefer ist und mehr Informationen erfasst.

Wie werden Cluster visualisiert?

Features aus ResNet werden übergeben und das Cluster mit gleichen Ansichten gefunden.

Gleiche Ansichten des Hakenverschlusses
Gleiche Ansichten des Schnürverschlusses
Gleiche Ansichten der Riemchenverschlüsse
model = ResNet50(weights='imagenet', include_top=False)
# function to load a particular type of footwear . And pass the return the features from last layer
def get_vec_footwear(footwear_dir):
    
    resnet50_feature_list = []
    filenames = listdir(footwear_dir)
    for i,fname in enumerate(filenames):
        try :
            img = image.load_img(footwear_dir+'/'+fname,target_size= (224,224))
            img_data = image.img_to_array(img)
            img_data = np.expand_dims(img_data,axis=0)
            img_data = preprocess_input(img_data)
            resnet50_feature = model.predict(img_data)
            resnet50_feature_np = np.array(resnet50_feature)
            resnet50_feature_list.append(resnet50_feature_np.flatten())
            
        except IOError :
            continue
            
    resnet50_feature_list_np = np.array(resnet50_feature_list)
    return resnet50_feature_list_np
#Feature vectors from above function is passed into this function to get clusters
def get_clusters(a,b,resnet50_feature_list_np):
    silloute_score = []
    objects = []
    cluster_errors = []
    for i in range(a,b):
        objects.append(i) 
        print(i)
        kmeans = KMeans(n_clusters=i, random_state=0, n_jobs=-1).fit(resnet50_feature_list_np)
        silloute_score.append(metrics.silhouette_score(resnet50_feature_list_np , kmeans.labels_,metric='euclidean'))
        cluster_errors.append( kmeans.inertia_ )
        
    return silloute_score , objects , cluster_errors
resnet50_feature_list_np = get_vec_footwear('lace_data_rgb')

silloute_score , objects , cluster_errors = get_clusters(2,20,resnet50_feature_list_np)

Im oben angeführten Code wird der Name des Verzeichnisses an die Funktion get_vec_footwear übergeben. Die Featuresvektoren eines Bildes werden zurückgegeben. Nach dem Erhalt der Merkmalsvektoren werden sie an die Funktion get_clusters übergeben, um die Featuresvektoren an den Clustering-Algorithmus zu übergeben.

Hier finden Sie weitere Implementierungen: https://github.com/amitpeshwani/footwear-best-view-classification?source=post_page

Für jede Art von Schuhen wurde die optimale Anzahl von Clustern auf Basis der Elbow-Analyse des Silhouettenkoeffizienten ermittelt.

Der Ablauf der Elbow-Methode besteht aus folgenden Schritten: Durchführung des k-Mean-Clustering auf dem Datensatz für einen Wertebereich von k(k-Anzahl der Cluster), Berechnung der Residuenquadratsumme (englisch: sum of squared errors, kurz SSE) für jeden k-Wert und dann Zeichnen eines Liniendiagramms der SSE für jeden k-Wert. Wenn das gezeichnete Liniendiagramm einem Arm ähnelt, ist der „Ellbogen“ am Arm der beste k-Wert.

In der Grafik liegt der optimale k-Wert bei 5. Nach diesem k-Wert neigt SSE dazu, mit zunehmendem k in Richtung 0 zu sinken. Man muss also einen kleinen k-Wert auswählen, der immer noch einen niedrigen SSE-Wert hat. In der Regel stellt der Ellbogen die Stelle dar, an der angefangen wird, mit zunehmendem k sinkende Renditen zu erzielen. 

Mithilfe von Clustern wurden die Bilder in zwei Gruppen unterteilt:

  • Typeoffootwear_bestview
  • Typeoffootwear_nobestview
Beste Ansichten von Schnürschuhen

Durch Durchführung der obigen Methoden wurden Bilder mit der gleichen Ansicht für jede Art von Schuhen getrennt und im Ordner typeoffootwear_best / nobestviews (laceup_best im obigen Bild) gespeichert. Auf diese Weise wurden Daten mit den besten und keinen besten Ansichten für jede Art von Schuhen beschriftet. Jetzt kann der Klassifikator trainiert werden, um die beste Ansicht sowie die Art von Schuhen zu bestimmen. Das Problem des unüberwachten Lernens wird in das Problem des überwachten Lernens umgewandelt.

VGG19 wurde auf den obigen Bildern trainiert. Betrachten Sie die Beispielausgabe des Modells:

Schnüren
Hakenschleife

Fazit

Vortrainiertes ResNet50 anhand des Silhouettenkoeffizients wurde verwendet. Die Ausgabe von ResNet wurde direkt dem Clustering-Algorithmus zugeführt. Um die optimale Clusteranzahl zu ermitteln, wurde die Elbow-Analyse eingesetzt. Dann wurden die Bilder auf Basis der Cluster getrennt und jedes Cluster mit einer bestimmten Ansicht beschriftet. Nach dem Erhalt der beschrifteten Informationen über die Ansicht mit der Art von Schuhen wurde die Klassifizierung anhand der normalen VGG-Architektur durchgeführt. Weitere Verbesserungsvorschläge: Anstatt des vortrainierten ResNet, das auf dem ImageNet-Datensatz trainiert ist, kann ein auf dem Fashion-MNIST-Datensatz trainiertes Modell verwendet werden, da es umfangreichere Informationen über Form und Textur von Schuhen liefern kann und das Modell für die Clusteranalyse verwendet.

Hoffentlich verschafften Sie sich nach dem Lesen dieses Artikels einen Überblick darüber, wie der E-Commerce-Prozess in der Mode anhand des tiefes Lernens optimiert werden kann. Sollten Sie weitere Fragen dazu haben, so können Sie sich an das Team von AI-United.de per Mail oder Q&A wenden.

Quelle

AI-United-Redaktion

Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.