魏 赟,嚴正怡
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海 200093)
圖像檢索技術(shù)是指按照文本或內(nèi)容對大規(guī)模圖像數(shù)據(jù)庫進行檢索,從而實現(xiàn)對圖像數(shù)據(jù)庫的管理.基于文本的圖像檢索技術(shù)(TBIR)采用人工標注與圖像特征相關(guān)的關(guān)鍵詞,完成匹配.基于內(nèi)容的圖像檢索技術(shù)(CBIR)采用語義化圖像特征,實現(xiàn)特征提取.隨著大型圖像數(shù)據(jù)庫的出現(xiàn),在CBIR中發(fā)展出基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的圖像檢索技術(shù),提取特征更準確[1].
研究者們一直致力于提升基于CNN的圖像檢索技術(shù)的效率,提出了多種改進方法.在文獻[2]中,Babenko提出適合圖像檢索的神經(jīng)編碼(Neural Codes),通過PCA壓縮和反復(fù)訓(xùn)練提升特征提取性能.為解決神經(jīng)編碼空間顯著描述弊端,Babenko繼續(xù)提出求和池化(Sum-pooling)[3]實現(xiàn)卷積降維,Kalantidis提出對圖像空間(Spatial)和通道(Channel)加權(quán)[4],但檢索精度不高.隨后滑框技術(shù)出現(xiàn),在文獻[5]中,出現(xiàn)了結(jié)合滑框和CNN的MOP方法.為了增強局部區(qū)域化,Tolias提出利用最大池化(Max-pooling)滑框的R-mac方法[6],Gordo在此基礎(chǔ)上加入數(shù)據(jù)清洗方法[7],提升檢索精度.隨著越來越多的CNN網(wǎng)絡(luò)模型出現(xiàn),研究者們開始對適用于圖像檢索的模型進行改進,在文獻[8]中對比VGG和AlexNet網(wǎng)絡(luò)模型,得出5.8%的檢索精度差,并且加入BN操作得以提升兩倍的收斂速度.Qin提出將Encoder和Deep-CNN混合的模型[9],減少檢索時間和特征維度.單對模型的改進不足以滿足對檢索精度和速率的要求,融合注意力模型開始成為研究熱點.
近年來深度學(xué)習(xí)結(jié)合注意力模型發(fā)展不斷,在文獻[10]中,Goole Mind團隊在RNN上遞歸使用注意力模型進行圖像檢索,但在encoder模塊中圖像壓縮過度.為防止過度壓縮,Bahanau在將注意力應(yīng)用到自然語言處理[11]時,決策出與輸出相關(guān)的輸入.隨后CNN與注意力模型結(jié)合迅猛發(fā)展,出現(xiàn)了四種改進模型,基于注意力的Transformer網(wǎng)絡(luò)結(jié)構(gòu)[12]、基于空間注意力的空間變換網(wǎng)絡(luò)(STN)[13]、基于通道注意力的SENet模型[14]、基于注意力的可堆疊殘差學(xué)習(xí)網(wǎng)絡(luò)(RAN)[15],但改進模型效率主要取決于結(jié)合的CNN模型.其中效果比較顯著的是與VGG模型的結(jié)合,在文獻[16]中,李將注意力模型融合到VGG網(wǎng)絡(luò)模型的最后一個卷積層后,提高檢索的精度,但效率不高.對于注意力模型與CNN模型的結(jié)合還亟待提升,從而達到以更少的能耗實現(xiàn)對檢索圖像關(guān)鍵位置的映射.本文嘗試串行Channel-Attention模型和Spatial-Attention模型,并在池化部分增加Stochastic-pooling池化,從而提升映射效率.
本文提出了改進的注意力卷積神經(jīng)網(wǎng)絡(luò)模型(VGG-NA).在基礎(chǔ)模型VGG-16上進行改進,VGG-16模型缺少BN層,因此在ReLU計算前加入BN層,使得卷積后特征呈正態(tài)分布;為了映射圖像關(guān)鍵位置、提升準確率,并行CS-Attention注意力模型,使得卷積后的特征向量得以重構(gòu).經(jīng)過多次卷積和池化,進入替換的Mean-pooling和增加的SP金字塔池化,可以更多保留次要元素、增強通用性;為了彌補之前的時間損失,再進入簡化的全連接層,從而提高圖像特征提取速度.計算圖像相似度,檢索出相似度大的前n個圖像,此時的新模型效率提高.本文進行大量對比實驗,結(jié)果表明本文所提出的改進算法優(yōu)于原算法,在MAP、Recall和檢索時間上都得到提升.
CNN通過網(wǎng)絡(luò)模型來提取圖像特征,包括圖像的色彩、邊緣、紋理等,得到圖像的特征向量.CNN包含輸入層、卷積層、池化層、全連接層以及softmax分類函數(shù)[17].其中CNN的核心卷積層輸出的特征見公式(1):
(1)
注意力模型可以在全局圖像中尋找關(guān)鍵的目標信息,忽略無用信息,與CNN結(jié)合生成圖像顯著區(qū).注意力模型分為更關(guān)注點的硬注意力模型和更關(guān)注區(qū)域和通道的軟注意力模型,軟注意力模型又被分為Spatial注意力模型(STN模型為代表)和Channel注意力模型(SENet模型為代表).本文用到的是改進的串行注意力模型(CS-Attention).
該流程是基于VGG-NA的圖像檢索流程,用戶將圖像庫中的訓(xùn)練集和驗證集進行尺寸處理、去均值、歸一化后,統(tǒng)一圖像大小為224×224.將預(yù)處理完的圖像輸入VGG-NA模型中進行訓(xùn)練,提取特征、得到特征向量,并記錄到圖像特征庫中.與待檢索圖像的特征向量進行余弦相似度計算并排序,輸出相似度最大的n張圖片,檢索完成(如圖1所示).

