電腦視覺中的注意力機制

Attention Mechanisms in Computer Vision: A Survey

Tsai Yi Lin
14 min readMar 12, 2022
Photo by Patrick on Unsplash

人類可以自然且有效地在復雜的場景中察覺到突出的區域。受到這一點的啟發,注意機制被引入到電腦視覺中,其目的是模仿人類視覺系統。這種注意機制可以看作是一個基於輸入圖像特徵的動態權重調整過程。注意機制在圖像分類、目標檢測、語義分割、影片理解、圖像生成、3D 視覺、多模態任務和自監督學習等視覺任務中取得了巨大的成功。本篇文章參考這篇論文: Attention Mechanisms in Computer Vision: A Survey 總結了電腦視覺中的各種注意機制,並對所有 CV Attention 研究進行分類,例如:通道注意力、空間注意力、時間注意力和分支注意力。相關的論文研究整理也能參考 GitHub 上的 repo: Awesome-Vision-Attentions 原作者統整了目前電腦視覺領域中各種注意力機制的研究。

論文首先將基於注意力的模型在計算機視覺領域中的發展歷程大致歸為了四個階段:

  1. 將循環神經網路與注意力機制相結合。代表方法為 RAM
  2. 透過注意力機制將原始圖片中的空間訊息變換到另一個空間中並保留了關鍵訊息,代表性方法為 STN。
  3. 使用通道注意力網路自適應地採樣重要特徵,代表方法為 SENet。
  4. 自注意力機制。
圖1. 注意力機制於電腦視覺中的演進

為什麼需要視覺注意力?

注意力機制能夠靈活捕捉全局和局部訊息之間的關係,它的目的就是讓模型學習到需要關注的重點 。假設要辨識一隻狗,模型必須對物體投入更大的權重,突出顯著有用特徵,並且抑制和忽略無關特徵。

圖2. 視覺注意力說明

然而電腦視覺中的注意力機制的基本概念就是讓機器學會注意力,並能夠忽略無關的訊息從而關注重點訊息。至於為什麼要忽略無關的訊息呢?首先我們先來談談 CNN 的優點:

  1. 結合影像特性採用影像區域相似、平滑變化的特性於模型架構中。
  2. 同樣的 pattern 可以使用同一組 filter 搜尋,因此可以共用權重並減少需要用的參數。
  3. 一張高解析度的圖,經過 subsampling 可以變成較小的圖,但是圖中的資訊不會受到影響。所以可以透過 subsampling 來減少訓練神經網路時需使用到參數數量。

但是卷積神經網路還是有一些明顯的缺點,像是卷積出來的訊息還是比較局部。我們以 1D CNN 為例,下圖是一個一維的輸入,在一維卷積的情況下輸入三層的卷積層,其實最終的輸出點也只有五個連網的感受野 (receptive field)。我們可以從這個例子中知道卷積網路是有局部性的。這樣一個特性就限制了網路去學習資料間彼此的關係。

圖3. CNN 優缺點

模型結構簡介 (注意力分類)

就注意力關注的域來分,大致可以分成以下六種:

  • 通道注意力 (Channel Attention)
  • 空間注意力 (Spatial Attention)
  • 時間注意力 (Temporal Attention)
  • 分支注意力 (Branch Attention)
  • 通道空間注意力 (Channel & Spatial Attention)
  • 時空注意力 (Spatial & Temporal Attention)
圖4. 電腦視覺注意力機制分類

1. 通道注意力 (Channel Attention)

在卷積神經網絡中,每一張圖片初始會由 (R,G,B)三通道表示出來,之後經過不同的捲積核之後,每一個通道又會生成新的特徵圖 (feature map),比如圖片特徵的每個通道使用16核卷積,就會產生16個新通道的矩陣 (H,W,16),其中 H,W 分別表示圖片特徵的高度和寬度。每個通道的特徵其實就表示該圖片在不同卷積核上的分量,而這裡面用卷積核的捲積類似於信號做了傅立葉變換,從而能夠將這個特徵一個通道的訊息給分解成16個卷積核上的信號分量。既然每個信號都可以被分解成核函數上的分量,產生的新的16個通道對於關鍵訊息的貢獻肯定有多有少,如果我們給每個通道上的信號都增加一個權重,來代表該通道與關鍵訊息的相關度的話,這個權重越大,則表示相關度越高,也就是我們越需要去注意的通道。

