论文连接:Selective Kernel Networks
code:pytorch代码
SENet主要受神经学的启发,视觉皮层中神经元可以根据不同的刺激动态的调整自身的RF(receptive field,感受野)。其实在之前的很多网络中都采用了多个不同大小kernel,然后将他们提取到的特征进行融合,比如Inception采用了 3 × 3 3 \times 3 3×3, 5 × 5 5 \times 5 5×5 , 7 × 7 7 \times 7 7×7的kernel。
论文提出的一种使用非线性的方法来整合多个kernel提取的信息。作者提出了“Selective Kernel”(SK)卷积,其包含Split,Fuse和Select操作。
上图采用了2个大小不同的卷积核,在实际应用中可以轻松扩展到多个卷积核。
Split
如上图所示,采用两个不同的卷积核分别对 X X X进行卷积操作,得到 U ^ \hat{U} U^ 和 U ~ \tilde{U} U~,两者的大小( H × W × C H \times W \times C H×W×C)相同.
Fuse
1. U ^ \hat{U} U^ 和 U ~ \tilde{U} U~对应元素相加,得到 U ( H × W × C ) U(H \times W \times C) U(H×W×C)。
U = U ^ + U ~ U = \hat{U}+\tilde{U} U=U^+U~
2.对 U U U进行global average pooling,得到 S S S, S S S和 U U