論文閱讀 CVPR 2020 — ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

該論文反思既有的 Channel attention 作法,並提出Efficient channel attention ( ECA ) 模組,在 Channel 的維度上善用 1D Convolution 捕捉「 Local cross-channel interaction 」,是個輕量且可隨插即用的模組,可用來提升深度卷積神經網路的擬合能力。

Ken Huang
人工智慧,倒底有多智慧?
20 min readJan 30, 2022

--

論文連結:
《 ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 》

作者:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR).

GitHub Link

Introduction

目前在電腦視覺的領域上,具備深度的卷積神經網路已經在多種任務上取得很大的進步。近年在 Convolution block 的設計上,有發展出一系列相當有潛力的研究,主要是探討將 Attention 機制應用於 Channel 維度的作法

其中相當具代表性的研究是 SENet,後續也有一些研究嘗試利用更複雜的機制捕捉 Channel-wise dependencies ,或結合 Spatial 維度的作法來提昇模型的整體效能。雖然這些作法都確實有提昇準確度,但也同時造成模型複雜度更高、運算成本增加的情況。

而該論文的研究方向和過往不盡相同,主要目的是發展出一套更有效率的 Channel attention 作法。在說明該論文的作法之前,先回顧一下過去 SENet 的 SE Block 是如何設計的。

SE Block

Hu, Jie, Li Shen, and Gang Sun. “Squeeze-and-excitation networks.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.

SE Block 的作法會先對 Input feature 的每個 Channel 做 Global average pooling 的運算 ( F_sq ),接著是透過兩層 Fully-connected layer ( 每層有使用Sigmoid function 讓模型做非線性的擬合 ) 來生成對每個 Channel 的 Weight ( F_ex )。

這兩層 Fully-connected layer 正是捕捉 Cross-channel interaction 的地方,在原設計中有結合降維的作法來控制模型複雜度,在後續研究中雖然也沿用這作法,但該論文的研究發現它是有副作用的,也不見得是有效的作法。

Efficient Channel Attention ( ECA )

該論文提出一個稱為 Efficient Channel Attention ( ECA ) 的模組,嘗試不用降維的作法來更有效地捕捉 Cross-channel interaction:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Figure 2.

這個 ECA 模組的作法也會先對特徵圖做 GAP ,但不做降維,取而代之的是透過 1D Convolution ( Kernel size 設定為 k ) 捕捉 Local 的 Cross-channel interaction,後續會有實驗說明這方法確實比過去作法更有效。為了避免手動調整 k 的設定,該論文用具備適應性的方法設計這個 k 。

下圖是在幾種常見的 Backbone 上加入 ECA 和其他 Channel attention 作法的比較:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Figure 1.

詳細實驗設定、數據請參照 Experiments 章節,原則上來說是更輕巧、更準確

Contributions

這邊小結一下該論文的貢獻:

  • 剖析 SE block 並點出「 避免 」使用降維的作法可以更有效地捕捉 Cross-channel interaction,並作到更好的 Channel attention 。
  • 基於前述分析,該論文設計出一種輕量的 Channel attention 的作法,並稱之為 Efficient Channel Attention ( ECA )。可在輕微增加模型複雜度的情況下,明顯改善準確度 。
  • 在 ImageNet-1K 和 MS COCO 等資料集上,ECA-Net 與其他 SOTA 相比,在相對低的模性複雜度之下,有著具備競爭力的表現。

Related Work

前面提過的 SENet 有一些後續的相關研究,主要可分為以下兩種方向:

  • 強化特徵聚合
  • 結合 Spatial 和 Channel 維度的操作