圖5. 通道注意力

這種結構的原理是想通過控制 scale 的大小,把重要的特徵增強,不重要的特徵減弱,從而讓提取的特徵指向性更強。

1.1 SENet

SENet 就是在通道引入注意力機制 (SE block),並且可以再多種經典模型中被引入的一種方法。SENet 主要是學習了 feature maps 中 channel 之間的關聯性,並篩選出針對通道的注意力,雖然此方法稍微增加了一點計算量,但是在許多經典網路中進一步提高了辨識準確率。關鍵的兩個操作是 squeeze 和 excitation。其中第一個 squeeze 就是採用全局平均池化為每張 feature map 提取出一個關鍵特徵足以表徵該張圖的內容。接著透過 excitation 通過自動學習的方式,獲取到每個通道特徵的重要程度。最後再用這個重要程度去給每一個特徵通道賦予一個權重值,從而讓神經網路關注某些特徵通道。

圖6. SENet 架構
公式1. SENet 數學式表示

此中方法也有存在不足的地方,例如像是在 squeeze 模塊中採用全局平均池化過於簡單,無法捕捉複雜的全局訊息。另外在 excitation 模塊中使用全連接層增加了模型複雜性。因此後續的研究中有為此方法做進一步的改善,例如 GSoP-Net 提高 squeeze 模塊的輸出,或是 ECANet 通過改進 excitation 模塊來降低模型的複雜性。又或是同時改善兩者的 SRM。

完整論文介紹可以參考:[CNN 經典模型] 通道域注意力機制 (SENet)

1.2 GSop-Net

Global Second-order Pooling Convolutional Networks 發表於 CVPR 2019,透過 GSoP 可以充分利用到圖像中的二階統計量以捕捉更多的訊息量。與 SEnet 中的一階注意力機制最大的區別是,本方法提出了2維平均池化透過協方差矩陣差來計算通道之間的關係。

圖7. GSop-Net 架構

Conv() 減少了通道數量, Cov() 計算協方差,RC() 表示行卷積。通過使用二階池化,塊提高了原先在 SE block 上萃取特徵的能力。

公式2. GSop-Net 數學式表示

1.3 SRM

SRM: A Style-based Recalibration Module for Convolutional Neural Networks 發表於 CVPR 2019。SRM 同時改善了 squeeze 和 excitation 模塊,並提出了一種基於 style 的重新校準模塊 (SRM)。其中 Style Pooling 是 avgpool 和 stdpool 的拼接,而 Style Intergration 就是一個自適應加權融合。

圖8. SRM 架構

1.4 ECANet

ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 發表於 CVPR 2020。與 SENet 相比 ECANet 改進了 excitation 模塊,並且將原有的全連接層替換成 1D CNN,透過共享權重的方式大幅減少參數量。其中 1D CNN 涉及到超參數 k 即為卷積和大小。

圖9. ECANet 架構

通道注意力的各種模型比較:

圖10. 通道注意力的各種模型比較
表1. 通道注意力的各種模型比較

2. 空間注意力 (Spatial Attention)

空間注意力可以被看作是一種自適應的空間區域選擇機制。此方法主要分成四大類:

  • RNN-based attention
  • Predict the relevant region explicitly
  • Predict a soft mask implicitly
  • Self-attention based
圖11. 空間注意力

2.1 Recurrent Models of Visual Attention (RAM)

RAM 將循環神經網路與注意力機制相結合,透過硬注意力將重點集中在關鍵區域,從而減少計算量。在此方法中一次在一張圖像中處理不同的位置,逐漸的將這些部分的訊息結合起來,來建立一個該場景或者環境的動態間隔表示。執得一提的是硬注意力的學習過程是不可微的,訓練過程需要透過強化學習來完成。

圖12. RAM 架構

2.2 Spatial Transformer Networks (STN)

Spatial Transformer Networks (STN) 模型發表於2015年NIPS,此方法透過注意力機制,將原始圖片中的空間訊息變換到另一個空間中並保留了關鍵訊息。先前有些方法透過 max pooling 或 average pooling 將圖片訊息壓縮,減少運算量提升準確率。但作者認為這些 pooling 方法過於暴力,直接將訊息合併會導致關鍵訊息無法識別出來。所以提出了一個叫空間轉換器 (spatial transformer) 的模塊,將圖片中的的空間域訊息做對應的空間變換,從而能將關鍵的訊息提取出來。

