動機
想象一下,如果有數(shù)十萬到數(shù)百萬張圖像的數(shù)據(jù)集,卻沒有描述每張圖像內容的元數(shù)據(jù)。我們如何建立一個系統(tǒng),能夠找到這些圖像的子集來更好地回答用戶的搜索查詢?
我們基本上需要的是一個搜索引擎,它能夠根據(jù)圖像與搜索查詢的對應程度對圖像結果進行排序,可以用一種自然語言表示,,也可以用其他查詢圖像表示。
我們將在本文中解決問題的方法是訓練一個深度神經模型,該模型學習任何輸入圖像和文本的固定長度表示形式(或嵌入形式),使得如果文本-圖像或圖像-圖像是“相似的”,則他們在歐氏空間中接近,。
數(shù)據(jù)集
我找不到足夠大的搜索結果排名數(shù)據(jù)集,但我能夠得到這個數(shù)據(jù)集:http://jmcauley.ucsd.edu/data/amazon/它將電子商務項目的圖像鏈接到它們的標題和描述。我們將使用這些元數(shù)據(jù)作為監(jiān)督源來學習有意義的聯(lián)合文本-圖像表示。為了管理計算和存儲成本,這些實驗僅限于時尚(服裝、鞋子和珠寶)物品和50萬張圖像。
問題設置
我們的數(shù)據(jù)集將每個圖像與用自然語言編寫的描述鏈接起來。因此,我們定義了一個任務,在該任務中,我們要學習圖像和文本的固定長度的聯(lián)合表示,以便每個圖像表示都接近其描述的表示。
模型
該模型有3個輸入:圖像(即錨點)、圖像標題與描述(即正例)和第三個輸入是一些隨機采樣的文本(即負例)。
然后定義兩個子模型:
圖像編碼器:Resnet50預訓練的ImageNet+GlobalMaxpooling2D
文本編碼器:GRU+GlobalMaxpooling1D
圖像子模型產生錨點E_a的嵌入,文本子模型輸出正標題和描述E_p的嵌入和負例文本E_n的嵌入。
然后,我們通過優(yōu)化以下?lián)p失函數(shù)進行訓練:
L = max( d(Ea, Ep)-d(Ea, En)+alpha, 0)
其中d為歐氏距離,alpha為超參數(shù),在本實驗中為0.4。
基本上,這種損失允許做的是使d(E_a,E_p)變小,使d(E_a,E_n)變大,這樣每個圖像的嵌入就接近于它的描述的嵌入,而遠離隨機文本的嵌入。
可視化結果
一旦我們學習了圖像嵌入模型和文本嵌入模型,我們就可以通過使用tsne (https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html)將它們投影到二維空間中來實現(xiàn)可視化。測試圖像及其對應的文本描述用綠線連接
從圖中可以看出,通常在嵌入空間中,圖像及其對應的描述是接近的。考慮到使用的訓練損失,這是我們期望的。
文字圖片搜索
在這里,我們使用幾個文本查詢示例來在一組70,000張圖像中搜索最佳匹配。我們計算查詢的文本嵌入,然后計算集合中每個圖像的嵌入。我們最終在嵌入空間中選擇最接近查詢的前9張圖像。
這些例子表明,嵌入模型能夠學習圖像的有用表示形式和簡單單詞組成的嵌入。
圖像搜索
在這里,我們將使用圖像作為查詢,然后在包含70,000張圖像的數(shù)據(jù)庫中搜索與之最相似的示例。排序是由每對圖像在嵌入空間內的歐氏距離決定的。
結果表明,生成的嵌入是圖像的高級表示,它捕獲了所表示對象的最重要特征,而不受方向、光照或局部細節(jié)的過度影響,也沒有經過明確的訓練。
結論:在這個項目中,我們研究了機器學習模塊,它允許我們構建一個基于關鍵字和圖像的搜索引擎,應用于圖像集合。其基本思想是學習一個有意義的文本和圖像的聯(lián)合嵌入函數(shù),然后利用嵌入空間中項之間的距離對搜索結果進行排序。
-
存儲
+關注
關注
13文章
4355瀏覽量
86177 -
keras
+關注
關注
2文章
20瀏覽量
6096
發(fā)布評論請先 登錄
相關推薦
評論