更具體一點來說,有以下相關論文:

  • Convolutional Block Attention Module ( CBAM )
    有結合 Channel 和 Spatial 維度的操作,對 Channel 的作法類似於 SENet,但在 Pooling 過程是用 Max Pooling 和 Avg Pooling 。對 Spatial 的維度則是多做一次 2D Convolution。
  • Global Second-order Pooling ( GSoP )
    先透過 1 × 1 convolution 對特徵圖做降維後,再計算 Channel 之間的 Correlations ,接著對 Covariance matrix 做 Row-wise convolution ,再透過 1 × 1 convolution 將 Weight vector 壓縮成原始 Channel 維度後進行加權。由於過程中有 Quadratic operation,因此以 Second-order 取名。
  • Gather-excite ( GE )
    探索聚合 Spatial 維度特徵時,採用 Depth-wise convolution 的可能 。
  • Global Context Network ( GCNet )
    在 Spatial 維度聚合特徵的作法是參考 Non-Local ( NL ) neural networks 捕捉 Long-range dependency,再整合 SENet 對 Channel 的作法。

另外還有將類似作法應用於不同任務上的相關研究,像是 Double Attention Networks ( A²-Nets ) 則是針對影片辨識設計的架構,Dual Attention Network ( DAN ) 則是針對 Semantic segmentation 的研究。但前述兩個 NL-based 的研究都因為其運算複雜度高而導致 Attention 機制只能應用於單一或少數幾個 Convolution block 。

另一系列相關的研究是輕量化的 CNN ,像是 Group convolution 或 Depth-wise convolution 等方法,相關比較就留在 Experiments 章節說明。

由於該論提出的 ECA 模組是要捕捉 Local cross-channel interaction ,因此會和 Channel local convolutionsChannel-wise convolutions 的作法有些相似的特性,然而差異在於:該論文探索的是用具適應性 Kernel 的 1D Convolution 在 Channel attention 機制上取代 Fully-connected layer 的可能 。

Proposed Method

Revisiting Channel Attention in SE Block

前面曾提到該論文剖析 SE block,這邊用公式回顧一下 SE block 的作法:

X 是單一個 Convolution block 的輸出,Shape 以 W × H × C 表示;g(·) 是 Channel-wise global average pooling;σ 是個 Sigmoid function。

假設 y = g(X),f{W_1,W_2} 則可表述為:

為降低模型的複雜度,W_1 和 W_2 刻意設計成:

即可作到 Dimensionality reduction 的作用。

Efficient Channel Attention ( ECA ) Module

Avoiding Dimensionality Reduction

回顧了 SE block 之後,該論文做了一系列實驗來分析「 Dimensionality reduction 」和「 Cross-channel interaction 」對 Channel attention 的影響:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Table 2.

上表的 SE-Var1、SE-Var2 和 SEVar3 是 SE block 的三種不同變體,作法上都沒有 Dimensionality reduction 的設計。

以 SE-Var1 來看的話,可以跟 Vanilla 版本做比較,在一樣沒有額外參數量的情況下,可以稍微改善模型的表現。

SE-Var2 則是針對每一個 Channel 學習獨立的 Weight,和 SE block 相比,參數量較低,但是 Top-1 的準確度有微幅改善。這現象在作者們看來,Channel 及其對應 Weight 需要的是一種直接的對應關係,應該要避免 Dimensionality reduction 的作法。

而 SEVar3 則是只用單一層的 FC layer 來學習非線性的 Channel dependencies,效果就比 SE block 來的好。

基於這三項實驗的觀察,作者們主張「 避免使用 Dimensionality reduction 的設計會有助於更有效地學習 Channel attention 」,因此後續在設計 ECA 模組時,便捨棄了 Dimensionality reduction 的作法。

Local Cross-Channel Interaction

若將不做 Dimensionality reduction 的特徵以 y 表示,Channel attention 可以透過以下公式進行學習:

其中的 W 是個 C × C 的矩陣

而對於前面提過的 SE-Var2 和 SE-Var3 變體來說,W 則可表述為:

W_var2 是個 Diagonal matrix ,且一樣有 C 個參數;W_var3 則是完整的 Matrix ,並有 C × C 個參數。