圖13. STN 架構

2.3 GENet

SENet 的原作者隔年發表了 GENet (Exploiting Feature Context in Convolutional Neural Networks)。其中 SENet 是 GENet 的特殊情況,當selection operator 的範圍是整個 feature map 的時候,形式就和 SENet 一樣的,是對一個 channel 裡的所有點都施加一樣的權重。在該論文中提出了 Gather-Excite 兩個模塊。並充分利用空間注意力來更好的挖掘特徵之間的上下文信息。

  • Gather 負責聚合每個特徵圖的大鄰域的上下文訊息,用於從局部的空間位置上提取特徵。本質上就是在輸入 x 上進行卷積或者池化操作生成維度減小的 feature map。
  • Excite 用於將特徵縮放至原始尺寸。將輸入 feature map x 經過 εG 之後得到的 X̂,使用Nearest Neighbor interpolation(最近鄰插值方法)resize 到 x 相同 shape,經過 sigmoid 後做點積運算。
圖14. GENet 架構

2.4 Non-local

Non-local Neural Networks 發表於 CVPR 2018,是第一篇將自注意力機制引入圖像領域的研究。文中提出了經典的 Non-Local 模塊,通過 Self-Attention 機制對全局上進行建模,有效地捕獲長距離的特徵依賴。後續許多基於自注意力的方法都是根據 Non-Local 來改進的。

圖15. Non-local Neural Networks 架構

空間注意力的各種模型比較:

表2. 空間注意力的各種模型比較

3. 通道空間注意力 (Channel & Spatial Attention)

空間域的注意力是忽略了通道域中的訊息,將每個通道中的圖片特徵同等處理,這種做法會將空間域變換方法局限在原始圖片特徵提取階段,應用在神經網絡層其他層的可解釋性不強。而通道域的注意力是對一個通道內的訊息直接全局平均池化,而忽略每一個通道內的局部訊息,這種做法其實也是比較暴力的行為。所以結合兩種思路,就可以設計出混合域的注意力機制模型。

圖16. 通道空間注意力

3.1 CBAM

CBAM: Convolutional Block Attention Module 從論文名字我們可以發現作者提出的是一個卷積模塊,這意味著他可以被引用在任何網路架構中。然而這個模塊可以接收任一層卷積神經網路的輸出,並依序經過通道注意力模塊以及空間注意力模塊。

圖17. CBAM 架構

完整論文介紹可以參考:通道空間注意力: CBAM

4. 分支注意力 (Branch Attention)

分支注意可以被看作是一種動態的分支選擇機制,通過多分支結構決定去注意什麼。

圖18. 分支注意力

4.1 Highway Network

最具代表性的方法分別是 CVPR 2019 提出來的 SKNet (Selective Kernel Networks) 以及 ResNeSt。Highway Network 顧名思義就是有多條分支網路進行卷積,通過不同大小的卷積核形成多個分支。最後再透過注意力分數的計算決定要融合 Feature maps 的比例。

圖19. Highway Network 代表模型

4.2 Dynamic Network

Dynamic Network 會比較難訓練,因為他還要考慮到每個卷積核的注意力訊息。最典型的例子就是動態卷積神經網路 (Dynamic convolution layer)。其概念是在一個卷積層中用到了多個卷積核,並且使用注意力機制去結合不同卷積核的訊息,提取到更加豐富的特徵。

圖20. Dynamic Network 代表模型

5. 時間注意力 (Temporal Attention)

時間注意力可以被看作是一種動態的時間選擇機制,決定了何時進行注意,因此通常用於影片處理。

圖21. 時間注意力
圖22. 時間注意力應用情境

6. 時空注意力 (Spatial & Temporal Attention)

時空注意力機制可以自適應地選擇重要區域和關鍵幀。

圖23. 時空注意力

總結

  • 通道注意力對應 what to attend: 它關注於選擇重要的通道。
  • 空間注意力對應 where to attend: 它關注於選擇重要的特徵圖。
  • 時間注意力對應 when to attend: 它關注於選擇重要的 Frame。
  • 分支注意力對應 which to attend: 它關注於選擇重要的感受野。
圖24. 總結

Reference

Paper: https://arxiv.org/pdf/2111.07624.pdf

GitHub:
https://github.com/MenghaoGuo/Awesome-Vision-Attentionshttps://github.com/pprp/awesome-attention-mechanism-in-cv

--

--