楊 粟,歐陽智,杜逆索
(1.貴州省公共大數據重點實驗室(貴州大學),貴陽 550025;2.貴州大學計算機科學與技術學院,貴陽 550025)
基于內容的圖像檢索(Content Based Image Retrieval,CBIR)[1]是根據輸入的查詢圖像,以圖像語義特征為線索從圖像數據庫中檢索出具有相似特性的其他圖像。CBIR 主要利用圖像視覺特征向量直接進行檢索,通過計算圖像特征向量之間的距離判定圖像相似度,返回圖像檢索結果。在大規模圖像檢索領域,用近似最近鄰搜索算法能提高檢索速度,減少開銷[2]。對于給定的一幅查詢圖像,傳統的線性查找需要從龐大的數據庫里快速找出相似圖像,過于費時費力。K-D 樹(K-Dimensional Tree,KD Tree)等[3]通過分割K維數據空間的優化算法并沒有過多提高高維空間里的搜索效率,其效率甚至低于線性掃描,導致難以直接用于實際問題。近似最近鄰搜索則在滿足一定距離范圍要求就能檢索到高度相似的數據,幫助人們在海量數據中快速搜索到有效內容,因此在解決實際問題特別是圖像檢索領域受到廣泛應用和研究。
哈希算法[4]是近似最近鄰搜索中最為通用的算法之一。哈希算法在圖像檢索中將圖像表示成一串緊湊的二進制碼,使得相似的圖像具有相似的二值碼,即漢明距離盡可能小。圖像哈希通過對高維的特征矢量進行哈希學習得到低維的二進制哈希編碼,能夠極大地降低計算及存儲消耗。基于哈希的算法在圖像檢索中緩解了維數災難,降低了圖像檢索系統對計算機內存空間的要求。
基于圖像的哈希算法可分為監督、半監督、無監督三類,代表模型分別有Liu 等[5]提出的核監督哈希(Kernel Supervised Hash,KSH),Shao 等[6]提出的稀疏譜散列(Sparse Spectral Hashing,SSH),Zhu 等[7]提出的語義輔助視覺哈希(Semantic Assisted Visual Hashing,SAVH)等。目前,大部分工作主要還是圍繞于有監督的圖像哈希學習,然而,在實際應用中,獲得高質量的標簽信息需要付出大量的成本和人力代價[8]。
針對于更廣泛的、無標記的數據,無監督的哈希方法受到更多關注。無監督方法中為了得到數據點之間的聯系,通常使用余弦距離(如Deng 等[9]提出的語義對抗哈希(Semantic Preserving Adversarial Hash,SPAH))或歐氏距離(如王伯偉等[10]提出的語義相似度哈希)來計算特征相關性。余弦距離是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異大小的度量,但對具體數值不敏感,無法衡量每個維數值的差異。歐氏距離將樣本的不同屬性(即各指標或各變量量綱)之間的差別等同看待,使得每個坐標對歐氏距離的貢獻是同等的,所得結果并不能完全符合現實中向量各分量的度量標準不一樣的情況。因此,距離計算方式對實際檢索中獲取精確的語義信息有重要的影響。
另一方面,當哈希編碼長度發生變化時,模型的再訓練往往是不可避免的,這導致了過多的時間開銷和哈希碼信息冗余。例如Heo等[11]基于超球面分割數據點所提出的球面哈希(Spherical Hash,SpH)能夠提高檢索速度和準確性,但改變哈希碼長度則要重新訓練。因此,無監督哈希圖像檢索中語義信息未得到較好學習和需要多次訓練的問題仍未得到良好解決。
針對上述問題,本文提出了基于相關度距離的無監督深度并行哈希圖像檢索模型。首先,通過利用卷積神經網絡(Convolutional Neural Network,CNN)學習圖像特征,使用相關度距離計算特征距離構造偽標簽指導整個訓練過程,通過與傳統的余弦距離、歐氏距離比較,探討特征距離對檢索精度的影響;然后在傳統卷積網絡中嵌入多個哈希層得到不同碼長的二進制碼并相互關聯,基于所提出的并行檢索模式,一次生成多種長度的哈希碼,并通過與傳統單次訓練模式比較,分析其對訓練時間的影響。通過引入相關度距離提高圖像檢索的精度,同時利用并行模式來減少訓練時間,以此對無標簽的大規模圖像檢索提供一定的參考。
本文主要工作如下:
1)在無監督深度哈希圖像檢索中采用了相關度距離計算數據點之間的距離,與以往方法相比能較好地擬合數據間的分布,捕捉到更加接近真實的語義信息,實驗結果表明,該方法能有效提升檢索精度;
2)提出了一種無監督哈希并行模式,大量減少了目前已有模型中由于轉換哈希碼長度帶來的時間開銷,同時緩解了哈希碼獨立訓練沒有信息交互產生冗余的問題。
監督哈希算法要求數據庫中的全部數據都加上標簽,每個樣本對應的類別標簽作為ground-truth 來訓練網絡,從而得到哈希函數。例如Xia 等[12]提出的卷積神經網絡哈希(Convolutional Neural Network Hash,CNNH)包括了兩個階段來學習圖像表示和哈希碼:第一階段是哈希函數學習,利用監督信息得到哈希編碼;第二階段是特征學習,訓練深度卷積神經網絡,用于將輸入映射到第一階段學習的哈希編碼上,使模型可以同時學習到圖像的特征表達以及哈希函數。Gionis等[13]提出的二進制重建嵌入(Binary Reconstruction Embedding,BRE)通過明確的最小化原始距離和漢明空間中重構距離之間的誤差來學習哈希函數。Shen 等[14]提出的監督離散哈希(Supervised Discrete Hash,SDH)使用監督信息和離散循環坐標下降法直接優化二進制哈希碼。這些模型將深度學習與哈希編碼結合,能有效利用監督信息生成精確的哈希碼,但是對于大量未標記的數據,如何衡量圖像間的相似程度并進行訓練成為了新的難點。
針對豐富的未標記數據,基于哈希函數的無監督學習算法通常需要保持原始空間中訓練數據點的重要性質,通過利用距離函數學習數據中潛在的語義關系對模型進行訓練。例如,Deng 等[9]提出的SPAH 首先提取深度特征,然后根據不同圖像對的余弦距離進行k 近鄰搜索,得到初始相似矩陣;將這種語義相似度矩陣的監控集成到對抗性學習框架中,可以有效地保存漢明空間中訓練數據的語義信息。林計文等[15]提出的深度偽標簽無監督哈希(Deep Pseudo-label Unsupervised Hash,DPUH)在處理無標簽情況時對圖像特征使用余弦進行統計分析,用于構造數據的語義相似性標簽,再進行基于成對標簽的有監督哈希學習。Song 等[16]提出的(Binary Generative Adversarial Network,BGAN)通過將生成對抗網絡(Generative Adversarial Network,GAN)[17]的輸入噪聲限制為二進制,并根據每個輸入圖像的特征進行約束;在標簽獲取方面使用特征向量的余弦相似性來比較圖像,從而獲取最終的鄰域結構指導學習。另一方面,王伯偉等[10]提出的語義相似度哈希首先則通過歐氏距離來構造一個語義相似度矩陣,然后在目標函數中加入范數,使得具有相同語義的圖像具有相似哈希碼。王妙等[18]采用由粗到精的分級策略,先根據學習到的哈希碼使用漢明距離得到圖像池,然后對計算池內圖像高層語義特征之間的歐氏距離進行精檢索,從而找到最相似圖像。但是,使用這些距離度量得到的偽標簽由于計算方式的限制并沒有更好地捕捉到數據之間的語義相關性。針對此問題,在其他領域,魏永超[19]提出的基于相關數與相關距離的證據合成方法中使用了相關度距離計算證據向量距離,該距離主要通過相關系數來衡量兩個向量的線性相關程度,能很好地擬合數據間分布,因此在證據合成中表現良好。
另一方面,目前的哈希模型在獲得不同哈希碼過程中都不可避免地需要多次訓練。例如,Cao 等[20]提出的(Hash with Pair Conditional Wasserstein GAN,HashGan)中哈希碼長度作為一個參數被預先指定,每換一次長度都需要重新指定再次訓練。這種現象在哈希檢索模型中廣泛存在,包括文獻[9-10,16,18]等,這往往導致較多的時間開銷和哈希碼信息冗余。針對模型多次訓練的問題,一些學者在其他近似最近鄰算法中提出了一些解決思路。例如Gao[21]等、Song 等[22]分別提出了深度遞歸量化(Deep Recurrent Quantization,DRQ)和深度漸進量化(Deep Progressive Quantization,DPQ),這兩種模型都是依次獲得二進制碼并逐步逼近原始特征空間,可以同時訓練不同碼長的二進制碼;但這兩種模型都是基于量化的近似最近鄰搜索方法,且仍需要利用標簽信息來指導視覺特征的學習,沒有考慮無監督環境下不同哈希碼之間的內在聯系。
綜上所述,本文主要針對無監督哈希圖像檢索中語義信息學習不夠,哈希碼長度每換一次就要重新訓練模型的問題,提出了基于相關度距離的無監督并行哈希圖像檢索模型。本文雖然與大多數無監督方法一樣需要構建偽標簽,但區別于傳統方法中使用的歐氏距離或者余弦距離,本文采用的相關度距離能更好地捕捉語義信息,通過相關度距離直方圖設置閾值構建出接近真實的相似矩陣;另一方面,不同于傳統方法中更改一次哈希碼長度就需重新訓練,本文提出一種并行哈希模式,只需訓練一次就可得到不同長度哈希碼,大量減少了檢索時間。最后,通過實驗驗證了本文所提出的模型在減少訓練時間和提升哈希圖像檢索準確率上具有重要意義。
在有N張圖像訓練集X=中,xi表示第i張圖像。哈希算法的目標是將這些高維圖像通過哈希函數F映射到低維的漢明空間生 成K位的哈希碼,即F:X→B,B∈{1,-1}N×K。該哈希函數要求在原始空間中的相似圖像在漢明空間中距離較近,在原始空間中不相似的圖像在漢明空間中距離較遠。假設Z為圖像的連續特征,其表示為Z∈RN×K,然后通過將特征Z量化為二進制哈希碼。哈希算法目標是學習圖像的二進制哈希碼B和可用于生成哈希碼的哈希函數F。
本文模型的結構框架如圖1 所示,該框架由兩個主要部分組成:1)無監督特征提取組件,用于偽標簽矩陣構造;2)深度并行哈希學習,用于將特征轉換為二進制碼。本文使用CNN 中的VGG16[23]作為基礎模型,通過改進基礎模型來對特征和哈希碼進行學習。原始的VGG16 模型包含5 個卷積層(Conv1~Conv5)和3 個完全連接層(FC6~FC8),該模型在計算機視覺中的圖像檢索和目標檢測領域表現出了較好的精準率和召回率[24-25]。本文首先對VGG16 模型進行一定的調整,然后在FC7 層后加入4 個哈希層,構造偽標簽矩陣進行無監督語義學習,最后通過損失函數進行聯合學習,實現同時訓練獲得不同長度哈希碼。

