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. java8集合--LinkedList纯源码

    package Queue; import java.util.*; import java.util.function.Consumer; /** * 双端队列主要实现list接口和Deque接口, ...

  2. day11:装饰器

    1,引子,计算函数的运行时间: import time def func(): time.sleep(0.01) # 为了计算运行时间差的时候有值 print("func") de ...

  3. Java 输入/输出——处理流(BufferedStream、PrintStream、转换流、推回输入流)

    关于使用处理流的优势,归纳起来就是两点:(1)对于开发人员来说,使用处理流进行输入/输出操作更简单:(2)使用处理流执行效率更高. 1.BufferedInputStream/BufferedOutp ...

  4. [daily][centos][nginx] 在centos7使用nginx启用对文件目录的http访问

    1. 安装nginx yum install nginx 2. 修改配置 2.1 提供目录权限: 我需要访问的目录是 /home/data, 用户是data, 所以修改如下配置: [root@S205 ...

  5. Flink – CEP NFA

    看看Flink cep如何将pattern转换为NFA? 当来了一条event,如果在NFA中执行的? 前面的链路,CEP –> PatternStream –> select –> ...

  6. flash插件如何生成

    1.通过flash 原生的代码开发插件界面: 2.对于需要使用到的文件,表现mxi 文件, 该文件为adobe extension infomation file, 示例如下 <macromed ...

  7. isprime_判断质数

    判断质数的方法有很多,首先是最简单的试除法,判断n以内的质数的话时间复杂度为n*sqrt(n)当然是很慢的了 下面提供三种判断质数的方法: 首先是跑5051ms的这个是埃拉托斯特尼筛法 且不加优化 核 ...

  8. Appium入门(7)__Appium Desired Capabilities

    Desired Capabilities 是由多个键值对组成,代表移动设备相关信息.由Appium Client向Appium Server发送. 但无论Appium Client使用何种语言,最终是 ...

  9. git 码云的常用命令(版本控制)

    首先在码云仓库创建对应的仓库 当你输入错误用户名和密码 需要清掉配置 git config --system --unset credential.helper 设置账号 git config --g ...

  10. 【Python全栈-后端开发】嵩天老师-Django

    嵩天老师-Python云端系统开发入门教程(Django) 视频地址:https://www.bilibili.com/video/av19801429 课前知识储备: 一.课程介绍: 分久必合.合久 ...