ImageNet 2017夺冠架构:SENet paper传送门
参考链接:传送门1
核心思想我认为是:不再使用传统的对输入通道经卷积后的结果通道们,进行简单的叠加,而是去寻找各通道间的相关性,给予各通道不同的权值,然后再进行加权求和。
这个通道间的权值,通过学习得到。
上图:
S:
首先是压缩,squeeze()把一个通道的map(尺寸为 mxn )压缩成一个数值(1x1),这方便后续的寻找通道间的相关性。
E:
左边嵌入inception,右边嵌入resnet。。。
由最后一张图可知,卷积后得到的通道间的相关性,及去确定该通道给多少权值(weights值)?是通过两个fc层,和一个sigmoid层(所谓的门机制)来解决的。(这个sigmoid门机制看一下机器学习里的logistic就会更好理解了~)
第一层fc降低了特征的维度(c/16),减少了参数;然后加上了一个relu激活层,增加非线性;再接着又接一个fc层将维度恢复(c);最后通过sigmoid得到要给在各个通道上的权值(weights)们。
再给点我自己的手稿吧。。。。
嗯,感觉已经很清楚了吧,这个SEnet.
这里不得不说,网络有前后向反馈就是好!我需要的权值(weights)或者说参数,我只要搭好网络层(网络结构)(fc1 fc2 和那个sigmoid)就好,其他的就可以啥都不管了。让你网路自己去学习,去前后向计算,梯度啊,loss啊,然后去更新得到最合适的weights。weights到手了,直接乘上来用就是。。。我认为这真的是负反馈的精髓啊,给个监督然后让网络自主学习更新weights值。很强!!!
一般,senet结构是用在resnet或者inception里,而没有说是每一次的卷积层都这样操作(就是每次的卷积都对不同通道的特征图加权叠加,这样会引入很多参数)。如上图:
看resnet的block模块,每个block尾部都加入了两层fc层。第三列的那个c=32是什么意思我还不太懂,等知道了再来补充。。。