馮興杰,程毅瑋
(中國民航大學 計算機科學與技術(shù)學院,天津 300300)
隨著圖像數(shù)量急劇增加,從海量圖像中檢索所需信息變得越來越困難,基于內(nèi)容的圖像檢索算法是解決該問題的重要手段?;趦?nèi)容的圖像檢索依賴于兩個關(guān)鍵技術(shù):圖像特征提取和匹配。
在圖像特征提取環(huán)節(jié),傳統(tǒng)方式是基于人工提取的圖像底層特征,但底層視覺描述符存在表達能力不夠強的問題。而與人工提取特征相比,深度卷積神經(jīng)網(wǎng)絡(luò)更能獲得圖像的內(nèi)在特征,提取的特征也更準確[1,2]。在匹配環(huán)節(jié),傳統(tǒng)的線性掃描通過與數(shù)據(jù)庫中各數(shù)據(jù)點逐個進行相似性計算來實現(xiàn)。隨著數(shù)據(jù)庫規(guī)模變大以及特征向量維度變高,計算量變得巨大,搜索成本也逐步提升。而基于哈希的圖像檢索方法可以降低搜索的空間復(fù)雜度與時間復(fù)雜度,其將圖像的高維的特征表示映射為緊致的二維碼,實現(xiàn)了數(shù)據(jù)降維并能在低維空間內(nèi)進行度量運算[3]。
本文提出了一種基于深度卷積神經(jīng)網(wǎng)絡(luò)來學習二進制哈希編碼的模型,它結(jié)合了深度卷積神經(jīng)網(wǎng)絡(luò)和哈希算法的優(yōu)勢。首先在深度卷積神經(jīng)網(wǎng)絡(luò)中添加了用于生成哈希碼的哈希層,并將兩個完全連接層直接連接到哈希層;其次將輸入哈希層的特征表示先分割再映射成對應(yīng)哈希碼;最后在損失函數(shù)中加入分類誤差與量化誤差。在CIFAR-10和NUS-WIDE數(shù)據(jù)集上的實驗結(jié)果表明,本文模型在檢索精度方面表現(xiàn)優(yōu)越。
哈希方法在速度以及存儲方面具有優(yōu)勢,故被廣泛用于大規(guī)模圖像的檢索中。早期利用哈希方法進行圖像檢索是將人工提取的圖像底層特征映射,從而產(chǎn)生哈希向量。目前已經(jīng)提出了許多的哈希算法,現(xiàn)有的哈希算法大致可以分為3類,無監(jiān)督的、半監(jiān)督的和監(jiān)督的方法。
無監(jiān)督的哈希方法使用無標簽的數(shù)據(jù)來學習哈希函數(shù),其中最經(jīng)典的哈希方法是局部敏感哈希方法(locality sensitive hashing,LSH)。LSH第一次將圖像與哈希聯(lián)系起來,其在特征空間中將數(shù)據(jù)點隨機投影到具有隨機閾值的隨機超平面上生成二進制代碼,利用簡單的隨機映射作為哈希函數(shù),其缺點是只有生成較長的哈希碼才能實現(xiàn)較為理想的檢索效果。半監(jiān)督的哈希方法利用有標簽的和無標簽的數(shù)據(jù)來學習哈希函數(shù),其中最具代表性的是半監(jiān)督哈希(semi-supervised hashing,SSH),它將監(jiān)督信息用于哈希函數(shù)的學習以提高哈希碼的質(zhì)量,通過最小化標簽數(shù)據(jù)點對的經(jīng)驗誤差,使哈希碼盡量平衡及獨立,從而避免過度擬合。監(jiān)督的哈希方法旨在利用有標簽的數(shù)據(jù)來學習哈希函數(shù),其中典型的方法是基于核函數(shù)的監(jiān)督哈希(supervised hashing with kernels,KSH),利用漢明距離和編碼內(nèi)積等價的特點逐位地訓(xùn)練哈希函數(shù)[4],從而產(chǎn)生較為有效的哈希碼。
除了哈希方法的研究,圖像表示在基于內(nèi)容的圖像檢索中也起著至關(guān)重要的作用?;赟IFT的方法在2012年之前一直是研究的重點,而2012年Krizhevsky等使用AlexNet神經(jīng)網(wǎng)絡(luò)模型[5]在ILSRVC 2012上取得當時最高的識別準確率,從此研究重心開始向基于深度學習特別是卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)的方法轉(zhuǎn)移[5,6]。
近幾年也出現(xiàn)了深度學習與哈希技術(shù)相結(jié)合的方法。較為典型的有深度卷積神經(jīng)網(wǎng)絡(luò)哈希[7](convolutional neural networks hashing,CNNH),它將哈希學習過程分解為學習近似哈希碼的階段和基于深度網(wǎng)絡(luò)同時學習圖像特征和哈希函數(shù)的階段,近似哈希碼用于指導(dǎo)圖像表示的學習,但是存在學習的圖像表示不能給予近似哈希碼反饋的問題,這種單向交互具有局限性,分階段的學習會降低層與層之間的協(xié)作。LIN K等[8]提出了端對端的深度卷積網(wǎng)絡(luò)模型,雖然模型在學習圖像的特征表示時,能夠一并進行哈希函數(shù)的學習,且哈希編碼也能及時接受到所學圖像特征的反饋,但是其未能更好地利用標簽信息和偏向視覺外觀的多樣信息,也沒有考慮到哈希碼間存在的信息冗余問題。
本文提出的基于深度卷積神經(jīng)網(wǎng)絡(luò)與哈希機制的圖像檢索框架如圖1所示。深度卷積神經(jīng)網(wǎng)絡(luò)提取出輸入圖像的特征表示;進入哈希層后,圖像的特征表示被映射成便于檢索匹配的哈希碼;哈希碼進入損失層后,通過優(yōu)化計算出的損失函數(shù),利用反向傳播算法對網(wǎng)絡(luò)進行訓(xùn)練,得到模型參數(shù)后再將查詢圖像輸入到在訓(xùn)練集上訓(xùn)練好的模型中,獲得對應(yīng)哈希碼后與數(shù)據(jù)集中各圖像的哈希碼進行相似性匹配,得到最接近圖像從而完成圖像檢索。具體方法詳細描述如下。
由于深度卷積神經(jīng)網(wǎng)絡(luò)具有很強的自主學習能力及特征表達能力,所以利用深度卷積神經(jīng)網(wǎng)絡(luò)能更加準確精細地描述圖像內(nèi)容。本文利用深度卷積神經(jīng)網(wǎng)絡(luò)提取輸入圖像的中間特征表示。選用的深度卷積神經(jīng)網(wǎng)絡(luò)包括5個大的卷積層以及兩個完全連接層。研究[9]結(jié)果表明第二個完全連接層F7輸出的特征可作為圖像的視覺特征,但其過多地依賴于類且具有較強的不變性,不利于捕捉圖像間的細微的語義區(qū)分,而將哈希層連接到CNN中的兩個完全連接層,能夠減輕存在的信息丟失情況,并使哈希編碼更好地利用偏向視覺外觀的多樣化信息,所以把哈希層的輸入分為成了兩部分,一部分來自第二個完全連接層F7,另一部分來自第一個完全連接層F6,如圖1所示。
哈希層將深度卷積神經(jīng)網(wǎng)絡(luò)輸出的圖像特征表示映射成便于檢索的二進制哈希碼。我們將哈希層添加在第二個完全連接層F7之后,原先模型中的F8能夠?qū)φZ義進行編碼并完成分類任務(wù),哈希層為后續(xù)的F8提供了來自F6以及F7的豐富圖像特征的抽象,而哈希層的神經(jīng)元活動也受到了后續(xù)層F8的調(diào)控。所以可以認為哈希層是F6、F7與F8的中間橋梁,其橋接了圖像的中級特征和高級語義。
為了能充分利用偏向于視覺外觀的多樣化的信息,將哈希層連接到兩個完全連接層, 因此將深度哈希函數(shù)定義為
h(x;w)=sign(wT[f6(x);f7(x)])
(1)
圖1 基于深度卷積神經(jīng)網(wǎng)絡(luò)與哈希機制的圖像檢索框架
其中,w表示哈希層中的權(quán)重,f6(·) 和f7(·) 分別表示完全連接層F6和F7輸出的特征向量,為了簡潔起見,在此省略了f6(·) 和f7(·) 的偏差項和參數(shù)。為了獲得k位二進制碼,可以計算
h(x;W)=[h1(x;w1),h2(x;w2),…,hk(x;wk)]
(2)
將哈希層設(shè)置為一個簡單的完全連接層,哈希層中的神經(jīng)元被sigmoid函數(shù)激活,從而產(chǎn)生了在 (0,1) 區(qū)間的激活值,再通過閾值函數(shù)二值化激活值來獲得二進制代碼。但是,每一位哈希碼的生成都依賴于上一層傳遞來的完整的圖像特征表示,不利于保持生成的各位哈希碼之間的獨立性,同時會造成哈希碼的信息冗余??紤]到這個問題,我們先把上層傳來的中級圖像特征表示進行分割,避免重復(fù)信息指導(dǎo)哈希碼的生成,從而減少哈希碼間的冗余,提高哈希碼的獨立性及質(zhì)量。我們將上層輸出的中間圖像特征表示分割為長度均等的k段,分割成段的數(shù)目就是編碼出的哈希碼的位數(shù),再將k段特征表示各自進入完全連接層以及激活函數(shù)。哈希函數(shù)為
hi(x;w)=sign(wT[Xi(f6(x);f7(x))]),i=1,2,…,k
(3)
其中,hi(x;w) 表示獲得的第i位的哈希碼,Xi(f6(x);f7(x)) 表示分割后第i段圖像特征表示。
在選擇激活函數(shù)時,若將符號函數(shù)直接作用于完全連接層的輸出,能夠?qū)⑤敵鰢栏裣拗茷槎M制輸出,但是其不可微分,從而難以通過反向傳播梯度更新梯度,不利于模型的優(yōu)化。若選擇ReLU函數(shù),最小化損失函數(shù)時就會面對難以直接優(yōu)化的離散優(yōu)化問題。為了將連續(xù)輸出用做哈希碼的松弛可以利用sigmoid或tanh作為激活函數(shù),但是sigmoid函數(shù)的輸出值不是以0為中心值,其輸出范圍在 (0,1) 的區(qū)間內(nèi)總是正數(shù),這樣會造成非0均值的信號輸入到后一層的神經(jīng)元,從而對梯度產(chǎn)生影響。在訓(xùn)練過程中參數(shù)的梯度值總是全部為正數(shù)或全部為負數(shù),故在反向傳播過程中要么都往正方向更新,要么都往負方向更新,使得收斂緩慢且不容易到達最優(yōu)值。而tanh函數(shù)是0均值的,解決了sigmoid函數(shù)的非0均值的問題,更加有利于提高訓(xùn)練效率,故選擇tanh函數(shù)作為激活函數(shù)。哈希函數(shù)為
hi(x;w)=tanh(wT[Xi(f6(x);f7(x))]),i=1,2,…,k
(4)
為了得到用于快速圖像檢索的二進制哈希碼,將連續(xù)輸出應(yīng)用閾值函數(shù)得到離散的哈希碼。
由于現(xiàn)有的模型不能保證漢明距離近的編碼在語義上也接近,故考慮利用二進制編碼與標簽信息之間的關(guān)系來提高哈希碼的語義表達能力。先用線性分類器來模擬二進制編碼與標簽信息之間的關(guān)系
Y=WTB
(5)
其中,W=[w1,w2,…,wc] 是分類器的權(quán)重,而Y=[y1,y2,…,yN] 是標簽向量,線性分類器選擇l2損失,損失函數(shù)為
(6)
哈希碼經(jīng)歷了從連續(xù)值通過閾值化得到離散值,必然會產(chǎn)生一定的量化誤差。該量化誤差表示為
(7)
其中,bi表示閾值化后的離散的二進制哈希碼,s表示未經(jīng)過閾值化的連續(xù)值編碼。該損失函數(shù)的目標是讓哈希層輸出的未經(jīng)過閾值化處理的連續(xù)值編碼能夠盡可能地接近量化值-1和1,從而降低由連續(xù)值閾值化為離散值過程中帶來的誤差。
結(jié)合式(6)、式(7),得到損失函數(shù)
(8)
其中,μ是權(quán)衡參數(shù),決定著量化誤差在其中的重要程度。
在基準數(shù)據(jù)集CIFAR-10和NUS-WIDE7上對所提模型進行了實驗與評估,實驗中使用隨機梯度下降來訓(xùn)練模型,該模型經(jīng)過35 000次迭代訓(xùn)練,學習率為0.001。在實驗中,設(shè)置權(quán)衡參數(shù)μ取值為0.2。
CIFAR-10數(shù)據(jù)集包含10個對象類別,每個類由6000幅圖像組成,總共產(chǎn)生60 000幅圖像,大小為32×32[10]。數(shù)據(jù)集被分成訓(xùn)練和測試集,分別有50 000個和10 000個圖像。NUS-WIDE[11]數(shù)據(jù)集包含從Flickr收集的近270 000張圖像。每一個圖像都與81個語義概念中的一個或多個標簽相關(guān)聯(lián)。為了公平比較,使用與21個最常見標簽相關(guān)聯(lián)的圖像子集,其中每個標簽與至少5000個圖像相關(guān)聯(lián)。
實驗中采用了不同返回樣本數(shù)的精確曲線、不同位數(shù)的均值平均精度mAP(mean average precision)和漢明距離2內(nèi)的精確率作為評估圖像檢索質(zhì)量的評估指標。
(1)不同返回樣本數(shù)的精確率:使用基于排名的標準進行評估[8],其指的是與查詢圖像距離最小的k張圖像中,正確結(jié)果所占的比例。具體來說,給定查詢圖像q和相似性度量,通過精度評估前k個圖像相對于查詢圖像q的排名
(9)
其中,Rel(i) 表示查詢q和排名為i的圖像之間的真實標注準確性關(guān)聯(lián)。這里只考慮了測量相關(guān)性的類別標簽,所以Rel(i)∈{0,1}, 當查詢圖像和排名為i的圖像具有相同標簽時,Rel(i) 用1表示,否則用0表示。
(2)平均準確率mAP是指數(shù)據(jù)集中所有類的平均精度的平均值,即將所有類別的平均精度求和之后再除以所有類別數(shù);
(3)漢明距離小于2的準確率是指,計算所有圖像與給定查詢圖像q的漢明距離,在漢明距離小于2的圖像中正確結(jié)果在其中所占的比例。
將本文方法與目前較為典型的幾種方法進行了比較。我們大致將比較方法分為兩類,一類是傳統(tǒng)的哈希方法,另外一類是深度哈希方法。傳統(tǒng)的哈希方法一般分為無監(jiān)督哈希方法和監(jiān)督的哈希方法。無監(jiān)督哈希方法選擇了典型的LSH,SH,監(jiān)督的哈希方法選擇了典型的KSH,而深度哈希方法我們選擇CNNH[7],CNNH+[7],DLBHC[8]這3種作為對比方法。
表1給出了在數(shù)據(jù)集CIFAR-10上上述幾種代表不同類型的哈希方法與本文方法在mAP值對比。表2給出了在數(shù)據(jù)集NUS-WIDE上上述幾種代表不同類型的哈希方法與本文方法在mAP值對比。通過表1、表2可觀察到,本文所提哈希方法與其它對比哈希方法相比,mAP值是最高的,驗證了本文方法具有優(yōu)秀的檢索性能。
表1 在數(shù)據(jù)集CIFAR-10上不同方法的mAP值對比
表2 在數(shù)據(jù)集NUS-WIDE上不同方法的mAP值對比
從表中可以看出,本文提出的方法與傳統(tǒng)的哈希方法相比,mAP值提升了1倍到6倍不等,性能上有了質(zhì)的提升。這是由于深度學習模型在圖像特征的提取與表示方面有著突出的能力,將深度模型與哈希方法相結(jié)合可以利用其強大的圖像表示來學習哈希碼,從而提高生成的哈希碼的質(zhì)量,而且相比于無監(jiān)督的哈希方法,利用監(jiān)督信息可以提高二進制哈希碼學習性能。而將本文方法與其它幾種較為經(jīng)典的深度哈希方法進行比較,本文所提方法的mAP值最高,性能也最好。CNNH以及CNNH+不是端對端的系統(tǒng),它不能同時完成圖像的特征表示以及哈希碼的生成。而將這兩者統(tǒng)一到一個學習階段的端對端的系統(tǒng),相比CNNH以及CNNH+性能更好,因為學習過程的統(tǒng)一加強了層與層的協(xié)作性,學習的近似哈希碼用于指導(dǎo)圖像表示的學習,而學習的圖像表示也有利于學習更好的近似哈希碼。這種雙向交互使得生成的哈希碼質(zhì)量得到了進一步地提高。而相比于DLBHC,本文所提方法的性能也有優(yōu)勢。本文所提方法考慮到了哈希層輸入存在信息丟失的情況、生成哈希碼間的信息冗余情況和分類量化誤差等問題,因此本文方法獲得的哈希碼質(zhì)量更好,圖像檢索性能更強,mAP值更高。
圖2~圖5給出了在CIFAR-10和NUS-WIDE這兩個數(shù)據(jù)集上,利用不同位數(shù)下漢明距離小于2的正確率以及不同位數(shù)下top-k的檢索正確率這兩種評價指標進行評價后的比較結(jié)果。從圖中可以看出,本文的方法的檢索性能均優(yōu)于現(xiàn)有的其它方法。
圖2 在數(shù)據(jù)集CIFAR-10上不同返回樣本數(shù)的精確率
圖3 在數(shù)據(jù)集NUS-WIDE上不同返回樣本數(shù)的精確率
圖4 在數(shù)據(jù)集CIFAR-10上漢明半徑2內(nèi)的精確率
圖5 在數(shù)據(jù)集NUS-WIDE上漢明半徑2內(nèi)的精確率
為了驗證提出模型中幾個重要組件的有效性,將本文模型與未將F6層輸出直接輸入到哈希層的模型(簡稱為來源不變模型)、未將哈希層的輸入進行分割再生成哈希碼的模型(簡稱為未做分割模型)、未將分類量化損失考慮在其中的模型(簡稱誤差損失模型)以及不做任何限制的模型(簡稱為未做限制模型)進行比較。未做限制模型是未能更好地利用偏向視覺外觀的多樣化信息、存在生成哈希碼信息冗余、獨立性不強且未能將分類量化誤差考慮在其中的原始模型。來源不變模型指的是未將第一個完全連接層的輸出直接輸入到哈希層的模型,其未能更好地利用偏向視覺外觀的多樣化信息。未做分割模型是哈希層未對其輸入做任何處理,存在生成哈希碼信息冗余、獨立性不強等問題的模型,而誤差損失模型是指未能將分類量化誤差考慮在內(nèi)的模型。表3和表4給出了本文模型與未做限制、未做分割、誤差損失以及來源不變這幾種模型在兩個數(shù)據(jù)集CIFAR-10和NUS-WIDE上mAP值的對比結(jié)果。
表3 數(shù)據(jù)集CIFAR-10上 MAP值對比
表4 數(shù)據(jù)集NUS-WIDE上top-5000近鄰域的MAP值對比
從表3、表4中可以看出,本文模型與未做分割、誤差損失和來源不變這幾種模型的mAP值均比未做限制模型的mAP值有了一定的提升,說明將哈希層的輸入來源進行調(diào)整、將哈希層的輸入進行分割再生成對應(yīng)哈希碼以及將分類量化誤差考慮進損失函數(shù),均能在一定程度提高模型的mAP值,驗證了模型中這幾個重要組件的有效性,說明本文模型確實能夠更好地捕捉圖像間細微的語義區(qū)分,減輕信息丟失情況以及哈希碼的信息冗余情況,從而提高生成哈希碼的質(zhì)量及圖像檢索的性能。而且本文模型生成較短的哈希碼,與未做限制模型生成的長度較長的哈希碼相比,檢索精度甚至更高。如表3中在數(shù)據(jù)集CIFAR-10上,本文模型生成的12位哈希碼的mAP值高于未做限制模型生成的48位的哈希碼,表4中在數(shù)據(jù)集NUS-WIDE上,本文模型生成的12位哈希碼的mAP值高于未做限制模型生成的48位的哈希碼。在同樣的檢索精度要求下用較短的哈希碼來實現(xiàn)圖像檢索,能進一步降低圖像檢索任務(wù)中計算和存儲的成本,也更有利于在大型圖像數(shù)據(jù)集中進行圖像檢索。
本文提出一種高效的深度學習框架,利用圖像與標簽信息進行二進制哈希碼的學習,有利于在大型圖像數(shù)據(jù)集中進行圖像檢索。為了解決圖像信息丟失問題,使哈希編碼更好地利用偏向視覺外觀的多樣化信息,添加了用于生成哈希碼的哈希層,并將兩個完全連接層的輸出直接輸入到哈希層;為了減少哈希碼的信息冗余,提高生成哈希碼間的獨立性,將兩層完全連接層輸出的中間圖像特征表示分割輸入哈希層;為了讓二進制哈希碼的學習充分利用標簽信息,降低連續(xù)值閾值化為離散值過程中的誤差影響,將分類誤差與量化誤差加入到損失函數(shù)中。實驗結(jié)果表明,所提出的方法在檢索精度方面優(yōu)于其它現(xiàn)有的哈希方法。