Comment fonctionne la "Recherche d'images" de Dropbox ?

surtout si vous avez oublié le nom du fichier. Pour simplifier l’expérience, la plate-forme d’hébergement de fichiers Dropbox a récemment lancé une nouvelle fonctionnalité pour rendre la recherche d’images transparente.

La fonction, disponible pour les entreprises et les particuliers, permet de rechercher toutes les images, de rechercher des images de documents par OCR et de rechercher en texte intégral des documents texte.

Actuellement, Dropbox dessert près de 700 millions d’utilisateurs enregistrés, 15,48 millions d’utilisateurs payants et a généré près de 1,91 milliard de dollars de revenus en 2020. Dans les mois à venir, la société envisage de lancer une fonction de recherche de contenu vidéo.

Recherche de contenu d’image

Cependant, la nouvelle fonctionnalité de « recherche d’images » de Dropbox suggère des images pertinentes et appelle la meilleure correspondance, en se basant sur quelques mots descriptifs.

vous pouvez saisir le mot-clé « pique-nique » ou d’autres objets de l’image dont vous pouvez vous souvenir ou vous souvenir vaguement. En peu de temps, les images pertinentes seraient montrées.

Exemple de résultats de recherche de contenu d’image pour « pique-nique » (Source : Dropbox)

Mais comment ça marche?

Dropbox exploite les techniques d’apprentissage automatique pour améliorer la recherche de contenu d’image. Dans cet article, nous discuterons du modèle en détail et expliquerons comment Dropbox a implémenté cette dernière fonctionnalité sur son infrastructure de recherche existante.

Avant cela, examinons un simple problème de recherche d’images:

Pour tout problème de recherche d’image, pour trouver une fonction de pertinence, nous avons besoin d’une requête (texte) «q» et d’une image «j», qui renvoie un score de pertinence «s», indiquant dans quelle mesure l’image correspond à la requête de recherche.

s = f (q, j)… (1)

Lorsqu’un utilisateur recherche des images, la fonction ci-dessus est conçue pour s’exécuter sur toutes ses images, et elle renvoie les images qui produisent un score supérieur à un seuil. Dans le cas de Dropbox, il a construit cette fonction en utilisant deux techniques de ML : une classification précise des images et des vecteurs de mots.

Classification d’images et vecteurs de mots

Dans la classification d’image, le classificateur d’image lit une image, produit une liste notée de catégories qui décrivent son contenu, et des scores plus élevés indiquent une probabilité plus élevée que l’image appartienne à cette catégorie.

Par exemple, les catégories peuvent être classées comme

  • Objet spécifique de l’image (un arbre, ou une personne, etc.)
  • Descriptions générales des scènes (extérieur, mariage, séminaires, etc.)
  • Caractéristiques de l’image (noir et blanc, fond sombre, ciel bleu, etc.)

Aujourd’hui, la classification des images dans l’apprentissage automatique s’est beaucoup améliorée. Des derniers modèles auto-supervisés aux grands ensembles de données comme Open Images ou ImageNet, en passant par les bibliothèques et les frameworks faciles à utiliser tels que Tensorflow de Google et PyTorch de Facebook, les chercheurs ont construit des classificateurs d’images capables de reconnaître des milliers de catégories avec précision.

Exemple de résultats du classificateur d’image pour une image non mise en scène typique (Source; Dropbox)

Si les classificateurs d’images permettent aux utilisateurs de comprendre le contenu d’une image, cela ne suffit pas pour activer la recherche. Pour améliorer encore cela, Dropbox a utilisé des «vecteurs de mots». Les vecteurs de mots ne sont rien d’autre que des vecteurs de nombres représentant la signification d’un mot et généralement définis comme jc, où «c» représente le nombre de catégories (plusieurs milliers).

Citant l’article word2vec 2013 de Mikolov et al. Dropbox a déclaré que word2vec attribue un vecteur à chaque mot du dictionnaire et que les mots ayant une signification similaire auront des vecteurs proches les uns des autres. Dropbox semble s’être inspiré de ce document de recherche pour son architecture d’apprentissage automatique de recherche d’images.

Architecture ML

Dropbox a utilisé le classificateur d’images réseau EfficientNet, formé sur l’ensemble de données OpenImages, qui produit approximativement des scores pour environ 8500 catégories. «Nous avons constaté que cette architecture et cet ensemble de données offrent une bonne précision à un coût raisonnable», a déclaré Dropbox.

