歡迎光臨
每天分享高質量文章

後ResNet時代:SENet與SKNet

本篇介紹兩個影象分類方面的工作:SENet 和 SKNet,聽這名字就知道,這兩個是兄弟。SENet 提出了 Sequeeze and Excitation block,而 SKNet 提出了 Selective Kernel Convolution,二者都可以很方便的嵌入到現在的網路結構,比如 ResNet、Inception、ShuffleNet,實現精度的提升。

作者丨郭曉鋒

單位丨北京愛奇藝科技有限公司演演算法工程師 

研究方向丨影象生成

SENet

Motivation

 

目前的摺積是在 2D 空間中做摺積,其本質上來說只建模了影象的空間資訊,並沒有建模通道之間的資訊。於是,作者就嘗試對 Channel 之間的資訊進行顯式建模。

 

網路結構

 

 

左邊為 C’×H’×W’ 的特徵圖,經過一系列摺積,pooling 操作 Ftr 之後,得到 C×H×W 大小的特徵圖。接下來進行一個 Sequeeze and Excitation block。 

 

Sequeeze:對 C×H×W 進行 global average pooling,得到 1×1×C 大小的特徵圖,這個特徵圖可以理解為具有全域性感受野。

Excitation :使用一個全連線神經網路,對 Sequeeze 之後的結果做一個非線性變換。 

特徵重標定:使用 Excitation 得到的結果作為權重,乘到輸入特徵上。

 

總結 

 

總體來說思路很清晰,Motivation 也有一定的道理。此外,這個結構可以作為任意網路的子模組新增進去以提升精度,而且引入的計算量非常小。 

 

但是有一個問題在於,摺積過程本身在 Channel 之間也會有一個乘數,這個乘數是不是可以理解為建模了 Channel 之間的資訊呢?

 

如果作者對前面的摺積使用 C 路的 Group Convolution,然後與加入 Sequeeze and Excitation block 前後的精度進行對比,或許文章會更有說服力一些。 

 

最終結果很不錯,計算量幾乎沒變化,但是精度上升了,取得了 ImageNet 2017 的冠軍。

SKNet

Motivation 

 

SKNet 使用了兩個思路來提高精度: 

 

1. 很多網路使用了各種 Trick 來降低計算量,比如 ResNeXt,計算量大大減少,精度卻略有提升。那麼如果不犧牲那麼多計算量,能否精度提高一些呢?比如使用大一點的 Kernel,如 5×5 的摺積提升精度;

 

2. 結合現在普遍使用的 Attention 操作。

 

加了上面兩個操作之後,顯然計算量會上去,於是作者再加了一個 Group Convolution 來做 trade off。 

 

網路結構

 

 

上述結構可以分為三個步驟: 

 

Split:輸入為 c×h×w 的特徵圖,均表示 Group Convolution。這裡使用 Group Convolution 以減少計算量。註意,這裡兩路 Group Convolution 使用的摺積核大小不一致,原因在於 Motivation 中說的第一點,提升精度。 

 

Fuse:透過 Split 操作分成兩路之後,再把兩路結果進行融合,然後就是一個 Sequeeze and Excitation block。 

 

Select:Select 模組把 Sequeeze and Excitation block 模組的結果透過兩個 softmax 以回歸出 Channel 之間的權重資訊。然後把這個權重資訊乘到中。這個過程可以看做是一個 soft attention。最好把兩路的特徵圖進行相加得到輸出特徵圖 V。

 

總結 

 

整體感覺融合了較多的 trick,Select 部分使用 soft attention 和 Sequeeze and Excitation block 中對特徵圖加權蠻像的,區別在於 Sequeeze and Excitation block 考慮的是 Channel 之間的權重,而 Select 部分的 attention 不僅考慮了 Channel 之間的權重,還考慮了兩路摺積的權重。 

 

同樣的,SKNet 可以很容易地嵌入到其他網路結構中。下圖是基於 ResNeXt-50 的 SENet 和 SKNet 計算量,以及精度對比。可以看到,計算量(GFLOPs)只是略有上升,精度方面相比於 ResNeXt-50 漲了 1.4% 左右:

贊(0)

分享創造快樂