Stellen Sie sich vor, Sie hätten eine Datensammlung von Hunderttausenden bis Millionen Bildern ohne Metadaten, die den Inhalt jedes Bildes beschreiben. Wie können wir ein System aufbauen, das in der Lage ist, eine Teilmenge der Bilder zu finden, die die Suchanfrage eines Benutzers am besten beantworten?
Was wir im Grunde brauchen, ist eine Suchmaschine, die in der Lage ist, Bildergebnisse danach zu ordnen, wie gut sie der Suchabfrage entsprechen, die entweder in einer natürlichen Sprache oder durch ein anderes Abfragebild ausgedrückt werden kann.
Die Art und Weise, wie wir das Problem in diesem Beitrag lösen, besteht darin, ein tiefes neuronales Modell zu trainieren, das eine Darstellung (oder Einbettung) fester Länge von jedem eingegebenen Bild und Text lernt und dafür sorgt, dass diese Darstellungen im euklidischen Raum nahe beieinander liegen, wenn die Paare Text- Bild oder Bild-Bild sind „ähnlich“.
Ich konnte keinen ausreichend großen Datensatz zum Ranking der Suchergebnisse finden, konnte aber diesen Datensatz abrufen: http://jmcauley.ucsd.edu/data/amazon/, der Bilder von E-Commerce-Artikeln mit ihnen verknüpft Titel und Beschreibung. Wir werden diese Metadaten als Überwachungsquelle verwenden, um aussagekräftige verbundene Text-Bild-Darstellungen zu lernen. Die Experimente waren auf Modeartikel (Kleidung, Schuhe und Schmuck) und auf 500.000 Bilder beschränkt, um die Berechnungs- und Speicherkosten zu verwalten.
Der uns vorliegende Datensatz verknüpft jedes Bild mit einer in natürlicher Sprache verfassten Beschreibung. Wir definieren also eine Aufgabe, in der wir eine verbundene Darstellung fester Länge für Bilder und Text lernen möchten, sodass jede Bilddarstellung der Darstellung ihrer Beschreibung nahe kommt.
Das Modell benötigt drei Eingaben: Das Bild (das den Anker darstellt), den Bildtitel und die Beschreibung (das positive Beispiel) und die dritte Eingabe ist zufällig ausgewählter Text (das negative Beispiel).
Dann definieren wir zwei Untermodelle:
Das Bild-Untermodell erzeugt die Einbettung für den Anker **E_a ** und das Text-Untermodell gibt die Einbettung für den positiven Titel+Beschreibung E_p und die Einbettung für den negativen Text E_n aus.
Anschließend trainieren wir, indem wir den folgenden Triplettverlust optimieren:
L = max( d(E_a, E_p)-d(E_a, E_n)+alpha, 0)
Dabei ist d der euklidische Abstand und Alpha ein Hyperparameter von 0,4 in diesem Experiment.
Im Grunde ermöglicht dieser Verlust, **d(E_a, E_p) klein und d(E_a, E_n) **groß zu machen , sodass die Einbettung jedes Bildes nahe an der Einbettung seiner Beschreibung und weit von der Einbettung von entfernt ist zufälliger Text.
Sobald wir das Bildeinbettungsmodell und das Texteinbettungsmodell gelernt haben, können wir sie visualisieren, indem wir sie mit tsne (https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html) in zwei Dimensionen projizieren.
Testbilder und die entsprechende Textbeschreibung sind durch grüne Linien miteinander verbunden
Aus der Darstellung können wir ersehen, dass Bilder und ihre entsprechenden Beschreibungen im Einbettungsraum im Allgemeinen nahe beieinander liegen. Was wir angesichts der eingesetzten Trainingsverluste auch erwarten würden.
Hier verwenden wir einige Beispiele für Textabfragen, um in einem Satz von 70.000 Bildern nach den besten Übereinstimmungen zu suchen. Wir berechnen die Texteinbettung für die Abfrage und dann die Einbettung für jedes Bild in der Sammlung. Schließlich wählen wir die Top-9-Bilder aus, die der Suchanfrage im Einbettungsbereich am nächsten kommen.
Diese Beispiele zeigen, dass die Einbettungsmodelle in der Lage sind, nützliche Darstellungen von Bildern und Einbettungen einfacher Wortzusammensetzungen zu lernen.
Hier verwenden wir ein Bild als Abfrage und suchen dann in der Datenbank mit 70.000 Bildern nach den Beispielen, die diesem am ähnlichsten sind. Die Rangfolge wird anhand des euklidischen Abstands dadurch bestimmt, wie nahe die einzelnen Bildpaare im Einbettungsraum liegen.
Die Ergebnisse verdeutlichen, dass es sich bei den erzeugten Einbettungen um hochrangige Darstellungen von Bildern handelt, die die wichtigsten Merkmale der dargestellten Objekte erfassen, ohne übermäßig durch die Ausrichtung, Beleuchtung oder kleinere lokale Details beeinflusst zu werden, ohne dass explizit dafür trainiert wurde.
In diesem Projekt haben wir an den Blöcken für maschinelles Lernen gearbeitet, die es uns ermöglichen, eine schlüsselwort- und bildbasierte Suchmaschine zu erstellen, die auf eine Sammlung von Bildern angewendet wird. Die Grundidee besteht darin, eine sinnvolle und verbundene Einbettungsfunktion für Text und Bild zu erlernen und dann den Abstand zwischen Elementen im Einbettungsraum zur Rangfolge der Suchergebnisse zu verwenden.
Referenzen: