1. 程式人生 > >基於注意力機制的細膩度影象分類

基於注意力機制的細膩度影象分類

細膩度影象分類相比普通的影象分類具有更大的挑戰,因為在細膩度影象類別中類間差異往往只聚焦於很小的一個區域。比如在下圖海鷗的3個品種中,差異僅僅體現在喙與腳;而在人類活動識別(human activity recognition)中的彈奏樂器與拿著樂器也僅僅體現在手和嘴上。針對這一類分類任務可採用強監督的學習方式,即根據下圖中額外的bounding box資訊去學習相應的模型;然而,一方面強監督的學習框架需要額外的標註資訊;另一方面人為標定的區域(region)不一定是最適合模型分類的區域。因此基於非監督(注意這裡的非監督指不需要bounding box資訊,但是在模型學習中仍需要影象的label資訊)的細膩度影象分類模型在現實世界中更加通用與有效。在CVPR2017中一篇oral論文

Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition,提出了一個很有效的非監督學習模型, 能取得和採用類似bounding box標註的演算法效果。 
這裡寫圖片描述 
總的來說,該論文基於注意力機制的網路模型不斷聚焦到最具辨別性的區域實現影象的分類,如下圖,由粗尺度的啄木鳥原始影象聚焦到了更具辨別性的頭部區域;如此反覆聚焦到更細的尺度,使得模型類似於迴圈神經網路的流程。因此文中提出的模型叫Recurrent Attention Convolutional Neural Network (RA-CNN)。下面詳細闡述模型的網路結構。 
這裡寫圖片描述
 
RA-CNN結構如下圖所示: 
這裡寫圖片描述
可以看出,RA-CNN由上到下用了3個尺度並且越來越精細,尺度間構成迴圈,即上層的輸出作為當層的輸入。RA-CNN主要包含兩部分:每一個尺度上的卷積網路和相鄰尺度間的注意力提取網路(APN, Attention Proposal Network)。在每一個尺度中,使用了堆疊的卷積層等,最後接上全連線層於softmax層,輸出每一個類別的概率;這個是很好理解的,文中採用的網路結構是VGG的網路結構。 
APN實質是一個包含2個全連線層的網路,它的輸入是卷積網路中的最後一層卷積層,輸出是一個正方形區域(tx,ty,tltx,ty,tl),其中tx,ty表示該區域的中心座標,tl表示該區域邊長的一半。那麼該辨別的正方形區域的左上座標(top-left)和右下座標(bottom-right)就可表示為 
 
有了APN的區域輸出,我們就聚焦了一個辨別區域[tx,ty,tl][tx,ty,tl],那麼從上一個尺度的影象中擷取此辨別區域[tx,ty,tl][tx,ty,tl]的影象資料為: 

其中⊙⊙為矩陣的對應元素相乘操作符,而M(.)M(.)表示一個掩模矩陣(attention 
mask)。文中進一步指出,為了進行網路結構的學習,作者針對這裡的crop操作採用了近似的連續函式boxcar function,即 

其中h(x)=1/(1+exp{−kx})h(x)=1/(1+exp⁡{−kx})為logistic函式,當kk足夠大時,h(x)h(x)類似於一個階躍函式(step fuction);式中的tx(tl),tx(br),tx(tl),tx(br)tx(tl),tx(br),tx(tl),tx(br)為擷取區域的左上,右下座標。例如,假設擷取正方形區域中心為(150,150)(150,150),半邊長為50,k=1000k=1000,那麼M所產生的三維曲面如下圖。從圖中可以看出在擷取區域內的值為1,邊界區域0.5,其它區域為0。那麼生成的M掩模矩陣能很好的進行擷取區域的近似。並且該boxcar function為連續函式,使得在BP演算法中計算梯度成為可能。 
這裡寫圖片描述
這裡為了進一步有效的提取區域的特徵,作者對擷取區域進行了雙線性插值放大。然後,再輸入到卷積網路中。以上就是APN的實現細節,而其損失函式採用了成對的排序損失(pairwise ranking loss),即使得當前尺度的卷積網路的概率輸出大於上一尺度的概率輸出。直白的理解就是,通過APN後,獲取了影象的辨別區域;那麼預測的影象正確類別的輸出概率會隨著尺度的加深越來越大。最終,總的損失包含卷積網路的各尺度的輸出損失和各個APN的成對排序損失,定為: 

其中lclslcls為卷積網路損失,即為常見的交叉熵損失函式;lranklrank為成對排序損失,具體定義為 

這樣的損失函式設計使得在訓練過程中,以粗尺度的概率輸出作為參考,並強制細尺度得到更好的輸出以不斷的聚焦到最具辨別性的區域。 
整個網路的訓練採用交替的訓練策略,步驟如下:

  • 初始化:直接從ImageNet訓練的VGG的引數初始化卷積網路;
  • 預訓練APN:在卷積網路的最後一個卷積層裡選取響應最大的區域作為APN的輸出區域,其中該輸出區域的大小初始化為原始影象的一半。這樣有了區域[tx,ty,tl][tx,ty,tl],我們就可以預訓練圖中的2個APN網路(d1,d2d1,d2);
  • 交替訓練:固定APN的引數,訓練卷積網路;固定卷積網路的引數,訓練APN;直到兩者的 loss 不再變化。注意,在引數tltl的更新中,作者加入了約束,即當前尺度的tltl大小不得小於上一尺度的1/31/3,以保證擷取區域的結構完整性。其中,擷取操作採用了具有連續性質的 boxcar 函式,成對排序損失lranklrank對引數[tx,ty,tl][tx,ty,tl]的求導是很容易的;有了lranklrank對引數[tx,ty,tl][tx,ty,tl]的梯度,再往回傳,即就是更新APN網路中2個全連線層的權重引數。

該論文采用通過尺度內分類損失(intra-scale classification loss)和尺度間排序損失(inter-scale ranking loss)進行優化,以相互學習精準的區域注意力和細粒度表徵。最後的實驗結果表面RA-CNN 並不需要邊界框或邊界部分的標註,即可達到和採用類似bounding box標註的演算法效果,並且可以進行端到端的訓練。