圖1 基于CNN的圖像檢索流程
對圖像庫數(shù)據(jù)進行預(yù)處理操作,可以使得改進后的VGG-NA模型在進行訓(xùn)練、特征提取的時候更快地收斂,提高檢索結(jié)果準確率.
1)圖像尺寸處理(crop和wrap).本文采用的圖像數(shù)據(jù)庫的圖像大小為384×256和256×384,大小存在不一致情況,將大小處理成224×224.保持原有的特征,記錄尺寸處理比例.
2)去均值、歸一化處理.去均值處理,從RGB三維度減去其均值,將圖像數(shù)據(jù)中心化為0,防止擬合,見公式(2).歸一化處理,計算RGB最值,將圖像數(shù)據(jù)壓縮在0-1之間,提高收斂度,見公式(3).
(2)
(3)
VGG-16模型[18]一共包含13個卷積層(CONV)、5個最大池化層(Max-pooling)以及3個全連接層(FC)和softmax分類函數(shù).其中CONV卷積核大小為33、步長為1,Max-pooling卷積核為2×2、步長為2,所有卷積層隱層的激活單元采用ReLU函數(shù).本文為了提高特征提取的效率,在VGG-16模型的基礎(chǔ)上進行改進,提出VGG-N模型,改進如下所示.
1)加入BN層(Batch Normalization).BN層借助變換重構(gòu)對經(jīng)過CONV操作后產(chǎn)生的紊亂特征分布進行恢復(fù),從而將CONV操作的輸出特征限定為均值為0、方差為1的正態(tài)分布,且不破壞原始特征分布.在VGG-16模型中沒有BN層,且隱藏ReLU計算,所以考慮在卷積層的CONV操作后添加BN操作.VGG-N模型的卷積操作實際變成CONV+BN+ReLU.本文BN層引入可學(xué)習(xí)參數(shù)γ和β,見公式(4).
(4)
在本文VGG-N模型中BN層一次前向傳導(dǎo)過程為:設(shè)參數(shù)調(diào)整樣本mini-batch的x值為ζ={x1…m},計算出mini-batch的平均值,見公式(5);計算出min-batch的方差,見公式(6);進行歸一化操作,見公式(7);調(diào)整均值和方差來得到BN操作的輸出結(jié)果,見公式(8).
(5)
(6)
(7)
BNγ,β(xj)=yj=γzj+β
(8)
2)替換Max-pooling.本文在Tensorflow框架下,在ILSVRC數(shù)據(jù)集上采用控制變量法,保持VGG-16模型其余部分不變,對比最后一層池化層Max-pooling和Mean-pooling對檢索錯誤率的影響,結(jié)果如表1所示.在表1中當檢索返回圖像數(shù)量為1和5時,后者比前者的錯誤率低2.2%和1.7%,這就說明Mean-pooling能夠降低鄰域大小造成的誤差、更多保留圖像背景,從而提升檢索精度,而Max-pooling僅僅偏向于降低卷積參數(shù)造成的誤差.因此為有效提取到經(jīng)過最后一層CONV操作的圖像全局信息,更多保留pooling層內(nèi)“次重要”元素,用均值池化層代替最后一層最大池化層,且設(shè)定Mean-pooling的卷積核大小是7×7.7×7卷積核在保持VGG-16模型特征提取效果的同時,減少模型參數(shù).此時Mean-pooling的步長為2,池化后輸出的中間特征大小由7×7×512變?yōu)?×2×512.

