Fully Convolutional Networks for Semantic Segmentation

语义分割 FCN 算法 这里主要说一下 FCN-32s 、FCN-16s 、FCN-8s 三个分割结果是怎么得到的,从而知道FCN中的特征到底是怎么融合的?

首先来看看 最粗糙的分割结果 FCN-32s 是怎么得到的?
我们通过将全连接层变为卷积层,实现分类器变身稠密预测即分割 Adapting classifiers for dense prediction,如下图所示

如果我们将 AlexNet 变为全卷积网络用于图像稠密分类( discarding the final classifier layer, and convert all fully connected layers to convolutions),
如下图所示

如果227 × 227输入图像经过一系列卷积池化,得到一个图像对应的特征图,以前用该特征图进行分类,得到该图像的类别信息
对于一个 500×500 大小的图像,我们可以用 10 × 10 个 227 × 227子图像块进行覆盖,这样就得到了 10 × 10 个特征图,分别对这些特征图进行分类,得到一个10 × 10 的分割结果。

这里我们使用一个 1 × 1卷积层进行分类,对于PASCAL 数据库有 21个类别(包括背景)
We append a 1 × 1 convolution with channel dimension 21 to predict scores for each of the PASCAL classes (including background) at each of the coarse
output locations, followed by a deconvolution layer to bilinearly upsample the coarse outputs to pixel-dense outputs

得到一个 10 × 10 的分割结果A,我们使用一个 deconvolution layer 进行双线性上采样到输入图像尺寸得到 FCN-32s分割结果, 直接放大32倍
deconvolution layer 中的滤波器参数通过学习得到。
Note that the convolution filter in such a layer need not be fixed (e.g., to bilinear upsampling), but can be learned. A stack of deconvolution layers and activation functions can even learn a nonlinear upsampling.

下面再看看怎么得到 FCN-16s 这个分割结果,即怎么融合卷积网络中间特征图的

一开始的计划是这样的:首先将不同尺寸的特征图 搞到一个尺寸,因为 Layer fusion is essentially an elementwise operation. 这里需要放大,裁剪,对齐。 in general, layers to be fused must be aligned by scaling and cropping,对齐之后就是将不同特征图 组合起来concatenation,最后用一个 score layer 分类,
Having spatially aligned the layers, we next pick a fusion operation. We fuse features by concatenation, and immediately follow with classification by a “score layer” consisting of a 1 × 1 convolution.

但是因为存储 concatenated features 需要内存,所以我们就先分类,再 concatenation
Rather than storing concatenated features in memory, we commute the concatenation and subsequent classification (as both are linear).

实际我们是这么干的:对 pool4 的输出使用一个 1 × 1 卷积层,步长为 16个像素进行分类,得到一个分割结果图B,然后 再对 conv7 的分割结果A 进行 2× upsampling layer 得到一个放大2倍的分割结果图A2, 将这两个分类置信度图求和相加得到了 一个分割结果图 C,最后使用一个 deconvolution layer 进行双线性上采样到输入图像尺寸得到 FCN-16s分割结果,直接放大16倍

We first divide the output stride in half by predicting from a 16 pixel stride layer. We add a 1 × 1 convolution layer on top of pool4 to produce additional class predictions. We fuse this output with the predictions computed on top of conv7 (convolutionalized fc7) at stride 32 by adding a 2× upsampling layer and summing both predictions

FCN-8s 结合图3
对 pool3 的输出使用一个 1 × 1 卷积层,步长为 8个像素进行分类,得到一个分割结果图 D,然后 再对 FCN-16s中 的分割结果 C 进行 2× upsampling layer 得到一个放大2倍的分割结果图C2, 将这两个分类置信度图求和相加得到了 一个分割结果图 E,最后使用一个 deconvolution layer 进行双线性上采样到输入图像尺寸得到 FCN-16s分割结果,直接放大8倍

