深度學習——分類之SENet

論文:Squeeze-and-Excitation Networks

作者:Jie Hu, Li Shen, Gang Sun

ImageNet Top5錯誤率:2.25%

中心思想:對於每個輸出channel,預測一個常數權重,對每個channel加權一下。

思路

如下,就是SENet的基本結構:

原來的任意變換,將輸入X變為輸出U,現在,假設輸出的U不是最優的,每個通道的重要程度不同,有的通道更有用,有的通道則不太有用。

對於每一輸出通道,先global average pool,每個通道得到1個標量,C個通道得到C個數,然後經過FC-ReLU-FC-Sigmoid得到C個0到1之間的標量,作為通道的權重,然後原來的輸出通道每個通道用對應的權重進行加權(對應通道的每個元素與權重分別相乘),得到新的加權後的特徵,作者稱之為feature recalibration。

第一步每個通道HxW個數全局平均池化得到一個標量,稱之為Squeeze,然後兩個FC得到01之間的一個權重值,對原始的每個HxW的每個元素乘以對應通道的權重,得到新的feature map,稱之為Excitation。任意的原始網路結構,都可以通過這個Squeeze-Excitation的方式進行feature recalibration,採用了改方式的網路,即SENet版本。

上面的模塊很通用,也可以很容易地和現有網路集成,得到對應地SENet版本,提升現有網路性能,SENet泛指所有的採用了上述結構地網路。另外,SENet也可以特指作者 ILSVRC 2017奪冠中採用的SE-ResNeXt-152 (64 × 4d)。

實現

下面是SENet和Inception的結合:

下面是SENet和ResNet的結合:

可以看到,具體實現上就是一個Global Average Pooling-FC-ReLU-FC-Sigmoid,第一層的FC會把通道降下來,然後第二層FC再把通道升上去,得到和通道數相同的C個權重,每個權重用於給對應的一個通道進行加權。上圖中的r就是縮減係數,實驗確定選取16,可以得到較好的性能並且計算量相對較小。

SENet一個很大的優點就是可以很方便地集成到現有網路中,提升網路性能,並且代價很小。

對比ResNet-50和SE-ResNet-50:

  • 在GPU上訓練一個step(包括前向和反向),ResNet-50要190ms,而SE-ResNet-50要209ms
  • 在CPU上inference一張224x224的圖片,ResNet-50要164ms,而SE-ResNet-50要167ms
  • SE-ResNet-50總參數量大約比ResNet-50多10%,扔掉最後一個SE的話只多4%

可以看到,ResNet-50和SE-ResNet-50各方面相當,但是準確率卻和ResNet-101相當,提升很大。

下圖是SE-ResNet50的網路結構配置:

總結

提升很大,並且代價很小,通過對通道進行加權,強調有效信息,抑制無效信息,注意力機制,並且是一個通用方法,應用在Inception、Inception-ResNet、ResNet、ResNeXt都能有所提升,適用範圍很廣。

思路很清晰簡潔,實現很簡單,用起來很方便,各種實驗都證明了其有效性,各種任務都可以嘗試一下,效果應該不會太差。


推薦閱讀:

人類的宿命-人是什麼系列外篇之三
AI研習社每周公開課預告(10.24-10.27)
人工智慧來了,但只是生產工具而已
對話《未來簡史》作者:AI消滅人類?你們想太多了
最後的對決?——人機大戰本來就是個偽命題!人與人的較量而已!

TAG:人工智能 | 卷积神经网络CNN | 深度学习DeepLearning |