表1 VGG-16中不同池化的錯誤率
3)加入空間金字塔池化層(Spatial Pyramid pooling).圖像經(jīng)過預(yù)處理之后,以固定大小為224×224進入CNN模型中.為了增強模型的通用性和魯棒性,在全連接層前面加入SP金字塔池化層.此時圖像以不同大小進入VGG-N模型中,仍可以固定大小進入全連接層,這樣增加了模型的魯棒性.
4)減少全連接層.通過對VGG-16模型各個層對圖像特征提取影響的研究,發(fā)現(xiàn)越靠近頂層的操作對圖像特征提取影響越小[19].同時前兩層FC的參數(shù)量占比較多,分別是103M和17M,其有效權(quán)重都僅為4%,而最后一層FC的有效權(quán)重為23%.所以為了減少網(wǎng)絡(luò)計算量、提升訓(xùn)練速率,刪除前兩層FC,保留最后一層FC.在后續(xù)的實驗結(jié)果表明,在刪除前兩層FC之后,MAP提升3.37%的同時,時間損失相比較未刪除時得到降低,證明提升有效.此時最后一層FC輸出的大小為1×1×1000,整個VGG-N網(wǎng)絡(luò)的參數(shù)量由138M變?yōu)?6M.
改進后的VGG-N模型一共包含13個卷積層、4個最大池化層、1個平均池化層、1個SP金字塔池化層以及1個FC層.改進后的VGG-N模型并行CS-Attention模型,組合成本文的最終模型VGG-NA.
由于通道和空間注意力模型具有不同的功能,所以兩個模型的順序和連接方式可能會影響整體模型的檢索性能.因此本文在Tensorflow框架下,通過對數(shù)據(jù)集ImageNet-1K進行檢索,比較附加于基礎(chǔ)模型VGG-16上的通道注意力模型(VGG-16+Channel)、串行的先通道后空間注意力模型(VGG-16+Channel+Spatial)、串行的先空間后通道注意力模型(VGG-16+Spatial+Channel)以及并行通道空間注意力模型(VGG-16+Channel&Spatial)的返回一個圖像的錯誤率(Top-1 Error)和返回5個圖像的錯誤率(Top-5 Error),實驗結(jié)果如表2所示.由表中結(jié)果可得,在Top-n等于1和5時,串行的先通道后空間注意力模型的檢索錯誤率最低.同時多注意力模型檢索錯誤率低于單注意力模型檢索錯誤率,串行連接注意力模型檢索錯誤率低于并行連接注意力模型檢索錯誤率.因此,為了達到最佳檢索效果,本文注意力模型是由通道注意力模塊和空間注意力模塊串行組合而成的串行注意力模型(CS-Attention).

