注意力機制技術總結


前言:

注意力機制在視覺上是非常重要的部分,這方面的綜述、總結有很多。為了本文總結的全面性,我基本都看了一遍。然而這些綜述要么面面俱到,對所有內容都非常詳細地闡述,包括一些非常不常用的,過時的論文或結構;要么沒分清重點,有些內容跟論文有關,但跟注意力無關,這些文章也把這些內容總結到里面。

什么是注意力?就是只寫有用的,只留下值得關注的部分。對於已經過時的結構或論文,不為了刻意做到“史上最全的...總結”,“全面綜述....”,而將其寫在文章中,讓讀者產生這篇文章很有價值的感覺,但實際上看下來,讀者很容易被無關緊要的內容、過時的內容、過於詳細的內容所耗費精力,而真正重要的內容什么也沒學到。

什么是真正重要的內容?那就是模塊的設計思想,改進思路,具體結構,這樣設計的優點,解決了什么問題。

這是這篇總結與其它綜述的不同之處。包括公眾號中以往的《池化技術總結》《數據增強方法總結》《特征金字塔技術總結》等一系列總結,都是按照上面提到的這個原則來寫的,里面所有的內容,都是值得去認真看的,而不重要的內容一般都只有幾句話就帶過了。

這篇文章介紹了一些即插即用的注意力模塊,一些根據具體任務設計的注意力結構。此外,讀者可根據這些論文中所提出的設計思想,改進思路等內容,在自己方向上設計相應的、合適且合理的結構。

 

STN(2015)

論文原文:Spatial Transformer Networks

這是一篇過時的文章,讀者不必了解太多,但它的主要思想卻值得寫一下。

圖片

 

如上圖所示,圖像中的一些目標可能存在各種各樣的角度,姿態,為了提高模型的泛化能力和魯棒性,我們希望模型能對各種姿態,扭曲變形的目標,都能有較好的識別檢測能力。因此,論文提出了對輸入圖像進行空間變換(spatial transformer),通過spatial transformer將其在空間上“擺正位置”。

圖片

 

具體做法如上圖所示,類似於SE和CBAM,在網絡中間加一個分支,作為空間轉換器。關於這個轉換器這里不多介紹,了解本文的主要思想即可。

 

OPAM(2017)

論文:Object-Part Attention Model for Fine-grained Image Classifification

這篇論文同樣值得一寫的是它的主要思想,其主要內容並沒有值得去看的地方。

主要思想:對於細粒度圖像分類來說,一個大類別下存在幾百個小類別,而區分這些小類別的關鍵,在於目標身上的特征,例如識別數百種鳥類,此時背景信息對於區分不同類型的鳥類基本沒有幫助。

為了讓模型更加關注到目標所在的區域,對於圖像中背景的地方,通過一個圖像分類模型,生成saliency map。通過saliency map定位到目標所在的區域,裁剪,重新進入一個新的part-level Attention Model進行識別分類。

圖片

 

Residual Attention(2017)

論文:Residual Attention Network for Image Classifification

 

論文提出了殘差注意力網絡,這是一種在“非常深”的結構中采用混合注意力機制的卷積網絡。殘差注意力網絡由多個注意力模塊組成,這些模塊會產生注意力感知功能。如下圖所示,隨着模塊的深入,來自不同模塊的注意力感知功能會自適應地變化。

注意力模塊如下圖所示:

注意力模塊由兩條分支組成,一個是Soft Mask Branch,一個是Trunk Branch。

Trunk Branch是正常卷積結構,Soft Mask Branch是先經過兩次max pooling,以便迅速獲得更大的感受野,再通過雙線性插值,回到input feature map的大小,再經過兩次1x1卷積,以及sigmoid歸一化。再與Trunk Branch進行融合。

融合的方式若是直接相乘,由於Soft Mask Branch的范圍是(0,1],在經過多個堆疊的注意力模塊后,feature maps由於多次乘以Soft Mask的值會變得極小,模型的性能會明顯下降。因此提出Attention Residual learning來進行融合。

具體的融合方式如下圖所示,即增加了殘差連接。記住紅色框的內容,后面會經常出現。

 

 

BAM(2018)

論文:BAM: Bottleneck Attention Module

 

具體結構如下圖所示。細節內容就不多贅述了,讀者看圖更能理解,只介紹一個大概:利用了空洞卷積來獲取更大的感受野,增加了通道注意力,方式是在feature map上全局最大池化,再降維升維,如右下角所示使用了上面那篇論文中的Attention Residual learning方式來融合。

 

圖片

 

 

CBAM(2018)

論文:CBAM: Convolutional Block Attention Module

 

CBAM同樣是使用空間注意力和通道注意力,不過與BAM不同的是,通道注意力並不是像BAM那樣融合在空間注意力內再做歸一化,而是先后分開進行。

圖片

 

通道注意力的生成方式:先在feature maps上進行全局最大池化和全局平均池化得到兩個1維向量,再經過共享的MLP層,再進行相加,sigmoid歸一化。

空間注意力的生成方式:在通道上進行最大池化和平均池化,得到兩個feature map,經過7x7卷積,得到一個feature map,再BN,sigmoid歸一化。

注:這種空間注意力只考慮了局部的信息,在后面CVPR2021的Coordinate Attention中有所改進。

 

Non-Local(2018)

論文:Non-local Neural Networks

卷積操作在每一層獲得的感受野十分有限,對於一些長距離的依賴,需要堆疊很多層卷積才能獲得,為此,作者提出了Non-Local Block,這種結構使得網絡可以直接獲得兩個位置之間的依賴關系,而不用考慮距離。

