1、Large Kernel Matters —— Improve Semantic Segmentation by Global Convolutional Network
摘要:小的卷积核堆叠比用一个大的卷积核计算更加高效。在语义分割领域,需要执行每个像素的预测分类,更大的卷积核(感受野更大),对于分类和定位任务来说,作用更大。所以提出GCN来解决语义分割的分类和定位的问题。文中还提出一个基于残差的边界细化模块。
但从摘要可以看出主要有方面工作:用了更大感受野的信息,还有就是后处理(边界refine)。
Motivaton:
- 从定位来看:网络结构应该是全卷积,保留位置信息,而全连接或全局平均池化会丢失位置信息。
- 从分类来看:应该用更大的卷积核,确保和特征图连接更加稠密,因为是对每个像素的分类,这就涉及鲁棒性的问题,感受野更大,对变换(平移,旋转,尺度变化)就不那么敏感。
problem:
SOTA的分割模型大部分关注的如何定位的更精确,而对分类要求不高。分类器关注的也主要是特征图上的局部区域,而不是特征图上的全局信息。一旦输入反生很大的变化,分类性能就会下降。
如图a,一般分类器关注的区域和目标中心是对齐的,然后对这块区域分配相应标签。比如,一开始特征图的有效感受野能够覆盖整个目标,然而,假如输入图像缩放到更大尺度,这部分感受野只能覆盖目标一部分,那像素的分类就不准确。
文章工作(解决方法):
1、Global 卷积网络(区域内),提升物体内部的分割精度;
2、a Boundary Refinement block(边界处),提升物体边缘的分割精度。
用FCN为基本框架,GCN来生成有语义的score map(也是多尺度)。ResNet特征提取(Multi-scale feature maps),FCN4作为分割框架。最后低分辨率的score map 转置卷积上采样。
网络结构简单,无非就是各层信息拼接,这里有几个问题供讨论?
1、1k和k1的卷积,究竟这样做的目的是啥?
使用更大的卷积核,而不是小的卷积核堆叠,虽然更小的卷积核不断堆叠增加了非线性表达能力,但分类需要更加稠密的连接。若直接用k*k卷积核,参数量增大了,所以对卷积核进行了分解。
2、每次上采样前,都进行BR(残差块的连接),目的又是啥?
BR 是实现边缘锐化,参考网上的解释:BR中的两个卷积层是学习输出heatmap和输入heatmap之间的残差。它表示的信息是啥呢?比如,某类物体中心位置,它的heatmap激活值高,而边缘相对来说就低很多,在计算loss时,边缘部分的loss会大于中间部分,那么网络参数就会往边缘调整,最终得到的结果就是边缘部分激活值更高,这样和输入的heatmap相加,边缘部分的激活值变高了,起到了锐化作用。