表2 不同注意力模型的錯誤率
3.4.1 通道注意力模塊(Channel-Attention)
圖像首先進入通道注意力模塊,過程如下:
1)中間特征圖進入通道注意力后,經(jīng)過最大池化(Max-pooling)、平均池化(Mean-pooling)和隨機池化(Stochastic-pooling)3種池化后得到相同維度的多個具有全局意義的實數(shù).
2)進入共享網(wǎng)絡(luò)(Shared MLP),減少不同通道的差異性,得到3個MLP操作后的向量.
3)將3個向量各個元素相加組成一維向量,使用ReLU函數(shù)激活,變換一維向量元素為0-1,得到經(jīng)過通道注意力模塊的中間向量.
4)通過公式(10)實現(xiàn)對輸入的特征圖的通道進行加權(quán)(過程如圖2(A)所示).
通道注意力計算為公式(9)、輸出特征圖為公式(10):
(9)
其中δ為ReLU函數(shù),V0和V1是共享網(wǎng)絡(luò)權(quán)重.
K′=(Vc(K)+1)?K
(10)
其中K為進入通道注意力模塊的特征圖,K′為通道注意力輸出的特征圖,VC為通道注意力計算,?為矩陣相乘.
3.4.2 空間注意力模塊(Spatial-Attention)
將經(jīng)過通道注意力模塊的中間特征圖傳入到空間注意力模塊,過程如下:

2)將輸出的3個特征矩陣合成一個,進行Conv操作,得到卷積后的注意力特征圖.
3)使用RELU函數(shù)激活,得到經(jīng)過空間注意力模塊、范圍為0-1的注意力圖.
4)通過公式(12)實現(xiàn)對輸入特征圖的空間加權(quán)(過程如圖2(B)所示).
空間注意力計算為公式(11)、輸出特征圖為公式(12):
(11)
其中F為卷積操作.
K″=(Vs(K′)+1)?K′
(12)
其中K″為空間注意力輸出的特征圖,Vs為空間注意力計算.
由通道和空間注意力串行組成的串行注意力模型CS-Attention(如圖2所示).

圖2 串行注意力模型(CS-Attention)
VGG-NA模型由VGG-N模型和CS-Attention模型并行組合而成,其中VGG-N模型(如圖3(A)為VGG-N的一個模塊)為用于特征提取的CNN基礎(chǔ)模型,CS-Attention模型為用于加權(quán)的注意力模型,CS-Attention模型被應(yīng)用于全網(wǎng)VGG-N模型.圖像數(shù)據(jù)集經(jīng)過預(yù)處理進入VGG-NA模型進行訓(xùn)練,池化前的中間特征向量由兩部分相乘得到:第1部分是多組CONV+BN+ReLU的卷積操作,其中卷積核為3×3、步長為1;第2部分是CS-Attention注意力模型加權(quán)映射.之后送入池化層,包括4個Max-pooling池化層、1個Mean-pooling池化層和1個SP金字塔池化層.最后經(jīng)過1個FC層和Softmax分類函數(shù),完成特征提取(如圖3所示).

