--- tittle: SE-Net reading --- # Squeeze-and-Excitation Networks CVPR 2018 ## Introduction CNN 主要透過 convolution 將 receptive fields 中的空間及 channel 資訊進行融合 --- ![](https://i.imgur.com/PDjE47X.png) --- 先前的研究多著重於 spatial 方面加強模型性能,如 inception 融合不同大小了 filter ,聚合不同大小的 RF 提升模型性能 --- ![](https://i.imgur.com/nqHQTZf.png) --- 本論文考慮了 feature channel 之間的關係提出一個子結構稱為 SE-block 來模擬 channel 間的關係來學習每個通道的重要程度。 - 可以嵌入不同的網路結構中 - 略為增加計算成本,有效的提升模型性能 - 在ILSVRC 2017(ImageNet) classification 比賽得到冠軍 * top-5 error 降到 2.251% * 相較 2016 第一名的 2.991% 提升約 25% 之多 ## Motivation ![](https://i.imgur.com/3xSRXvx.png) ## SE-block ![](https://i.imgur.com/md0skoN.png) ## Related work 探討提高準確率的方法,主要分成三大類 - 更深的網路架構 如 ResNet、VGG、DenseNet 等 - 架構搜尋法 如 NAS 等(沒深入研究) - 注意力機制 以往的 Attention 著重於 spatial 方面 如 Residual Attention Network (還沒看) ## SQUEEZE-AND-EXCITATION BLOCKS ![](https://i.imgur.com/s2wO4bA.png) $F_{tr}=U=[u1,u2,u3,...u_C]$ $u_C=v_C * X=\sum\limits_{s=1}^{C'}v^s_C * x^s$ $F_{tr}$就是一般的covolution $v_C=$fillter kernel ### Squeeze: Global Information Embedding $z=F_{sq}(u_C)={1 \over H \times W}\sum\limits_{i=1}^H \sum\limits_{j=1}^W u_C(i,j)$ 輸入會是$H \times W \times C$的feature map,每個$H \times W$全部加總取平均,將每張圖壓縮成一個值,因此輸出會是 $H \times W \times C \to F_{sq}() \to 1\times1\times C$ ### Excitation: Adaptive Recalibration $s=F_{ex}(z,\mathbf W)=\sigma(\mathbf W_2 \delta(\mathbf W_1 z))$ $\mathbf W_1 \in R^{\frac {C}{r}\times C} ,\mathbf W_2 \in R^{C \times \frac{C}{r}}$ $r$是一個超參數用來限制壓縮 dimension 等同於後面的 $r$ $\delta=$ ReLu $\sigma=$sigmoid ### scale $\hat X=[\hat x_1,\hat x_2,...,\hat x_c]$ $\hat x_c=F_{scale}(u_c,s_c)=s_cu_c$ 將Excitation得到的$1\times1\times C$的權重回乘到原先的 map ## 實際應用 論文將 SE-block 應用在 ResNet 和 Inception 中 ![](https://i.imgur.com/PGv4tKL.png) ## MODEL AND COMPUTATIONAL COMPLEXITY ![](https://i.imgur.com/JJXkAeR.png) 在輸入為224 $\times$ 244的情況下,原先ResNet-50每次反向傳播需要~3.86 GFLOPs,當SE-ResNet-50將 $r$ 設為16時大約需要 ~3.87 GFLOPs 增加0.26%的計算量 ![](https://i.imgur.com/Ha4EzmE.png) 增加的參數主要來自兩個 FC 層,若兩個的維度都是${C\over r} \times C$,那這兩層就會有$2\times C^2\over r$,假設ResNet一共包含S個stage,每個Stage包含N個重複的residual block,那麼整個添加了SE block的ResNet增加的引數量就是下面的公式 ${2\over r}\sum\limits_{s=1}^SN_s \cdot C_s^2$ ## 實驗結果 ### 訓練參數 optimizer = SGD momentum = 0.9 minibatch size = 1024 lr = 0.6 (每 30 ep/10) ep = 100 r = 16 ---- 在ImageNet 2012 的訓練結果 ![](https://i.imgur.com/DmzSxri.png) 左邊是原始論文的準確率,中間是作者重新訓練的,右邊是加入 SE-block ![](https://i.imgur.com/XCN9Z31.png) 上圖是training 與 validation ![](https://i.imgur.com/zO0jAQB.png) 在輕量化網路的測試結果 ## Additional datasets 在CIFAR-10和CIFAR-100的結果 data: 50k training, 10k test 影像大小:32 * 32(padding 4,隨機剪裁) ![](https://i.imgur.com/GXuIT54.png) ## Scene Classification ![](https://i.imgur.com/w8yeEI9.png) ## Object Detection on COCO **都用 Faster R-CNN detection** ![](https://i.imgur.com/k1J1Klv.png) ## ILSVRC 2017 Classification Competition ![](https://i.imgur.com/j07nk1n.png) SENet-154就是 SE-ResNeXt-152(64x4d)加上 SE-block ## ABLATION STUDY 針對 SE-block 中的$r$還有 Squeeze 、 Excitation 進行比較實驗 ### Reduction ratio ![](https://i.imgur.com/0FSSeeK.png) ### Squeeze Operator ![](https://i.imgur.com/ZN8Yb47.png) ### Excitation Operator ![](https://i.imgur.com/gt8MIkX.png) ### 將SE-block加到不同的階段中 ![](https://i.imgur.com/5nvmb4p.png) ![](https://i.imgur.com/QIg1QoU.png) ### 不同 SE-block 比較 ![](https://i.imgur.com/TSS4rbj.png) ![](https://i.imgur.com/WhiZonk.png) ### SE 結合到 Res-block中(conv 3x3後) ![](https://i.imgur.com/6EGKPS1.png) ### 將 FC 替換成 1x1 conv 為了測試Pooling ![](https://i.imgur.com/VhUbAdB.png) ## 目前還在理解 ### 每個Channel的敏感程度 ![](https://i.imgur.com/8aSvHwy.png) ![](https://i.imgur.com/6S4R0PZ.png) ## 結論 SE-block 可以很好的應用在不同的模型,且只需要些許計算量就能得出不錯的結果 除了以往的 **Spatial Attention** 外,提出 **Channel Attention** 的想法