FCN论文详解

FCN
论文:《Fully Convolutional Networks for Semantic Segmentation》
提交日期:2014年11月
论文链接:https://arxiv.org/abs/1411.4038

这是我个人的学习笔记,很多地方也不完善,原博客地址:https://blog.csdn.net/weixin_44936889/article/details/103655805

该网络可以接受任意大小的输入,并通过有效的推理和学习产生相应大小的输出。 其大致可分为三部分:前馈神经网络、反卷积和skip结构改善的上采样。
1.关于输入
该网络可以接受任意大小的输入,并通过有效的推理和学习产生相应大小的输出。主要是通过将全连接层替换为卷积层。
2.前馈神经网络:
①VGG正常卷积部分
FCN论文详解_第1张图片
特征层的提取用的一般是VGG或者其他的图像识别网络,作用是提取出不同大小的特征层,供给upsample上采样层使用;

作者在这里也对比了使用不同的前馈神经网络的效果,可以看到VGG是效果比较好的,最后也是采用了VGG16:
FCN论文详解_第2张图片

这里的话我们去掉了VGG最后面的全连接层,将三层全连接换成卷积层,只留下了这部分:

FCN论文详解_第3张图片如果输入图片大小是224×224×3的话,我们得到的最后一个特征层大小就是7×7×512。

②全连接变卷积部分

FCN论文详解_第4张图片
将全连接层变为卷积层使得能在更大的图片上滑动,从而不再限制输入图片的大小。具体介绍请看全连接与卷积变换关系
2.反卷积层:
FCN论文详解_第5张图片

反卷积层的作用是,将一个小的特征图(如7×7×512)大小,映射为大的特征图(如映射为原图上,每个像素点的类别向量,224×224×21);21代表20分类+背景分类。

反卷积的原理是,先将原特征图的特征点之间进行填充,然后使用卷积核在原特征图上滑动,就得到了一个更大的特征图。

如图,正常的卷积层是这样的:
FCN论文详解_第6张图片

反卷积顾名思义,就是将这个卷积过程反过来,如图:
FCN论文详解_第7张图片

这是一个步长为1、卷积核大小为2的反卷积层,通过特征图边缘的padding,我们成功地从一个2×2大小的特征图,得到了一个4×4大小的新特征图;

我们再来看一个步长为2的反卷积层,需要注意的是,这里的步长(stride)不再代表卷积核滑动的距离,而是代表了特征图上每个特征点相邻两点之间的距离:
FCN论文详解_第8张图片

这里步长为2,就是在特征图每个特征点之间再填充一行(或一列),然后再进行卷积操作。

这样的话我们就能够通过反卷积,将前馈神经网络得到的7×7×512大小的特征层,映射回原图大小,并得到每个像素点的分类向量了(224×224×21)。

3.上采样:
上采样的过程与残差神经网络ResNet的残差单元有点类似:
FCN论文详解_第9张图片

也是通过与前面的特征层求和来得到新的特征层。

上采样是通过将反卷积得到的大的特征图,与前面相同大小的特征图(通常取pooling层)求和:
FCN论文详解_第10张图片

论文中写的可能并不是那么清楚,我们就简单分析一下:

我们使用VGG-16,得到了一个7×7×512大小的特征层,然后我们使用一个stride为2的反卷积层,得到了一个14×14×21的反卷积层;我们再取pool4(14×14×512大小,通过1×1卷积核大小的卷积层转换为14×14×21大小),再与得到的反卷积特征图相加,就实现了我们的一个上采样单元,在原图里的表示就像这样:
FCN论文详解_第11张图片

通过多个反卷积层和上采样单元,我们最终就得到了原图大小的分类预测向量(大小为224×224×21);

主要贡献:
1.将端到端的卷积网络推广到语义分割中;
2.重新将预训练好的Imagenet网络用于分割问题中;
3.使用反卷积层进行上采样;
4.提出了跳跃连接来改善上采样的粗糙程度。

具体解释:
本文的关键在于:
1.分类网络中的全连接层可以看作是使用卷积核遍历整个输入区域的卷积操作。
2.这相当于在重叠的输入图像块上评估原始的分类网络,但是与先前相比计算效率更高,因为在图像块重叠区域,共享计算结果。
3.尽管这种方法并不是这篇文章中所特有的,还有一篇关于overfeat的文章也使用了这种思想,但是确实显著提高了在VOC2012数据集上的实际效果。

你可能感兴趣的:(卷积,计算机视觉,神经网络)