圖3 VGG-NA模型
本文通過向量表示經(jīng)訓(xùn)練模型VGG-NA提取的圖像特征,因此選取余弦相似度算法(Cosine Similarity)來計算向量夾角的余弦值,比較圖像相似度.余弦值越接近1,夾角越接近0,相似度越高.本文相似度算法步驟如下:
1)設(shè)經(jīng)過VGG-NA模型特征提取后的兩張圖像的特征向量為X=(a1a2a3… am),Y=(b1b2b3… bm);
2)向量X和向量Y的余弦相似度為公式(13):
(13)
3)由于兩個向量的夾角在(0,180)度之間,所以余弦相似度計算結(jié)果在(-1,1)之間.本文將余弦相似度計算值歸一化修正,修正結(jié)果控制在(0,1)之間,修正計算公式為(14):
h=0.5×S(X,Y)+0.5
(14)
4)對求得的修正余弦相似度h進行排序,找到前n個相似度最大的圖像,即本文檢索結(jié)果.
本文實驗運行的操作系統(tǒng)為macOS Catalina,CPU為2.6GHz的6核Intel Core i7,GPU為Intel UHD Graphics 630,內(nèi)存為8GB,程序的編程語言為Python 3.7,基于的深度學(xué)習(xí)框架為Tensorflow.
本文使用Corel-1000和Corel5K圖像集作為實驗數(shù)據(jù)集.Corel-1000一共10類1000張圖片,被分為雪山、大海、古羅馬建筑、公共汽車等10個語義主題.Corel5K一共50類5000張圖片,被分為賽車、戰(zhàn)斗機、熊、海灘等50個語義主題.其中4000張作為訓(xùn)練集,500張作為驗證集,500張作為測試集.本文所選的圖像集中同一個類的圖像具有顏色、角度、形狀、尺寸和背景等差異,所以圖像集檢索出的效果具有一定的泛化性.
評價指標使用一種基于排名的評價標準[20].對于本文的圖像檢索,計算待檢索圖像特征向量和圖像特征庫中特征向量的余弦相似度,得到排名前n的圖像.檢索一幅圖像的平均精度(AP)為公式(15):
(15)
其中f(j)為圖像庫中的n個圖像的第j個圖像與待檢索圖像的相似關(guān)系,如待檢索圖像和檢索得到的圖像標簽一致,f(j)的值為1,反之則為0.
對于k次檢索,其平均精度均值(MAP)為:
(16)
查全率(Recall)為評價圖像檢索效果的另一個關(guān)鍵指標:
(17)
其中b為圖像庫中與待檢索圖像相似的圖像總數(shù)目.
本文使用高斯分布[21]隨機產(chǎn)生權(quán)值,初始VGG-NA網(wǎng)絡(luò)參數(shù);本文模型加入BN層防止過擬合[22],去除Dropout層;根據(jù)本文數(shù)據(jù)集,設(shè)置L2懲罰系數(shù)為0.0001;模型mini-batch大小為256、梯度下降動量為0.9,初始學(xué)習(xí)率(LR)為0.002,學(xué)習(xí)率衰減為0.9.
4.5.1 不同算法MAP對比
利用7種不同的模型進行結(jié)果比較,包括4種不同算法比較和3種本文算法提升比較,證明VGG-NA模型改進的有效性.這7種對比算法分別是:SIFT、SVM主動學(xué)習(xí)、LeNet-5、LeNet-L、VGG-16、VGG-N以及VGG-NA,模型說明如表3所示.

表3 不同的對比模型
本文對比的7種模型中,SIFT算法結(jié)合K_means聚類算法,可以實現(xiàn)對小規(guī)模簡單圖像的快速檢索,屬于傳統(tǒng)圖像檢索算法.SVM主動學(xué)習(xí)算法借助分類器,利用最大化間隔找到最優(yōu)的檢索目標,速度相對較快.LeNet-5和LeNet-L是CNN模型以及其改進模型,其結(jié)構(gòu)比較簡單清晰,參數(shù)量中等,是對比其他網(wǎng)絡(luò)的最佳選擇.VGG-16、VGG-N和VGG-NA是本文基礎(chǔ)模型及其改進模型,網(wǎng)絡(luò)層數(shù)為16層,參數(shù)量超過138million,是本文改進的最佳選擇.下面是對于在不同的數(shù)據(jù)集Corel-1000和Corel5K,這7種模型的MAP隨返回圖像數(shù)的變化趨勢.
根據(jù)表4可得,對于相同的Top_n,本文方法明顯優(yōu)于SIFT(K_means)以及其他CNN模型(LeNet-5),同時隨著返回圖像數(shù)量的增加,VGG-NA依然可以保持較高的MAP.在數(shù)據(jù)集Corel-1000中,VGG-NA比SIFT方法的MAP平均提升約12.6%,比SVM主動學(xué)習(xí)方法的MAP平均提升約16.3%,比LeNet-L方法的MAP平均提升約2.8%,說明本文模型相比較其他模型在MAP上效果明顯.再由表4可得,對于數(shù)據(jù)集Corel-1000,VGG-NA比VGG-16方法提升約3.4%,VGG-NA比VGG-N方法提升約2.3%,這表明本文提出的模型改進對提升精度有效.同時由圖4(A)可知,隨著Top_n增加,本文和其他對比算法的MAP都在不斷的下降,其中SVM主動學(xué)習(xí)和LeNet-5方法的MAP以大概4.6%的趨勢下降,SIFT、LeNet-L、VGG16和VGG-N以大概2.0%的趨勢下降,本文VGG-NA方法以大概0.9%的趨勢下降,體現(xiàn)了本文方法的泛化性.

