FCN 论文笔记
语义分割简介
语义分割与分类不同的是,深度网络的最终结果是唯一重要的,语义分割不仅需要在像素级别上进行区分,而且还需要一种机制将编码器不同阶段学习到的区分特征投影到像素空间上。不同的方法使用不同的机制作为解码机制的一部分。
一般的语义分割架构可以被认为是一个编码器-解码器网络。编码器通常是一个预训练的分类网络,像 VGG、ResNet,然后是一个解码器网络。这些架构不同的地方主要在于解码器网络。解码器的任务是将编码器学习到的可判别特征(较低分辨率)从语义上投影到像素空间(较高分辨率),以获得密集分类。
不同于分类任务中网络的最终结果(对图像分类的概率)是唯一重要的事,语义分割不仅需要在像素级有判别能力,还需要有能将编码器在不同阶段学到的可判别特征投影到像素空间的机制。不同的架构采用不同的机制(跳跃连接、金字塔池化等)作为解码机制的一部分。
对于一-般的分类CNN网络,都会在网络的最后加入-一些全连接层,经过softmax后就可以获得类别概率信息。但是这个概率信息是1维的,即只能标识整个图片的类别,不能标识每个像素点的类别,所以这种全连接方法不适用于图像分割。FCN提出可以把后面几个全连接都换成卷积,这样就可以获得一-张2维的feature map,后接softmax获得每个像素点的分类信息,从而解决了分割问题,如图。
我们将当前分类网络(AlexNet, VGG net 和 GoogLeNet)修改为全卷积网络,通过对分割任务进行微调,将它们学习的表征转移到网络中。然后,我们定义了一种新的架构,它将深的、粗糙的网络层的语义信息和浅的、精细的网络层的表层信息结合起来,来生成精确和详细的分割。我们的全卷积网络在 PASCAL VOC(在2012年相对以前有20%的提升,达到了62.2%的平均IU),NYUDv2 和 SIFT Flow 上实现了最优的分割结果,对于一个典型的图像,推断只需要三分之一秒的时间。
论文总体框架
对于FCN-32s,直接对pool5 feature进行32倍上采样获得32xupsampled feature,再对32x upsampled feature每个点做softmax prediction获得32x upsampled feature prediction (即图像分割)
对于FCN-16s,首先对pool5 feature进行2倍上采样获得2xupsampled fteature,再把pool4 feature和2x upsampled feature逐点相加,然后对相加的feature进行16倍上采样,并softmaxprediction,获得16x upsampled feature prediction.
对于FCN-8s,首先进行pool4+2x upsampled feature逐点相加,然后又进行pool3+2x upsampled逐点相加,即进行更彩次特征融合。具体过程与16s类似。(FCN-8s 融合了不同粗糙度(conv3、conv4和fc7)的特征,利用编码器不同阶段不同分辨率的空间信息来细化分割结果。)
下采样是为了更好的获得语义信息,在感受野较大,深层网络的情况下得到全局信息。但是卷积和池化之后feature map变的很小了,需要还原成原图大小,所以就用上采样(反卷积)的方式把feature map 还原回原图大小。
FCN改变的地方
现存的知名的分类模型都可转化为全卷积模型,将其全连接层替换为卷积层,输出空间映射而不是分类的分数
其实直接使用前两种结构就已经可以得到结果了,这个上采样是通过反卷积(deconvolution)实现的,对第五层的输出(32倍放大)反卷积到原图大小。但是得到的结果还上不不够精确,一些细节无法恢复。于是将第四层的输出和第三层的输出也依次反卷积,分别需要16倍和8倍上采样,结果过也更精细一些了。这种做法的好处是兼顾了local和global信息。
关键特点:
特征是由编码器中的不同阶段合并而成的,它们在语义信息的粗糙程度上有所不同。
低分辨率语义特征图的上采样使用经双线性插值滤波器初始化的反卷积操作完成。
从 VGG16、Alexnet 等分类器网络进行知识迁移来实现语义细分。
阐释了CNN如何可以在语义分割问题上被端对端的训练
高效的学习了如何基于任意大小的输入来为语义分割问题产生像素级别的标签预测
只有两个相同的特征图才需要融合
Pool3之前发特征图不需要融合(融合对最后结果的优化作用微小,且增加了参数,效率相对低)