想像一下,擁有數十萬到數百萬張圖像的資料集合,而沒有任何描述每個圖像內容的元資料。我們如何建立一個能夠找到最能回答使用者搜尋查詢的圖像子集的系統?
我們基本上需要的是一個搜尋引擎,能夠根據圖像結果與搜尋查詢的對應程度對圖像結果進行排名,搜尋查詢可以用自然語言或其他查詢圖像來表達。
我們在這篇文章中解決問題的方法是訓練一個深度神經模型,該模型學習任何輸入圖像和文本的固定長度表示(或嵌入),並使其在歐幾里德空間中接近,如果文本對 -圖像或圖像-圖像是“相似的”。
我找不到足夠大的搜尋結果排名資料集,但我能夠獲取此資料集:http://jmcauley.ucsd.edu/data/amazon/ 它將電子商務項目圖像連結到其標題和描述。我們將使用此元資料作為監督來源來學習有意義的連接文字影像表示。為了管理運算和儲存成本,實驗僅限於時尚(服裝、鞋子和珠寶)商品和 500,000 張圖像。
我們擁有的資料集將每個圖像與用自然語言編寫的描述連結起來。因此,我們定義了一個任務,在該任務中我們想要學習圖像和文字的連接、固定長度表示,以便每個圖像表示接近其描述的表示。
此模型需要 3 個輸入:圖像(作為錨點)、圖像標題+描述(正例),第三個輸入是一些隨機採樣的文字(負例)。
然後我們定義兩個子模型:
圖像子模型產生 Anchor **E_a ** 的嵌入,文字子模型輸出正標題+描述E_p的嵌入和負文本E_n的嵌入。
然後,我們透過優化以下三元組損失來進行訓練:
L = max( d(E_a, E_p)-d(E_a, E_n)+alpha, 0)
其中d是歐幾里德距離,alpha是超參數,在本實驗中等於0.4。
基本上,這種損失允許做的就是使 **d(E_a, E_p)變小,使d(E_a, E_n) **變大,以便每個圖像嵌入接近其描述的嵌入,遠離其描述的嵌入隨機文字。
一旦我們學習了圖像嵌入模型和文字嵌入模型,我們就可以透過使用tsne 將它們投影到二維來可視化它們(https://scikit-learn.org/stable/modules/ generated/sklearn.manifold.TSNE. html)。
測試圖像及其相應的文字描述由綠線鏈接
從圖中我們可以看出,一般來說,在嵌入空間中,影像及其對應的描述是接近的。考慮到所使用的訓練損失,這是我們所期望的。
在這裡,我們使用幾個文字查詢範例來搜尋 70,000 張圖像中的最佳匹配項。我們計算查詢的文字嵌入,然後計算集合中每個圖像的嵌入。我們最終選擇嵌入空間中最接近查詢的前 9 張圖像。
這些例子表明,嵌入模型能夠學習有用的圖像表示和簡單單字組合的嵌入。
在這裡,我們將使用圖像作為查詢,然後在包含 70,000 張圖像的資料庫中搜尋與其最相似的範例。排名是根據每對影像在嵌入空間中使用歐幾里德距離的接近程度來確定的。
結果表明,生成的嵌入是圖像的高級表示,可以捕獲所表示對象的最重要特徵,而不會受到方向、光照或次要局部細節的過度影響,也無需經過明確的訓練。
在這個專案中,我們研究了機器學習模組,使我們能夠建立應用於圖像集合的基於關鍵字和圖像的搜尋引擎。基本概念是學習文字和圖像的有意義的聯合嵌入函數,然後使用嵌入空間中項目之間的距離對搜尋結果進行排名。
參考 :