W_var2 和 W_var3 的主要差異在於,W_var3 有考量 「 Cross-channel interaction 」,且因此展現較佳的成果,但同時代價就是參數量較大,會導致模型複雜度提升。

因此,該論文的作者們就想了一個折衷的辦法,以 W_var2 為基礎延伸出 Block diagonal matrix:

其中的 G 是指 Channel 為 C/G 的Group

這樣的做法可以讓每個模型在每個 Group 獨立學習 Channel attention,並捕捉 「 Cross-channel interaction 」,參數量也因此縮小為 C²/G。

若以 Convolution 的角度來看 SE-Var2 、SE-Var3 和上方的 W_G,其實就近似於 Depth-wise separable convolution 、FC layer 和 Group convolutions 的作法。

然而將 SE block 結合 Group convolutions 的方法 ( SE-GC ) 也不是沒有被嘗試過,ECCV 2018 的 Shufflenet V2 就曾做過這件事情:

但過多的 Group convolutions 會增加讀取記憶體的成本並導致計算效率下降。且就前面的 Table 2 來看,帶來的效益也沒有 SE-Var2 來得多。作者們推論原因是既有的 SE-GC 作法完全忽略了不同 Group 之間的關聯性,所以導致成效不佳。

而該論文所提出的 ECA 模組,則是另一種捕捉「 Local cross-channel interaction 」的方法,同時兼具運算效率及有效性。這方法的 W 比較特別,這邊以 W_k 表示,而 W_k 是個 Band matrix:

參數量是 k × C ,會比 W_G 的 C²/G 還要少,且有著避免各個 Group 完全獨立學習的設計。上式的 ω 則會透過以下公式計算:

其中的 Ω 是指一組鄰接 y 的 k 個 Channel。

針對每個 y 的 Weight 會考量對鄰近 k 個 Channel 的互動而生成。

另一個更有效率的方法是讓每個 Channel 共享相同的參數:

這個邏輯可以很輕易地用 Kernel size 為 k 的 1D convolution 來做實踐:

C1D 指的就是 1D convolution

上式就是該論文提出的 Efficient channel attention ( ECA ) module,而前面 Table 2 的 ECA ( Ours ) 則是將 k 設定為 3,有著和 SE-var3 接近的準確度,但模型複雜度降低很多。

Coverage of Local Cross-Channel Interaction

既然這個 ECA 模組是要適當地捕捉「 Local cross-channel interaction 」,就會需要去決定這個 Local 所涵蓋的範圍 ( k 要設定多少 ) 。

一個很直覺的方法是手動地透過 Cross-validation 嘗試不同的 k 來找出最佳的設定,但這種作法運算量相當龐大。為了避免這問題,作者們參考了 Group convolutions 的設計方法,透過一種「 比例 」的概念來設計這個 k :

其中的 φ 是個對應 Channel 數的 Mapping function ,最簡單的形式可以是:

但通常 Channel 數會是以 2 為底的 N 次方,因此作者們將上述非常簡單的線性方程式延伸為非線性的:

若給予的是 Channel 數,那 Kernel size k 就可被以下公式計算:

|t|_odd 表示鄰近 t 的偶數;在該論文的實驗中,γ 和 b 設定為 2 和 1。

這個 Mapping function ψ 會讓 Channel 在高維度時看到較遠的關聯性,反之,低維度就只能看到較近的互動關係。

ECA Module for Deep CNNs

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Figure 2.

上圖就是該論提出的 ECA 模組,基本上會先透過 GAP 對 Feature map 做特徵的聚合,這過程完全不使用任何 Dimensionality reduction 的手法,再根據 Channel 數以前述的 Mapping function ψ 調整 1D Convolution 的 Kernel size 並在 Channel 上捕捉「 Local cross-channel interaction 」,最後再經過一個 Sigmoid function 學習出 Channel attention。

若以 Pytorch 語法描述 ECA 模組會是這個樣子:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Figure 3.

