一種基于多層特征表示的實例級圖像搜索方法
【技術領域】
[0001] 本發明涉及圖像處理技術鄰域,尤其涉及一種基于多層特征表示的實例級圖像搜 索方法。
【背景技術】
[0002] 最近十年內,實例級別的圖像搜索引起了很大的關注,可以把該問題簡單描述為 給出一張實物圖像,讓你從數據集中找到相同實物的不同圖像或接近物體的圖像。該問題 的興起主要由于網購時消費者的一種需求,消費者希望上傳一張物體圖像,便能在網站上 顯示出同種圖像的銷售信息,如阿里的拍立淘便是基于此需求而開發的,但實際上到目前 為止,用戶體驗效果依然不好,主要由于以下幾個原因:
[0003] 網站上的圖像多是含有背景或者水印的圖像,干擾因素較大,同時用戶上傳的圖 像也是各種姿勢,有時上傳的圖像中物體較小,甚至不在圖像的中央,或者大部分被其他事 物所覆蓋,只顯示出一部分,如發圈這類飾品,圖像中很可能包含了人的頭發等事物,加大 了搜索難度。
[0004] 實例級別的圖像搜索注重局部特征,例如圖像上的商標等特征,這些是人類判斷 事物的一個重要標準,但是在類別級圖像搜索的時候,提取出來的特征更多的是注重類別 特征而非局部特征,這就要求修改算法,使得提取出來的特征中類別特征為主,局部特征為 輔,兩者兼具。
[0005] 實例級別的圖像搜索,在搜索時最好的結果是同一類的同一件商品的不同圖像, 其次是同一件商品的不同顏色的圖像或者有細微的差別,再其次才是同一類商品的不同圖 像,因此不僅要對類間圖像進行區分,同時也要求對于類內的物品也進行區分。
[0006] 傳統的圖像搜索算法采用的大多是手選識別特征的方式,例如SIFT算法,詞袋 (Bow)算法,局部特征聚合描述符(VLAD)算法,或者Fi sher向量(FV)算法和它們的變形。還 有一些相關算法用于改進圖像搜索的效果,例如利用Root-SIFT提高SIFT算法的判別能力, 用PCA,白化,signed square root(SSR)算法提高特征提取的泛化能力。圖像搜索的效果被 單個特征表示所限制,Multi-VLAD構造的單個圖像的多個表示明顯取得了更好的效果。
[0007] 近幾年,由于深度神經網絡的廣泛應用,尤其是卷積神經網絡(CNN)的應用,在圖 像視覺領域的多個任務中都取得了突破性的進展,例如圖像分類,目標檢測等。通過訓練多 層卷積神經網絡,人發現卷積神經網絡對于學習非線性特征具有較好的魯棒性,它不僅能 發現人們可以手動區分的特征,更能夠從圖像中發現一些不了解的但又非常重要的高層特 征,卷積神經網絡也已經被人們應用于圖像搜索當中,并取得優異的成績。
[0008] 常用的分類特征通常是取的深度卷積神經網絡的最后一個全相連層的特征,但該 層的特征對于實例級別的圖像搜索來說過于泛化,以至于缺少判別力,它更多的是擁有類 別特征,用于判別物體的不同類別,而對于類內的差別則很難判斷出來。最近的一些研究指 出,中間層的特征對于類內區別有更好的區分效果,但是選擇中間層更像是在局部特征和 類別特征中的一種權衡,能表示出兩者的部分信息,但都不完全,因此最好的方式還是找到 一種方法綜合這兩者。在本文中,會提出一種新的基于卷積神經網絡的特征融合的方法來 解決這個問題。
[0009]而且在卷積神經網絡中包含了一種重要的結構一一池化。對于類內信息的區分, 背景的影響變得更加的重要,在提取特征的同時,利用不同池化方式對圖像的不同影響,即 混合池化的方法,以降低背景對圖像的影響。
[0010]同時,由于不同損失函數會產生不同效果的訓練特征,結合softmax和triplet損 失函數的優點,提出一個了多任務學習結構,以幫助更好的學習一個實例級別的特征表示。 在研究中,發現t r i p 1 e t損失函數對于物體之間的區分擁有很好的效果,這是s 〇 f t m a X損失 函數所不能提供,但tr ip 1 et損失函數對于特征的泛化能力表現發面又不如sof tmax,因此 兩者缺一不可。
[0011]在阿里巴巴舉辦的圖像搜索大賽中測試了提出的方法,該比賽主要比較的是每張 查詢圖像前20的查詢結果,最終在比賽的數據集上的MAP值為41.9%,并取得了第三名的成 績。
【發明內容】
[0012] 針對現有技術中存在的缺陷或不足,本發明所要解決的技術問題是:提供一種基 于多層特征表示的實例級圖像搜索方法,利用深度神經網絡訓練,進行多任務基于實例的 圖像搜索,使之有效的找到相同物品的不同圖像。
[0013] 為了實現上述目的,本發明采取的技術方案為提供一種基于多層特征表示的實例 級圖像搜索方法,包括以下步驟:
[0014] (1)抽取多層特征:運用多層特征融合的方法,從輸入圖像中的inception模塊提 取出單層特征;
[0015] ⑵進行編碼學習(以GoogLeNet網絡為例),包括以下步驟:
[0016] (21)對數據進行降維:在每個inception層的后面進行平均池化和1x1的卷積,并 添加監督信號進單層特征編碼訓練;
[0017] (22)選擇混合池化的輸出特征作為輸入圖像的部分特征,混合池化包括最大池化 和平均池化,其連接得到的特征表示單層圖像特征,最后得到特征長度為256的單層特征;
[0018] (23)選擇輸入圖像中的inception模塊的中間七層進行特征提取,產生7個256維 單層圖像特征,并連接在一起產生最終的多層圖像特征表;
[0019] (3)使用多損失函數進行訓練:對于用于特征提取的每個inception模塊,先通過 softmax來訓練特征提取,降低數據維數;而后結合triplet損失函數訓練,使之在類間分類 上能取得更好的效果;
[0020] 作為本發明的進一步改進,所述Triplet損失函數的基本公式表示為:
[0021 ] Loss(Xi,Xi+,Xi-) =max(0,m+dist(Xi,Xi+,Xi-)_dist(Xi,Xi-))
[0022] 其中,Xl是給定的測試圖像,Xl+是給定圖像的正樣例,選定的是當前事物的所有相 同物品的不同圖像;ΧΓ是給定圖像的負樣例,負樣例選定的是與當前物品不同的其他物品 圖像;dist( .,.)表示的是兩張圖像特征之間的距離,計算特征之間的距離使用的是cosine 函數,參數m的值設為0.2。
[0023] 作為本發明的進一步改進,所述步驟(1)中獲得的的多個單層特征經過編碼學習 得到的特征表示用于之后triplet損失函數的單個圖像的參數輸入。
[0024]作為本發明的進一步改進,所述步驟(2)中的特征提取包括預訓練和微調,預訓練 階段只進行圖像特征提取并進行類類別程度的分類,在微調階段才加上triplet損失函數, 強化類內不同物體的區分能力。
[0025]作為本發明的進一步改進,所述預訓練階段的損失函數是基本的softmax損失函 數,而在微調階段,損失函數改為softmax損失函數和triplet損失函數的權重之和,如下列 公式所示:
[0026]
其中λ = 〇·5,損失函數中的sof tmax的值是sof tmax-1的輸出結果。
[0027]作為本發明的進一步改進,所述步驟(3)后還有步驟(4):進行測試,尋找圖像的最 優解,計算測試圖像與訓練圖像特征之間的距離,即cosine值,距離越小的,則被認為與測 試圖形越接近。
[0028]本發明的有益效果是:
[0029] 1.利用深度神經網絡訓練,進行多任務基于實例的圖像搜索,使之有效的找到相 同物品的不同圖像。
[0030] 2.提出一種編碼學習的方法,使得提取的特征更具有魯棒性,使之同時兼具局部 特征和類別特征。
[0031] 3.提出一種多任務的聯合利用softmax和triplet的損失函數提取特征,既能使特 征擁有很好的泛化性能,也能使特征很好的用于區分類間圖像以及類內不同事物的圖像。 [0032] 4.在使用triplet損失函數之前先使用混合池化,降低背景和噪聲數據對特征的 影響,增強分類效果。
【附圖說明】
[0033] 圖1是本發明特征抽取過程圖;
[0034] 圖2是本發明混合池化示意圖;
[0035] 圖3是本發明的對數據進行降維表;
[0036]圖4是本發明預訓練與微調所需要的網絡架構圖。
【具體實施方式】
[0037]下面結合【附圖說明】及【具體實施方式】對本發明進一步說明。
[0038]如圖1所示,本發明的一種基于多層特征表示的實例級圖像搜索,具備包括:
[0039] 一、多層基本特征
[0040]網絡架構是建立在現有的分類神經網絡的基礎之上的,例如VGG-16,GoogLeNet, 相比于G〇〇gLeNet,VGG-16擁有更多的參數,訓練網絡的時間需要更長,因此在本文中主要 以GoogLeNet為例,說明多層特征融合的方法。
[0041 ] GoogLeNet輸入圖像的大小為224x224,輸入層連接了多個卷積層,和9個 incept ion模塊,incept ion模塊由1x1,3x3,5x5這些小的卷積組成,最后是全相連層, softmax層,主要融合的就是部分inception模塊提取出來的中間特征。
[0042]現有的神經網絡主要是為了分類而設計的,常用網絡最后一層全相連層作為圖像 抽取得到