论文地址:SENet
senet:它学习了channel之间的相关性,筛选出了哪些channel的feature作用更大,哪些channel的feature作用更小。它稍稍增加了模型的计算量,但是提点明显。
它首先对图片进行卷积运算,然后对于feature map进行global average pooling(squeeze),把它变成11C的向量,然后通过两层FC(excitation),乘以它初始的feature map,作为下一级的输入。
他的squeeze公式为:
这是因为要找到通道和通道之间的相关关系,所以要对整个通道的信息进行处理,屏蔽掉空间之间的相关关系。
它加上两个FC的原因是,如果他只对feature map做pooling,只是对当前的image的scale做了处理,但是真实的scale是整个数据集的scale,所以要加上FC,让他适应于整个数据集。第一个全连接把C个通道压缩成了C/r个通道来降低计算量(后面跟了RELU),第二个全连接再恢复回C个通道(后面跟了Sigmoid),r是指压缩的比例。作者尝试了r在各种取值下的性能 ,最后得出结论r=16时整体性能和计算量最平衡。
它加到其他网络中的样子:
由于加了两个FC,所以参数增加了
它的结构:
他的错误率和GFLOPs:
通过简单地叠加一组SE块,就可以构造一个SE网络(SENet)。虽然构建块的模板是通用的,但是在整个网络中,它在不同深度执行的角色是不同的。在早期的层中,它以一种与类无关的方式激发feature,从而增强了共享的底层表示。在较晚的层中,SE块变得越来越有方向性,靠后的层级的scale大小和输入的类别强相关。
作者对训练好的结构用4个分类的图片做测试,每个分类50张图片,统计SE-ResNet-50在5个不同层级上,excitation输出的分布如下:
到了SE_5_2后几乎所有的scale都饱和,输出为1,只有一个通道为0;而最后一层SE_5_3的通道的scale基本相同。最后两层的scale因为基本都相等,就没有什么用处了,为了节省计算量可以把它们去掉。
SENet
最新推荐文章于 2024-04-22 02:24:46 发布