FCN特点

1.卷积化

即是将普通的分类网络丢弃全连接层,换上对应的卷积层即可

2.上采样

方法是双线性上采样差

此处的上采样即是反卷积
3.因为如果将全卷积之后的结果直接上采样得到的结果是很粗糙的,
所以作者将不同池化层的结果进行上采样之后来优化输出

3.跳跃结构:

现在我们有1/32尺寸的heatMap,1/16尺寸的featureMap和1/8尺寸的featureMap,
1/32尺寸的heatMap进行upsampling操作之后,因为这样的操作还原的图片仅仅是
conv5中的卷积核中的特征,限于精度问题不能够很好地还原图像当中的特征,因此
在这里向前迭代。把conv4中的卷积核对上一次upsampling之后的图进行反卷积补充
细节(相当于一个差值过程),最后把conv3中的卷积核对刚才upsampling之后的
图像进行再次反卷积补充细节,最后就完成了整个图像的还原。
http://www.cnblogs.com/gujianhan/p/6030639.html

反卷积的理解参考:
https://blog.csdn.net/qq_38906523/article/details/80520950
 
 
 
 

CNN对输入图片尺寸有要求,而FCN没有的原因

经过卷积层之后的outputsize和inputsize之间的关系是固定的,outputsize = (inputsize - kernelsize) / stride + 1,但它们

并不用相互关心。

cnn在经过每个卷积层之后,产生一个feature map,这个feature map(n*n)的大小是由神经网络的结构所决定的,

feature map进入全连接层后要变成一个长向量,这个长向量每个元素(假设为n个)需要与下一层的所有神经元相连接,

(全链接层输入向量的维数对应全链接层的神经元个数)神经网络

的结构一旦确定,权值参数的个数就确定,故参数个数都已确定。向前推导即是每个层得到的结果都必须是确定的,

所以,cnn对于输入图片的尺寸大小有要求,全连接层的输入是固定大小的,如果输入向量的维数不固定,那么全连接的权值参数

的量也是不固定的,就会造成网络的动态变化,无法实现参数训练目的

修正理解:

feature map输入进入全连接层要变成一个长向量,这个长向量与全连接层的神经元相连接(相对应),而神经网络整个结构一旦确定,

权值参数就确定,如果输入向量的位数不固定,那么权值参数就会也不固定,造成网络的动态变化,无法训练参数。

fcn没有全连接层,所以feature map大小不受限制,卷积结束之后,通过上采样得到原图片的大小。

upsampling的方法

经过对比研究,upsampling采用反卷积(有的地方叫法不同)的方法得到的效果比较好。

而在全卷积层之后直接进行Upsampling的效果并不好,因为中间的pooling操作忽略了很多有用的信息。

所以采用了一种跳跃结构,这种结构则是吧前面的pooling层的结果与卷积最后得到的结果一起做加和,

然后再进行upsampling,这样的效果更好。如下图:

以上介绍了FCN的各种重点知识,下面介绍整体流程及细节

1.FCN与CNN的区别就在于把CNN最后的全连接层换成卷积层来进行逐像素的分类识别,输入图片后经过前部分的

卷积层之后会得到一个feature map,由这个feature map进行上采样得到与原始图像尺寸相同的结果,从而恢复了

对每个像素的分类,最后通过softmax分类计算像素损失得到最终预测结果。结构如下图:

FCN的缺点:

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

2.虽然8倍的上采样效果还可以,但还有待提高,不够精细,细节还有待提高。

