解讀Squeeze-and-Excitation Networks(SENet)

解讀Squeeze-and-Excitation Networks(SENet)

Squeeze-and-Excitation Networks(SENet)是由自動駕駛公司Momenta在2017年公布的一種全新的圖像識別結構,它通過對特徵通道間的相關性進行建模,把重要的特徵進行強化來提升準確率。這個結構是2017 ILSVR競賽的冠軍,top5的錯誤率達到了2.251%,比2016年的第一名還要低25%,可謂提升巨大。這麼大的提升是怎麼來的呢?今天就來介紹下這個冠軍背後的原理細節。

一、結構和原理

圖1:SE Block

圖1是SENet的Block單元,圖中的Ftr是傳統的卷積結構,X和U是Ftr的輸入(CxHxW)和輸出(CxHxW),這些都是以往結構中已存在的。SENet增加的部分是U後的結構:對U先做一個Global Average Pooling(圖中的Fsq(.),作者稱為Squeeze過程),輸出的1x1xC數據再經過兩級全連接(圖中的Fex(.),作者稱為Excitation過程),最後用sigmoid(論文中的self-gating mechanism)限制到[0,1]的範圍,把這個值作為scale乘到U的C個通道上, 作為下一級的輸入數據。這種結構的原理是想通過控制scale的大小,把重要的特徵增強,不重要的特徵減弱,從而讓提取的特徵指向性更強。下面來看下SENet的一些細節:

先是Squeeze部分。GAP有很多演算法,作者用了最簡單的求平均的方法(公式1),將空間上所有點的信息都平均成了一個值。這麼做是因為最終的scale是對整個通道作用的,這就得基於通道的整體信息來計算scale。另外作者要利用的是通道間的相關性,而不是空間分布中的相關性,用GAP屏蔽掉空間上的分布信息能讓scale的計算更加準確。

公式1:Squeeze的計算

Excitation部分是用2個全連接來實現 ,第一個全連接把C個通道壓縮成了C/r個通道來降低計算量(後面跟了RELU),第二個全連接再恢復回C個通道(後面跟了Sigmoid),r是指壓縮的比例。作者嘗試了r在各種取值下的性能 ,最後得出結論r=16時整體性能和計算量最平衡。

為什麼要加全連接層呢?這是為了利用通道間的相關性來訓練出真正的scale。一次mini-batch個樣本的squeeze輸出並不代表通道真實要調整的scale值,真實的scale要基於全部數據集來訓練得出,而不是基於單個batch,所以後面要加個全連接層來進行訓練。可以拿SE Block和下面3種錯誤的結構比較來進一步理解:

圖2最上方的結構,squeeze的輸出直接scale到輸入上,沒有了全連接層,某個通道的調整值完全基於單個通道GAP的結果,事實上只有GAP的分支是完全沒有反向計算、沒有訓練的過程的,就無法基於全部數據集來訓練得出通道增強、減弱的規律。

圖2中間是經典的卷積結構,有人會說卷積訓練出的權值就含有了scale的成分在裡面,也利用了通道間的相關性,為啥還要多個SE Block?那是因為這種卷積有空間的成分在裡面,為了排除空間上的干擾就得先用GAP壓縮成一個點後再作卷積,壓縮後因為沒有了Height、Width的成分,這種卷積就是全連接了。

圖2最下面的結構,SE模塊和傳統的卷積間採用並聯而不是串聯的方式,這時SE利用的是Ftr輸入X的相關性來計算scale,X和U的相關性是不同的,把根據X的相關性計算出的scale應用到U上明顯不合適。

圖2:三種錯誤的SE結構

圖3是兩個SENet實際應用的例子,左側是SE-Inception的結構,即Inception模塊和SENet組和在一起;右側是SE-ResNet,ResNet和SENet的組合,這種結構scale放到了直連相加之前。

圖3:SE-Inception和SE-ResNet結構

二、測試

1、ImageNet測試

作者用ImageNet 2012數據集,比較了不同深度下、不同類型的SENet結構和非SENet結構的性能差異。圖4是測試結果,可以看到在所有的結構上SENet要比非SENet的準確率更高,而計算複雜度上只是略有提升。圖5是兩種不同深度的SE-ResNet和ResNet的訓練曲線圖,圖6是ResNeXt和SE-ResNeXt、Inception-ResNet-v2和SE-Inception-ResNet-v2的收斂曲線,各種結構、各種深度的測試都能看出SENet有很大優勢。

圖4:不同深度、不同類型的SENet和非SENet的準確率、GFLOPs

圖5:不同深度的SE-ResNet和ResNet的訓練曲線圖

圖6:ResNeXt和SE-ResNeXt、Inception-ResNet-v2和SE-Inception-ResNet-v2的收斂曲線

2、場景分類測試

作者用Place365數據集進行了場景分類測試,比較的結構是ResNet-152和SE-ResNet-152,結果見圖7,可以看出SENet在ImageNet以外的數據集上仍有優勢。

圖7:Place365測試結果

三、更多分析

論文還詳細分析了scale的分布特點。作者對訓練好的結構用以下4個分類的圖片做測試,每個分類50張圖片,統計SE-ResNet-50在5個不同層級上,excitation輸出的分布(圖9)。圖9中SE_2_3是按SE_stageID_blockID的方法取名的,縱坐標是每個分類50張圖片scale的平均值。這個圖中越往後的圖的層級越靠後,all曲線是全部1000個分類的平均值,用來和4個分類的曲線作比較。

圖8:用這4個分類的圖片來分析

可以看出靠前的層級(SE_2_3和SE_3_4)各個分類的曲線差異不大,這說明了在較低的層級中scale的分布和輸入的類別無關;隨著層級的加深,不同類別的曲線開始出現了差別(SE_4_6和SE_5_1),這說明靠後的層級的scale大小和輸入的類彆強相關;到了SE_5_2後幾乎所有的scale都飽和,輸出為1,只有一個通道為0;而最後一層SE_5_3的通道的scale基本相同。最後兩層的scale因為基本都相等,就沒有什麼用處了,為了節省計算量可以把它們去掉。

圖9:不同層級的scale的分布

總結:SENet把重要通道的特徵強化,非重要通道的特徵弱化,得到了很好的效果,這是一種全新的思路,在這個方向上將來可能會有更多的成果。


推薦閱讀:

FCNN全卷積神經網路補充
《麻省理工科技評論》全球十大突破性技術,阿里巴巴正研究其中4項
獨家 | 一文讀懂人工神經網路
先睹為快:神經網路頂會ICLR 2018論文接受結果速覽
從下往上看-- 第十六部分 回看ANN(待完成)

TAG:深度學習DeepLearning | 計算機視覺 | 神經網路 |