FCN-语义分割中的全卷积网络
语义分割
语义分割是计算机视觉中的关键任务之一,现实中,越来越多的应用场景需要从影像中推理出相关的知识或语义(即由具体到抽象的过程)。作为计算机视觉的核心问题,语义分割对于场景理解的重要性日渐突出。
摘要
Abstract—Convolutional networks are powerful visual models that yield hierarchies of features. We show that convolutional networks
by themselves, trained end-to-end, pixels-to-pixels, improve on the previous best result in semantic segmentation. Our key insight is to
build “fully convolutional” networks that take input of arbitrary size and produce correspondingly-sized output with efficient inference
and learning. We define and detail the space of fully convolutional networks, explain their application to spatially dense prediction tasks, and draw connections to prior models. We adapt contemporary classification networks (AlexNet, the VGG net, and GoogLeNet)
into fully convolutional networks and transfer their learned representations by fine-tuning to the segmentation task. We then define a
skip architecture that combines semantic information from a deep, coarse layer with appearance information from a shallow, fine layer to produce accurate and detailed segmentations. Our fully convolutional network achieves improved segmentation of PASCAL VOC (30% relative improvement to 67.2% mean IU on 2012), NYUDv2, SIFT Flow, and PASCAL-Context, while inference takes one tenth of a second for a typical image
翻译:卷积网络是一种强大的视觉模型,它可以产生层次化特征。我们展示了卷积网络这种端到端、像素对像素的训练模型,超过了语义分割的最新技术水平。本文的关键点是构建了“全卷积”神经网络,它是一种输入尺寸任意的端对端神经网络,同时网络有着高效的学习和推理过程。我们定义并详细说明了全卷积神经网络的结构,解释它们在像素位置密集型预测任务中的应用,并得出与先前模型之间的连接。本文将经典的分类网络(AlexNet,VGG16,GoogleNet)整合进全卷积神经网络,经过微调这些网络的学习表征方式来使他们适用于分割任务。然后,本文定义了跳结构将深层、粗糙的语义信息和浅层、精细的表层信息结合,产生准确精细的分割结果。本文提出的全卷积神经网络在PASCAL VOC、NYUDv2、SIFT Slow数据集取得了目前最好的分割结果,对这些数据集中的典型图像,每张的推理过程只需要不到0.2秒。其中在PASCAL VOC数据集中达到了62.2%的平均交并比。
摘要总结
主要成就:端到端、像素到像素训练方式下的卷积神经网络超过了现有语义分割方向最先进的技术
核心思想:搭建了一个全卷积网络,输入任意尺寸的图像,经过有效推理和学习得到相同尺寸的输出
主要方法:将当前分类网络改编成全卷积网络(AlexNet、VGGNet和GoogLeNet)并进行微调设计了跳跃连接将全局信息和局部信息连接起来,相互补偿
实验结果:在PASCAL VOC、NYUDv2和SIFT Flow数据集上得到了state-of-the-art的结果。
分割术语
pixel-wise(pixels-to-pixels):像素级别
每张图片都是由一个个pixel组成的,pixel是图像的基本单位
image-wise:图像级别
比如一张图片的标签是狗,即“狗”是对整个图片的标注
patch-wise:块级别
介于像素级别和图像级别之间,每个patch都是由好多个pixel组成的
patchwise training:
是指对每一个感兴趣的像素,以它为中心取一个patch(小块),然后输入网络,输出则为该像素的标签
局部信息与全局信息
-
局部信息
提取位置:浅层网络中提取局部信息
特点:物体的几何信息比较丰富对应的感受野较小
目的:有助于分割尺寸较小的目标有利于提高分割的精确程度 -
全局信息
提取位置:深层网络中提取全局信息
特点:物体的空间信息比较丰富对应的感受野较大
目的:有助于分割尺寸较大的目标有利于提高分割的精确程度
感受野(RF)
在卷积神经网络中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野。通常来说,大感受野的效果要比小感受野的效果
更好。由公式可见,stride越大,感受野越大。但是过大的stride会使featuremap保留的信息变少。因此,在减小stride的情况下,如何增大
感受野或使其保持不变,称为了分割中的一大问题。
感受野的计算公式
当前层的感受野 =RF(上一层感受野) + (K-1) x S
1x1卷积
FCN网络中,将CNN网络的后三层全部转化为1*1的卷积核所对应等同向量长度的多通道卷积层。整个网络模型全部都由卷积层组成,没有全连接层产生的向量。CNN是图像级的识别,也就是从图像到结果。而FCN是像素级的识别,标注出输入图像上的每一个像素最可能属于哪一类别。
上采样与转置卷积
本文没有沿用以往的插值上采样(lnterpolation),而是提出了新的上采样
方法,即反卷积(Deconvolution)。反卷积可以理解为卷积操作的逆运算,反卷积并不能复原因卷积操作造成的值的损失,它仅仅是将卷积过程中的步骤反向变换一次,因此它还可以被称为转置卷积。
反卷积的计算公式与卷积特征图输出的计算公式相反
卷积:input - k +2p/stride +1
而转置卷积的计算公式是其一个逆过程
转置卷积:= (input-1)x stride +k -2p (计算输出特征图尺寸的公式)
算法讲解
32s是指上采样32倍还原到图片原来的大小。(16s与8s同理)
FCN32S
直接使用转置卷积来进行上采样将图片恢复到32倍的大小
FCN16S
在FCN16S中我们融合了Maxpooling4中的相关的信息。
FCN8s
同理在FCN8s中我们需要使用maxpooling3和Maxpooling4中的特征图
先从32按提升到16在将16继续进行提升到32
损失计算
分割中的损失的计算是按照每个像素来进行计算求解的。
和分类类似通常也使用交叉熵损失来进行计算。