具體結構圖如下所示:(由於這個模型本是用於時空模型中,因此下方的結構圖中包含了時間維度,去掉T便可用於圖像)

這種方式來源於transformer,先通過3個不同的1維卷積降維,再各自reshape為HW x512,前兩者通過點積進行相似性計算,再歸一化作為第三者的加權系數。最后使用1x1卷積升維和殘差連接。

這種方式的最大缺點在於進行HW與HW做相似性計算,計算量是H的四次方,因此論文中提出當H=14或7時才使用。后面在GCNet和CCnet中會有所簡化並改進。

 

PAN(2018)

論文:Pyramid Attention Network for Semantic Segmentation

 

 圖片

該論文針對語義分割引入像素級注意力。主要由兩個部分組成:Feature Pyramid Attention (FPA) 和Global Attention Upsample module (GAU)。

FPA在空間金字塔池化的基礎上調整而來,與空間金字塔池化不同的是,FPA通過不同大小的卷積來構建金字塔,並在此基礎上引入了通道注意力。

 圖片

 

GAU通過全局池化提供的全局信息作為指引選擇low-level特征,這是因為high-level中有着豐富的語義信息,這可以幫助引導low-level的選擇,從而達到選擇更為精准的分辨率信息。

 

Squeeze-and-Excitation(2018)

論文:Squeeze-and-Excitation Networks

這個不僅使用簡單,對筆者來寫這個也簡單,先貼出論文中的結構圖,再用Coordinate Attention中的一個結構圖作為對論文中結構圖的解釋。

其描述如下:

 

CCNet(2019)

論文:CCNet: Criss-Cross Attention for Semantic Segmentation

圖片

 

論文的主要思想在於從Non-Local的每個都與其它所有位置進行相似性計算變為只計算同一行和同一列的相似性。這樣極大地節省了計算量。

具體結構圖如下:

圖片

 

其中Criss-Cross Attention Module如下左圖所示,對於兩次loop的示意圖如下右圖所示,經過兩次loop,可獲取到任意兩個位置的依賴關系

圖片

 

 

GCNet(2019)

論文:GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond

如題所示,GCNet是在將Non-Local簡化后與Squeeze-Excitation結合。

如下圖所示:作者發現在query的不同點(圖中的紅點),計算出來的attention map是一樣的。

 

這就說明只需要計算一個點就可以了,其它位置的計算都是多余的,這樣做的好處就是計算量極大減少。

GCNet的整體框架如圖a所示,簡化版的Non-Local如圖b所示,GCNet具體結構如圖d所示。

GCNet將SE中的全局平均池化用簡化版的Non-Local來代替,而SE下方的結構用了Bottleneck來進行transform。這里使用Bottleneck是為了減少參數量,其中r取16。

 

DANet(2019)

論文:Dual Attention Network for Scene Segmentation

論文提出了雙注意力網絡,由位置注意力模塊(Position Attention Module)和通道注意力模塊(Channel Attention Module)組成。

整體的結構圖如下:

 

圖片

 

Position Attention Module和Channel Attention Module的結構圖如下所示:這兩個模塊沒什么細節的地方值得講的,看個圖就足以理解。

 

圖片

 

Coordinate Attention(2021)

論文:Coordinate Attention for Effificient Mobile Network Design

這篇論文基於SE和CBAM改進而來,作者認為SE沒有考慮空間信息,CBAM通過對每個位置的通道上進行池化,由於經過幾層卷積和降采樣后的feature maps的每個位置只包含原圖的一個局部區域,因此這種做法只考慮了局部區域信息。為此,作者提出了一種新的attention機制--Coordinate Attention。

Coordinate Attention利用兩個1D全局池化操作將沿垂直和水平方向的input features分別聚合為兩個單獨的direction-aware feature maps。 然后將具有嵌入的特定方向信息的這兩個特征圖分別編碼為兩個attention map,每個attention map都沿一個空間方向捕獲輸入特征圖的遠距離依存關系。 位置信息因此可以被保存在所生成的attention map中。 然后通過乘法將兩個attention map都應用於input feature maps,以強調注意區域的表示。

 

具體結構如圖c所示,簡單說來,Coordinate Attention是通過在水平方向和垂直方向上進行平均池化,再進行transform對空間信息編碼,最后把空間信息通過在通道上加權的方式融合。

 

總結:本文介紹了一些注意力模塊,雖然文字描述的比較少,但給出的結構圖足以理解其主要操作。除了以上的內容,此外還包括強注意力,但不是特別常見,本文未對其進行總結。

 

在公眾號CV技術指南中回復 “注意力機制” 可獲取相關16篇論文。

 

參考論文

1. Spatial Transformer Networks

2. Object-Part Attention Model for Fine-grained Image Classifification

3. Residual Attention Network for Image Classifification

4. BAM: Bottleneck Attention Module

5. CBAM: Convolutional Block Attention Module

6. Non-local Neural Networks

7. Pyramid Attention Network for Semantic Segmentation

8. Squeeze-and-Excitation Networks

9. CCNet: Criss-Cross Attention for Semantic Segmentation

10. GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond

11. Dual Attention Network for Scene Segmentation

12. Coordinate Attention for Effificient Mobile Network Design

 

最近把公眾號所有的技術總結打包成了一個pdf,在公眾號中回復關鍵字“技術總結”可獲取。

圖片

本文來源於公眾號CV技術指南的技術總結系列,更多內容請掃描文末二維碼關注公眾號。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM