【GiantPandaCV導語】這個系列已經好幾個月沒有更新了,開始繼續更這個方向論文,19年、20年又出現了很多關於Attention的研究,本文SA-Net:shuffle attention for deep convolutional neural networks 發表在ICASSP 21,傳承了SGE的設計理念的同時,引入Channel Shuffle,達到了比較好的效果,有理有據。文章首發於GiantPandaCV,請勿二次轉載。
1. 摘要
目前注意力機制主要可以分為兩類,空間注意力機制和通道注意力機制,兩者目標用於捕獲成對的像素級關系和通道間依賴關系的。同時使用兩種注意力機制可以達到更好的效果,但是不可避免地增加了模型的計算量。
本文提出了Shuffle Attention(SA)模塊來解決這個問題,可以高效地結合兩種注意力機制。具體來講:
- SA對通道特征進行分組,得到多個組的子特征。
- 對每個子特征使用SA Unit同時使用空間和通道間注意力機制。
- 最后,所有的子特征會被匯集起來,然后使用Channel Shuffle操作讓不同組的特征進行融合。
實驗結果:在ImageNet-1k數據集上,SA結果要比ResNet50的top 1高出1.34%。同時在MS COCO數據集上進行了目標檢測和目標分割的實驗,在模型復雜度比較低的情況下,達到了SOTA。
這個實驗思路可以看出和SENet如出一轍,分組處理的思想在SGE中提到過,SA-Net添加了Channel Shuffle的操作參考ShuffleNet系列論文,有理有據,實現也很簡單。
2. 設計思想
多分支結構
多分支結構比如最初的InceptionNet系列、ResNet系列等都是多分支結構,遵從的是‘Split - Transform - Merge’的操作模式,這樣的設計可以讓模型變得更深、更易於訓練。
Attention 模塊的設計方面也有很多工作引入了多分支,比如SKNet、ResNeSt、SGENet等。
組特征
最初將特征划分為不同的組可以追溯到AlexNet,由於當時的顯存太小,所以需要將模型分成兩組,每組使用一塊顯卡進行處理,這是為了解決使用更多計算資源的問題。
之后的MobileNet系列、ShuffleNet系列等使用組特征是為了降低模型的計算量,加快運算速度。
CapsuleNet則是將每個組的神經元視為一個膠囊Capsule,其中,激活的膠囊中的神經元活動代表了圖像中特定實體的各種屬性。
注意力機制
注意力模塊已經成為網絡設計的不得不考慮的重要組成部分。注意力模塊可以有側重點的關注有用的特征信息,抑制不重要的特征。self-attention方法是計算一個位置和其上下文的信息作為一個權重,施加到整個圖像中。SE對通道間關系進行建模,使用了兩個全鏈接網絡進行自學習。ECA則使用了1-D卷積來生成通道間注意力機制,降低了SE的計算量。CBAM,GCNet,SGE等模型結合了空間注意力機制和通道注意力機制。DANet通過將來自不同分支的兩個注意模塊相加,自適應地整合了局部特征及其全局依賴關系
3. Shuffle Attention
SA的設計思想結合了組卷積(為了降低計算量),空間注意力機制(使用GN實現),通道注意力機制(類似SENet),ShuffleNetV2(使用Channel Shuffle融合不同組之間的信息)。
如上圖所示:
- 首先將tensor划分為g個組,每個組內部使用SA Unit進行處理。
- SA內部分為空間注意力機制,如藍色部分所示,具體實現使用的是GN。
- SA內部使用的通道注意力機制,如綠色部分所示,具體實現和SE類似。
- SA Unit通過Concate的方式將組內部的信息進行融合。
- 最后使用Channel Shuffle操作對組進行重排,不同組之間進行信息流通。
GN實現的空間注意力
一般來說,空間注意力機制作用是找到圖片中具體哪一塊更重要。SA中使用了GroupNorm來獲取空間維度的信息。這部分比較特別,但是作者通過消融實驗證明了該模塊有效性。或許有更好的Spatial Attention?畢竟也沒有比較類似CBAM的這種空間注意力方法,所以並不知道GN作為空間注意力是否有優越性。
4. 實驗結果
可以看到,要比ECA-Net等模型效果更好,並且要比baseline ResNet50的top1高出1.34%。同樣的在ResNet-101為基礎添加SA模塊,也要比baseline 的top1要高出了0.76%。
目標檢測上的實驗對比:
可以看出實驗提升還是比較大的,AP大約提升了2-3個百分點。
實例分割任務上的實驗結果對比:
5. 結論
SA是的核心思想都有跡可循,通過引入組卷積降低計算量,再對每個分組使用空間注意力和通道注意力,最后使用Channel Shuffle操作將不同組之間的信息進行流通。