圖1 本文模型框架Fig.1 Framework of the proposed model
2.2.1 基于相關度距離的無監督語義學習
無監督語義學習是為了分析數據點之間的語義關系,學習通過卷積神經網絡獲得的圖像深度特征,進而捕捉不同圖像間的內在視覺聯系。通過訓練未標記的數據將其編碼為二進制代碼,在編碼過程中偽標簽可以根據數據的內在分布指導學習。通常情況下,來自同一類的圖像應該更靠近偽標簽空間。在本文中,計算特征向量距離并構造相似矩陣來指導模型學習。
本文中的無監督語義學習算法首先需要根據提取的深度特征計算每對數據點的相關度距離。相關度距離可表示為式(1),其中ρXY是相關系數,用來衡量隨機變量X與Y相關程度,計算方法如式(2)所示。

ρXY取值范圍是[-1,1],當ρXY=0 時,說明變量和相互獨立,ρXY的絕對值越大,則表明X與Y相關度越高。
在獲得數據點之間的相關度距離之后,本文通過設置距離閾值ds=(ml-ασl),dd=(mr-βσr),將距離小于ds的數據點視為語義相似的數據對,距離大于dd的點視為語義不相似的數據對。其中α和β分別是控制距離閾值ds和dd的超參數,ml、mr是相似度距離直方圖的左半部分和右半部分的平均值,σl、σr是相似度距離直方圖的左半部分和右半部分的標準偏差。基于距離閾值繼而構造相似矩陣S:

