一、基本信息
标题:Fully Convolutional Networks for Semantic Segmentation
时间:2015
出版源:CVPR
论文领域:计算机视觉、CNN、FCN、语义分割
引用格式:Long, J., Shelhamer, E., & Darrell, T. (2015). Fully convolutional networks for semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 3431-3440).
链接:https://www.cv-foundation.org/openaccess/content_cvpr_2015/html/Long_Fully_Convolutional_Networks_2015_CVPR_paper.html
二、研究背景
本文提出端到端的像素到像素的语义分隔网络,它将语义信息从一个较深、较粗的层结合到一个较浅、较细的层,从而产生精确和详细的分段。
以往的方法主要有以下的缺点:
(1) 限制容量和感受野的小模型;
(2) 分块训练;
(3) 超像素投影的预处理,随机场正则化、滤波或局部分类;
(4) 对于密集输出采用输入移位和输出交错的方法;
(5) 多尺度金字塔处理;
(6) 饱和双曲线正切非线性;
(7) 集成
传统的基于CNN的分割方法:为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入用于训练和预测。
这种方法有几个缺点:
- 一是存储开销很大例如对每个像素使用的图像块的大小为15x15,然后不断滑动窗口,每次滑动的窗口给CNN进行判别分类,因此则所需的存储空间根据滑动窗口的次数和大小急剧上升。
- 二是计算效率低下。 相邻的像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算也有很大程度上的重复。
- 三是像素块大小的限制了感知区域的大小。 通常像素块的大小比整幅图像的大小小很多,只能提取一些局部的特征,从而导致分类的性能受到限制。
传统的分类卷积神经网络,如AlexNet,VGG等都是输入一幅图像,输出图像所属类别的概率,因此为对整幅图像的类别的预测.而本文中的FCN全卷积网络则适用于图像语义分割,即输入一幅图像,输出仍然为一幅图像
三、创新点
全卷积网络
AleNet
输入是 224x224x3 的图像,一系列的卷积层和下采样层将图像数据变为尺寸为 7x7x512 的激活数据体。
AlexNet使用了两个尺寸为4096的全连接层,最后一个有1000个神经元的全连接层用于计算分类评分。我们可以将这3个全连接层中的任意一个转化为卷积层。
全连接转化为卷积层
- 针对第一个连接区域是[7x7x512]的全连接层,令其滤波器尺寸为F=7 (卷积核为7x7),这样输出数据体就为[1x1x4096]了。
- 针对第二个全连接层,令其滤波器尺寸为F=1 (卷积核为1x1),这样输出数据体为[1x1x4096]。
- 对最后一个全连接层也做类似的,令其F=1 (卷积核为1x1),最终输出为[1x1x1000]
这里解释了:卷积核为1x1
在FCN模型中,完全抛弃了全连接层,并且全部用卷积层替代,从头到尾的进行卷积操作.最后将会得到一个三维的特征图,这个特征图的每一个channel的特征图代表一个类别的分数,以此进行预测.具体结构如下:
全卷积神经网络的主要优点在于可以输入任意大小的图像.
在一个卷积神经网络中,可以很明显的看到卷积层是与输入图像的大小没有关系的,即无论图像多大,都可以进行卷积操作,只是卷积层输出的特征图大小不同.
在卷积神经网络中,真正限制输入图像大小的是最后的全连接层神经元数,因为全连接层单元数必须与最后一层卷积的输出特征图相匹配(否则会造成全连接层权值参数个数不一致).
使用全卷积网络替换全连接层,这样就没有全连接层单元数的限制,因此可以输入任意大小的图像(至少要大于224X224).
当输入不同大小的图像时全卷积网络将会产生不同大小的输出特征图,例如输入224X224的图像,则输出特征图为1X1X1000,输入512X512的图像,则输出特征图为16X16X1000.
另外,全卷积网络输出三维特征图,保留了原始图像中的坐标信息,这是全连接层所不具备的.
上采样方法
本文中采用的是双线性插值.双线性插值的基本思想就是根据与像素点相邻的四个像素点进行x,y两个方向的线性插值,从而得到该像素点的预测值.(图像处理中的双线性插值)
跳跃结构
FCN-32s
未使用跳跃结构的模型为FCN-32s,它直接将最后一层池化的特征图进行反卷积得到分割图像.
原始图像经过FCN模型中的5次池化,图像大小压缩为原来的1/321/321/32,因此FCN-32s模型中的最后一层直接对它进行了因子
f
f
f为32的上采样操作
缺点:由于上采样倍数过大,输出图像完全无法体现出原始图像的细节,是的结果非常差.
FCN-16s
首先对最后一个池化后的特征图进行因子为2的上采样操作,转化为2X2的图像,然后再与第四次池化后的2X2的特征图相叠加,最后对叠加后的结果进行因子为16的上采样操作.
FCN-8s
首先对FCN-16s叠加后的特征图进行因子为2的上采样操作,转化为4X4的图像,然后再与第三次池化后的4X4的特征图相叠加,最后对叠加后的结果进行因子为8的上采样操作.
通过上面的实验结果可以发现,FCN-8s 的效果最好;当上采样的步长降低到 8 的时候,效果提升已经不是很明显了。即收益递减,可以不用融合更多的浅层特征了。
shift and stitch
要从粗糙的原始图像上采样得到密集预测,文中提出了shift and stitch方法,但是最后的FCN模型中似乎没有使用该方法。
shift and stitch的主要思想是对原始图像进行多层次平移池化,即原始图像产生多套池化特征图,最后上采样的时候可以根据多个池化特征图精准的复原图像。
具体操作是,设降采样因子为f,把输入图像向右平移x个像素,向下平移y个像素,x,y分别从0~f,产生
f
2
f^2
f2个版本的池化特征图,理论上这些特征图的总和包含原始图像的全部信息,没有因为池化而损失信息。把这
f
2
f^2
f2个版本的特征图连接起来(stitch),就是上采样过程。
作者发现从上采样中学习更有效和高效,特别是结合了跨层融合。
patchwise training
通常做语义分割都是使用patchwise training,就是将一张图片的重要部分裁剪下来进行训练,以避免整张图片直接进行训练所产生的信息冗余,这种方法有助于快速收敛。但本文提出直接使用整张图片也许能使效果更好,而patchwise training可能使信息受损(所以原文中说,patchwise training is loss sampling)。因为,一整张图片可能是空间相关性的,而patchwise就减少了这种相关性。
patchwise训练是一种损失采样
小结
实际上理解好这篇文章,只需要理解好一下三点即可
- 将分类网改写为用于分割的像素点分类网。具体的包括两个方面,即将全连接层改写为卷积层,和使用反卷积完成上采样的过程;
- 使用跳跃连接的结构,将深的粗糙的信息与浅的精细的信息相结合,产生准确和精细的分割;
- 使用微调进行实验。
四、实验结果
图五说明下采样对速度没有提示,这也就解释为什么不用patchwise training
五、结论与思考
作者结论
全卷积网络是模型非常重要的部分,是现代化分类网络中一个特殊的例子。认识到这个,将这些分类网络扩展到分割并通过多分辨率的层结合显著提高先进的技术,同时简化和加速学习和推理。
总结
初步理解FCN,主要思想是把CNN中原来的全连接层换成全卷积层,实现端到端预测,为了细化预测,又提出FCN-16,FCN-8,使用跳跃结构。
思考
实验过程不是很明白。对于全卷积过程没有进行仔细推导。
参考
卷积神经网络分析与总结(FCN图像分割)
FCN——Fully convolutional networks for semantic segmentations
Fully Convolutional Networks for semantic Segmentation(深度学习经典论文翻译)