En plus de cela, Dropbox utilise également Tensorflow pour entraîner et exécuter le modèle. En outre, il utilise les vecteurs de mots ConceptNet Numberbatch pré-entraînés. «Ils donnent de bons résultats, et il est important pour nous qu’ils prennent en charge plusieurs langues, renvoyant des vecteurs similaires pour des mots dans différentes langues avec des significations similaires», a déclaré Dropbox, déclarant que cela facilite la recherche de contenu d’image dans plusieurs langues.

Par exemple, les vecteurs de mots pour «chien» en anglais et «chien» en français sont similaires. Dropbox a affirmé qu’il pouvait prendre en charge la recherche dans les deux langues sans avoir à effectuer une traduction directe. De même, pour les requêtes multi-mots, l’algorithme effectue une analyse alternative et exécute le OU des deux requêtes analysées. Par exemple, la requête «ballon de plage» devient (plage ET ballon) OU (ballon de plage). Les résultats montrent les deux.

Le modèle ci-dessus a été appliqué au moteur de recherche Nautilus existant de Dropbox au lieu d’instancier «j» pour chaque requête, qui peut contenir des milliards d’entrées et doit être mis à jour chaque fois qu’un utilisateur supprime, ajoute ou modifie une image.

Nautilus se compose d’un index direct qui mappe chaque fichier aux métadonnées (le nom de fichier) et au texte intégral du fichier. La recherche textuelle de la même chose ressemblerait à ceci :

Rechercher le contenu de l’index pour une recherche textuelle (Source : Dropbox)

Avec la dernière architecture de recherche de contenu d’image, Dropbox peut utiliser le même système pour implémenter des algorithmes de recherche d’images. Par exemple, dans l’index avant, le vecteur d’espace de catégorie jc de chaque image peut être stocké. En revanche, l’indice inverse pour chaque catégorie affiche une liste d’images avec des scores positifs pour cette catégorie. Cela ressemble à ceci :

Rechercher le contenu de l’index pour la recherche d’images (Source : Dropbox)

Est-ce évolutif?

Dropbox pense que l’approche de «recherche de texte» est encore coûteuse en termes d’espace de stockage et de traitement des requêtes. «Si nous avons 10 000 catégories, alors pour chaque image, nous devons stocker 10 000 scores de classificateur dans l’index direct, au prix de 40 kilo-octets si nous utilisons des valeurs à virgule flottante de quatre octets», explique Dropbox. Les scores du classificateur sont rarement nuls et seront ajoutés à la plupart de ces 10 000 listes de publication.

En d’autres termes, pour de nombreuses images, le stockage d’index serait plus grand que le fichier image.

Cependant, Dropbox a déclaré que de nombreuses valeurs proches de zéro pourraient chuter pour obtenir une approximation beaucoup plus efficace dans le cas de la «recherche d’images». La société a déclaré que les économies de stockage et de traitement étaient substantielles.

Voici une comparaison entre « recherche d’image » et « recherche de texte »

  • Au lieu de vecteurs denses de 10 000 dimensions, le système stocke des vecteurs épars avec 50 entrées différentes de zéro dans l’index direct. Un vecteur clairsemé est une matrice dans laquelle la plupart des éléments sont nuls. Dans ce cas, environ 50 positions entières sur deux octets et 50 valeurs flottantes sur quatre octets nécessitent environ 300 octets.
  • Dans l’index inversé, chaque image est ajoutée à 50 listes de publication au lieu de 10 000, au coût d’environ 200 octets. Par conséquent, le stockage d’index total par image est de 500 octets au lieu de 80 kilo-octets.
  • En termes de temps de requête, les catégories d’images ont dix entrées différentes de zéro et n’ont besoin que de numériser 10 listes de publication, soit à peu près la même quantité de travail que celle des requêtes de texte. Cela, d’une certaine manière, donne un ensemble de résultats plus petit, qui peut marquer plus rapidement.

Les coûts d’indexation et de stockage sont raisonnables, tandis que les latences des requêtes sont comparables à celles de la recherche de texte. En d’autres termes, l’utilisateur peut exécuter des recherches de texte et d’images en parallèle, et le moteur de recherche afficherait l’ensemble complet des résultats ensemble aussi rapidement qu’une recherche de texte uniquement.

Rejoignez notre groupe Telegram. Faites partie d’une communauté en ligne engageante. Rejoignez-nous ici.

/h2>

Recevez les dernières mises à jour et offres pertinentes en partageant votre e-mail.