FCN全卷积网络将网络的全连接层变成卷积层之后整个网络变成了只有卷积层和池化层的网络,于是网络就称之为全卷积网络。全卷积网络一般是用来对图像进行语义分割的,于是就需要对图像上的各个像素进行分类,这就需要一个上采样将最后得到的输出上采样到原图的大小。

上采样的过程也类似于一个卷积的过程,只不过在卷积之前将输入特征插值到一个更大的特征图然后进行卷积。下面举例子说明这个过程。

上采样利用的是conv2d_transpose函数,这个函数输入的有几个关键的参数,(value,filter,output_shape,strides,padding..)

这是这几个参数的解释:

Args:
value: A 4-D `Tensor` of type `float` and shape
`[batch, height, width, in_channels]` for `NHWC` data format or
`[batch, in_channels, height, width]` for `NCHW` data format.
filter: A 4-D `Tensor` with the same type as `value` and shape
`[height, width, output_channels, in_channels]`. `filter`'s
`in_channels` dimension must match that of `value`.
output_shape: A 1-D `Tensor` representing the output shape of the
deconvolution op.
strides: A list of ints. The stride of the sliding window for each
dimension of the input tensor.
padding: A string, either `'VALID'` or `'SAME'`. The padding algorithm.
See the @{tf.nn.convolution$comment here}

其中value是输入的特征图,将这个特征图进行上采样,格式是[n,h,w,c],n是你这一个batch的图片数量,h和w是特征图的宽和高,c是特征图的数量;

filter是卷积核的大小,也是四维的[h,w,in_channel,out_channel],h和w是卷积核的大小,in_channel是输入特征图的数量,out_channel是输出特征图的数量。

output_shape是要上采样得到的特征图的大小,格式与value一致。

strides是步长,四维格式,分别对应value四个维度的步长。

举个栗子:我的输入图片是1*1248*384*3的图片,经过卷积网络之后得到的输出是1*39*12*2的特征图,我们要将这个输出特征首先上采样到pool4输出的大小(1*78*24*2)为什么特征图数量是2呢,因为在我的栗子中只做了二分类,所以是2.选择的卷积核的大小是4*4*2*2,步长为[1,2,2,1]

抛开batch数量和特征图数量,我们只关注特征图的大小。首先我们将39*12的特征图插值得到H*W的大小,使的这个H*W的特征图在经过4*4-s-2的卷积核之后能够得到一个78*24的特征图,那么我们要插值得到的特征图到底是多大呢。根据卷积公式我们知道应该是宽为4+2*(78-1)和高为4+2*(24-1)的特征图,其中的4表示卷积核的宽和高,2是步长。在这个特征图上进行4*4的卷积就能够得到78*24的特征图,至此上采样完成。

上采样过程
以上的理解仅作为个人理解,如果大神有其他理解,请不吝赐教帮我纠正错误。

FCN全卷积网络上采样理解相关推荐

  1. FCN全卷积网络—upsampling(上采样)——OpenCV图像金字塔

    一.上采样理论 1.1 bilinear 1.2 Deconvolution(反卷积) 1.3 unpooling 二.OpenCV金字塔:高斯金字塔.拉普拉斯金字塔与图片缩放 一.上采样理论 FCN ...

  2. 图像语义分割:FCN全卷积网络概述

    图像语义分割:FCN全卷积网络概述 Why does FCN work? FCN网络的基本概念 FCN的计算原理 Feature map上采样 What is FCN? FCN网络的结构 FCN每层的 ...

  3. FCN全卷积网络理解及代码实现(来自pytorch官方实现)

    视频链接:https://www.bilibili.com/video/BV1J3411C7zd?vd_source=a0d4f7000e77468aec70dc618794d26f 代码:https ...

  4. FCN全卷积网络随笔

    参考:四.全卷积网络FCN详细讲解(超级详细哦) 这篇文章已经写的很好了,这里说两个我考虑的点. 第一个就是:FCN在缩小成heat map,为什么要通过上采样还原回原图大小? 我觉得这个的原因是因为 ...

  5. FCN全卷积网络理解

    FCN我以前总是把它很1*1 conv弄混,实际上这是两个不同的概念,FCN意思是把FC层用卷积层替代,用于处理segmentation问题的一个网络:1*1是一种卷积形式,用于改变feature m ...

  6. FCN全卷积网络和Deconv转置卷积原理描述

    直到RPN生成Roi的时候,MaskRcnn和FasterRcnn的结构都是一样的. 然后RPN会过滤掉一部分,剩下的Roi分成前景和背景(2分类),同时RPN会对Roi做一个初步的box回归. 接下 ...

  7. FCN全卷积网络阅读笔记

    论文标题: Fully Convolutional Networks for Semantic Segmentation 参考文献和链接: [1] Long, Jonathan, Evan Shelh ...

  8. 全卷积网络(FCN)理解

    概要 作为计算机视觉领域的三大任务之一(图像分类,目标检测,图像分割),图像分割这些年也获得了长足的发展,它被广泛用于在医学图像和自然图像的分割上,除此之外,图像分割也被用于在道路分割上,这对于自动驾 ...

  9. 全卷积网络(FCN)实战:使用FCN实现语义分割

    全卷积网络(FCN)实战:使用FCN实现语义分割 FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题.与经典的CNN在卷积层之后使用全连接层得 ...

最新文章

  1. Pytorch基础训练库Pytorch-Base-Trainer(支持模型剪枝 分布式训练)
  2. 网络标准之:IANA定义的传输编码
  3. STM32跑分?看看你的能跑多少分!
  4. MySQL - InnoDB特性 - Buffer Pool漫谈
  5. JNative用法注意事项
  6. python-字符串数据类型-定义与输出
  7. 查看回调函数执行在那个线程中的方法
  8. LY.JAVA面向对象编程.形式参数和返回值
  9. 2950交换机简明配置维护手册
  10. ORM框架之Mybatis(三)延迟加载、开启一二级缓存及使用注解增删改查
  11. Cookie与Session简介
  12. chrome中文本框样式问题
  13. 408计算机及格要什么水平,2019考研计算机408难度水平?
  14. Android Jetpack 系列篇(一) Data Binding
  15. 垃圾分类-特别是有害垃圾
  16. 初学vue,模仿个静态网站
  17. Codeforces Round #614 (Div. 2) A题ConneR and the A.R.C. Markland-N
  18. 医保种类及医疗保险待遇
  19. Unity经纬度相互转换(WGS-84、GCJ-02、BD-09)
  20. Vue 自定义消息通知组件

热门文章

  1. ImageMagic参数
  2. Apache Shiro 权限管理
  3. 【源码】让源码告诉你:为什么在子线程无法更新 UI 操作?
  4. Problem I: 挖宝游戏
  5. 解决DELL PERC H730P mini更换电池BBU后仍然显示FAILED的故障
  6. 攻略来了!2019世界虚拟现实产业大会AR/MR参展指南
  7. 浅聊vue双向绑定原理Object.defineProperty-/-Proxy
  8. WIN10无法连接共享文件夹(文件处于共享状态,但未对检测到的连接做出响应)
  9. KeePass v2.17
  10. 香港云服务器怎么样_硅云服务器评测