语义分割--FCN 算法中的一些细节--特征怎么融合相关推荐

  1. 解读混淆矩阵在语义分割FCN指标计算中的应用(含代码实现)

    一.混淆矩阵的概念 混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示.具体评价指标有总体精度.制图精度.用户精度等,这些精度指标从不同的侧面反映了图像分类的精度. 在人工 ...

  2. 36.图像语义分割-FCN

    图像语义分割是计算机读懂图像的基础,所以叫图像语义分割,左侧是图像语义分割,右侧是实例分割,语义分割关注种类,实例分割关注个体,像我们左侧的语义分割,分割后机器就能大致了解,图里有5只羊,1个人,1条 ...

  3. 语义分割车道线,来自两篇论文的融合算法

    语义分割车道线,来自两篇论文的融合算法 IEEE IV 2018论文<LaneNet: Real-Time Lane Networks for Autonomous Driving>.这篇 ...

  4. Pytorch:图像语义分割-FCN, U-Net, SegNet, 预训练网络

    Pytorch: 图像语义分割-FCN, U-Net, SegNet, 预训练网络 Copyright: Jingmin Wei, Pattern Recognition and Intelligen ...

  5. 用TensorFlow.js在浏览器中进行实时语义分割 | MixLab算法系列

    语义分割是监测和描绘图像中每个感兴趣对象的问题 当前,有几种方法可以解决此问题并输出结果 如下图示: 语义分割示例 这种分割是对图像中的每个像素进行预测,也称为密集预测. 十分重要且要注意的是,同一类 ...

  6. 深度学习之语义分割unet算法解读

    0 背景 在语义分割领域,unet 也是一个经典网络,尤其是在医学影像分割方面,效果很好.本文对 unet 算法进行一个解读介绍. 1 FCN 网络 语义分割的开山之作是 FCN 网络,具体解读可以参 ...

  7. 语义分割 - FCN (Fully Convolutional Networks)

    目录 FCN论文精读 本文的创新点 先验知识 感受野(感受域) Receptive field 全局信息与局部信息 算法架构 训练技巧 算法实现 定义配置文件 cfg.py 数据集处理 dataset ...

  8. 跨模态学习在三维语义分割领域适应中的应用

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家 ...

  9. 图像语义分割 -- FCN

    一:图像语义分割 最简答理解图像语义分割呢就是看下面的图片例子: 像素级别的分类: 假如像素有五个类别,那么最后输出的结果在长度和宽度上是一样的,只不过通道数就是类别个数了.拆解开各个通道就是如下所示 ...

最新文章

  1. linux批量管理矿机,华硕最新的挖矿主机板可以一次控制 20 个 GPU
  2. 计算项目中的代码行数:Count the Lines of Code (LOC)
  3. 自然语言处理常用工具
  4. Java二叉树的构建与遍历
  5. ABAQUS用户子程序一览表
  6. Ubuntu14.04安装和配置Tomcat8.0.12(转)
  7. BAT执行DOS命令查找本地浏览器
  8. 关于com.android.support:appcompat-v7:26.0.0以上无法下载的问题
  9. 渗透测试入门4之内网跨边界应用
  10. Go语言第一深坑 - interface 与 nil 的比较 (转)
  11. 二、Nginx 反向代理配置初学个人理解
  12. (转载)Jvm工作原理学习笔记
  13. 编译exe不弹窗口_详解matlab mbuild -setup找不到C++编译器解决方案
  14. 监狱数字化集成管理平台
  15. vue json对象转数组
  16. webhook机器人php源码,机器人之钉钉机器人webhook 对接 ThinkPHP3.2 实现Bug告警通知...
  17. 微信小程序体验版(测试环境)和线上版(生产环境)发布
  18. 关于线性回归分析的理解
  19. android设备压差表怎么校准,MY-DJ101
  20. c语言编程杨辉三角形流程图,使用c语言输出杨辉三角形的简单方法

热门文章

  1. 在Dos下运行exe程序的时候出现找不到Cygwin1.dll文件的情况总结
  2. qchart画完以后删除_Unity2019基础教程:TileMap搭建像素画场景关卡
  3. 斗鱼关注人数爬取 | 字体反爬的攻与防
  4. 为什么导师不喜欢推荐老实人?这是我听过最醍醐灌顶的回答
  5. 3000多种细菌大迁徙,就发生在你买菜接过钞票的一瞬间
  6. R语言ggplot2可视化数据点注释、标签显示不全、发生边界截断问题解决实战
  7. R语言使用geompointdensity包的geom_pointdensity函数将散点图和密度图结合起来、使用viridis包的scale_color_virdis函数为密度数据添加调色板色彩渐变
  8. Pandas选择一列或者多列数据
  9. R语言CRAN不包含的安装包下载并手动使用RStudio进行安装实战:以下载VRPM包及绘制彩色列线图为例
  10. R语言max函数min函数计算各种数据对象最大值最小值实战