構建CNN框架的主流block(一)——SE和CBAM

SENET是2017年的世界冠軍,CBAM是2018年的分類冠軍,它和SE一樣也是一個模型,現在任何流行網絡都可以嵌入這個模塊。

博主只是簡單的贅述一下這些模塊的思想,寫一個筆記,做一個 state-of-art 的搬運工, 如有錯誤請各位大佬指點批評!!!

SE
SE全稱Squeeze-and-Excitation,它注重通道信息。
在這裏插入圖片描述
SE的出現是爲了解決在卷積池化過程中feature map的不同通道所佔的重要性不同帶來的損失問題。在傳統的卷積池化過程中,默認feature map的每個通道是同等重要的,而在實際的問題中,不同通道的重要性是有差異的,具體問題具體看待。
如上圖所示,SE的結構較爲清晰,具體的卷積池化過程如下圖所示,下圖是一個殘差塊中加入了SE模塊的結構。
假設輸入的是一個 h * w * c 的 feature map,首先對它進行一個 global average pooling ,由全局池化(池化大小爲 h * w)的操作我們可以得到一個 1 * 1 * c 的 feature map ,然後就是兩個全連接層,第一個全連接層的神經元個數爲 c/16(作者給的參數),這就是一個降維的方法,第二個全連接層又升維到了 C 個神經元個數,這樣做的好處是增加了更多的非線性處理過程,可以擬合通道之間複雜的相關性。然後再接一個sigmod層,得到 1 * 1 * c 的 feature map,最後就是一個原始的h * w * c 和 1 * 1 * c 的 feature map 全乘的操作。之所以是全乘不是矩陣相乘,那是因爲這樣可以得到不同通道重要性不一樣的 feature map。(可以瞭解矩陣全乘和矩陣相乘的概念和計算方法)
在這裏插入圖片描述

CBAM
CBAM全稱爲 Convolutional Block Attention Module,它是一個卷積注意力機制模塊,比SE多了一個空間(spatial)attention,兩全其美。
在這裏插入圖片描述
如上圖所示,CBAM可分爲2部分,先是channel attention ,和SE類似,然後是 spatial attention,它融合了2種注意力機制,可添加在任意網絡的卷積層後面。下面逐一介紹2個部分。
在這裏插入圖片描述
上圖是CBAM的 channel attention的過程,不難看出它比SE多了一個 global max pooling(池化本身是提取高層次特徵,不同的池化意味着提取的高層次特徵更加豐富)。其2個池化之後的處理過程和SE一樣,都是先降維再升維,不同的是將2個池化後相加再sigmod和原 feature map相乘輸出結果。
在這裏插入圖片描述
上圖是 spatial attention 的過程。它是將做完 channel attention 的feature map 作爲輸入,之後作2個大小爲列通道的維度池化,每一次池化得到的 feature map 大小就爲 h * w * 1 ,再將兩次池化的 feature map 作基於通道的連接變成了大小爲 h * w * 2 的 feature map ,再對這個feature map 進行核大小爲 7*7 ,卷積核個數爲1的卷積操作(通道壓縮)再sigmod,最後就是熟悉的矩陣全乘了。

參考博客鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章