Fonctionnement de la recherche d'images Dropbox

Si vous avez besoin de trouver une photo prise lors d'un pique-nique il y a quelques années, vous pouvez à peine vous souvenir du nom que l'appareil photo a automatiquement attribué au fichier au moment de la prise de vue, par exemple, 2017-07-04 12.37.54.jpg . Vous regardez à travers tout - des photographies, leurs croquis, en essayant d'identifier des objets ou des signes de ce que vous recherchez - et peu importe que vous recherchiez une photo perdue ou que vous vouliez trouver une photo décente dans les archives pour la présentation de un nouveau projet.





Ce serait formidable si Dropbox pouvait afficher indépendamment toutes les images et sélectionner celles qui correspondent le mieux aux mots de la description! C'est exactement la tâche que nous nous sommes fixé lors de la création de la fonction de recherche d'image .





, Dropbox , , , , Dropbox .






Résultats de la recherche d'images par mot-clé "pique-nique"
""

, , , Dropbox.





: , () q j, s , , :





s = f(q, j).





- , , . : .





, . , . 





:





  • , , ;





  • , , ;





  • , , - .





— 2012 . Krizhevsky . ImageNet hallenge. , , , , Open Images ImageNet, , TensorFlow PyTorch, , . , :





Résultats de l'application d'un classificateur d'images à une photographie non mise en scène typique

, , . , , , , , ? , ?





, , , .





. jc . C- , C — ( ). , , , .





— . — word2vec — Mikolov . 2013 . Word2vec , , , , . d- , d .





, word2vec. , , :





  1. q d- qw, . w, — c.





  2. ciw. m̂i = qw - ciw — i- . -1 1 , . ( mi = max(0, m̂i)), , .





  3. , qc = [m1 m2 ... mC], C- , , — , , .





3 — - , qc = qwC, C — ciw.





qc — s = qcjc.





. . - , s = qcJ, J jc , s — .





. , — : , , .





, . , [0,35–0,62 0,70], .





, .





Projection du vecteur des mots de requête sur l'espace des catégories

  EfficientNet, OpenImages. 8 500 . , . , Dropbox.





TensorFlow   ConceptNet Numberbatch. , , , , . : dog chien , .





AND, . , , beach ball, . , OR , beach ball (beach AND ball) OR (beach ball). , .





, , J . , , , , . ().





J , Dropbox Nautilus.





, Nautilus (forward index), (, ) , (inverted index), (posting list) , . :





Contenu de l'index de recherche pour la recherche de texte

, doc_1 doc_2 , . doc_3 , , . 





, , . doc_1 , doc_2, doc_1 .





. jc . .





Index de recherche de contenu pour rechercher des images par contenu

, :





  1. qw C qc, . C — , , .





  2. , qc, . , , .





  3. jc qc, s. , .





- , . 10 000 10 000 , 40 . , 10 000 . , 40 80 . , , !





, , , , mĚ‚i , 5 000 . , 10 .





, , , . s = qcjc, qc — 10 000 , jc — 10 000 , . , s





qc jc , . , 10 qc 50 jc . :





  • 10 000- 50 , 50 . ; 50 ( ) 50 ( ) 300 .





  • 10 000, 50 , 200 . , 500 80.





  • qc 10 , 10 — . , .





, . , , , — .





-. , OCR- , .





?

, , Dropbox. . , , . , , , , , " , " .





, , . , "Machine Learning Deep Learning", NVIDIA.





, :





  • Data Scientist





  • Data Analyst





  • Data Engineering









  • Fullstack- Python





  • Java-





  • QA- JAVA





  • Frontend-









  • C++





  • Unity





  • -





  • iOS-





  • Android-









  • Machine Learning





  • "Machine Learning Deep Learning"





  • " Data Science"





  • " Machine Learning Data Science"





  • "Python -"





  • " "









  • DevOps








All Articles