李泗蘭 郭 雅
(廣東創(chuàng)新科技職業(yè)學(xué)院信息工程學(xué)院 東莞 523960)
為了降低圖像檢索的空間復(fù)雜度與時(shí)間復(fù)雜度,研究者們?cè)谶^去十幾年提出了很多高效的檢索技術(shù),最成功的方法包括基于樹結(jié)構(gòu)的圖像檢索方法[1]、基于哈希的圖像檢索方法[2],其中,經(jīng)典的哈希方法是局部敏感哈希方法(Locality Sensitive Hashing,LSH)[3]和基于向量量化的圖像檢索方法[4]。相比基于樹結(jié)構(gòu)的圖像檢索方法和基于向量量化的圖像檢索方法,哈希技術(shù)將圖像的高維特征保持相似性的映射為緊致的二進(jìn)制哈希碼。由于二進(jìn)制哈希碼在漢明距離計(jì)算上的高效性和存儲(chǔ)空間上的優(yōu)勢(shì)[5],哈希碼在大規(guī)模相似圖像檢索中非常高效。
近幾年研究者們對(duì)基于CNN的深度哈希算法提出了多種模型[6~8],雖然檢索的效率在不斷提高,但是圖像語義和哈希碼之間的差異依然存在,而且深度哈希在多標(biāo)簽圖像檢索中的應(yīng)用還不夠成熟,仍需要大量的研究。本文中在多篇文獻(xiàn)的基礎(chǔ)上提出了利用成多標(biāo)簽作為監(jiān)督信息進(jìn)行學(xué)習(xí)的哈希方法。該哈希算法是針對(duì)多標(biāo)簽圖像研究結(jié)合深度學(xué)習(xí)與哈希碼生成的圖像哈希表示方法以及學(xué)習(xí)算法,形成針對(duì)多標(biāo)簽圖像的深度監(jiān)督哈希。該方法的基本思想包括:
1)將圖像的標(biāo)簽設(shè)定成標(biāo)簽個(gè)數(shù)的一組編碼,根據(jù)任意成對(duì)圖像之間的標(biāo)簽向量的漢明距離得到成對(duì)標(biāo)簽,得到標(biāo)簽矩陣,簡(jiǎn)化了圖像的多個(gè)標(biāo)簽,更方便作為監(jiān)督信息;
2)設(shè)計(jì)合適的損失函數(shù),本文中的損失函數(shù)包含了哈希碼與圖像語義之間的差異、圖像特征量化為哈希碼時(shí)的量化誤差以及所有圖像哈希碼與平衡值的差值;
3)本文的框架是在特征提取模塊后增加了含有sigmoid函數(shù)的隱藏層,以使得網(wǎng)絡(luò)輸出的特征值更接近于0或1。
在圖像檢索領(lǐng)域中存在很多基于成對(duì)標(biāo)簽的監(jiān)督哈希算法,如 KSH[9]、LSH[10]及 FastH[11]方法,這些方法都是基于手工設(shè)計(jì)特征的方法,沒有取得很好的效果。而后提出基于CNN的深度哈希算法,通過對(duì)相似度矩陣(矩陣中的每個(gè)元素指示對(duì)應(yīng)的兩個(gè)樣本是否相似)進(jìn)行分解,得到樣本的二值編碼,利用CNN和交叉熵?fù)p失對(duì)得到的二值編碼進(jìn)行多標(biāo)簽預(yù)測(cè),相比之前的方法性能有顯著提升。之后又相繼出現(xiàn)深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network Hashing,DNNH)[12]、DPSH[13]等提出端到端方法,使得學(xué)習(xí)到的圖像可以反作用于二值編碼的更新,更好地發(fā)揮出深度學(xué)習(xí)的能力。這個(gè)部分會(huì)講述本文的模型架構(gòu),這個(gè)模型是特征學(xué)習(xí)和哈希碼學(xué)習(xí)集合在一個(gè)端到端的框架里面。
其中,d(Li,Lj)表示的是兩個(gè)向量的漢明距離(兩個(gè)向量對(duì)應(yīng)位不同的數(shù)量),σ(g)=1/(1+exp(-z))表示的是sigmoid函數(shù),z表示任意實(shí)值,sigmoid函數(shù)的范圍為{0,1},其輸出可以表示兩張圖片相似的概率,然后利用sign函數(shù)將概率轉(zhuǎn)換為0或1,sij若為 1,則第 i,j張圖片相似,若為 0,則不相似,所有圖片的標(biāo)簽矩陣為S={sij}。
圖1顯示的是針對(duì)本文方法所構(gòu)建的端到端深度學(xué)習(xí)框架,該框架由兩部分組成,這兩部分分別是用于獲取圖像特征的卷積神經(jīng)網(wǎng)絡(luò)模塊和用于框架學(xué)習(xí)的損失函數(shù)模塊。
圖1 深度學(xué)習(xí)框架
在卷積神經(jīng)網(wǎng)絡(luò)領(lǐng)域存在很多通用的框架,如AlexNet[14]和 VGG[15],這些架構(gòu)集成了深度學(xué)習(xí)和哈希函數(shù)的創(chuàng)建,使用更加方便。本文基于AlexNet對(duì)特征學(xué)習(xí)模塊進(jìn)行介紹。
這個(gè)模塊由上下兩個(gè)卷積神經(jīng)網(wǎng)絡(luò)組成,這個(gè)兩個(gè)卷積神經(jīng)網(wǎng)絡(luò)有相同的結(jié)構(gòu)并且權(quán)值共享。每個(gè)網(wǎng)絡(luò)如AlexNet描述一致,前五層(F1-5)是卷積層,后接兩層(F6-7)全連接層。卷積層是用卷積核與前一層的局部輸出進(jìn)行卷積,全連接層將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間,在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到分類器的作用。整個(gè)模塊的前兩層及后三層都連接最大池化,取前一層局部輸出的最大值作為輸出,對(duì)圖片的高維特征進(jìn)行降維并保留其重要特征。每個(gè)卷積層和全連接層都包含有 ReLu(Rectified Linear Units)激活函數(shù)[16],使得訓(xùn)練的速度更快。
令θ表示第七層之前網(wǎng)絡(luò)的所有權(quán)重,將兩個(gè)圖像xi,xj分別輸入上下兩個(gè)卷積層,第七層輸出D維的特征向量個(gè)向量會(huì)同時(shí)輸入隱藏層,進(jìn)行成對(duì)標(biāo)簽的哈希函數(shù)的預(yù)測(cè)。
如圖1所示,損失函數(shù)是由兩部分組成:成對(duì)損失函數(shù)和平衡哈希碼損失函數(shù)。設(shè)計(jì)合適的損失函數(shù),然后利用隨機(jī)梯度下降算法(stochastic gradient descent,SGD)[17]進(jìn)行網(wǎng)絡(luò)權(quán)重優(yōu)化。成對(duì)損失函數(shù)是利用輸出兩個(gè)圖像的哈希碼的漢明距離判斷兩個(gè)圖像的標(biāo)簽是1或者0。第二類損失是針對(duì)生成有效哈希碼所設(shè)定的損失函數(shù),通過優(yōu)化隱藏層和0.5之間的差值之和,讓隱藏層的激活函數(shù)的輸出更接近于0或1,生成更為有效的哈希碼。
其中,WT表示的是第七層全連接層到隱藏層之間的權(quán)重,v表示偏差。所有圖片的哈希碼轉(zhuǎn)換成二進(jìn)制矩陣,本文根據(jù)LFH定義成對(duì)標(biāo)簽矩陣S的可能性為
針對(duì)成對(duì)標(biāo)簽矩陣S,成對(duì)損失函數(shù)采用交叉熵?fù)p失函數(shù)[18]進(jìn)行優(yōu)化:
從以上公式可以發(fā)現(xiàn)當(dāng)兩張圖的相似度越高,哈希碼漢明距離越小,根據(jù)最大似然估計(jì),可以得到此時(shí)s=1的概率也就越大,J1也就越小。但是因?yàn)殡x散優(yōu)化是NP難問題,所以根據(jù)LFH方法將
除去根據(jù)語義相似度優(yōu)化圖像哈希碼的相似度,還需要針對(duì)生成的哈希碼進(jìn)行優(yōu)化。哈希碼的優(yōu)化包括兩部分:特征值轉(zhuǎn)換為哈希碼存在的量化誤差和針對(duì)哈希碼平衡的優(yōu)化。第一部分從特征值到哈希碼的量化誤差是讓特征值在輸入sign函數(shù)之前盡可能地接近于0或1;第二部分是保持哈希碼的平衡性。
哈希碼是圖像特征通過隱藏層之后得到的以0或1組成的二進(jìn)制編碼,但圖像特征的特征值取值范圍很大,所以優(yōu)化相應(yīng)的損失函數(shù)讓圖像特征通過隱藏層的激活函數(shù)后輸出值aiH能夠更加接近于0或1,減少量化誤差。針對(duì)第一部分,損失函數(shù)設(shè)定為與0.5之間的平方差之和,即
如何保證哈希碼的平衡性,最好的情況是訓(xùn)練樣本的所有哈希碼字節(jié)50%為0,50%為1,但是因?yàn)楸疚牟捎肧GD進(jìn)行優(yōu)化,SGD是將所有訓(xùn)練數(shù)據(jù)隨機(jī)分為多個(gè)batch,讓每個(gè)batch保持哈希碼的平衡很難實(shí)現(xiàn)。所以針對(duì)這種情況設(shè)計(jì)損失函數(shù)限制每個(gè)batch哈希碼的不平衡。給定一張圖片Ii,其是在{0,1}上的離散概率分布。我們希望隨機(jī)生成0和1的概率是相等的,所以設(shè)定第二部分的損失函數(shù)為mean(·)表示的是計(jì)算向量中所有元素的平均值。這種方法有助于針對(duì)一個(gè)學(xué)習(xí)對(duì)象生成相同數(shù)量的0和1,同時(shí)也讓兩個(gè)有相同0和1數(shù)量的哈希碼之間最小漢明距離變成了2,使得哈希碼更加分離。
最后將兩個(gè)限制條件結(jié)合起來,通過優(yōu)化(7)讓aiH的每個(gè)bit有50%的概率成為0或者1:
其中,p∈{0,1}上式將所有損失加起來作為損失函數(shù),當(dāng)只針對(duì)一個(gè)訓(xùn)練樣本,可以通過(7)對(duì)每個(gè)損失項(xiàng)都進(jìn)行優(yōu)化。本文中的網(wǎng)絡(luò)通過最小化損失函數(shù)學(xué)習(xí)到與圖像語義相似的有效的二進(jìn)制哈希碼表達(dá)。
將所有損失項(xiàng)結(jié)合起來:
然后,我們可以利用ui更新參數(shù)W ,v和θ:
CIFAR-10數(shù)據(jù)集總共包含60000幅彩色圖片,分為10個(gè)種類,每一類包含6000張圖片,每張圖片大小為32×32。整個(gè)數(shù)據(jù)集分為50000幅訓(xùn)練圖片和10000幅測(cè)試圖片。NUS-WIDE數(shù)據(jù)集包含269684幅圖像,81種標(biāo)簽,是一個(gè)每張圖片帶有多個(gè)標(biāo)簽的數(shù)據(jù)集。
在實(shí)驗(yàn)中本文的方法會(huì)與其他幾種目前效果較好的方法進(jìn)行對(duì)比,這些方法分為四類。
1)手工提取特征(512維的GIST描述符)的哈希方法(包括監(jiān)督哈希和無監(jiān)督哈希):SH、ITQ、SPLH、KSH、FastH、LFH、SDH;
2)利用成對(duì)標(biāo)簽的深度哈希方法:CNNH、DPSH;
3)利用三標(biāo)簽的深度哈希方法:DSRH、DRSCH、DSCH所有的實(shí)驗(yàn)都采用了 Matlab的MatConvNet工具箱,并且是在GT840M上運(yùn)行整個(gè)框架。
本文采用兩個(gè)評(píng)價(jià)標(biāo)準(zhǔn)去評(píng)判以上采用的所有方法的性能。這些評(píng)價(jià)標(biāo)準(zhǔn)表示的是哈希算法的不同性能:
1)平均準(zhǔn)確率(mean average precision,mAP):將查詢圖片與數(shù)據(jù)庫所有圖片的之間的漢明距離進(jìn)行排序,然后計(jì)算mAP。mAP是用來衡量本文提出方法的準(zhǔn)確性。
2)平均訓(xùn)練速度(mean training speed,mts):表示模型每秒能訓(xùn)練多少張圖片。這個(gè)評(píng)價(jià)標(biāo)準(zhǔn)能夠體現(xiàn)出哈希算法生成哈希的有效性。
第一個(gè)實(shí)驗(yàn)中CIFAR-10選擇1000幅圖片作為測(cè)試圖片,每種標(biāo)簽有100幅圖片。無監(jiān)督哈希的訓(xùn)練數(shù)據(jù)集就是除卻測(cè)試圖片剩下的所有圖片,監(jiān)督哈希的訓(xùn)練數(shù)據(jù)集是在除卻測(cè)試圖片剩下的所有圖片中隨機(jī)選擇5000幅圖片,每類標(biāo)簽包含200幅圖片,NUS-WIDE則是隨機(jī)選擇21種標(biāo)簽,每種標(biāo)簽包含100張圖片。然后在剩下的圖片中每一個(gè)類別中隨機(jī)選擇500張圖片。NUS-WIDE數(shù)據(jù)集的mAP是利用返回的相似的前5000張圖片計(jì)算的。mAP的結(jié)果如表1所示。
表1 本文方法與對(duì)比方法mAP
表2 本文方法與DPSH在CIFAR-10上的訓(xùn)練速度
表1表示了本文方法與對(duì)比方法在CI?FAR-10和NUS-WIDE上的mAP,相比手工提取特征的哈希方法,無論是監(jiān)督哈希還是非監(jiān)督哈希,都無法達(dá)到利用CNN提取圖像特征更為有效。在利用CNN提取特征的方法中,DPSH方法同時(shí)進(jìn)行特征學(xué)習(xí)和哈希碼學(xué)習(xí),其性能又比CNNH這種無法同時(shí)進(jìn)行特征學(xué)習(xí)和哈希碼學(xué)習(xí)的方法性能要好。通過分析表1和表2可以發(fā)現(xiàn)本文方法相比DPSH不僅在mAP上有所提高,而且訓(xùn)練速度也有所提升,首先可以發(fā)現(xiàn)通過修改后的框架和損失函數(shù)不僅生成更為有效的哈希碼,提升生成哈希碼的速度,還能加強(qiáng)判別相似或不相似哈希碼的能力,提高了檢索的準(zhǔn)確率。
表3是第二個(gè)實(shí)驗(yàn)得出的結(jié)果,是對(duì)基于成對(duì)標(biāo)簽的哈希函數(shù)與基于排序標(biāo)簽的哈希函數(shù)的比較,測(cè)試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)與第一個(gè)實(shí)驗(yàn)不一樣,CI?FAR-10中隨機(jī)選擇10000幅圖片作為測(cè)試數(shù)據(jù),每一類有1000幅圖片,其余的圖片作為訓(xùn)練數(shù)據(jù)。NUS-WIDE是隨機(jī)選擇2100幅圖片作為測(cè)試數(shù)據(jù),總共21類,每一個(gè)有100幅圖片,其余的作為訓(xùn)練數(shù)據(jù),NUS-WIDE數(shù)據(jù)集的mAP是利用返回的相似的前50000幅圖片計(jì)算的。作本文方法與DPSH是基于成對(duì)標(biāo)簽的哈希函數(shù),DRSCH、DSCH和DSRH是基于排序標(biāo)簽的哈希函數(shù),從表3可以看出基于成對(duì)標(biāo)簽的哈希函數(shù)比基于排序標(biāo)簽的哈希函數(shù)的準(zhǔn)確度更高。
表3 成對(duì)標(biāo)簽哈希算法與排序標(biāo)簽哈希算法
本文提出了一個(gè)針對(duì)端到端的哈希學(xué)習(xí)的圖像檢索方法,本文方法將目標(biāo)損失函數(shù)與針對(duì)哈希碼本身設(shè)定的損失函數(shù)結(jié)合在一起組成新的損失函數(shù),本文的方法不僅能夠同時(shí)進(jìn)行特征學(xué)習(xí)和哈希碼學(xué)習(xí),并且能夠生成更好的哈希碼。在具體數(shù)據(jù)集上的實(shí)驗(yàn)可以看出本文的方法相比其他方法既提高了圖像檢索的準(zhǔn)確度,還提高了訓(xùn)練模型的速度。