近年来,智能驾驶越来越炙手可热。智能驾驶相关技术已经从研发阶段逐渐转。向市场应用。其中,场景语义分割技术可以为智能车提供丰富的室外场景信息,为智能车的决策控制提供可靠的技术支持,并且其算法鲁棒性较好,因此场景语义分割算法在无人车技术中处于核心地位,具有广泛的应用价值。
本周对经典的图像分割算法FCN进行论文解读。(Fully Convolutional Networks for Semantic Segmentation)全卷积网络首现于这篇文章。这篇文章是将CNN结构应用到图像语义分割领域并取得突出结果的开山之作,因而拿到了CVPR 2015年的best paper。
图像语义分割,简而言之就是对一张图片上的所有像素点进行分类。以往的用于语义分割的CNN,每个像素点用包围其的对象或区域类别进行标注,但是这种方法对每个pixel都要取周围一块区域进行估计,会重复运算,计算量大,而且取的区域尺寸难以确定。
该文章提出了全卷积网络(FCN)的概念,针对语义分割训练一个端到端,点对点的网络,达到了比较好的效果。这是第一次训练端到端的FCN,用于像素级的预测;也是第一次用监督预训练的方法训练FCN。
下面我们重点看一下FCN所用到的三种技术:
1.卷积化(convolutionalization)
分类所使用的网络通常会在最后连接全连接层,它会将原来二维的矩阵(图片)压缩成一维的,从而丢失了空间信息,最后训练输出一个标量,这就是我们的分类标签。
而图像语义分割的输出则需要是个分割图,且不论尺寸大小,但是至少是二维的。所以,我们丢弃全连接层,换上卷积层,而这就是所谓的卷积化了。
ALEXNET结构演示:
2.上采样(Upsampling)
上采样也就是对应于上图中最后生成heatmap的过程。
在一般的CNN结构中,如AlexNet,VGGNet均是使用池化层来缩小输出图片的size,例如VGG16,五次池化后图片被缩小了32倍;而在ResNet中,某些卷积层也参与到缩小图片size的过程。我们需要得到的是一个与原图像size相同的分割图,因此我们需要对最后一层进行上采样,在caffe中也被称为反卷积(Deconvolution),可能叫做转置卷积(conv_transpose)更为恰当一点。
3.跳跃结构(SKIP LAYER) FCN 在其首次设计模型中通过一个单层的反卷积层来实现上采样操作,训练之后发现分割的效果很粗糙。
为了很好的解决这个问题,FCN 在其较深处的卷积层中融入了浅层卷积的特征。根据在上采样中步长的大小不同,FCN 设计了三种上采样方式:FCN-32s、FCN-16s、FCN-8s,其步长分别为 32、16、和 8。而最后发现融合次数最多的 FCN-8s 效果最好。可以发现通过浅层数据融合的方式处理后,该模型得到了更多像素空间信息。FCN 设计的网络结构可以对任意尺寸的图片进行训练和测试,该网络最后的输出尺寸将和输入图片保存一致。但该模型对细小的物体分割效果较差。
Conclusion:结合上述的FCN的全卷积与upsample,在upsample最后加上softmax,就可以对不同类别的大小概率进行估计,实现end to end,最后输出的图是一个概率估计,对应像素点的值越大,其像素为该类的结果也越大。FCN的核心贡献在于提出使用卷积层通过学习让图片实现end to end分类。事实上,FCN有一些短处,例如使用了较浅层的特征,因为fuse操作会加上较上层的pool特征值,导致高维特征不能很好得以使用,同时也因为使用较上层的pool特征值,导致FCN对图像大小变化有所要求,如果测试集的图像远大于或小于训练集的图像,FCN的效果就会变差。但是,也由于FCN提出了一种新的语义分割的方法,才使得有后面韩国Hyeonwoo Noh的对称反卷积网络,剑桥的SegNet等优秀用于语义分割的CNN网络。