RCNN学习笔记(8):Fully Convolutional Networks for Semantic Segmentation(全卷积网络FCN)

【论文信息】

《Fully Convolutional Networks for Semantic Segmentation》

CVPR 2015 best paper

Reference link:

http://blog.csdn.net/tangwei2014

http://blog.csdn.net/u010025211/article/details/51209504

概览&主要贡献

提出了一种end-to-end的做semantic segmentation的方法,简称FCN

如下图所示,直接拿segmentation 的 ground truth作为监督信息,训练一个端到端的网络,让网络做pixelwise的prediction,直接预测label map。

(笔者自己类比思想:faster rcnn中的rbn->(fc->region proposal) label map-> fast-rcnn for fine tuning)

【方法简介】

主要思路是把CNN改为FCN,输入一幅图像后直接在输出端得到dense prediction,也就是每个像素所属的class,从而得到一个end-to-end的方法来实现image  semantic segmentation。

我们已经有一个CNN模型,首先要把CNN的全连接层看成是卷积层,卷积模板大小就是输入的特征map的大小,也就是说把全连接网络看成是对整张输入map做卷积,全连接层分别有4096个6*6的卷积核,4096个1*1的卷积核,1000个1*1的卷积核,如下图:

接下来就要对这1000个1*1的输出,做upsampling,得到1000个原图大小(如32*32)的输出,这些输出合并后,得到上图所示的heatmap。

【细节记录】

dense prediction

这里通过upsampling得到dense prediction,作者研究过3种方案:

1,shift-and-stitch:设原图与FCN所得输出图之间的降采样因子是f,那么对于原图的每个f*f的区域(不重叠),“shift the input x pixels to the right and y pixels down for every (x,y) ,0 < x,y < f." 把这个f*f区域对应的output作为此时区域中心点像素对应的output,这样就对每个f*f的区域得到了f^2个output,也就是每个像素都能对应一个output,所以成为了dense
prediction。

2,filter rarefaction:就是放大CNN网络中的subsampling层的filter的尺寸,得到新的filter:

其中s是subsampling的滑动步长,这个新filter的滑动步长要设为1,这样的话,subsampling就没有缩小图像尺寸,最后可以得到dense prediction。

以上两种方法作者都没有采用,主要是因为这两种方法都是trad-off的,原因是:

对于第二种方法, 下采样的功能被减弱,使得更细节的信息能被filter看到,但是receptive fileds会相对变小,可能会损失全局信息,且会对卷积层引入更多运算。

对于第一种方法,虽然receptive fileds没有变小,但是由于原图被划分成f*f的区域输入网络,使得filters无法感受更精细的信息。

重点方法:

反卷积层->pixel wise->bp parameters->实现把conv的前传和反传过程对调一下即可

3,这里upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的参数和CNN的参数一样是在训练FCN模型的过程中通过bp算法学习得到。

fusion prediction

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

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

问题&解决办法

1.如何做pixelwise的prediction?

传统的网络是subsampling的,对应的输出尺寸会降低,要想做pixelwiseprediction,必须保证输出尺寸。

解决办法:

(1)对传统网络如AlexNet,VGG等的最后全连接层变成卷积层。

例如VGG16中第一个全连接层是25088x4096的,将之解释为512x7x7x4096的卷积核,则如果在一个更大的输入图像上进行卷积操作(上图的下半部分),原来输出4096维feature的节点处(上图的上半部分),就会输出一个coarsefeature map。

这样做的好处是,能够很好的利用已经训练好的supervisedpre-training的网络,不用像已有的方法那样,从头到尾训练,只需要fine-tuning即可,训练efficient。

(2)加In-network upsampling layer。

对中间得到的featuremap做bilinear上采样,就是反卷积层。实现把conv的前传和反传过程对调一下即可。

2.如何refine,得到更好的结果?

upsampling中步长是32,输入为3x500x500的时候,输出是544x544,边缘很不好,并且limit thescale of detail of the upsampling output。

解决办法:

采用skiplayer的方法,在浅层处减小upsampling的步长,得到的finelayer 和 高层得到的coarselayer做融合,然后再upsampling得到输出。

这种做法兼顾local和global信息,即文中说的combiningwhat and where,取得了不错的效果提升。FCN-32s为59.4,FCN-16s提升到了62.4,FCN-8s提升到62.7。可以看出效果还是很明显的。

3.训练细节

用AlexNet,VGG16或者GoogleNet训练好的模型做初始化,在这个基础上做fine-tuning,全部都fine-tuning。

采用wholeimage做训练,不进行patchwise sampling。实验证明直接用全图已经很effectiveand efficient。

对classscore的卷积层做全零初始化。随机初始化在性能和收敛上没有优势。

【实验设计】

1,对比3种性能较好的几种CNN:AlexNet, VGG16, GoogLeNet进行实验,选择VGG16

2,对比FCN-32s-fixed, FCN-32s, FCN-16s, FCN-8s,证明最好的dense prediction组合是8s

3,FCN-8s和state-of-the-art对比是最优的,R-CNN, SDS.   FCN-16s

4,FCN-16s和现有的一些工作对比,是最优的

5,FCN-32s和FCN-16s在RGB-D和HHA的图像数据集上,优于state-of-the-art

【总结】

优点

1,训练一个end-to-end的FCN模型,利用卷积神经网络的很强的学习能力,得到较准确的结果,以前的基于CNN的方法都是要对输入或者输出做一些处理,才能得到最终结果。

