李子龍,周 勇,鮑 蓉,王洪棟
(1.徐州工程學院信息工程學院,江蘇徐州 221018;2.中國礦業大學計算機科學與技術學院,江蘇徐州 221116)
(?通信作者電子郵箱lzl@xzit.edu.cn)
近年來,距離度量學習在圖像檢索、行人再識別、聚類等方面都有著很好的應用,已經成為計算機視覺領域的研究熱點之一。隨著深度學習的飛速發展,許多專家提出了深度距離度量的方法[1]。深度距離度量旨在通過深度神經網絡學習訓練樣本到特征的映射。在該映射下,相似樣本的距離更為接近,而相異樣本的距離則更為遠離。
為了學習樣本到特征的映射函數,設計合適的距離度量損失函數是提高深度神經網絡性能的重要因素。對比損失是深度距離度量學習中經常被使用的一類損失函數[2-4]。通過該損失函數能使正樣本對特征向量之間的距離最小化,而使負樣本對特征向量之間間隔一定的距離。三元組損失使用正樣本對和負樣本對組成三元組[3,5],在對比損失的基礎上進一步考慮了類內距離和類間距離的相對關系。相比負樣本對,這樣會使得正樣本對在映射后的特征空間里距離更近。由于構造三元組的數量往往巨大,一些學者提出通過減少三元組的數量來降低算法的復雜度[6-7]。文獻[8]中提出了一種層次的三元組損失結構,該方法將采樣和特征嵌入結合在一起進行學習;文獻[9]中提出了一種距離加權采樣的方法,它是基于相對距離進行樣本選擇;文獻[3]中提出在訓練過程中充分利用小批量數據來構建成對距離矩陣,并使用結構化損失函數來學習特征嵌入;文獻[3]中的工作后來在文獻[10]中進行了擴展,提出了一種基于結構化預測的距離度量方案,并用其去優化聚類效果;文獻[11]中擴展了三元組的思想,允許在多個負樣本之間進行聯合比較;文獻[12]中考慮了角度關系,提出了一種新穎的角度損失函數。
上述方法都是使用單一的距離度量去適應多樣化的數據,也就是從整個訓練集上學習距離度量,這容易忽略訓練樣本間的局部差異性,在數據類內變化大、類間模糊的情況下就顯得力不從心;而且使用單一、全局的距離度量容易導致過擬合。為此,一些學者嘗試對訓練樣本分組,然后在組內對局部差異性進行距離度量學習,并使用集成技術進一步增強其性能。如文獻[13]較早將集成學習的思想引入到度量學習中;文獻[14]中使用基于Boosting 的度量學習算法去計算按層次結構組織的人臉數據;文獻[15]中提出采用多個基于視覺注意機制的學習者進行集成;文獻[16]中建議將訓練數據的標簽隨機分組,并以此來集成多個相關的嵌入模型。
上述這些集成的方法主要關注訓練過程的集成,并不是針對距離度量的集成,而且不能同時實現神經網絡和弱學習者的端到端訓練。本文采用Boosting 算法的思想,構造多個三元組深度相對距離度量的級聯模型,每個相對距離對應卷積神經網絡(Convolution Neural Network,CNN)全連接層中所劃分的單獨的一組,每一組對應的全連接層代表一個弱分類器,所有組共享CNN 的底層表示。在Boosting 框架中,不斷地更新訓練樣本的權重,使得后續的相對距離度量更加關注那些難樣本上。為了有效評價三元組訓練樣本的相近程度,本文對經過神經網絡映射的三元組訓練樣本的相對距離進行閾值化處理,并使用線性分段函數作為相對距離的評價函數。該評價函數會作為弱分類器不斷加入到Boosting 框架中去,最終生成一個強分類器。為了優化弱分類器和神經網絡的參數,本文采用交替優化的方法來獲得最優值。相比經典的基于三元組損失的距離度量方法,本文方法在深度神經網絡上并沒有引入額外的參數,且在學習評價函數參數時所花費的代價也并不太大。
讓X=[x1,x2,…,xN]表示N個挑選而成的三元組訓練樣本。其中,第i個三元組訓練樣本表示為,它對應一個三元組標簽yi∈{-1,+1}。是組成三元組訓練樣本的三個訓練樣本,稱為錨點樣本。如果這三個訓練樣本的類別一樣,都屬于正例樣本,則yi=+1;如果只有的類別一樣,都為正例樣本,而為負例樣本,則yi=-1。
本文使用多個神經網絡,第i個三元組訓練樣本xi=經過所學習的第m個神經網絡映射后的三元組為。根據Boosting 算法的思路,本文使用一組對應多個神經網絡的三元組訓練樣本的相對距離弱分類器去構造一個強分類器,如下式所示:
其中:M是弱分類器的數量,φm是三個訓練樣本經過第m個神經網絡映射的特征值之間兩兩組合的相對距離評價函數。為了評價三個訓練樣本映射后的相對距離,使得相同類別的三個訓練樣本映射后的相對距離更為靠近,而不同類別的三個訓練樣本映射后的相對距離更為遠離,本文使用了一個適應能力更強的相對距離評價函數,其定義如下式所示:
在Boosting 算法中,每一次迭代都會產生一個新的弱分類器并加入到強分類器中。根據文獻[17]的介紹,一個弱分類器添加到強分類器的過程可以看作使下面的損失函數最小化的問題:
上式可進一步變為下面的優化問題:
在Boosting 算法中訓練多個CNN 的代價太高,為了避免較大的計算開銷,將CNN 的全連接層劃分為幾個不重疊的組,每個組代表一個弱分類器,而所有的弱分類器共享相同的底層表示,也就是將CNN 中連續的卷積層和池化層進行共享。參考文獻[3],本文采樣小批次數據,通過CNN 前向傳播,并在網絡的最后一層中組成三元組形式,最后根據損失函數反向傳播到網絡的全連接層。在本文實驗中,參與對比的相關文獻也是采用此種方案。為了訓練模型中的弱分類器,本文參考文獻[18]的思路,采用交替優化方法來學習深度神經網絡和距離評價函數的參數。
在第m次迭代,固定第m個深度神經網絡全連接層參數的同時來研究式(4)的優化問題。為此,本文先利用三元組訓練樣本的標簽對其進行拆解分析,如下式所示:
對拆解后的公式分別對αm和βm求偏導數并令偏導數為0,則可以得到這兩個參數的最優值,如下式所示:
在每次迭代之后,訓練樣本的權重被更新,如下式所示:
在訓練樣本的權重被更新后,將所有訓練樣本的權重進行歸一化處理。經過上面的分析,可知影響距離評價函數的參數實際上只與tm有關,其優化值采用窮舉法就可以得到。于是,一個最優的弱分類器被找到并可被加入到強分類器中去。而此時,被正確分類的樣本會被賦予較低的權重,而被錯誤分類的樣本則被分配較高的權重,這就會使得后面的弱分類器更加關注前面弱分類器不能判別的樣本。
接著固定第m個距離評價函數參數αm、βm、tm的值后,再去優化第m個深度神經網絡的全連接層參數。本文使用三元組損失函數去訓練深度神經網絡,訓練過程使用常規的反向傳播算法。具體來說,在前向傳播中,對每個三元組訓練樣本計算其映射后的兩兩組合的相對距離。而在反向傳播算法中,迭代地反向傳播三元組損失函數值去更新深度神經網絡的參數。參考文獻[5],使用經典的三元組損失函數,這種損失函數會懲罰正三元組訓練樣本的較大距離和負三元組訓練樣本的較小距離。使用前面根據學習得到距離度量閾值tm作為三元組相對距離的距離間隔,于是得到下面的三元組損失函數:
為了驗證本文方法的有效性,選取CUB-200-2011、Cars-196 和Standford Online Products(SOP)三個公開可用的數據集進行實驗,并與當前流行的深度距離方法(文獻[2-3,5,8,11-12,15-16,19-21]中的方法)在檢索任務上進行了比較。
數據集CUB-200-2011 由200 種的鳥類圖片構成,使用前100 個類別的5 864 幅圖像進行訓練,而剩余的100 個類別的5 924 幅圖像用于測試;Cars-196 數據集包含196 種不同類別的16 185 幅汽車圖像,使用前98 種不同類別的8 054 幅圖像用于訓練,而后98 種不同類別的8 131 幅圖像用于測試;數據集SOP 包含大量產品圖片,使用11 318 個類別的59 551 幅圖像用于訓練,而其他11 316個類別的60 502幅圖像用于測試。
為了評估本文方法在圖像檢索方面的性能,使用Recall@K來度量檢索效果。這個度量指標是這樣計算的:首先,對于測試集中的每幅圖像,從剩余的測試集中檢索出K幅最相似的圖像,這個相似性由本文所提出的三元組距離度量來定義;然后,如果這K幅檢索到的圖像中有一個與查詢圖像具有相同的標簽,則將召回值增加1;最后,最終的Recall@K值是召回值占所有測試圖像的百分比。在數據集CUB-200-2011 和Cars-196 上選擇K∈{1,2,4,8,16,32}來計算召回率,在數據集SOP上選擇K∈{1,10,100,1 000}來計算召回率。網絡結構上主要參考文獻[2]中使用GoogLeNet 作為特征提取器,并使用TensorFlow 來實現本文方法。實驗中將batch 的大小設置128,所有深度神經網絡均使用隨機梯度下降算法進行訓練。
弱分類器的數量對深度距離度量的效果有影響,為此,在CUB-200-2011、SOP 和Cars-196 這三個數據集上觀察弱分類器數量對距離度量的影響,如圖1 所示。從圖1 可以看出,隨著弱分類器數量的增加,Recall@1的值不斷增加,而后不斷下降。在Cars-196 數據集上,當弱分類的數量為4 時Recall@1的值達到頂峰,在SOP 和CUB-200-2011 這兩個數據集上,分別在弱分類的數量為5 和6 時Recall@1 的值達到頂峰,這說明在不同圖像數據集上進行圖像檢索的難易程度是不同的,在后面與不同方法對比實驗中也按照此方式設置。
圖1 弱分類器數量對圖像檢索性能的影響Fig.1 Influence of the number of weak classifiers on performance of image retrieval
特征向量的大小也是影響深度距離度量中的一個重要因素,因此,在數據集Cars-196上進行實驗以觀察不同特征向量的大小對檢索精度的影響。文獻[19]中的實驗針對特征向量大小從64 至1 024 的情況分析了它對檢索性能的影響,本文也進行同樣的實驗,并與文獻[19]中的方法進行對比分析,實驗結果如圖2所示。從圖2中可以看出,隨著特征向量大小的增加,檢索性能逐漸提高。當特征向量的大小為256 時,本文方法的性能逐漸平穩,在后面的實驗中將特征向量的大小設置為此值;而且本文方法在不同特征向量大小上的檢索性能都要優于文獻[19]方法。
圖2 不同大小的特征向量的大小對圖像檢索性能的影響Fig.2 Influence of feature vector size on performance of image retrieval
接下來在數據集Cars-196 上與文獻[6]方法比較了訓練和測試的檢索性能。從圖3 中可以看出,在訓練集和測試集上,本文方法的Recall@1 值之間的差距比文獻[6]方法的要小。這清楚地表明,本文方法并不傾向于導致過擬合。
圖3 不同時期數下訓練和測試的圖像檢索性能Fig.3 Image retrieval performance of training and testing in different epochs
本文方法和文獻[3,5,11,19]中的方法在數據集Cars-196 上訓練時的收斂速度的對比如圖4。從圖4 中可以看出,在最開始40 個時期內,本文方法的檢索性能就達到了最高值,比其他的方法快得多;并且,除了文獻[19]方法之外,其他方法都要100個時期以后開始慢慢收斂。
圖4 不同方法的收斂速度對比Fig.4 Convergence rate comparison of different methods
最后,將本文與當前流行的一些方法在圖像檢索任務上進行了比較,結果如表1 所示。從數據集CUB-200-2011 和Cars-196 上的實驗結果可以看出,本文方法優于其他的對比方法,包括高階元組(文獻[3,11])、角度損失(文獻[12])和集成的方法(文獻[15-16]);特別地,本文方法的Recall@1 值在極具挑戰性的CUB-200-2011 數據集上也取得了較好成績。在SOP數據集上,本文方法的表現也很出色。
表1 K取不同值時各方法在三個數據集上的Recall@K結果比較 單位:%Tab.1 Comparison of the Recall@K with different methods on three datasets when K takes different values unit:%
為了提高深度距離度量的性能,本文提出了一種新的深度距離度量學習方法,該方法將距離度量和神經網絡學習融入Boosting 算法中。使用線性分段函數評價通過神經網絡映射的三元組訓練樣本的相對距離,并將該評價函數作為Boosting 算法中的一個弱分類器。通過在數據集Cars-196 上進行訓練和測試的結果,表明本文方法具有較好的泛化性能;同時,通過在CUB-200-2011、Cars-196和SOP 數據集上與其他方法進行圖像檢索任務的比較,結果也表明本文方法的性能優于對比方法。