後續實驗會將此模組應用於不同的深度卷積神經網路,作法是取代既有的 SE block,但其餘設定皆遵循原論文。

Experiments

為了驗證該論文提出的方法確實有效,有將實驗做在 ImageNet 和 MS COCO 這種常見的 Large-scale dataset,並對影像分類、物件偵測和語意分割等任務都有進行驗證,詳細的實驗設定請自行參照原文

Image Classification on ImageNet-1K - Effect of Kernel Size (k) on ECA Module

第一步是先找出最有效的 Kernel size 設定,所以先將 ECA 模組嵌入在 ResNet-50 和 ResNet-101 的 Backbone 上,並實驗兩者在 ImageNet 資料集上,將 k 設定為 3 ~ 9 的結果:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Figure 4.

對 ResNet-50 和 ResNet-101 來說,最好的結果分別是 k = 9 和 k = 5 的設定,由於較深的神經網路有較多的中介層,所以傾向採用較小的 k 也是合理的。

另外是透過 Mapping function ψ 動態調整 Kernel size 的結果,普遍比 Fix 的情況來得好,且可省下手動調參所造成的運算成本。

Image Classification on ImageNet-1K - Comparisons Using Different Deep CNNs

確定了 k 的設定後,就是將它放在不同模型上進行比較:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Table 3.

整體來說,可以在相對精簡的參數量下,表現出很不錯的準確度。

Image Classification on ImageNet-1K — Comparisons with Other CNN Models

另外是將 ECA-Net50 和 ECA-Net101 與其他 SOTA 做比較:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Table 4.

如上表所示,ECA-Net101 可以比 ResNet-200 表現得還好,且運算成本較低;ECA-Net101 也與 ResNeXt-101 的表現接近,但 ResNeXt-101 有花比較多的代價在使用 Convolution filters 和 Group convolutions 。

另外就 ECA-Net50 來看,其表現與 DenseNet-264 (k=32)、DenseNet-161 (k=48) 和 Inception-v3 差不多,但模型參數量、運算量都低了許多。

以上結果都表明了該論文提出的 ECA-Net 在精簡的參數量做出接近 SOTA 的成果。而在未來的技術發展上, ECA 模組也具備了再進一步改善的潛力。

Object Detection on MS COCO

在物件偵測的任務上,該論文有嘗試使用 Faster R-CNN 、Mask R-CNN 和 RetinaNet ,但主要還是比較 ECA-Net 和 ResNet 、 SENet 的差異,後續實驗都是先訓練在 ImageNet 再遷移到 MS COCO 資料集。以下為相關實驗數據:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Table 5.

基本上有加入 ECA 模組之後都會帶來不少的改善,與 SE block 相比,只有在少數的情況下略遜一籌,但模型複雜度都是相對低的狀態。

Instance Segmentation on MS COCO

語意分割的任務上則是在 Mask R-CNN 上使用 ECA 模組,並在 MS COCO 進行相關實驗:

Qilong Wang, Wangmeng Zuo et al. “ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks.” The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Table 6.

同樣也有帶來準確度上的改善。

Conclusion

該論文專注於探索深度卷積神經網路的 Channel attention 作法,並提出 Efficient channel attention ( ECA ) 模組,善用一個 Non-linear mapping function 調整 1D Convolution 的 Kernel size ,並在 Channel 的維度上捕捉「 Local cross-channel interaction 」

就實驗結果來看,ECA 模組具備輕量、隨插即用的特性,可用來改善許多深度卷積神經網路的效能,且可泛化至多種電腦視覺的任務上。

--

--

Ken Huang
人工智慧,倒底有多智慧?

在網路上自學的過程中,體會到開放式資源的美好,希望藉由撰寫文章記錄研究所的學習過程,同時作為回饋網路世界的一種方式。Email : kenhuang2019iii@gmail.com ,如果有任何問題都歡迎與我聯繫。