Key Issue

当前的卷积方法最后一层都是全连接层,并不适用于密集预测任务(例如语义分割),因为只有一维,丢失了空间信息

在采样过程中,以往使用的shift-and-stitch方法计算量巨大

Motivation

  • 原理合适:实际上全连接层可以看作一种感受野为全图的卷积
  • 输入灵活:之前由于使用全连接层,输入需要满足全连接层的维度设置,使用裁剪方法输出,如果改成全卷积,输入可以是整图
  • 计算效率高:以往的方法中,需要分不同patch来计算,划分后反而引入一些重叠部分,这些重叠会被反复计算、训练,而整图输入的话则可以解决这些冗余,在训练、梯度计算,反向更新等方面都保证计算高效
  • 密集任务适用:换成全卷积,网络实现端到端,对密集预测任务十分适用,且具有空间信息。

Method

Shift-and-stitch is filter rarefaction

在现有方法中,平移-拼接用来保证下采样方法可以看到所有的像素,保证特征的学习,但是计算量十分巨大,若滤波器大小为,那么会计算

论文提出用步长为1的卷积来代替下采样滤波器,保证看到所有的像素,同时实现高分辨率,但是这样会引入一些之前采样时看不到的像素和计算,于是提出稀疏滤波器

用0填充来扩大滤波器,保持稀疏,即增大感受野,看到所有像素,又保证不引入多余计算

Patchwise training is loss sampling

使用整图的输入好处很多,但是实际上失去了patch方法的随机性,难以表示不同的分布

如果随机选择预测图上的一些像素来计算损失,或者使用dropout方法,则可以保证这种随机性,说明全卷积方法确实可以完全代替之前的方法

skip-connect

直接上采样的结果很差,模糊不清,因此提出:浅层网络有更高的分辨率,可以用浅层的输出来丰富采样结果

例如:

  • pool4的输出可以和pool5的输出相结合(pool4要先过1卷积改变维度),再进行16x上采样,搭建FCN016s
  • 把上述的输出再和pool3结合,再8x上采样,构建FCN-8s

论文中提到提升有限,就只做到这里

Result

最终在时间和精度上都大满贯

Conclusion

FCN提出全卷积方法,首次将图像分类的基础模型引向密集预测任务,提出完善方法并论证了全卷积整图训练可以减少计算量,不丢失以往方法的重要特性,同时提出空洞卷积(稀疏滤波)和跳跃连接等,首次构建端对端模型,达到SOTA

Refer

【代码实现】pochih/FCN-pytorch: 🚘 Easiest Fully Convolutional Networks

【笔记参考】Fully Convolutional Networks 論文閱讀 | by 李謦伊 | 謦伊的閱讀筆記 | Medium