其中:d(i,j)表示數據點xi和xj的深度特征的相關度距離。如果xi和xj在語義上相似,則Sij被設為1;如果它們在語義上不相似,則為-1;當Sij設置為0時表示不確定是否相似。
2.2.2 哈希學習
學習得到相似度矩陣之后,VGG16 網絡中第FC7 層連續特征變量Z需要分別經過4 個哈希層的聯合學習獲得不同哈希碼。對于訓練樣本為g的數據,用相似度矩陣S作為圖像之間相似度關系的參考。為了獲得單層長度為K的二進制代碼,本文定義單層哈希損失如式(4):

其中:bi是數據點xi的哈希碼;Hij是數據點xi和xj得到的哈希碼的內積。從連續變量Z到二進制代碼變量B的轉換是有損信道,而且不同哈希碼長度之間的信息量有交融與重疊,因此本文將特征向量Z分別通過L個哈希層(本文L設為4),每個哈希層輸出不同位哈希碼bl,通過多層哈希結構的損失函數即式(5)進行聯合學習。

為了獲得bi需要通過二值化處理,一般將符號函數b=sgn(z)作為哈希層頂部的激活函數來執行,即式(6)。

但是符號函數是非光滑和非凸的,它的梯度對于所有非零輸入都是零,且在零處定義為錯誤。這使得標準的反向傳播對于訓練深網絡是不可行的,即梯度消失問題[22]。針對梯度消失問題,本文將使用tanh()來近似代替符號函數,因此,目標函數可以轉化為式(7):

通過此損失函數約束模型最小化離散的漢明空間與連續空間的差別,最終可以獲得較高精確度的不同位數哈希碼。根據以上分析,本文模型將分為訓練階段和測試階段兩個部分,分別如算法1和算法2所示。
算法1 模型訓練階段。
輸入 訓練圖像集X=,參數α和β,batchsize大小24;
輸出 神經網絡的參數θ、W和訓練圖像的哈希碼B。
步驟1 初始化VGG16 網絡的參數,使用神經網絡前饋算法在VGG16 模型上提取數據的FC7 層輸出,得到連續特征Z;
步驟2 根據式(1)和Z計算兩兩數據點的相關度距離;
步驟3 根據式(3)得到所有的偽相似矩陣S;
步驟4 從訓練集中隨機選取一個小批次(mini-batch)的訓練數據;
步驟5 將小批次的訓練數據通過網絡得到初始的不同哈希碼;
步驟6 根據式(7)并使用反向傳播算法更新參數;
步驟7 重復步驟4~6,直至迭代次數完成。
算法2 模型測試階段。
輸入 查詢圖像q;
輸出 查詢圖像q的不同哈希碼。
步驟1 通過對輸入圖像的直接前向傳播計算神經網絡的輸出。
步驟2 利用式(6)直接計算哈希碼。
本文在FLICKR25K 和NUSWIDE 兩個公共基準數據集上進行實驗分析,數據集的說明如下:1)FLICKR25K 數據集包含從Flickr網站收集的25 000張圖像,每個圖像都是手動標注的,且至少是24 個標簽中的一類。本文隨機選擇2 000 幅圖像作為測試集,并使用剩余的圖像作為數據庫,從中隨機選取10 000 幅圖像作為訓練集。2)NUSWIDE 數據集是大規模數據集,包含81 種圖像類別,每個圖像都用一個或多個類別進行注釋。本文使用21個最常見類別(195 834張圖像)的子集,從中隨機選擇5 000張圖像作為查詢集,并從剩余圖像中隨機選取10 000幅圖像作為訓練集。
本文所有的實驗均在Ubuntu Server 18.04 操作系統,顯卡為TITAN-XP 12 GB*6,內存為32 GB*4的計算機上進行,使用TensorFlow1.8.0 實現所提出模型,學習率設置為0.001,batchsize設置為24,使用動量優化法優化模型。
為了檢驗本文模型效果,與ITQ(ITerative Quantization)[26]、SH(Spectral Hashing)[27]、DSH(Density Sensitive Hashing)[28]、SpH[9]、SGH(Stochastic Generative Hashing)[29]、DeepBit(Learning Compact Binary Descriptor)[30]、SSDH(Semantic Structure-based unsupervised Deep Hashing)[31]模型比較,使用平均精度均值(mean Average Precision,mAP)和查準率-召回率曲線(Precision-Recall Curve,PRC)來評估在兩個數據集上的檢索效果。
mAP 是指所有類別平均精度(Average Precision,AP)的平均值,AP 是每個類別圖像的平均精度。假設系統返回t張檢索到的圖像,分別是x1,x2,…,xt;設有M類,則每個查詢數據i的AP計算方法見式(8),mAP計算方法見式(9)。

