SKNET

之前有聊过SENet,这里附上论文链接
这里附上一个知乎链接,说的非常棒:SKnet
他可以很方便的嵌入到现在的网络结构中去,实现精度的提升。
首选介绍一下他的思想。
在神经网络中,每一层的感受野都是一样大小的,但是在人的视觉中,物体大小不同,感受野的大小会变化。那我们提出一个动态选择机制也可以认为是Soft attention,在CNNs中,允许每一个神经元根据输入信息的多尺度自适应调整其接受域大小。selective kernel(SK)模块被提出,他是使用非线性方法,将不同size的kernel聚合起来。不同size的kernel经由softMax attention,被混合到一起。对这些branch对attention不同,融合层中的感受野不一样大小。
它分为三个部分:split,fuse,select。它增加了一部分计算量,但同时也提高了精度。
SKNET_第1张图片
split:分两路,一路3 * 3,一路5 * 5,借鉴了resnext,用了group/depthwise conv,为了减少计算量,用两个3 * 3代替5 * 5的卷积。
fuse:他的思想是,用gate来控制信息从不同的gate流入下一层
首先两branch元素相加
在这里插入图片描述
然后为了获得全局信息,使用了global average pooling
在这里插入图片描述
同时为了准确性和自适应性,加了连接层
在这里插入图片描述
δ是Relu,B是BN,这里结构大概同SENet。
SKNET_第2张图片
select:channel之间的soft attention被用来选择不同scale的信息
在这里插入图片描述
这里的数学结构如下:
SKNET_第3张图片
他的网络结构如下:
SKNET_第4张图片
它有3个重要参数,M,G,r:branch数量,group数量,fc缩放尺度,分别为:2,32,16.
这里说一下train strategy:
classification:
数据增强:裁剪到224*224,随即水平翻转。图片归一化处理,label-smoothing正则化。
SKNET_第5张图片
SKNET_第6张图片
对轻量级的模型来说,在shufflenet上来说还是有效果的。但是对于MobileNet-v2来说,由于有一个Inverted residuals,所以会带来大量的参数,所以不适用于Mobilenet-v2
SKNET_第7张图片
**引用知乎链接一段话:**比较有意思的是在统计分析的时候我们惊人地发现了有一个middle level 的layer学到了非常鲁棒地指导attention selection的pattern——SK_3_4。几乎对于所有的测试样本(1000类,每类50个,共50000个),只要对其进行1.5倍的放大,SK_3_4一定会分配更多的selection weights给更大的kernel 5x5,相应地,更小的selection weights给到kernel 3x3(如下图)。个人认为这样的背后存在这么一种合理的趋势:对于不同scale的物体,网络可以自主地决定从底层到高层用不同大小的kernel作为一个整体的组合去extract这些物体的feature,使得在一个相同的较高层中不同scale的物体能够得到一个相同scale的feature representation,从而把scale decompose掉,让feature变得scale-insensitive,能够更加鲁棒地表征物体类别属性。(不过从这个角度来讲的话,似乎对detection回归框没有优势,因为回归框是需要feature里encode住scale信息的)。
以上的这个特性对于low level的SK_2_3也是成立的,只不过差别没有SK_3_4明显,它整体上也是kernel 5x5较大地assign给较大的物体(如下图)。
SKNET_第8张图片
然后在最高层SK_5_3这个pattern消失了(如下图),大家基本比较接近,从一定程度上也暗示着此时feature已经被decompose掉了scale,所以1.0x与1.5x没有明确的倾向去选择更大或更小的kernel。
SKNET_第9张图片
最后是一些specific cases的attention distribution:
SKNET_第10张图片
SKNET_第11张图片
SKNET_第12张图片

你可能感兴趣的:(CV大白菜,baseline)