楊紅菊,陳庚峰
(1.山西大學 計算機與信息技術學院,山西 太原 030006;2.山西大學 計算智能與中文信息處理教育部重點實驗室,山西 太原 030006)
近幾年來,基于內容的圖像檢索方法被廣泛應用,并得到深入研究[1-5],更是將這一成果應用到人們的生活。圖像檢索是基于給定一個實例,在候選數(shù)據庫中尋找與之特征相似的圖像,其主要包括特征提取和相似度計算。特征的表達能力對檢索性能至關重要,并且其占用的磁盤存儲空間和相似度計算消耗的硬件資源也會影響圖像檢索的效率。提取一種既具有較強區(qū)分度的圖像特征向量,又能減少存儲空間及相似度計算所消耗的時間,一直以來是研究者們關注的重點。
傳統(tǒng)的圖像特征提取方法在過去取得了較好的結果,例如局部二進制模式(Local Binary Pattern,LBP)[6],方向梯度直方圖(Histograms of Oriented Gradients,HOG)[7],尺度不變特征轉換(Scale-Invariant Feature Transform,SIFT)[8]等,由于受到設備的限制,這些方法不能夠很好的捕獲到圖像特征和語義信息。
基于深度學習的卷積神經網絡在圖像特征提取上更加高效。一些相關研究表明,基于多個非線性映射層的卷積神經網絡在圖像檢索[1-5],分類[9-10],檢測[11]等相關領域取得了巨大突破。卷積網絡旨在構建輸入數(shù)據和標簽之間的映射關系抽取圖像的整體語義信息。不僅如此,基于深度模型的循環(huán)網絡在語音識別[12-13]和自然語言領域[14-15]也被深入研究。這些突破性的進展均歸功于深度學習模型強大的非線性擬合能力。而基于深度學習的卷積網絡在圖像檢索領域也有著廣泛的研究和應用。Krizhevsk等人[9]利用神經網絡中全連接層得到的特征進行圖像檢索,效果有所提升。Babenko等人[16]通過主成分分析將全連接層特征從高維映射到低維,提高了效率,但其采用的兩段式特征提取方法丟失了某些潛在的語義信息,從而削弱了網絡的特征編碼能力。Xia等人[17]提出了CNNH的圖像檢索方法,首先構造圖像的相似矩陣,然后將其分解得到的向量作為標簽,把圖像編碼為維度較低的二進制向量。但是構造相似度矩陣需要消耗巨大的計算機資源。Lin等人[18]通過添加編碼層更有效的學習到圖像的二進制特征,設定閾值來獲得輸出,以此提高效率。Yang 等人[19]對編碼層進行約束,提高特征編碼能力。Zhu等人[20]提出DSTH方法,通過探索輔助上下文模態(tài)來直接擴充離散圖像哈希碼的語義,對哈希碼施加離散約束,比特不相關約束和比特平衡約束,保證了語義轉移并避免信息丟失。Zhong等人[21]提出AgNet不僅可以進行基于圖像的圖像檢索還可以進行基于文本的圖像檢索,使得圖像檢索可以跨模態(tài)。不同于文獻[16-21]的網絡模型, Lai等人[22]使用NIN (Network in Network) 架構提取編碼特征,同時使用三元損失函數(shù)將相同標簽的圖像映射到距離較近的空間,提取圖像的編碼特征,取得了較好的效果。文獻[16-22]提出的方法雖然提高了圖像特征的編碼能力,但并沒有考慮到閾值操作產生的特征損失。
本文提出基于卷積神經網絡的約束哈希編碼的圖像檢索方法(Deep Constraint Binary Code,DCBC),在 fc1層的后面添加一個分類層fc5解決由于sigmoid操作所導致的特征損失,同時添加約束到編碼層以提升編碼特征的區(qū)分度。
本節(jié)介紹約束編碼網絡架構及對應的損失函數(shù),使用二進制向量替換全連接層高維圖像特征向量來表示圖像潛在的語義特征,并且在分類誤差的基礎上添加了兩種損失函數(shù)更新網絡權重,以便更好地提取圖像的語義信息。
卷積網絡由若干個非線性映射層組成,主要包括卷積層、池化層和全連接層。輸入圖像經過卷積層和池化層之后得到相應的特征圖。卷積層[23](Convolution layer,conv)通過卷積核提取圖像的局部特征,例如紋理、顏色等。池化層(Pooling layer,pool)對卷積層的特征圖進行下采樣操作。全連接層(Fully Connection layer,fc)將卷積層的特征圖扁平化處理,由三維的特征圖轉化為一維的向量,實現(xiàn)局部語義信息到全局特征的轉換。
圖1 約束編碼網絡架構圖
約束編碼網絡架構如圖1所示,主要包含卷積層和全連接層。卷積層的網絡架構和AlexNet網絡相同,卷積核提取圖像的三維局部紋理特征,將輸入圖像通過最大池化層進行下采樣操作。最后一個卷積層和第一個全連接層fc1連接,該層有4 096個神經元,使用一維向量刻畫圖像的全局語義信息。fc1后包含兩個分支,一個將圖像編碼為維度較低的哈希特征,稱之為fc2層。fc2層將高維的全連接層編碼為低維的特征向量。fc3層使用非線性sigmoid將fc2層的神經元編碼為0到1之間,fc3層也稱之為編碼層。fc4的神經元個數(shù)和圖像的類別相同,用于圖像分類。另一個分支直接在fc1后添加一個分類層fc5,該層的神經元個數(shù)和fc4相同,防止由編碼層的級聯(lián)低維映射和sigmoid函數(shù)造成的編碼特征損失。
約束編碼網絡在編碼層fc3的基礎上添加相應的約束條件提升編碼特征之間的區(qū)分度。同時在fc1層后又添加一個fc5層,解決編碼層的低維映射和非線性映射產生的分類誤差。在測試階段,給定輸入圖像I,對應的編碼特征如式(1)所示。
(1)
約束編碼網絡的損失函數(shù)主要由分類損失、編碼約束和編碼損失組成。編碼約束對編碼層的特征向量添加相應的約束條件,提升編碼層向量和其他類別特征的區(qū)分度。編碼損失是指由編碼層產生的分類誤差,本質上是一個分類損失。
1) 分類損失:分類損失就是預測標簽和真實值之間的誤差。如表達式(2)所示:
(2)
其中zj表示分類層中第j個神經元的激活值,m代表神經元的個數(shù),即圖像類別。
2) 編碼約束: 編碼層的特征由fc2層經過非線性映射sigmoid計算得到,神經元的數(shù)值分布在0到1之間。每個神經元的數(shù)值表示對某個潛在語義特征的刻畫程度。數(shù)值越大,表示該圖像對應的特征表現(xiàn)能力越強。例如,當前的神經元數(shù)值為0.01,表示該圖像不具備該特征,對應的0.9則反之。由于神經元的變化范圍較小,不同類別圖像特征之間的區(qū)分度較低,導致特征編碼能力較弱。為了提高特征的編碼能力,需要盡可能地提高不同類別圖像特征之間的區(qū)分度。
編碼約束旨在增強圖像特征的區(qū)分度,如果該圖像并不具備某個語義信息,則強制其神經元的編碼數(shù)值趨近于0,而不是在保持在0.5這種中立的狀態(tài)。本文通過最大化編碼層特征和0.5之間的歐式距離解決該問題。如式(3)所示:i表示圖像的索引,N表示批處理的大小,w表示網絡的訓練參數(shù)。
(3)
公式(3)雖然能夠增強編碼特征的區(qū)分度,但是卻會出現(xiàn)每個神經元的數(shù)值全部都趨向于0或者1這種特殊情況,削弱網絡特征的編碼能力。本文通過最小化編碼層的特征均值與0.5之間的歐式距離以解決該問題。如表達式(4)所示,其中mean表示求均值操作。
(4)
綜合式(3)和(4)得到最終編碼約束,如公式(5)所示。由于公式(3)和公式(4)的優(yōu)化方向不一致,因此在目標函數(shù)的優(yōu)化過程中,將公式(3)取反和公式(4)相加得到編碼約束的損失函數(shù)??梢哉J為公式(4)是公式(3)的約束條件。
(5)
3) 編碼損失:編碼損失是指由編碼層產生的分類誤差。從sigmoid曲線圖可以發(fā)現(xiàn)這種非線性映射會導致梯度消失,如果將這些低維映射進行級聯(lián)則會損失分類精度。本文通過建立分支網絡,在第一個全連接層fc1后添加一個分類層fc5,并計算分類誤差來解決問題。
L(w;α)=L(cls-fc4)+L(cls-fc5)+αL(constraint)
(6)
綜上所述,網絡的總損失由分類誤差L(cls-fc4),編碼約束L(constraint)和編碼損失L(cls-fc5)三部分組成。如公式式6所示,其中α表示編碼約束對應的損失權重。本文將在第2節(jié)研究該參數(shù)的選定對網絡分類的影響情況。
本文實驗基于開源的深度學習框架Caffe[24]實現(xiàn),采用隨機梯度下降優(yōu)化目標函數(shù)。其中每個批處理大小為64,學習率0.001,momentum為0.9,權重衰減因子設定為0.000 5, 全連接層中dropout因子設定為0.5,使用ImageNet數(shù)據集訓練得到的權重[9]初始化網絡的卷積參數(shù),超參數(shù)α設置為0.8。對于深度哈希的方法,訓練網絡時統(tǒng)一把圖像放縮為256×256,直接使用原圖像提取特征,對于非監(jiān)督學習方法均采用512維的GIST[25]特征學習哈希編碼特征。
CIFAR-10:常用的分類數(shù)據集之一,該數(shù)據集共包括6萬張圖像,分為10個類,每個類有6 000張圖像,其中50 000張訓練樣本和10 000張測試樣本,大小為32×32。數(shù)據集總共有6個批次,其中5個為訓練批次,剩余1個為測試批次,每個批次下有10 000個圖像。從每個類別下隨機選取1 000張圖像作為測試集。把每個類別下剩余的5 000張圖像隨機分配到5個訓練集上,可以不等份的進行分配但保持每個批次下的總數(shù)不變。5個訓練集之和包含來自每個類的正好5 000張圖像。
Caltech-256:是一個物體識別數(shù)據集也用作分類,該數(shù)據集是加利福尼亞理工學院收集整理的數(shù)據集,該數(shù)據集選自Google Image 數(shù)據集,并手工去除了不符合其類別的圖片。數(shù)據集包含257個類別,總計圖像個數(shù)30 607張,從每個類別中選出10張圖像作為測試集,其他的作為訓練集。在檢索過程中,使用測試集合的數(shù)據作為待查詢樣本,訓練集的數(shù)據作為候選樣本。
本文使用查準率和平均查準率(mean Average Precision,mAP) 作為網絡性能的評估指標,如公式(7),(8)所示,分別為查準率和平均查準率。通過和DH(Deep Hashing)[18],SSDH(Supervised Semantics-preserving Deep Hashing,SSDH)[19],ITQ(Iterative Quantization,ITQ)[26],LSH(Locality-Sensitive Hashing,LSH)[27]編碼方法的比較。LSH深度哈希編碼方法在網絡的后端插入一個全連接層,SSDH僅對編碼特征進行了條件約束,學習圖像的哈希編碼。
precision=(a/b)×100%
(7)
a表示檢索屬于同一類別的個數(shù),b表示檢索圖像總數(shù)。
(8)
|Q|代表查詢個數(shù),j代表查詢索引,mj表示檢索圖像個數(shù),k表示相似度排序的圖像索引,count(k)代表索引k之前的實例中,標簽正確的圖像個數(shù)。平均準確率可以理解為精確度曲線和召回率曲線所形成的面積。精確率表示檢索返回的樣本中正樣本的個數(shù)返回圖像個數(shù)的比例,召回率表示檢索返回的樣本中正樣本的個數(shù)和數(shù)據庫中總的正樣本個數(shù)的比例。理想情況下精確率隨著召回率的增長而變大,但實際情況下兩者往往成反比。
本小節(jié)使用CIFAR-10數(shù)據集評估約束編碼網絡的分類和檢索性能。分別采用24、32、64位的編碼特征表示圖像潛在的語義信息。
如圖2a所示,表示檢索返回的圖像個數(shù)和檢索精確度,從圖中可以看出,本文的DCBC編碼方法在檢索精確度上明顯高于SSDH和DH方法。對于編碼位數(shù)是否會影響檢索精確度,本文分別測試了24、32、64位編碼特征下的精確度。如圖2b所示,發(fā)現(xiàn)檢索精度隨著編碼位數(shù)的提升而增加,并且在其他方法上也有相同的效果。
表1表示不同方法在CIFAR-10上的平均查準率。通過數(shù)值數(shù)據表明相比于傳統(tǒng)LSH和ITQ哈希方法,本文DCBC編碼方法具有很大的優(yōu)勢。通過與DH和SSDH深度哈希方法的比較,DCBC編碼也具有更好的查準率。對于SSDH,高出0.32個百分點,這是因為在對編碼進行特征約束的同時也考慮到所產生的特征損失。
表1 CIFAR-10數(shù)據集上的平均準確率
為了明確參數(shù)α對網絡分類性能的影響,選取64位編碼特征進行實驗。由于編碼約束兩部分的損失權重和為1,所以本文將僅僅對一部分進行分析驗證。
如表2所示:表示編碼約束權重α對網絡分類性能的影響, 本文分別設定α為0.2,0.5,0.8和1.0??梢园l(fā)現(xiàn)在α=0.5時,網絡的分類性能最好,當α=0.8時,分類性能稍微比0.5下降一點,但也有一個相對較好的分類性。但是當α=1時,分類性能有所下降,這是因為α的作用是增加提取特征的區(qū)分度,使得編碼層的神經元激活值距離0.5越遠越好。當α=1時,神經元的激活值幾乎全為0或1,導致梯度消失從而降低了網絡的特征編碼能力。當a=0.2時,神經元的激活值又幾乎全為0.5,這樣使得網絡喪失區(qū)分特征能力。實驗表明通過對哈希編碼進行約束,可以增加特征區(qū)分度以及提高特征提取能力。
圖2 CIFAR-10的檢索精度示意圖
表2 CIFAR-10分類精度
如圖3a和3b所示,在Caltech-256數(shù)據集上進行相同的實驗,發(fā)現(xiàn)SSDH在相似圖像的個數(shù)上的平均查準率和在不同特征長度的精確度高于DH和SSDH。
本文對不同長度的編碼特征在平均查準率上進行評估,從表3可以看出在數(shù)據集Caltech-256上,SSDH的平均查準率低于DH,而DCBC約束編碼的平均查準率依然高于另外的兩個方法,表明本文提出的編碼方法學習到的圖像特征表達能力要優(yōu)于SSDH和DH。
表3 Caltech-256平均查準率
為了可視化DCBC編碼網絡中編碼層的神經元數(shù)值分布,本文從Caletch-256三個類別下隨機選出三張圖像分別在DH,SSDH,DCBC方法下實驗得到他們的編碼層的特征值直方圖,如圖4所示。第一列代表原圖,二三四列分別表示的是DH,SS-DH,DCBC模型分布圖。從圖中可以發(fā)現(xiàn)DCBC方法在0和1兩端有一個較均勻的分布,而SSDH和DH則都集中于兩端。從第一張圖AK47的直方圖中,可以發(fā)現(xiàn)DCBC學習到的特征分布在0.1~0.3和0.7~0.9之間,而其他的兩種方法學習到特征都偏向于0.1和0.9。無論是圖3的檢索精確度還是圖4中的特征值分布,直觀地顯示了本文DCBC編碼方法能夠更好地學習到圖像的語義特征。
圖3 Caltech-256的檢索精度示意圖
圖4 不同編碼方法產生的二進制特征的數(shù)值分布直方圖
以上在數(shù)據集CIFAR-10和Caletch-256上的實驗表明,本文的基于卷積神經網絡約束哈希編碼的檢索方法有一個更好的處理效果。同時將閾值操作和編碼約束產生的損失用于更新網絡權重,有利于網絡學習到更加有效的特征。
本文在傳統(tǒng)的深度哈希編碼網絡中添加了兩個全連接層提取圖像的二進制特征:在使用編碼約束提升特征之間的區(qū)分度的同時使用編碼損失防止產生梯度消失的風險。下一步,我們將尋找一種更為合適的損失函數(shù),并且引入attention 模型[28-29]對于不同的圖像區(qū)域賦予不同的權重進行特征編碼,進一步提升圖像的特征表達能力。