一、概述及相关概念简介

(1)概述

FCN:FCN是对图像进行像素级的分类(也就是每个像素点都进行分类),从而解决了语义级别的图像分割问题

与经典的CNN不同,FCN对传入的图片尺寸没有要求,并且舍弃了全连接层,转而使用上采样的方法将最后的输出采样到原图的大小;不仅如此,FCN的lebal并不像CNN那样是文字,而是一张图片;训练图与标签如下所示:

FCNN和BPNN有什么区别 fcn和cnn区别_插值


FCNN和BPNN有什么区别 fcn和cnn区别_池化_02

可以说,FCN与CNN的区别在于FCN把CNN最后的全连接层换成卷积层,其输出的是一张已经标记好的图,而不是一个概率值

(2)关于上采样的理解

FCN网络要完成的是对每个像素的分类,所以便需要一个上采样过程将输出上采样至原图大小

双线性插值

双线性插值是图像缩放的一种方式,其主要分为两步线性插值,一是在x方向插值,二是用x方向插值结果再在y方向插值;

首先来看线性插值:

FCNN和BPNN有什么区别 fcn和cnn区别_插值_03


这里x0与x1对应的点为已知,(x,y)为需插值的点,x为插值的位置,相当于已知的自变量,则因变量y,即待插值的计算公式为:

FCNN和BPNN有什么区别 fcn和cnn区别_卷积_04


对于双线性插值,实质就是进行两次普通的线性插值;实例如下:红色点为已知,待插值的点为P,方法为先对R1、R2进行插值,再对P进行插值,即完成了双线性插值过程

FCNN和BPNN有什么区别 fcn和cnn区别_池化_05

反卷积上采样

顾名思义,就是利用卷积方法扩大图片大小,主要方法可以利用图像边缘置0,再进行卷积,如下图:

FCNN和BPNN有什么区别 fcn和cnn区别_卷积_06


但边缘置0的方法会使得边缘信息表现不佳,于是可以采用在图像中间置0的方法以解决上述问题。如下图:

FCNN和BPNN有什么区别 fcn和cnn区别_插值_07


需要注意的是,反卷积运算的参数和CNN的参数一样是在训练FCN模型的过程中得到的,反卷积层也是卷积层,不关心input大小,滑窗卷积后输出output。deconv并不是真正的deconvolution(卷积的逆变换),最近比较公认的叫法应该是transposed convolution,deconv的前向传播就是conv的反向传播

反池化上采样

这种方法比较好理解,即反向进行最大池化操作;首先我们回顾一下正向的最大池化操作,即下图左边的MaxPooling操作,而反池化需要做的就是将最大值重新放回池化前的位置,其余位置直接置0,即下图右UnPooling过程所示

FCNN和BPNN有什么区别 fcn和cnn区别_FCNN和BPNN有什么区别_08

(3)跳级结构

对CNN的结果做处理,得到了dense prediction,而作者在试验中发现,得到的分割结果比较粗糙,所以考虑加入更多前层的细节信息,也就是把倒数第几层的输出和最后的输出做一个fusion,实际上也就是加和(即下图中黄色部分过程):

实验表明,这样的分割结果更细致更准确。在逐层fusion的过程中,做到第三行再往下,结果又会变差,所以作者做到这里就停了。

FCNN和BPNN有什么区别 fcn和cnn区别_插值_09

二、几种经典FCN网络结构

(1)FCN-8s

这是所介绍的几种结构中效果最好的一种,由于进行了三次上采样过程,加上跳级结构的帮助,该结构进一步融合了几个pooling层的预测结果,详细结构如下:

FCNN和BPNN有什么区别 fcn和cnn区别_池化_10

(2)FCN-16s

与FCN-8s相似,该结构仅使用了两次上采样过程,并使用了调剂结构,融合了最后一个pooling层的预测结果,详细结构如下:

FCNN和BPNN有什么区别 fcn和cnn区别_FCNN和BPNN有什么区别_11

(3)FCN-32s

仅进行了一次上采样过程,并且未使用跳级结构,上采样过程步长为32,故名为FCN-32s,详细结构如下:

FCNN和BPNN有什么区别 fcn和cnn区别_池化_12

三、FCN总结

FCN的卷积网络部分可以部分采用VGG等经典的CNN网络,在这些预训练的基础上进行迁移学习,再让对反卷积的结果跟对应的正向feature map进行叠加输出,从而得到更加准确的像素级别分割

缺点

1.得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感

2.对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性

这里放上自己训练完成后一个预测的效果,自行感受:

FCNN和BPNN有什么区别 fcn和cnn区别_卷积_13

FCNN和BPNN有什么区别 fcn和cnn区别_池化_14