表4 不同算法在數(shù)據(jù)集Corel-1000上的MAP

圖4 MAP、Recall隨Top_n的變化
為了更近一步驗證本文算法改進的有效性,以及對比其他算法的提升,在Corel5K數(shù)據(jù)集上測試了本文VGG-NA算法和其他算法的MAP.實驗結(jié)果如表5所示,對于數(shù)據(jù)集Corel5K上的MAP,VGG-NA比SIFT提升約14.0%,比SVM主動學(xué)習(xí)提升約18.5%,比LeNet-5提升約21.2%,比LeNet-L提升約3.1%.同時又可得,經(jīng)過改進的CNN模型能夠?qū)AP提升至80%以上,而基于CNN基礎(chǔ)模型或者傳統(tǒng)內(nèi)容的檢索算法的MAP相對較低,約在70%.由此驗證本文改進后的VGG-NA模型對在不同數(shù)據(jù)集上提升MAP具有有效作用,相比較同類算法提升明顯.

表5 不同算法在數(shù)據(jù)集Corel5K上的MAP
4.5.2 不同算法Recall對比
在數(shù)據(jù)集Corel-1000上的Recall實驗結(jié)果如圖4(B)所示.相同Top_n時,本文方法VGG-NA的Recall明顯高于LeNet-5、SIFT和LeNet-L.并且當Top_n越大,每個方法的Recall相差也越大,證明本文改進算法的有效性.同時本文還利用實驗,探究了MAP隨Recall的變化關(guān)系,如圖5所示.當Recall越高,MAP就越低,兩個呈反比趨勢.同時在相同Recall時,本文方法VGG-NA的MAP明顯高于其他3種方法,且當Recall達到90%時,MAP仍能夠保持20%,驗證本文算法的性能較好.

圖5 MAP隨Recall的變化
4.5.3 不同算法時間對比
本文通過實驗將VGG-NA與其他的算法在Corel5K和Corel-1000上的檢索時間進行對比,如圖6所示.從圖6中可以看出,除去檢索時間最低、MAP最低的LeNet-5算法,VGG-NA檢索時間明顯低于SIFT、SVM主動學(xué)習(xí)和LeNet-L算法,同時VGG-NA相比較其改進前模型VGG16、VGG-N檢索速度提升明顯,從而驗證本文改進對檢索效率提升的可行性.本文在增加BN計算、多個pooling層和加權(quán)注意力的同時,減少FC層,縮短檢索時間.

圖6 圖像檢索時間對比
本文通過改進VGG-16模型得到VGG-N模型,通過改進Attention模型得到CS-Attention模型,并行兩個改進模型得到新的模型VGG-NA模型.在相同數(shù)據(jù)集下,VGG-NA相比較原模型在MAP上提升約3.4%、檢索時間上提升約9.4%、Recall突破70%以上,提升明顯,證明了本文算法改進的有效性.
本文模型VGG-NA主要有3個創(chuàng)新部分:第1部分是對基礎(chǔ)網(wǎng)絡(luò)模型VGG-16的改進,在CONV和ReLU之間加入BN計算、替換Max-pooling為Mean-pooling、增加SP金字塔池化、簡化FC層,得到新模型VGG-N;第2部分是對注意力模型的改進,在串行的空間和通道注意力模型的池化部分加入stochastic-pooling,得到新串行注意力模型CS-Attention;第3部分是將VGG-N模型與CS-Attention模型并行加權(quán)融合,重構(gòu)特征向量,得到本文VGG-NA模型.同時在不同的數(shù)據(jù)集上,設(shè)計對比實驗,對比多種算法,證明本文算法改進的可行性,為圖像檢索提供了一個新思路.之后將會對VGG-NA模型進行更多改進,從而提升準確率和效率.