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