Imaginez avoir une collection de données de centaines de milliers, voire de millions d'images, sans aucune métadonnée décrivant le contenu de chaque image. Comment pouvons-nous construire un système capable de trouver un sous-ensemble de ces images qui répondent le mieux à la requête de recherche d'un utilisateur ?
Ce dont nous aurons essentiellement besoin, c'est d'un moteur de recherche capable de classer les résultats des images en fonction de leur correspondance avec la requête de recherche, qui peut être exprimée soit dans un langage naturel, soit par une autre image de requête.
La façon dont nous allons résoudre le problème dans cet article consiste à entraîner un modèle neuronal profond qui apprend une représentation (ou intégration) de longueur fixe de toute image et texte d'entrée et fait en sorte que ces représentations soient proches dans l'espace euclidien si les paires texte- image ou image-image sont « similaires ».
Je n'ai pas trouvé d'ensemble de données de classement des résultats de recherche suffisamment volumineux, mais j'ai pu obtenir cet ensemble de données : http://jmcauley.ucsd.edu/data/amazon/ qui relie les images d'articles de commerce électronique à leurs titre et description. Nous utiliserons ces métadonnées comme source de supervision pour apprendre des représentations texte-image jointes significatives. Les expérimentations se sont limitées à des articles de mode (Vêtements, Chaussures et Bijoux) et à 500 000 images afin de gérer les calculs et les coûts de stockage.
L'ensemble de données dont nous disposons relie chaque image à une description écrite en langage naturel. Nous définissons donc une tâche dans laquelle nous voulons apprendre une représentation jointe et de longueur fixe pour les images et le texte afin que chaque représentation d'image soit proche de la représentation de sa description.
Le modèle prend 3 entrées : l'image (qui est l'ancre), le titre de l'image + la description (l'exemple positif) et la troisième entrée est du texte échantillonné aléatoirement (l'exemple négatif).
Ensuite nous définissons deux sous-modèles :
Le sous-modèle d'image produit l'intégration pour l'ancre **E_a ** et le sous-modèle de texte génère l'intégration pour le titre + description positif E_p et l'intégration pour le texte négatif E_n .
On s'entraîne ensuite en optimisant la perte de triplet suivante :
L = max( d(E_a, E_p)-d(E_a, E_n)+alpha, 0)
Où d est la distance euclidienne et alpha est un hyper paramètre égal à 0,4 dans cette expérience.
Fondamentalement, ce que cette perte permet de faire est de rendre **d(E_a, E_p) petit et de rendre d(E_a, E_n) **large, de sorte que chaque incorporation d'image soit proche de l'incorporation de sa description et loin de l'incorporation de texte aléatoire.
Une fois que nous avons appris le modèle d'incorporation d'images et le modèle d'incorporation de texte, nous pouvons les visualiser en les projetant en deux dimensions à l'aide de tsne (https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html ).
Les images de test et leur description textuelle correspondante sont liées par des lignes vertes
Nous pouvons voir sur le tracé que généralement, dans l’espace d’intégration, les images et leurs descriptions correspondantes sont proches. C’est ce à quoi nous nous attendrions étant donné la perte d’entraînement utilisée.
Ici, nous utilisons quelques exemples de requêtes textuelles pour rechercher les meilleures correspondances dans un ensemble de 70 000 images. Nous calculons l'intégration du texte pour la requête, puis l'intégration pour chaque image de la collection. Nous sélectionnons enfin les 9 premières images les plus proches de la requête dans l'espace d'intégration.
Ces exemples montrent que les modèles d'intégration sont capables d'apprendre des représentations utiles d'images et des intégrations de compositions simples de mots.
Ici, nous allons utiliser une image comme requête puis rechercher dans la base de données de 70 000 images les exemples qui lui ressemblent le plus. Le classement est déterminé par la proximité de chaque paire d'images dans l'espace d'intégration en utilisant la distance euclidienne.
Les résultats illustrent que les intégrations générées sont des représentations d'images de haut niveau qui capturent les caractéristiques les plus importantes des objets représentés sans être excessivement influencées par l'orientation, l'éclairage ou les détails locaux mineurs, sans être explicitement entraînées à le faire.
Dans ce projet, nous avons travaillé sur les blocs d'apprentissage automatique qui nous permettent de créer un moteur de recherche basé sur des mots clés et des images appliqué à une collection d'images. L'idée de base est d'apprendre une fonction d'intégration significative et jointe pour le texte et l'image, puis d'utiliser la distance entre les éléments dans l'espace d'intégration pour classer les résultats de recherche.
Références :