2,直接使用现有的CNN网络,如AlexNet, VGG16, GoogLeNet,只需在末尾加上upsampling,参数的学习还是利用CNN本身的反向传播原理,"whole image training is effective and efficient."

3,不限制输入图片的尺寸,不要求图片集中所有图片都是同样尺寸,只需在最后upsampling时按原图被subsampling的比例缩放回来,最后都会输出一张与原图大小一致的dense prediction map。

缺陷

根据论文的conclusion部分所示的实验输出sample如下图:

可以直观地看出,本文方法和Groud truth相比,容易丢失较小的目标,比如第一幅图片中的汽车,和第二幅图片中的观众人群,如果要改进的话,这一点上应该是有一些提升空间的。

结果

当然是state-of-the-art的了。

感受一下:

0
时间: 2024-10-08 10:33:26

RCNN学习笔记(8):Fully Convolutional Networks for Semantic Segmentation(全卷积网络FCN)的相关文章

FCN笔记(Fully Convolutional Networks for Semantic Segmentation)

FCN笔记(Fully Convolutional Networks for Semantic Segmentation) (1)FCN做的主要操作 (a)将之前分类网络的全连接层都换成卷积层, FCN将全连接层换成了卷积层,最后可以生成一个heatmap.卷积层的大小即为 (1,1,4096).(1,1,4096).(1,1,1000).FCN在做前向和后向计算时,都比之前的方法要快,FCN生成一个10*10的结果,需要22ms,而之前的方法生个1个结果,就需要1.2ms,如果是100个结果,

论文笔记《Fully Convolutional Networks for Semantic Segmentation》

<Fully Convolutional Networks for Semantic Segmentation>,CVPR 2015 best paper,pixel level, fully supervised. 主要思路是把CNN改为FCN,输入一幅图像后直接在输出端得到dense prediction,也就是每个像素所属的class,从而得到一个end-to-end的方法来实现image  semantic segmentation. 我们已经有一个CNN模型,首先要把CNN的全连接层

论文阅读笔记:Fully Convolutional Networks for Semantic Segmentation

这是CVPR 2015拿到best paper候选的论文. 论文下载地址:Fully Convolutional Networks for Semantic Segmentation 尊重原创,转载请注明:http://blog.csdn.net/tangwei2014 1.概览&主要贡献 提出了一种end-to-end的做semantic segmentation的方法,简称FCN. 如下图所示,直接拿segmentation 的 ground truth作为监督信息,训练一个端到端的网络,让

论文学习:Fully Convolutional Networks for Semantic Segmentation

发表于2015年这篇<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割领域举足轻重. 1 CNN 与 FCN 通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量.以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都期望得到整个输入图像的一个数值描述(概率),比如AlexNet的ImageNet模型输出一个1000维的

Fully Convolutional Networks for semantic Segmentation(深度学习经典论文翻译)

摘要 卷积网络在特征分层领域是非常强大的视觉模型.我们证明了经过端到端.像素到像素训练的卷积网络超过语义分割中最先进的技术.我们的核心观点是建立"全卷积"网络,输入任意尺寸,经过有效的推理和学习产生相应尺寸的输出.我们定义并指定全卷积网络的空间,解释它们在空间范围内dense prediction任务(预测每个像素所属的类别)和获取与先验模型联系的应用.我们改编当前的分类网络(AlexNet [22] ,the VGG net [34] , and GoogLeNet [35] )到完

FCN:Fully Convolutional Networks for Semantic Segmentation

今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf 三位大佬:Jonathan Long Evan Shelhamer Trevor Darrell 这个网址是网上一个大佬记录的FCN的博客,同时深深感受到了自己与大佬的差距,但还是硬着头皮把论文阅读完成,贴出网址,和大家一起学习:https://blog.csdn.net/happyer8

中文版 R-FCN: Object Detection via Region-based Fully Convolutional Networks

R-FCN: Object Detection via Region-based Fully Convolutional Networks 摘要 我们提出了基于区域的全卷积网络,以实现准确和高效的目标检测.与先前的基于区域的检测器(如Fast/Faster R-CNN [6,18])相比,这些检测器应用昂贵的每个区域子网络数百次,我们的基于区域的检测器是全卷积的,几乎所有计算都在整张图像上共享.为了实现这一目标,我们提出了位置敏感分数图,以解决图像分类中的平移不变性与目标检测中的平移变化之间的困

论文阅读(BaiXiang——【CVPR2016】Multi-Oriented Text Detection with Fully Convolutional Networks)

BaiXiang--[CVPR2016]Multi-Oriented Text Detection with Fully Convolutional Networks 目录 作者和相关链接 方法概括 方法细节 创新点和贡献 实验结果 问题讨论 总结与收获点 作者和相关链接 作者: paper下载 方法概括 Step 1--文本块检测: 先利用text-block FCN得到salient map,再对salient map进行连通分量分析得到text block: Step 2--文本线形成:

【阅读笔记】3D Densely Convolutional Networks for Volumetric Segmentation

3D Densely Convolutional Networks for Volumetric Segmentation  Toan Duc Bui, Jitae Shin, and Taesup Moon? School of Electronic and Electrical Engineering, Sungkyunkwan University, Republic of Korea 任务: 六个月婴儿脑部分割(四分类)white matter (WM), gray mater (GM)