FCN的理解的更多相关文章

  1. 语义分割--全卷积网络FCN详解

    语义分割--全卷积网络FCN详解   1.FCN概述 CNN做图像分类甚至做目标检测的效果已经被证明并广泛应用,图像语义分割本质上也可以认为是稠密的目标识别(需要预测每个像素点的类别). 传统的基于C ...

  2. 全卷积神经网络FCN理解

    论文地址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf 这篇论文使用全卷积神经网络来做语义上的图像分割,开创了这一领 ...

  3. 笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)

    图像语义分割的意思就是机器自动分割并识别出图像中的内容,我的理解是抠图- 之前在Faster R-CNN中借用了RPN(region proposal network)选择候选框,但是仅仅是候选框,那 ...

  4. 论文阅读笔记(一)FCN

    本文先对FCN的会议论文进行了粗略的翻译,使读者能够对论文的结构有个大概的了解(包括解决的问题是什么,提出了哪些方案,得到了什么结果).然后,给出了几篇博文的连接,对文中未铺开解释的或不易理解的内容作 ...

  5. DeconvNet 论文阅读理解

    学习语义分割反卷积网络DeconvNet 一点想法:反卷积网络就是基于FCN改进了上采样层,用到了反池化和反卷积操作,参数量2亿多,非常大,segnet把两个全连接层去掉,效果也能很好,显著减少了参数 ...

  6. voc-fcn-alexnet网络结构理解

    一.写在前面 fcn是首次使用cnn来实现语义分割的,论文地址:fully convolutional networks for semantic segmentation 实现代码地址:https: ...

  7. FCN 项目部分代码学习

    下面代码由搭档注释,保存下来用作参考. github项目地址:https://github.com/shekkizh/FCN.tensorflowfrom __future__ import prin ...

  8. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

  9. ECCV 2018 | 旷视科技提出统一感知解析网络UPerNet,优化场景理解

    全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕.届时,旷视首席科学家孙 ...

随机推荐

  1. tensorflow的tile使用

    当你需要按照矩阵维度复制数据时候,可以使用tensorflow的tile函数 a1 = tf.tile(a, [2, 2]) 表示把a的第一个维度复制两次,第二个维度复制2次.注意使用tf.nn.so ...

  2. mysql帮助命令

    HELP contents 查看MySQL命令的使用. eg: HELP 'Data Type' 查看所有的数据类型的使用方法.

  3. wpf数据绑定:xml数据绑定

    wpf中可以通过XmlDataProvider,来实现xml数据的绑定.它通过XmlDataProvider来绑定外部资源,需要命名一个 x:Key 值,以便数据绑定目标可对其进行引用,Source设 ...

  4. iOS之WKWebView加载的网页自适应大小

    一,前言 有时候在WKWebView加载页面后会发现页面的字会很小, 这是因为原网页没有做手机屏幕尺寸的适配, 那么在后台不做调整的情况下我们移动端怎样来适配页面呢? 以下代码可以适配大小(原本不可以 ...

  5. [dpdk] TSC , HPET, Timer, Event Timer,RDTSCP

    关于dpdk timer跨越CPU core调度的准确性问题 首先dpdk的timer接口里边使用 cpu cycle来比较时间.根据之前的内容 [dpdk] dpdk --lcores参数 当一个E ...

  6. 转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别

    原文地址:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别 首先说明一下jsp9大内置对象 (1)HttpSession类的session对 ...

  7. quartz定时任务cron表达式详解

    引用:https://www.cnblogs.com/lazyInsects/p/8075487.html cron表达式用于配置cronTrigger的实例.cron表达式实际上是由七个子表达式组成 ...

  8. Qt获取QObject对应的类名并把它转为真实类型(使用obj->metaObject()->className() )

    QObject是有窗口类的父类,比如QWidget,QLabel,QPushButton等都直接或间接继承自QObject类.如果把某个窗口中的所有控件都装到一个QList<QObject*&g ...

  9. 应用docker化

    1)首先安装源代码工具Git.  [root@master~]# yum install-y git  2)从GitHub上下载示例的Java应用源代码.  [root@master~]# cd/op ...

  10. node2vec应用记录

    1.已有写好的python代码,可以直接下载调用,GitHub链接https://github.com/aditya-grover/node2vec/blob/master/requirements. ...