在FLICKR25K 上和NUSWIDE 數據集上的mAP 比較結果如表1 所示。從表1 可以看出,本文模型在FLICKR25K 數據集上的16 bit、32 bit、48 bit 和64 bit 哈希碼的性能分別比最好的淺層模型SGH 的mAP 值要高9.0、10.8、11.3 和11.3 個百分點,比無監督深度學習模型DeepBit 要高13.3、14.3、12.9和11.9個百分點,比SSDH要高9.4、8.2、6.2和7.3個百分點。在NUSWIDE 數據集上16 bit、32 bit、48 bit 和64 bit 哈希碼的性能分別比最好的淺層模型SGH的mAP值要高17.1、20.2、21.9 和21.6 個百分點,比無監督深度學習模型DeepBit要高28.6、25.5、21.4 和20.9 個百分點,比SSDH 要高5、5.2、6.4、5.9 個百分點。從上述結果分析可知,本文模型在捕捉圖像視覺語義方面表現出色,原因是不同哈希碼之間互相限制,互相學習。本文模型在使用長度為16 bit 哈希碼的mAP值要略小于其他長度,可能是16 bit的哈希碼未能完全覆蓋圖像語義,但是在48 bit 之后mAP 值就穩定下來。需要注意的是,NUSWIDE 上的結果略小于FLICKR25K,可能是由于NUSWIDE 的圖像類內和類間距離沒有完全劃分準確。但是,在達到相同檢索準確率的要求下,本文模型可以用長度更短的哈希碼來實現。

