范業(yè)嘉,孫 涵
(南京航空航天大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院 模式分析與機(jī)器智能工業(yè)和信息化部重點實驗室,
隨著大數(shù)據(jù)時代的到來,對數(shù)據(jù)的有效存儲和快速檢索已經(jīng)成為一個重要的研究課題。近年來,隨著卷積神經(jīng)網(wǎng)絡(luò)在計算機(jī)視覺領(lǐng)域的成功應(yīng)用,深度哈希方法利用端到端框架相互學(xué)習(xí)特征表示和哈希碼,與傳統(tǒng)的哈希方法相比,具有更好的檢索性能。哈希的主要工作是將高維的原始數(shù)據(jù)轉(zhuǎn)換為低維的二進(jìn)制碼,并使相似數(shù)據(jù)的哈希碼之間的漢明距離小于異類數(shù)據(jù)哈希碼之間的漢明距離。因此,哈希方法在保證檢索精度的基礎(chǔ)上,比其他檢索方法提供更高的計算效率和更低的存儲量。
但是,現(xiàn)有的深度哈希方法仍然有兩個缺點:(1)現(xiàn)存的深度哈希方法大多是基于復(fù)雜的卷積神經(jīng)網(wǎng)絡(luò)。從AlexNet[1]到VGGNet[2],雖然識別精度不斷上升,但是模型越來越大,計算速率越來越慢。(2)大多數(shù)現(xiàn)有的深度哈希方法使用的損失函數(shù)具有很高的時間復(fù)雜度。這些方法為了保留原始數(shù)據(jù)空間的相似性,都采用了適當(dāng)?shù)膿p失函數(shù),比如成對相似性保留損失或三元組排序損失。然而,對于n個數(shù)據(jù)點,這些方法的時間復(fù)雜度是O(n!),這表明遍歷所有數(shù)據(jù)計算損失是不切實際的。
為了解決上述問題,文中提出了基于輕量級深度哈希網(wǎng)絡(luò)的細(xì)粒度圖像檢索算法。圖1展示了文中模型的體系結(jié)構(gòu),其中主要分為三個部分:特征提取器、哈希編碼層和分類層。對于上述問題一,文中將NTS-Net[24]特征提取器的主干網(wǎng)絡(luò)ResNet-50[3]替換為PeleeNet[4]。并針對細(xì)粒度圖像識別更加關(guān)注細(xì)節(jié)的特點,提出了跨層多尺度的Non-Local模塊,將PeleeNet階段2和階段3輸出的特征融合到階段4輸出的特征圖上,使得最終的特征不僅包含低層的細(xì)節(jié)信息,還包含高層的語義信息。對于上述問題二,文中將哈希編碼層置于分類層之前,用簡單有效的分類損失來指導(dǎo)網(wǎng)絡(luò)學(xué)習(xí)參數(shù),這樣不僅減少了時間復(fù)雜度,而且使哈希碼保留了類別標(biāo)簽的語義信息。
簡言之,文中的主要貢獻(xiàn)為:
(1)設(shè)計了基于輕量級網(wǎng)絡(luò)的深度哈希方法,提出了跨層的多尺度Non-Local模塊,融合了低層與高層的特征,將局部特征與全局特征一起送入分類器;
(2)創(chuàng)新性地在細(xì)粒度圖像檢索中,將哈希編碼層前置,放在分類層之前。在細(xì)粒度圖像檢索中,這里的哈希編碼層更像是特征開關(guān)層,用于指導(dǎo)分類;
(3)在三個公開的細(xì)粒度圖像數(shù)據(jù)集上做了廣泛的實驗分析。結(jié)果表明,該方法不僅提升了檢索精度,而且節(jié)約了大量的存儲空間,提升了檢索速度。
依據(jù)是否使用訓(xùn)練數(shù)據(jù),可將現(xiàn)有的哈希方法分為與數(shù)據(jù)無關(guān)的算法[5-7]和與數(shù)據(jù)有關(guān)的算法[8-13]。與數(shù)據(jù)無關(guān)的哈希方法通常在不使用訓(xùn)練數(shù)據(jù)的情況下隨機(jī)或手動生成哈希函數(shù)。相反,數(shù)據(jù)相關(guān)的哈希方法利用訓(xùn)練數(shù)據(jù)來彌補(bǔ)特征表示與輸入數(shù)據(jù)無關(guān)的缺陷。文獻(xiàn)[14]表明,較短的數(shù)據(jù)相關(guān)的哈希碼比數(shù)據(jù)無關(guān)的哈希碼具有更高的搜索精度。
此外,基于數(shù)據(jù)相關(guān)的哈希方法又可以分為監(jiān)督哈希與無監(jiān)督哈希。無監(jiān)督哈希[8-10]依據(jù)的數(shù)據(jù)是沒有標(biāo)簽信息的。盡管具有較少限制的無監(jiān)督方法更加實用,但是它容易在原始數(shù)據(jù)和哈希碼之間造成語義鴻溝。監(jiān)督哈希方法[11-13]充分利用了類別標(biāo)簽等監(jiān)督信息來學(xué)習(xí)哈希函數(shù)及生成哈希碼,這些方法比無監(jiān)督方法具有更高的準(zhǔn)確性。基于內(nèi)核的監(jiān)督哈希(KSH)[11]是代表性的監(jiān)督哈希方法之一,它在內(nèi)核空間中生成非線性哈希函數(shù)。最小損失哈希(MLH)[12]基于具有潛在變量和類似鉸鏈損失的結(jié)構(gòu)化預(yù)測學(xué)習(xí)哈希函數(shù)。通過重新構(gòu)造目標(biāo)函數(shù),監(jiān)督離散哈希(SDH)[13]可以生成高質(zhì)量的哈希碼,而不會造成松弛。
近期,基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)進(jìn)行特征表示的方法取得了重大突破,一些將特征學(xué)習(xí)和哈希碼生成相結(jié)合的端到端的深度哈希方法[15-18]被提出。卷積神經(jīng)網(wǎng)絡(luò)哈希(CNNH)[15]首次利用CNN提取的特征來學(xué)習(xí)哈希碼。但是,CNNH是一種兩階段的方法,其中第一階段使用成對標(biāo)簽學(xué)習(xí)近似的哈希碼,第二階段訓(xùn)練CNN學(xué)習(xí)特征表示和哈希函數(shù)。DNNH[16]提出了帶有三元組排序損失的端到端的結(jié)構(gòu),它可以同時學(xué)習(xí)特征表示和哈希編碼。HashNet[17]提出了一種新穎的方法,該方法通過迭代優(yōu)化相似的平滑損失函數(shù)來解決原始的非平滑優(yōu)化問題。文獻(xiàn)[18]提出了一種監(jiān)督哈希學(xué)習(xí)方法,它在分類層之前加入了緊湊的sigmoid層。盡管文獻(xiàn)[18]和文中提出的網(wǎng)絡(luò)框架類似,但是兩者在分類層之前添加哈希編碼層的含義和效果卻大不相同。
與普通圖像不同,由于類間差異小和類內(nèi)差異大的特點,細(xì)粒度圖像更加難以區(qū)分。細(xì)粒度圖像檢索(fine-grained image retrieval,F(xiàn)GIR)的現(xiàn)有方法可以分為兩類:基于手工特征以及基于CNN提取特征的檢索方法。FGIS[19]屬于第一類,它首次提出細(xì)粒度圖像檢索的概念。SCDA[20]是使用CNN進(jìn)行細(xì)粒度圖像檢索的首次嘗試。SCDA使用粗略的顯著性定位選擇有用的深度描述符,然后聚合這些描述符并轉(zhuǎn)換為低維特征向量。但是SCDA并不是深度學(xué)習(xí)方法,因為它只使用了預(yù)訓(xùn)練的CNN模型來定位顯著區(qū)域。為了解決使用預(yù)訓(xùn)練模型進(jìn)行無監(jiān)督學(xué)習(xí)帶來的局限性,CRL-WSL[21]可以聯(lián)合學(xué)習(xí)顯著區(qū)域和有意義的深度描述符。最近,DCL-NS[22]在幾個基準(zhǔn)數(shù)據(jù)集上獲得了最先進(jìn)的性能。DCL-NS首先將CNN提取的特征投影到超球面上,然后以新的排序損失最小化類內(nèi)距離并最大化類間距離。FPH[23]將特征金字塔與哈希結(jié)合,利用低層特征和高層特征分別定位部件和主要目標(biāo)區(qū)域。
如圖1所示,文中的網(wǎng)絡(luò)框架主要由特征提取器、哈希編碼層和分類層三個部分構(gòu)成。
圖1 網(wǎng)絡(luò)框架
(1)輕量級的Backbone網(wǎng)絡(luò)。
文中的特征提取器是在NTS-Net[24]特征提取器上改進(jìn)得到的,彌補(bǔ)了原始特征提取的缺點。如圖1所示,特征提取器首先由一個CNN提取到全局特征圖,然后NTS-Net利用一個RPN[25]和排序損失,自監(jiān)督地得到局部特征,接著將這些局部特征分別傳入CNN,最后將全局特征向量與局部特征向量拼接得到最終用于分類的特征向量。由此可見,圖1中特征提取器的backbone卷積神經(jīng)網(wǎng)絡(luò)重復(fù)出現(xiàn)了四次,并隨著局部特征增多而增多。在NTS-Net的實驗中,CNN是ResNet-50,鳥類數(shù)據(jù)集的最優(yōu)局部特征個數(shù)為三個,最終的模型大小可達(dá)116 MB。這樣大的模型很難在移動端或者嵌入式設(shè)備上插入,所以文中用現(xiàn)如今識別效果可以與ResNet相媲美的輕量級網(wǎng)絡(luò)PeleeNet代替。PeleeNet網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 PeleeNet網(wǎng)絡(luò)結(jié)構(gòu)
(2)跨層多尺度的Non-Local模塊。
最近,文獻(xiàn)[26]提出了Non-Local模塊,通過自注意力模塊來形成注意力圖,從而在一層中對遠(yuǎn)程依賴進(jìn)行建模。對于每一個位置,Non-Local模塊首先計算當(dāng)前位置與所有位置之間的成對依賴關(guān)系,然后通過加權(quán)和匯總所有位置的特征,softmax操作之后的權(quán)重添加到每個位置上輸出。文獻(xiàn)[27-28]顯示了Non-Local模塊可以在圖像識別方法帶來出色的改進(jìn)。然而,對于細(xì)粒度圖像而言,因為目標(biāo)物體的局部特征具有各種大小和形狀,所以多尺度的特征至關(guān)重要。如果僅在同一卷積層對空間依賴進(jìn)行建模,那么固定大小的感受野與目標(biāo)物體的局部區(qū)域不匹配可能會破壞特征提取。
基于以上論點,文中提出了跨層多尺度的Non-Local模塊,如圖3所示。圖中,1×1 Conv是指卷積核為1×1的卷積操作,?是矩陣乘法,⊕是逐元素加法。高層因具有大范圍的感受野,所以對全局信息比較敏感,低層則相反。據(jù)此,文中將PeleeNet階段2和階段3輸出的特征圖作為低層細(xì)節(jié)特征,階段4輸出的特征圖作為高層語義特征。通過這種方式,跨層的Non-Local模塊將一個高層特征與多個低層特征相關(guān)聯(lián)。因此,高層可以從之前的低層中學(xué)習(xí)更多的多尺度細(xì)節(jié)特征。所有相關(guān)層之間顯式學(xué)習(xí)的相關(guān)性提高了網(wǎng)絡(luò)的表示能力。
圖3 跨層多尺度Non-Local模塊
傳統(tǒng)深度哈希方法的哈希編碼層是對特征進(jìn)行編碼的輸出層。與筆者的工作類似的文獻(xiàn)[18]則在分類層之前添加了哈希編碼層,以進(jìn)行特征映射和生成緊湊的哈希碼。但是,文獻(xiàn)[18]未使用特征中包含的語義信息。文中框架中的哈希編碼層,每個神經(jīng)元作為特征開關(guān)控制某個特征的存在或不存在。由于哈希碼是二進(jìn)制的,因此“1”表示類別具有某種特征,而“0”表示其缺乏某種特征。圖4是語義哈希編碼層的示意圖,實線表示具有某種特征,虛線表示缺少某種特征。
值得一提的是,只有細(xì)粒度特征提取器后面的哈希編碼層才可以被視為特征開關(guān)層。眾所周知,與粗粒度圖像不同,細(xì)粒度圖像具有相似的特征。以CUB200-2011[29]為例,其類別均為具有喙,羽毛等特征的鳥類。但是,在粗粒度圖像數(shù)據(jù)集CIFAR-10[30]中,只有汽車和卡車才具有輪胎的特征,而其他類別(如鳥類和輪船)則沒有此特征。由于粗粒度圖像特征的復(fù)雜性,為粗粒度圖像設(shè)計的文獻(xiàn)[18]的哈希編碼層無法控制某些特征的存在或不存在。
圖4 哈希編碼層指導(dǎo)分類層分類的示意圖
本節(jié)做了廣泛的實驗以驗證文中方法的有效性,所有的實驗均在深度學(xué)習(xí)框架Pytorch上操作,實驗機(jī)器的CPU為Intel Xeon E5-2609,GPU是兩張NVIDIA TITAN XP(12 GB內(nèi)存),操作系統(tǒng)是Ubuntu 16.04。在訓(xùn)練階段,使用小批量隨機(jī)梯度下降方法進(jìn)行優(yōu)化,初始學(xué)習(xí)率為0.001,權(quán)重衰減率為0.000 1,動量為0.9。此外,第60個和100個epoch,學(xué)習(xí)率下降為之前的0.1倍。
文中在三個公開的細(xì)粒度圖像識別的數(shù)據(jù)集上做了實驗,分別是CUB200-2011[29],Stanford Dogs[31], Stanford Cars[32]。表1展示了最近的深度哈希方法與文中的檢索方法的mAP比較,其中16位,32位,64位表示哈希碼的長度。由表1可見,文中方法優(yōu)于其他方法。無論數(shù)據(jù)集或哈希碼的維數(shù)如何,文中方法都是最優(yōu)的,并且在很大程度上超過了第二位。造成巨大差異的原因是文中方法是專為細(xì)粒度圖像檢索而設(shè)計的。其他深度哈希方法隨著哈希碼長度減少一半,其檢索的mAP大大降低,而文中方法則不會。因此,文中方法擅長使用低維哈希碼進(jìn)行檢索。
表1 各數(shù)據(jù)集上不同長度哈希碼的mAP結(jié)果 %
此外,為了驗證文中方法的優(yōu)越性,表2記錄了以上算法的網(wǎng)絡(luò)模型大小和檢索速度。由表2可見,文中方法不論在模型大小,還是檢索速度上,都占有明顯的優(yōu)勢。結(jié)合表1和表2,可以得到以下結(jié)論,在細(xì)粒度圖像檢索中,文中方法比其他深度哈希方法性能更佳,性價比更高。
表2 深度哈希方法模型大小和檢索速度比較
針對文中的三個創(chuàng)新點,即(1)將復(fù)雜基礎(chǔ)網(wǎng)絡(luò)替換成輕量級網(wǎng)絡(luò);(2)跨層的多尺度Non-Local進(jìn)行高低層特征融合;(3)哈希編碼層前置,用簡單有效的交叉熵?fù)p失指導(dǎo)參數(shù)更新,本小節(jié)在CUB200-2011數(shù)據(jù)集上,做了各個創(chuàng)新模塊的消融實驗,以驗證每個模塊的有效性,如表3所示。值得一提的是,表格第一行未添加任何子模塊的網(wǎng)絡(luò)即為NTS-Net,mAP為top1識別精度。實驗中哈希編碼長度為128位。
表3 各個模塊的消融實驗
文中提出了一種簡單而有效的細(xì)粒度圖像檢索方法。模型由三個部分組成:特征提取器,哈希編碼層和分類層。首先文中的基礎(chǔ)網(wǎng)絡(luò)替換成輕量級網(wǎng)絡(luò),并輔以跨層的多尺度Non-Local模塊,不僅提升了細(xì)粒度圖像檢索精度,而且節(jié)約了大量的存儲空間,以及提升了檢索速度。其次,在分類層之前添加哈希編碼層作為特征開關(guān)層,以指導(dǎo)最終分類。同時,保留交叉熵?fù)p失,而不是使用傳統(tǒng)的具有高時間復(fù)雜度的成對或三元組相似性保留損失。所提出的檢索模型的性能在三個公開數(shù)據(jù)集上進(jìn)行了評估。實驗結(jié)果表明,與其他先進(jìn)的圖像檢索算法相比,文中方法在檢索性能上具有明顯的優(yōu)勢。接下來的主要工作將考慮將少樣本學(xué)習(xí)與細(xì)粒度圖像檢索相結(jié)合,以便在現(xiàn)實中從部分可見類檢索未見類。