SENet論文:https://arxiv.org/abs/1709.01507
SENet代碼:https://github.com/hujie-frank/SENet
SENet 是我讀的第一篇有關(guān)注意機(jī)制的文章,文章的想法非常前沿,以往人們都是在空間維度上對網(wǎng)絡(luò)進(jìn)行改進(jìn),而本文作者則是另辟蹊徑,考慮特征通道之間的關(guān)系,即對特征進(jìn)行重標(biāo)定。這篇文章最重要是提出了SE模塊,而SENet本質(zhì)上是帶有SE模塊的ResNeXt152。
一般CNN的每個(gè)通道學(xué)習(xí)到的濾波器都對局部感受野進(jìn)行操作,因此每個(gè)特征圖都無法利用其它特征圖的上下文信息,而且網(wǎng)絡(luò)較低的層次上其感受野尺寸都是很小的,這樣情況就會更嚴(yán)重。SENet通過學(xué)習(xí)的方式來自動獲取到每個(gè)特征通道的重要程度,然后依照這個(gè)重要程度去提升有用的特征并抑制對當(dāng)前任務(wù)用處不大的特征。
下圖1是帶有SE塊的Inception塊的具體結(jié)構(gòu)圖,右邊那一大串就是我們要說的SE模塊。

文中說,全局平均池化層的使用是為了解決卷積核的局部感受野無法利用區(qū)域以外的上下文信息問題,它的輸出表征著在特征通道上響應(yīng)的全局分布,使得靠近輸入的層也可以獲得全局的感受野。第一個(gè)全連接層主要的目的是降維,這可以極大地減少參數(shù)量和計(jì)算量,r是縮放因子,文中取16。后面的ReLU是使模型具有更好的非線性,可以更好地?cái)M合通道間復(fù)雜的相關(guān)性。第二層的全連接層屬于擴(kuò)張層,它的輸出通道又回到了原來的C,主要是為后面的權(quán)重歸一化做準(zhǔn)備。SE模塊中的兩層全連接層是通過參數(shù) w 來為每個(gè)特征通道生成權(quán)重,其中參數(shù) w 被學(xué)習(xí)用來顯式地建模特征通道間的相關(guān)性。Sigmoid函數(shù)對上一步的通道進(jìn)行最后的篩選,獲得0~1之間歸一化的權(quán)重,即越是重要的通道,它的權(quán)重就越大。最后的Scale就是特征重標(biāo)定了,即將歸一化后的權(quán)重加權(quán)到之前Inception輸出的每個(gè)通道的特征上。至此就完成了SE模塊對圖像特征的篩選工作。
文中在ResNet50+SE塊的這個(gè)例子說了,SE塊可以在輕微增加計(jì)算復(fù)雜度的情況下,帶來大幅的性能增益,并且在這個(gè)例子中,作者認(rèn)為計(jì)算復(fù)雜度的增加主要在最后階段的殘差塊中,所以后來作者去除了殘差塊的SE模塊,準(zhǔn)確率幾乎沒有下降,但是參數(shù)量得到了下降,因?yàn)楹竺娴臍埐顗K輸出通道比較多,一方面使得第一層的全連接層壓縮不到位,另一方面給第二層的全連接層帶來了過多的參數(shù)量。