表1 兩個數據集上不同模型的mAP對比Tab.1 Comparison of mAP of different models on two datasets
32 bit哈希碼在FLICKR25K數據集上的PCR如圖2所示,在NUSWIDE 數據集上如圖3 所示。圖中查準率是檢索到的該類圖像與檢索到的所有圖像之比,召回率是檢索到的該類圖像與數據庫中所有的該類圖像數之比。從圖2 和圖3 中可以看出,隨著召回率的增加,所有模型的查準率均會減少。然而,相同召回率下本文模型的查準率仍高于其他模型,相同精確率下本文模型的召回率也優于其他模型。例如,圖2 中召回率為0.4 時,本文模型的查準率最高,為0.77 左右;當準確率值為0.7時,本文模型的召回率最高,為0.59左右。

圖2 FLICKR25K數據集上32 bit的PCRFig.2 32 bit PCR on FLICKR25K dataset

圖3 NUSWIDE數據集上32 bit的PCRFig.3 32 bit PCR on FLICKR25K dataset
為了體現本文模型的效率優勢,將本文模型的時間開銷與SSDH進行比較,結果如圖4所示,其中SSDH后的數字表示哈希碼的長度。如圖4(a)所示,在FLICKR25K 數據集上,SSDH 得到4 種哈希碼分別需花費8 820 s、8 778 s、8 625 s 和8 740 s,SSDH 累積訓練4 種不同長度哈希碼共需要34 963 s,而本文模型訓練時間為11 177 s,只占SSDH 訓練時間的32%左右。如圖4(b)所示,在大規模數據集NUSWIDE 數據集上,SSDH 分別需花費21 600 s、21 654 s、21 677s 和21 684 s,SSDH累計訓練4 種不同長度哈希碼共需要86 615 s,本文模型只需要79 860 s,與SSDH 相比減少了6 755 s。從上述結果比較分析中可以看出,本文模型由于集成了4 個不同哈希層,可大大節約訓練時間,尤其針對于較大規模數據集的圖像檢索具有更為顯著的優勢。

圖4 本文模型與SSDH模型的時間開銷對比Fig.4 Comparison of time cost between the model in this paper with SSDH model
為了檢驗提出模塊對所取得結果的貢獻,本文進行了一項消融研究,結果如表2所示,其中:De表示使用歐氏距離,Dc表示使用余弦距離,Dr表示使用相關度距離,lb表示使用并行多層損失函數。通過表2 數據可以看出,使用歐氏距離或余弦距離的模型由于自身計算方法限制,都不能達到使用相關度距離的精度,例如FLICKR25K 數據集上使用相關度距離的16 bit 結果0.683 比使用其他距離的模型分別高7.4 和5.1 個百分點。另外,使用并行多層損失函數的模型都比原來使用單層損失函數的模型精度要高,例如大規模數據集NUSWIDE上同樣使用相關度距離時,加上并行多層損失函數的模型使得精度分別提高7.4、8.7、9.7和9.7個百分點。因此,通過上述結果分析表明,本文模型能夠更好地捕捉圖像間細微的語義區分,緩解哈希碼的信息冗余程度,從而提高生成哈希碼的質量及圖像檢索的性能,特別是對于大規模數據集在檢索精度和時間方面都得到更多的提升。

表2 消融研究對比Tab.2 Comparison of ablation studies
針對無監督哈希學習中語義信息學習不充分、哈希碼長度更改一次就必須重新訓練且沒有考慮不同哈希碼之間聯系等問題,本文提出了基于相關度距離的無監督深度并行哈希檢索模型。該模型使用卷積神經網絡學習圖像特征,利用相關度距離計算特征語義相關性從而構建偽標簽矩陣指導哈希函數學習,將不同bit 哈希層聯合學習得到最合適的哈希碼。在FLICKR25K 數據集以及更大規模的NUSWIDE 數據集上,通過與其他模型的實驗結果比較分析,表明本文模型的檢索效果得到提升,并且模型訓練時間明顯降低。本文模型無需額外提供監督信息,可以同時學習不同長度的哈希碼,并且不同長度哈希碼之間也可以互相學習,從而逐步接近原始特征空間,因此,本文模型適用于標簽信息獲取代價高昂的大數據時代,對于大規模圖像檢索具有一定實際應用意義。