經(jīng)卓勛,劉建明
(江西師范大學計算機信息工程學院,江西 南昌 330022)
細粒度識別分類是計算機視覺領域熱門的研究問題,其主要是對數(shù)據(jù)中在粗粒度的大類下的細粒度子類進行分類.在細粒度圖像分類任務中,不同子類別間存在較高相似度,這種高相似度往往只存在局部的且細微的差異,如不同鳥類間鳥喙的色塊差異或羽毛花紋的不同等,這也使得相對于一般的圖像分類算法,細粒度圖像分類更困難且更具挑戰(zhàn)性.因此,在細粒度識別任務中,通常采用引入注意力機制的方法探索目標圖像中細微的、最具有判別力的部位,但此類方法通常只考慮圖像樣本所提供的特征,從而發(fā)掘更多的目標部件,并在單模態(tài)場景下做識別,最終忽略了其他模態(tài)的信息來源.
最近,基于多模態(tài)信息融合的細粒度識別方法引起了越來越多學者的關注,因為人類在學習認識事物的過程中,不僅從圖像樣本得到知識,還從文本、口頭描述中認識事物,所以該類方法就基于這種思路,將高層次的語義信息(如人工標簽、屬性注釋等)作為輔助,結合圖像數(shù)據(jù)建立聯(lián)合模型.如雙模態(tài)漸進式掩模注意力模型(Bi-modal PMA)[1]通過CNN(convolutional neural network)[2]和LSTM(long short-term memory)[3]分別將圖像和文本數(shù)據(jù)編碼,通過自注意力模塊分別從上述2個單一模態(tài)收集信息,并通過一個查詢-關系模塊建立雙模態(tài)信息之間的關系;CVL[4]方法則是采取視覺流和語言流同時編碼的雙分支模型,但這類方法需要構建雙分支模型結構,且不易改動,在訓練和測試階段需要雙模態(tài)數(shù)據(jù)同時參與,復雜度較高.
為解決上述問題,本文提出了一種可隨意插入任何卷積神經(jīng)網(wǎng)絡的、融合預測屬性的注意力算法,該算法主要由2個部分組成:(a)屬性預測模塊APM(attribute-predicted module),該模塊通過已知屬性語義向量信息構建類別屬性向量矩陣,用于預測所有輸入圖像樣本在屬性語義空間上的屬性語義向量;(b)基于預測屬性引導的通道注意力模塊PACAM(predicted-attribute-guided channel attention module),該模塊以上一層特征圖和屬性預測模塊APM的預測屬性語義向量作為輔助輸入,挖掘出特征圖潛在的特征語義表示,且測試階段不需要屬性語義數(shù)據(jù).
細粒度圖像分類是在計算機視覺領域中十分具有挑戰(zhàn)性的問題,在現(xiàn)實場景中有著廣泛的應用前景.目前主流的細粒度圖像分類方法可以分為3類:(a)端到端的特征學習方法;(b)先檢測對象的多個部件,再從已定位的部件區(qū)域中提取圖像特征的方法;(c)基于多模態(tài)信息融合的方法.
第1種方法是構建端到端的深度學習框架進行特征編碼,在訓練中只使用圖像級標簽構建模型學習更有判別力的特征.如Gao Yu等[5]提出的通道交互網(wǎng)絡,可通過圖像的特征圖得到通道間的差距信息,再與原始特征圖的特征結合,從而增強通道所學習到的判別特征.Zhuang Peiqin等[6]提出了一種注意力成對交互網(wǎng)絡,通過對輸入的2張圖像得到一個共同特征向量,查找特征通道中包含的對比線索.
第2種方法是先檢測對象的某些部位,從部位檢測特征來識別對象.早期工作需要數(shù)據(jù)庫的外部標注信息,最近的方法只需提供分類標簽,不需要額外標注.如Hu Tao等[7]提出的WS-DAN(weakly supervised data augmentation network)網(wǎng)絡,采用雙線性注意力池化機制生成注意力圖,并使用生成的注意力圖來生成Mask掩碼遮罩,再應用到原圖像上實現(xiàn)數(shù)據(jù)增強.Zheng Heliang等[8]提出了三線性注意力采樣網(wǎng)絡TASN(tri-linear attention sampling network),在其之前的細粒度識別的方法中,提取的對象部位的數(shù)量是預定義的,缺乏靈活性,且計算成本較高,而TASN通過一個三線注意力機制模塊做細節(jié)定位,通過知識蒸餾的方式來優(yōu)化主網(wǎng)絡.Du Ruoyi等[9]則致力于將多粒度的圖像特征融合,用一個拼圖生成器生成不同粒度級別的圖像,提出了一個新的漸進式訓練策略,在每個訓練步驟中融合來自先前粒度級別的數(shù)據(jù).Ding Yifeng等[10]同時運用高層和低層的特征信息,建立了注意力金字塔卷積神經(jīng)網(wǎng)絡,該模型具有自上而下的特征金字塔結構和自下而上的注意力金字塔結構.A. Behera等[11]提出了一種上下文感知注意力池,使模型更好地學習物體各部位特征.Ji Ruyi等[12]將決策樹和神經(jīng)網(wǎng)絡相結合,提出了一種注意力卷積二叉神經(jīng)樹結構做分類,在樹結構的邊緣加入卷積計算,使用Attention Transformer模塊讓模型捕捉具有判別力的特征,從而讓分支路由模塊來決定樣本送往左子樹還是右子樹.而He Ju等[13]基于Vision-Transformer結構設計了TransFG模型,考慮到圖像空間上的相鄰結構,在將圖像序列化時采用重疊的patch方法,整合注意力權重至注意力映射,保留全局信息,計算區(qū)域的對比損失從而定位圖像的差異性局部區(qū)域,以此進行細粒度分類.
第3種方法是基于多模態(tài)信息融合建立模型.人類不僅從物體對象的外觀上認識對象,也可從多種渠道獲取對象的相關知識.因此,在擁有圖像數(shù)據(jù)的基礎上,將多模態(tài)信息數(shù)據(jù)作為輔助,提高網(wǎng)絡的特征表達性能.在細粒度分類領域中,目前主要使用的輔助分類信息為文本和數(shù)據(jù)屬性.Chen Tianshui等[14]提出了知識嵌入式表示學習(knowledge-embedded representation learning,KERL)的框架,通過引入屬性和知識圖來處理細粒度圖像識別的任務.Sun Liang等[15]通過一個文本嵌入網(wǎng)絡將圖像的文本描述編碼為向量表示,并與圖像編碼網(wǎng)絡的向量連接輸入雙線性網(wǎng)絡,得到了較高的準確率.還有使用更多模態(tài)的方法,如Zhu Linchao等[16]利用視頻和文字,設計了全局動作、局部區(qū)域以及語言描述3種模態(tài)的輸入進行多模態(tài)特征學習,提高了人體細粒度動作圖像識別的準確率.
但是以上結合多模態(tài)信息的方法,通常有著比較復雜的結構,或者在訓練與測試階段都需要額外的屬性或者文本信息作為輔助,模型的靈活度較差,適用范圍小.因此,本文提出了基于預測屬性引導的注意力機制的細粒度分類方法.
人類在對接收的視覺信息進行處理時,會選擇性地關注某些關鍵性的細節(jié),而忽略其他信息.注意力模塊將人類認識圖像信息的注意力機制應用到計算機視覺領域,讓計算機學習人類視覺認知的思維方式處理視覺信息,使模型在處理信息的過程中更多地關注關鍵部分的特征.
V. Mnih等[17]在傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡中應用了注意力機制,通過注意力機制來學習一幅圖像中需要關注的部分,而不是直接處理整幅圖像的像素,同時也降低了任務的復雜度.
Woo Sanghyun等[18]提出了一種卷積注意力模塊(convolutional block attention module,CBAM),該模塊分為通道注意力模塊與空間注意力模塊,先后在通道與空間維度上尋找圖像與最終輸出結果相關聯(lián)的區(qū)域.
同樣,還有受基于CBAM的工作啟發(fā)后的延伸方法:BAM(bottleneck attention module)[19],該模塊的構思是將CBAM中通道與空間注意力模塊的連接方式從串聯(lián)改為并聯(lián),但同時CBAM需要通過通道間的池化處理,而BAM則全部通過卷積或空洞卷積完成,融合了多感受野的信息,比CBAM計算量更大,但是包含更多的信息.
本文提出注意力引導的通道注意力模塊(PACAM),通過屬性預測模塊(APM)將圖像特征圖數(shù)據(jù)映射到一個屬性向量語義空間,并對輸入的每個樣本做屬性預測,得到一個屬性語義向量(以下簡稱屬性向量)作為注意力機制的輔助特征,在特征圖的通道維度上應用注意力機制.在應用到細粒度分類任務常用的骨干網(wǎng)絡框架下,其準確率得到了明顯提升.
本文提出的基于預測屬性引導的通道注意力算法是通過屬性信息來引導通道注意力,模塊結構由屬性預測模塊(APM)與預測屬性引導的通道注意力模塊(PACAM)組成.
本文算法使用VGG-19、Resnet-50、Bilinear-CNN 3種在圖像細粒度識別領域中常用的卷積神經(jīng)網(wǎng)絡結構作為骨干(Backbone)網(wǎng)絡,可以在任意的CNN網(wǎng)絡結構后添加本文提出的PACAM與APM進行端到端的訓練.在通道維度上使用屬性語義向量作為輔助引導注意力模塊學習,從而增強網(wǎng)絡的表達能力.
算法整體結構圖如圖1所示,上一層特征圖作為模塊輸入,C、H、W分別為特征圖通道數(shù)、特征圖高度、寬度,Dattr為預測屬性向量維度,K為總類別數(shù).其中APM用于學習一個屬性語義空間,將類別和樣本映射到語義空間中,讓視覺分類器學習一個特征圖到屬性向量的映射.以圖像的特征圖作為輸入,得到預測的樣本的屬性向量.
PACAM以輸入特征圖以及從APM的輸出屬性向量作為輸入,用于將預測的屬性向量與圖像特征圖的向量表示連接,尋找圖像特征中更具有判別力的部分,得到加權后的特征圖作為下一層輸入.
圖1 算法總體結構示意圖
屬性預測模塊將學習一個屬性語義空間,將樣本特征圖映射到這個空間中,得到特征圖在屬性語義空間中的屬性語義表示.屬性預測方法使用卷積神經(jīng)網(wǎng)絡作為骨干網(wǎng)絡,網(wǎng)絡輸出的特征圖作為輸入.本文的屬性預測模塊的主要結構圖如圖2所示.
圖2 屬性預測模塊結構示意圖
假設輸入的某一層特征圖為FIn,其維度為C×H×W.屬性預測模塊的類別屬性向量矩陣由所有類別的屬性向量按序排列得到,類別的屬性向量維度為1×1×Dattr,而類別屬性向量矩陣Mattr的維度為1×K×Dattr,即每個類別存在一個1×Dattr維度的向量表示,Dattr為屬性向量維度,大小和所使用數(shù)據(jù)集中樣本提供屬性數(shù)目相等.
在APM模塊中,在構建類的全部類別屬性向量矩陣(以下簡稱為類別屬性矩陣)時,若數(shù)據(jù)庫沒有給出每個類的屬性向量,則取該類所有樣本實數(shù)值向量的平均值.考慮到每個屬性對于類別目標的重要程度不同,將每個類的屬性向量歸一化到0~1之間,每個屬性向量為連續(xù)性實值向量,則重要的屬性能夠獲得更大的權值,不重要的屬性的權值較小.相比于不重要的屬性,重要的屬性在訓練中能發(fā)揮更大的影響.
在本模塊中,獲得預測的屬性向量的公式為
attr(FIn;θ)=σ(fc(avg(FIn;θ)),
其中avg(·)為特征圖FIn經(jīng)過的全局平均池化層,fc為全連接層函數(shù),θ為全連接層可學習參數(shù),最終結果將向量映射到1×1×Dattr維度,σ為Sigmoid激活函數(shù),attr(FIn;θ)為預測出的屬性向量,其將作為PACAM的輸入,記為Vp.
在訓練階段,最終預測結果的向量表示為
(1)
其中P(FIn;θ)為最后輸出的每個類別的概率分布.APM在模型訓練階段最小化P(FIn;θ)與真實類別的One-Hot標簽向量的交叉熵損失,而在訓練階段優(yōu)化APM,該交叉熵損失函數(shù)可表示為
其中n為樣本數(shù),j表示第j個樣本,yjc為符號函數(shù),若樣本j真實類別為c則yjc取1,否則yjc取0,pjc樣本j屬于c類別的概率,即式(1)中得到的P(FIn;θ).而在測試階段,只輸出預測出的屬性向量作為通道注意力模塊的輸入.
屬性預測模塊使用對比損失函數(shù)來縮短當前樣本屬性向量與同一類樣本屬性向量之間的距離,遠離其他類別的樣本屬性向量.該對比損失函數(shù)可以表示為
其中2N表示在一個Batch中所有的樣本數(shù)量,z為當前樣本編號,a表示當前預測屬性樣本的類別,vb,i表示在一個epoch中編號為i的屬于b類別的樣本,b∈K,cos〈·,·〉表示計算2個預測出的屬性向量之間的余弦相似度.
對比損失函數(shù)Lcons采用余弦相似度來計算2個向量之間的相似度,從而縮小同一類預測屬性向量的距離,遠離其他類別的預測向量.
APM的總體損失函數(shù)為對比損失函數(shù)加上交叉熵損失函數(shù)Lce,即Lapm=Lce+αLcons,其中α為根據(jù)經(jīng)驗設定的超參數(shù).
本文的算法是在CBAM的基礎上提出改進的PACAM,改進自CBAM在通道維度上的注意力模塊,并將由APM預測的屬性向量Vp作為引導輸入,通過屬性向量讓神經(jīng)網(wǎng)絡模型關注圖像信息中更具有判別力的部分.PACAM的算法流程如圖3所示.
圖3 屬性引導的通道注意力模塊結構示意圖
此時輸入的特征圖FIn∈RC×H×W,記輸出的特征圖FOut∈RC×H×W,PACAM對輸入的特征圖FIn分別做全局最大池化與全局平均池化,得到2個維度相同的向量Vmax和Vavg,向量維數(shù)均為1×1×C.
將這2個向量和得到的預測屬性向量拼接,得到總維數(shù)為1×1×(C+Dattr)的2個維度相同的向量,再將這2個向量通過一個共享權值的多重感知機得到2個屬性向量V1和V2,它們的維數(shù)均為1×1×C.按元素求和并通過sigmoid函數(shù)后,輸出壓縮維數(shù)為1×1×C的通道注意力向量Va,將其與FIn做乘法,得到重組后的下一層特征圖FOut.
通道注意力向量Va的計算公式為
Va(FIn)=σ(MLP([avg(FIn);Vp])+MLP([max(FIn);
Vp])),
其中MLP為共享權重的多重感知機,有一個隱藏層.進一步可得
Va(FIn)=σ(W1(W0([avg(FIn);Vp]))+W1(W0·([max(FIn);Vp]))),
其中W0、W1分別為多重感知機中的可學習的權重參數(shù).W0∈R(C/r)×C),W1∈RC×C/r,r是可設定的系數(shù)且為削減參數(shù)開銷的比率.最后得到的通道注意力向量Va(FIn).
將向量Va(FIn)廣播到和特征圖相同的維度C×H×W,得到通道注意力圖Ma.
最后得到的下一層特征圖FOut的公式為
FOut=Ma?FIn.
APM的總損失函數(shù)是由APM的損失函數(shù)Lapm和主干網(wǎng)絡的交叉熵損失函數(shù)Lce之和,即
Lall=Lce+Lapm.
本文采用鳥類細粒度圖像數(shù)據(jù)集CUB-200-2011[20]作為實驗數(shù)據(jù)集,因為含有屬性信息的細粒度數(shù)據(jù)集較少,所以在細粒度圖像數(shù)據(jù)集中只有CUB鳥類數(shù)據(jù)集具有可靠清晰的屬性語義數(shù)據(jù).
該數(shù)據(jù)集包含200種鳥類,共有11 788幅圖,5 994幅訓練圖,5 794幅測試圖,共設有羽毛顏色、背上顏色等312種屬性.在數(shù)據(jù)集中,每種鳥類具有連續(xù)的實數(shù)的312維屬性向量,某些種類的鳥類間的差異可能非常微小,如大天鵝和小天鵝,它們只有鳥喙的圖案判斷差異,觀察者很難準確判斷圖像中鳥的類別,因此十分具有挑戰(zhàn)性.
本文的實驗用的GPU為NVIDIA GTX 1080Ti,顯存為11 GB,CPU為Inter i7-7700,所用的實驗系統(tǒng)為Ubuntu 16.04 LTS,CUDA 10.1,深度學習框架為Pytorch-1.6.0.
本文提出的預測屬性引導的注意力模塊能插入任意CNN網(wǎng)絡實現(xiàn)端到端的訓練.在訓練中,Batch Size設為16(即2N),α采用人工設置為0.1,采用SGD優(yōu)化器,初始學習率為0.001,每訓練40個epoch將學習率乘以0.1衰減,因此在進行至40個epoch以后總損失不再變化,判斷學習率過大,故將學習率乘以0.1并使得總損失函數(shù)值繼續(xù)收斂,共訓練了130個epoch.
為了測試本文所提出的PACAM的性能,選擇了在細粒度識別領域比較常用的3種骨干網(wǎng)絡(VGG-19、Resnet-50、Bilinear-CNN)作為實驗對象.
表1顯示了在使用不同的骨干網(wǎng)絡時設置的圖像大小以及模塊插入位置,考慮到本文提出的模塊加在不同網(wǎng)絡層數(shù)上會得到不同結果,因此在使用Resnet-50作為骨干網(wǎng)絡進行實驗時考慮了多種情況.
表1 模塊性能測試實驗設置
實驗圖像的輸入分辨率統(tǒng)一變換至448×448,在實驗中采用了左右隨機翻轉(zhuǎn)、隨機裁剪2種圖像增廣操作.使用了3種不同骨干網(wǎng)絡,Resnet-50-b4/5表示將PACAM和APM添加到第4或第5組的Block的最后一個Bottleneck結構之后(如conv5_3表示Block中第3個Bottleneck結構位置),VGG-19網(wǎng)絡則加在第16個卷積層之后,其中conv5_4表示在第16個卷積層之后的位置.
B-CNN意為雙線性池化卷積神經(jīng)網(wǎng)絡(bilinear-CNN),采用Resnet-34網(wǎng)絡結構作為其分支網(wǎng)絡的骨干網(wǎng)絡,在表1中conv_fusion意味著將PACAM加在B-CNN雙分支的特征融合層之后.其在CUB數(shù)據(jù)集上的表現(xiàn)如表2所示.
表2 在CUB-200-2011數(shù)據(jù)庫上各算法性能比較
只使用Resnet-50網(wǎng)絡在CUB數(shù)據(jù)集上分類的結果為84.5%,在第5個block之后加入了本文所述的PACAM和APM以后,其鳥類分類的準確率提高了2.6%.而VGG-19網(wǎng)絡使用PACANM比不使用PACAM僅提高了0.5%,雙線性網(wǎng)絡B-CNN在使用Resnet-34作為骨干網(wǎng)絡后提高了2.4%的準確率.
在使用VGG-19的情況下提升情況較小,推測原因是通道維數(shù)的差異產(chǎn)生的影響,如在Resnet-50網(wǎng)絡的b4和b5這2種設置下b5的通道維數(shù)更大,也得到了更高的準確率.且在實驗中的Resnet-50骨干網(wǎng)絡輸入PACAM的特征圖通道維數(shù)比VGG-19網(wǎng)絡的特征圖通道維數(shù)更大,能夠在更多的通道中更好地尋找到其中應當?shù)玫疥P注的部分.
為了驗證本文提出的通過預測屬性引導注意力的方法有效性,在性能測試的基礎上設計了消融實驗(見表3).
表3 采用Resnet-50作為骨干網(wǎng)絡的消融實驗結果
在表3中的消融實驗是將3種模塊設計加入Resnet-50的conv5_3位置得到的實驗結果,其中CBAM是使用沒有加入屬性語義信息的CBAM插入Resnet-50進行的網(wǎng)絡實驗,準確率僅有85.5%.
MAP是不使用預測屬性模塊,僅僅通過一個多重感知機模塊將圖像直接映射到屬性相同維度的向量,且未使用類屬性矩陣引導直接產(chǎn)生預測結果的方法.在PACAM+MAP的組合中,使用MAP替換本文的APM,將MAP方法得到的向量輸入PACAM得到的結果顯示:其在測試集上的準確率比只使用CBAM的方法的準確率更低,僅有84.9%,而在使用了本文提出的PACAM和APM的組合后,其測試集上的準確率有了明顯提高.這說明加入屬性向量引導注意力的方法是有效的.
在實驗中直接將圖像映射到向量維度造成識別精度的下降,以上結果說明:類別的屬性編碼確實能夠成為輔助信息做注意力引導,關注重要的特征通道.而在進行細粒度識別分割任務中,為了準確分類差異小的子類對象,通常需要大量而準確的各類標簽,但讓模型學習這類信息較為困難.由于屬性信息帶有精確的類別差異知識,所以本文實驗將其編碼的實值屬性語義向量和圖像特征結合,提高了模型分類的性能和準確率.
本文提出了一種基于預測屬性引導的通道注意力算法,該算法包含PACAM和APM,可以插入任意一種CNN網(wǎng)絡.一方面,利用已有的類屬性向量構成類屬性向量矩陣,通過APM建立屬性語義向量的預測模型,輸出預測屬性向量引導主干網(wǎng)絡的訓練和測試;另一方面,通過PACAM模塊連接屬性向量和通道注意力向量,引導通道注意力算法尋找更具有判別力區(qū)域的特征通道.本文最后通過實驗驗證了該模塊的性能.
最后,本文算法未來考慮從如下一些方面改進:考慮屬性語義信息與圖像特征在空間方面的聯(lián)系,將空間信息結合語義向量進一步做出研究和改進;考慮更多形式的語義信息,而屬性信息通常需要人工標注,代價較高,可以考慮結合其他更易取得的數(shù)據(jù),如數(shù)據(jù)集的文本描述,將其與屬性結合、與圖像數(shù)據(jù)建立聯(lián)合判斷模型.