(ML) SKNet : Selective Kernel Networks
SKNet (Selective Kernel Networks)
以下為 SKNet (Selective Kernel Networks) 的網路架構
總共分為 3 個步驟
- Split
- Fuse
- Select
Split
F~ 與 F^ 的步驟如下
- input tensor 經過 grouped/depthwise convolution
- 經過 Batch Normalization
- 經過 ReLU
其中為了提高效率,將 F^ 傳統的 5x5 卷積核替換為 Dilation 3x3 的卷積核 dilation 大小為 2
Fuse
U = U~ + U^
經過 Split 產生兩組 feature map 透過 element-wise summation 進行融合
Sc
接下來使用 Global Average Pooling 將融合後的 feature map 壓縮成 c x 1 x 1
Z
最後使用一個簡單的 FC(Fully-connected layer) 達到降維以提高效率
最後的維度是 d x 1 x 1 (d < c)
δ:ReLU
B:Batch Normalization
d x 1 x 1 (d < c)
為了研究 d 對模型產生的影響,研究中使用了 r (reduction ratio) 來控制它的數值
L:表示 d 的最小值(L = 32 是實驗中的經典設置)
Select
Soft attention vector (ac, bc)
ac 與 bc 產生的步驟如下
- 對 Z 做一次 FC(Fully-connected layer) 產生 a
- 對 Z 再做一次 FC(Fully-connected layer) 產生 b
- 最後對 a 與 b 做 softmax 得到以下公式
將 softmax 運算符號運用於通道數字中
Vc
Vc 的產生步驟如下
- ac 與 U~c 做 element-wise product
- bc 與 U^ 做 element-wise product
- 最後再做一次 element-wise summation 可以得到 Vc
由於 ac 與 bc 一同做過 softmax,所以相加為 1
最終輸出 VC (feature map) 是由各個 kernel 上的 attention weight 所得到的
Network Architecture
M:分之數量,也就是使用了幾組的 Kernel size
G:grouped convolution 的數量
r:reduction ratio
SKNet 架構與 ResNeXt-50 採用了相似的架構,使用了 SK Block 後,只比 ResNeXt-50 增加了約 10% 的參數量,算成本增加了約 5 %
Experiments
Comparisons to the state-of-the-arts
SENets / SKNets 都是基於在相應的 ResNeXt backbones (骨幹) 上
從實驗中可以發現,不管是在 224x224 和 320x320 的評估中,SKNet 都能夠獲得最佳的性能提升,參數量比 SENet 和 ResNeXt + CBAM 都要更低,且 SKNet-50 性能優於 ResNeXt-101
Comparisons on ImageNet validation set when the computational cost of model with more depth/width/cardinality is increased to match that of SKNet
當具有更多深度/寬度/基數的模型的計算成本增加以匹配 SKNet 時,SKNet-50 還是是比 ResNeXt-50 獲得 1.44% 的絕對改進,這代表 SK Block 是有效的
Performance with Respect to the number of parameters
從圖表中可以發現,SKNet 可以更有效率的運用參數
Lightweight models on ImageNet validation set
對於輕量化的模型 ShuffleNetV2 來說,SK Block 能夠提升性能,且也優於 SE Block,這代表在低端的設備上具有巨大的潛力
Ablation Studies
The dilation D and group number G
從實驗中可以發現,在 SKNet-50 中,使用不同大小的 kernel 是有益的,但是用過大的 kernel 只會增加參數量,性能也不會有所提升
Different combinations of multiple kernels
K3, K5, K7 代表 不同尺寸的 kernel size,從實驗中可以發現當路徑 M 增加時,error 通常會下降,最後可以發現 M=2 到 M=3 的性能效益很低(20.79 -> 20.76),所以為了權衡性能與效益,首選 M = 2
Attention results for two randomly sampled images with three differently sized targets (1.0x, 1.5x and 2.0x)
從實驗中可以發現在大多數的通道中,當目標放大時,大核(5x5)的注意力全中會增加,這代表 RF (Receptive Field) 大小也在自適應變大
Average mean attention difference (mean attention value of kernel 5×5 minus that of kernel 3×3) on SK units of SKNet-50
在早期的 layer 裏面,物體變大時,更大的 nernel 的 attention 會增加,但是在後期的 layer 中,這個規律將不復存在,也就是說在後期的 layer 中,可能能夠將 SK Block 換成其他的 Block 來提升整體網路的性能
Conclusion
從最初的 split 分成兩個支流的 RF (Receptive Field) 大小是不同的,如果圖片中的物體較大,在 SKNet 中就會走 RF (Receptive Field) 較大的支流,物體較小的話,就會趨向於較小的 RF (Receptive Field) 支流,若單單只靠這兩個支流就能實現的話,之前的 GoogLeNet 就能實現了,SKNet 的架構能夠動態調整 RF (Receptive Field) 的大小,GoogLeNet 是不能實現的,其中的差異就是在 select 的地方,在 U^ 與 a 進行的是乘法運算,若 a 向量中有元素趨近於 0 的話,對應 channel 的 feature map 它給出的訊息量就會比較少,反之若趨近於 1 的話,給出的訊息就會較多,最後整合的 feature map V 中,可以發現其中包含了所有通道的訊息,而兩個通道之間的比例,是可以根據圖片中的訊息動態來選擇的