CAP:多重注意力機制,有趣的細粒度分類方案 | AAAI 2021

2022-06-24 15:01:40

論文提出細粒度分類解決方案CAP,通過上下文感知的注意力機制來幫助模型發現細微的特徵變化。除了畫素級別的注意力機制,還有區域級別的注意力機制以及區域性特徵編碼方法,與以往的視覺方案很不同,值得一看

來源:曉飛的演演算法工程筆記 公眾號

論文: Context-aware Attentional Pooling (CAP) for Fine-grained Visual Classification

Introduction


  論文認為大多數優秀的細粒度影象識別方法通過發掘目標的區域性特徵來輔助識別,卻沒有對區域性資訊進行標註,而是採取弱監督或無監督的方式來定位區域性特徵位置。而且大部分的方法採用預訓練的檢測器,無法很好地捕捉目標與區域性特徵的關係。為了能夠更好地描述圖片內容,需要更細緻地考慮從畫素到目標到場景的資訊,不僅要定位區域性特徵/目標的位置,還要從多個維度描述其豐富且互補的特徵,從而得出完整圖片/目標的內容。
  論文從折積網路的角度考慮如何描述目標,提出了context-aware attentional pooling(CAP)模組,能夠高效地編碼區域性特徵的位置資訊和外觀資訊。該模組將折積網路輸出的特徵作為輸入,學習調整特徵中不同區域的重要性,從而得出區域性區域的豐富的外觀特徵及其空間特徵,進而進行準確的分類。
  論文的主要貢獻如下:

  • 提出在細粒度影象識別領域的擴充套件模組CAP,能夠簡單地應用到各種折積網路中,帶來可觀的細粒度分類效能提升。
  • 為了捕捉目標/場景間的細微差別,提出由區域特徵引導的上下文相關的attention特徵。
  • 提出可學習的池化操作,用於自動選擇迴圈網路的隱藏狀態構成空間和外觀特徵。
  • 將提出的演演算法在8個細粒度資料集上進行測試,獲得SOTA結果。
  • 分析不同的基礎網路,擴大CAP模組的應用範圍。

Proposed Approach


  論文演演算法的整體流程如上圖所示,輸入圖片,輸出具體從屬類別,包含3個元件(3組引數):

  • 基礎CNN網路\(\mathcal{F}(.;\theta_b)\)
  • CAP模組\(\mathcal{F}(.;\theta_c)\)
  • 分類模組\(\mathcal{F}(.;\theta_d)\)

Context-aware attentional pooling (CAP)

  定義折積網路輸出的特徵為\(x=\mathcal{F}_b(I_n;\theta_b)\),CAP的模組綜合考慮畫素級特徵、小區域特徵、大區域特徵以及圖片級特徵的上下文資訊進行分類。

  • pixel-level contextual information

  畫素級特徵的上下文資訊主要學習畫素間的關聯度\(p(x_i|x_j;\theta_p)\),在計算\(j\)位置的輸出時根據關聯度綜合所有其他畫素特徵,直接使用self-attention實現,特徵轉化使用\(1\times 1\)折積。這一步直接對主幹網路輸出的特徵進行操作,但沒在整體流程圖中體現。

  • Proposing integral regions

  為了更高效地學習上下文資訊,論文在特徵圖\(o\)上定義不同粒度級別的基本區域,粒度級別由區域的大小決定。假設\((i,j)\)位置上的最小的區域為\(r(i,j\Delta_x,\Delta_y)\)為例,可通過放大寬高衍生出一系列區域\(R=\{r(i,j,m\Delta_x,n\Delta_y)\}\)\(i < i + m \Delta_x \le W\)\(j < j + n \Delta_y \le H\)。在不同的位置產生相似的區域合集\(R\),得到最終的區域合集\(\mathcal{R}=\{R\}\)\(\mathcal{R}\)覆蓋了所有的位置的不同寬高比區域,可以提供全面的上下文資訊,幫助在圖片的不同層級提供細微特徵。

  • Bilinear pooling

  按照上一步,在特徵圖上得到\(|\mathcal{R}|\)個區域,大小從最小的\(\Delta_x\times\Delta_y\times C\)到最大的\(W\times H\times C\),論文的目標是將不同大小的區域表示為固定大小的特徵,主要採用了雙線性插值。定義\(T_{\psi}(y)\)為座標轉換函數,\(y=(i,j)\in \mathbb{R}^c\)為區域座標,對應的特徵值為\(R(y)\in \mathbb{R}^C\),則轉換後的圖片\(\tilde{R}\)\(\tilde{y}\)座標上的值為:

\(R(T_{\psi(y)})\)為取樣函數,\(K(\cdots)\)為核函數,這裡採用的是最原始的方法,將目標座標對映回原圖,取最近的四個點,按距離進行輸出,最終得到池化後的固定特徵\(\bar{f}(w\times h\times C)\)

  • Context-aware attention

  這裡,論文使用全新的注意力機制來獲取上下文資訊,根據\(\bar{f}_r\)與其他特徵\(\bar{f}_{r^{'}}(r, r^{'}\in \mathcal{R})\)的相似性進行加權輸出,使得模型能夠選擇性地關注更相關的區域,從而產生更全面的上下文資訊。以查詢項\(q(\bar{f}_r)\)和一組關鍵詞項\(k(\bar{f}_{r^{'}})\),輸出上下文向量\(c_r\)

  引數矩陣\(W_{\beta}\)\(W_{\beta^{'}}\)用來將輸入特徵轉換為查詢項核關鍵項,\(W_{\alpha}\)為非線性組合,\(b_{\alpha}\)\(b_{\beta}\)為偏置項,整體的可學習引數為\(\{W_{\beta},W_{\beta^{'}},W_{\alpha},b_{\alpha},b_{\beta}\}\in\theta_c\),而注意力項\(\alpha_{r,r^{'}}\)則代表兩個特徵之間的相似性。這樣,上下文向量\(c_r\)能夠代表區域\(\bar{f}_r\)蘊含的上下文資訊,這些資訊是根據其與其他區域的相關程度獲得的,整體的計算思想跟self-attention基本相似。

  • Spatial structure encoding

  上下文向量\(c=\{c_r|r=1,\cdots|\mathcal{R}|\}\)描述了區域的關鍵程度和特點,為了進一步加入空間排列相關的結構資訊,論文將區域的上下文向量\(c\)轉為區域序列(論文按上到下、左到右的順序),輸入到迴圈神經網路中,使用迴圈神經網路的隱藏單元\(h_r\in\mathbb{R}^n\)來表達結構特徵。
  區域\(r\)的中間特徵可表示為\(h_r=\mathcal{F}_h(h_{r-1},f_r;\theta_h)\)\(\mathcal{F}_h\)採用LSTM,\(\theta_h\in\theta_c\)包含LSTM的相關引數。為了增加泛化能力和減少計算量,上下文特徵\(f_r\in\mathbb{R}^{1\times C}\)\(c_r\in\mathbb{R}^{w\times h\times C}\)進行全域性平均池化得到,最終輸出上下文特徵序列\(f=(f_1,f_2,\cdots,f_r,\cdots,f_{|\mathcal{R}|})\)對應的隱藏狀態序列\(h=(h_1,h_2,\cdots,h_r,\cdots,h_{|\mathcal{R}|})\),後續用於分類模組中。

Classification

  為了進一步引導模型分辨細微的變化,論文提出可學習的池化操作,能夠通過組合響應相似的隱藏層\(h_r\)來整合特徵資訊。論文借鑑NetVLAD的思想,用可導的聚類方法來對隱藏層的響應值進行轉換,首先計算隱藏層響應對類簇\(k\)的相關性,再加權到類簇\(k\)的VLAD encoding中:

  每個類簇都有其可學習的引數\(W_i\)\(b_i\),整體思想基於softmax,將隱藏層的響應值按softmax的權重分配到不同的類簇中。在得到所有類簇的encoding向量後,使用可學習的權值\(W_N\)和softmax進行歸一化。因此,分類模組\(\mathcal{F}_d\)的可學習引數為\(\theta_d=\{W_i, b_i, W_N\}\)

Experiments and Discussion


  在不同的資料集上,對不同方法進行對比。

  不同主幹網路下的準確率對比。

  不同模組輸出特徵的視覺化,圖b是加入CAP後,主幹網路輸出的特徵。

Conclusion


  論文提出細粒度分類解決方案CAP,通過上下文感知的注意力機制來幫助模型發現目標的細微特徵變化。除了畫素級別的注意力機制,還有區域級別的注意力機制以及區域性特徵編碼方法,與以往的視覺方案很不同,值得一看。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演演算法工程筆記】