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/happyer88/article/details/47205839

进入正题,作者在开始就说了,引以为傲的是他们提出了“完全卷积”网络,这种网络的特点是可以输入任意大小的数据,并通过有效的脱离和学习能产生相应大小尺寸的输出。用AlexNet,GoogleNet,VGG修改为全卷积网络,并进行迁移学习微调。接着,作者定义一个跳跃结构,结合来自深层的,粗略层的分割信息,其中,该层中含有来自浅层的,精细层的外观信息,通过前面的结构与信息,能够进行精确的和详细的分割。(插播:CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征;较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高。)

作者认为卷积网络不仅改进了全图分类效果,而且在结构化输出的定位任务上也取得了较大的进步(边界框对象的检测,部分和关键点的预测,匹配定位等)。FCN进行了很多开创性的工作,是首个对像素点进行end-to-end训练,同时进行有监督的预训练,同时对现有的网络修改为全卷积网络,可以对任意大小的输入产生密集输出。作者指出学习和推理的过程都是通过前馈计算和反向传播在整幅图像上进行的。网络内不的上采样层可以实现像素的预测,同时,采用降采样的池化层在网络中进行学习。大佬表示,分批训练目前是很常见的方式,但是和全卷积训练相比,效率上还是稍逊一点。FCN并不需要产生proposals,或通过随机场,分类器进行事后的优化操作等,由此可以看出,FCN还是很轻便的。作者在论文中经常提到的密集预测,个人 感觉和针对像素点的预测的说法大同小异。语义分割在位置和语义之间有一个紧密的联系,全局信息可以解析局部信息。深层特征层次在非线性的 局部-全局金字塔上进行位置和语义的编码。作者由此定义了前面的跳跃结构,以更好的利用特征信息。

作者提出的方法是将图像分类作为有监督的预训练,同时进行微调全卷积,从而可以从整个输入图片和groundTruth上进行高效的学习。作者融合了各个层的特征定义一个非线性的端到端的局部-全局表示。感受野从CNN可视化的角度来讲,就是输出featuremap某个节点的响应对应的输入图像的区域。网络中卷积,池化,及激活函数等结构在局部的输入图像上运行,并依赖相对应的空间坐标。一般深层网络用于计算一般的非线性函数,但只有计算非线性函数的网络层被叫做深层滤波器或者全卷积网络。在loss函数这,有点不好理解,作者说一个由FCN组成的实值loss函数定义了一个任务,如果这个loss function是最后一层网络所有空间维度的和,这里它给出了一个式子, loss function的梯度是每个像素梯度的和,所以,整幅图像L的随机梯度下降等同于每个像素点随机梯度下降,这里将网络最后一层上所有感受野作为一个minibatch。当感受野显著重叠时,由层与层之间的 计算相比patch-by-patch,前馈计算和反向传播会更高效。

整体过程为,首先是将网络调整为全卷积网络,用于产生粗略的输出,针对像素级的,需要将上述粗略的输出反映到像素。相比改造之前的AlexNet ,VGG,LeNet等网络,这些网络有固定的输入,同时产生非空间的输出,折磨受限的罪魁祸首是全连接层,其固定的尺寸就算了,还把空间位置给扔了,然而,作者就比较机智了,把全连接层看成卷积核覆盖整个输入图像的卷积。这种转变可以进行任意尺寸的输入。

全卷积网络得到的结果图相当于调整前的网络对特定输入区域的评估,但是对那些patch中重叠区域的计算还是比较集中的。在FCN中,虽然输出map的大小由任意大小的输入图片控制,但是输出维度通常是由降采样减少的。分类网络进行降采样的原因是为了保持滤波器数量不大,同时计算要求可行,此版本的全卷积网络,通过乘上输出单元感受野的像素跨度因子使输出变得看起来“粗糙点”。

在看到shift and stitch is filter 这一块感觉没看懂,参考前面提供的大佬的网址,了解到Shift and stitch 是作者为了得到dense pretiction的方案之一,作者提到,Dense Prediction可以由在输入图片上进行移动得到的输出进行一起 拼接得到,如果输出图的下采样因子为f,则将输入像素向右移动x个,同时向下移动y个像素,(x,y) st 0<x,y<f。显而易见,经过一系列移动(这里前面的移动貌似是一步一步走的),相当于可以得到f*f个输入(这里注意,虽然计算量为f*f,增大了,但是获得了可以预测单个像素的效果),同时进行交错输出,使预测能够对应感受野中心的像素。接着,作者又提到了一个stride 为s的网络层(卷积或者池化层)和一系列带有权重fij的卷积层(忽略非相关特征的维度),设定低层网络的输入步长为1,对底层网络的输出进行因子为s的上采样。但是,将原始filter与上采样后的结果进行卷积却与

shift and stitch的不同,这里是因为这里进行卷积的filter只能看到输入减少的一部分,作者为此对filter 进行修改如下:

为了达到shift and stitch的效果,对滤波器进行逐层重复放大滤波器,直到所有的降采样消失。减少网络内的降采样是一个折中的措施,这样,filter可以获得更好的信息,但缺点就是有更小的感受野,并需要更多的时间进行计算。shift and stitch也是一种折中,在不见底滤波器感受野带线啊哦的情况下进行更密集的输出,但是缺点是禁止filters 以比当初设定的更精细的尺寸来访问信息。

卵而,上面两个技巧,作者并没有用到模型中,而是采用了上采样的技能。上采样中用到了插值的思想。作者解释道,一个因子为f的上采样就是一个步长大小为1/f的卷积。所以只要f为一个整数,上采样就进行一个输出stride为f的反卷积(实际上就是反转了卷积的前向和后向过程)。上采样是在网络内通过像素的损失反向传播进行end-to-end学习。反卷积滤波器的一个特点是尺寸不是固定,可以被学习的。

作者将ILSVRC分类器映射为FCN,并进行扩充,使其可以通过上采样和像素级的loss function进行dnese prediction。接下来,进行微调训练。在刚开始,提到过一个skip结构,这个个结构是进行end-to-end学习以细化输出的语义和空间精度(更精细的尺寸需要的网络层较少,将精细网络层和粗糙的网络层组合一起可以让model在考虑全局结构下进行局部预测)。

作者定义的网络结构如下:

FCN的理论大体到此结束,有关网络结构的详细介绍会在代码中出现。

原文地址:https://www.cnblogs.com/fourmi/p/8996566.html

时间: 2024-10-01 04:54:59

FCN:Fully Convolutional Networks for Semantic Segmentation的相关文章

论文阅读笔记: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作为监督信息,训练一个端到端的网络,让

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的方法,简称FC

论文学习:Fully Convolutional Networks for Semantic Segmentation

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

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(深度学习经典论文翻译)

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

中文版 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])相比,这些检测器应用昂贵的每个区域子网络数百次,我们的基于区域的检测器是全卷积的,几乎所有计算都在整张图像上共享.为了实现这一目标,我们提出了位置敏感分数图,以解决图像分类中的平移不变性与目标检测中的平移变化之间的困

论文笔记之:Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grained Recognition

Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grained Recognition   细粒度的识别(Fine-grained recognition)的挑战性主要来自于 类内差异(inter-class differences)在细粒度类别中通常是局部的,细微的:类间差异(intra-class differences)由于姿态的变换而导致很大.为了

论文阅读(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--文本线形成: