【论文笔记】Learning Deconvolution Network for Semantic Segmentation

news/2024/5/20 10:20:37 标签: 论文阅读, 语义分割, Deconvolution

重要说明:严格来说,论文所指的反卷积并不是真正的 deconvolution network 关于 deconvolution network 的详细介绍,请参考另一篇博客:什么是Deconvolutional Network?

一、参考资料

Learning Deconvolution Network for Semantic Segmentation

Deconvolution_Network_6">二、Deconvolution Network

deconvolution network是卷积网络(convolution network) 的镜像,由反卷积层(deconvolutional layers)和上采样层(Unpooling layers)组成。本质上,deconvolutional layers是由卷积层(convolutional layers)组成的。

deconvolution network=deconvolutional layers+Unpooling layers

1. 引言

原始的FCN存在以下问题:

  1. 第一,感受野为固定大小;物体大于或小于感受野会被 fragmented or mislabeled。大物体分割不连续,小物体被忽视。虽然FCN加入了 skip architecturer ,但是这并不是根本的解决方案,问题在于没有详细的边界和语义;
  2. 第二,输入反卷积层的 label map 太粗糙,反卷积过程太简单,使得物体的细节信息丢失或被平滑;在FCN论文中,label map 大小仅仅为16x16,以 deconvolution 作为双线性差值来获得原始输入图像大小的分割。由于缺少深度的反卷积网络,很难精确重建物体边界这种高度非线性结构。

2. 论文创新点

为了克服FCN存在的问题,论文用了一个完全不同的策略进行语义分割,主要贡献如下:

  1. 学习一个多层的deconvolution network,它由 deconvolutional layersUnpooling layersReLU layers组成。
  2. 将训练好的网络应用在目标候选区域(object proposal),来获得 instance-wise segmentions。再将这些单个的分割结果结合起来组成最终的语义分割结果。这解决了FCN存在的物体尺度问题,能够识别细小的结构。

Deconvolution_NetworkFCN_26">3. Deconvolution Network与FCN对比

本文与FCN最大的不同,应该是上采样阶段的不同,FCN的上采样利用转置卷积(Conv2DTranspose),本文利用deconvolution network,也就是Unpooling layers+deconvolutional layers。可以简单理解,基于 Conv2DTranspose 的上采样和基于 Unpooling layers+deconvolutional layers 的上采样,都可以实现语义分割任务。

通过 deconvolutional layersUnpooling layers 的结合,论文可以产生更精细的分割图。和FCN的对比如下图:

在这里插入图片描述

Deconvolution_Network_35">4. Deconvolution Network网络结构

论文提出的网络结构由卷积网络层和反卷积网络层组成。卷积网络层对应于特征提取器,将输入图像转换为多维特征表示;而反卷积网络是一个形状(shape)生成器,对卷积网络层中提取的特征进行对象分割。网络的最终输出是一个与输入图像尺寸相同的概率图,表示每个像素点属于预定义类别的概率。

在这里插入图片描述

  • 卷积网络(convolution network): VGG-16(去除分类层),包括:convolutional layersRelu layerspooling layers

  • 反卷积网络(deconvolution network)反卷积网络是卷积网络的镜像,包括一系列的 Unpooling layersdeconvolutional layersRelu layers。反卷积网络输出密集的逐像素类别概率图(dense
    pixel-wise class probability map)。

4.1 Unpooling layers

Unpooling layers 是通过回溯原始位置来获得更好的结构。

首先,在执行pooling操作时用 switch variables 记录 max pooling 选择最大值的位置(location)。然后,在 unpooling 阶段,利用 switch variables 还原位置,恢复 pooling 之前的尺寸大小,其它像素位置用零元素填充,得到稀疏的激活图(sparse avtivation map)。

4.2 deconvolution layers

对稀疏激活图进行deconvolution操作,使得稀疏激活图变成稠密激活图。执行deconvolution后,裁剪(crop)激活图的边界,使其等于 Unpooling layers 的输出尺寸(也是 deconvolutional layers 输入的大小)。

论文中,低层的 deconvolutional layers 可获得目标的粗略信息(例如:位置,形状,范围),而高层的 deconvolutional layers 可获得更精细的信息。

Deconvolution_Network_59">5. Deconvolution Network可视化

可视化 Deconvolution network 的每一层,如下图所示:

在这里插入图片描述

图(a)是输入层;图(b)是14x14 deconvolution layers 的结果;图©是28x28的 Unpooling layers 的结果;图(d)是28x28 deconvolution layers 的结果;图(e)是56x56 Unpooling layers 的结果;图(f)是56x56 deconvolution layers 的结果;图(g)是112x112 的Unpooling layers 的结果;图(h)是112x112 deconvolution layers 的结果;图(i)和图(j)分别是224x224 Unpooling layersdeconvolution layers 的结果。

6. 总结

论文将 semantic segmentation 问题视为 instance-wise segmentation 问题,也就是 pixel-wise prediction。网络是以包含目标的子图像(将它视作一个instance)作为输入,并以此来产生 逐像素的类别预测结果(pixel-wise class prediction)。最后将图像中每个候选区域的输出整合起来,得到原始图像的输出。

instance-wise segmentation VS image-level prediction

  • instance-wise segmentation:能处理不同尺度大小的物体,识别细节信息;减少搜索空间,减少训练的复杂度,减少存储需求;
  • image-level prediction:固定大小感受野,不能解决上述问题。

三、参考文献

[1] Noh H, Hong S, Han B. Learning deconvolution network for semantic segmentation[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1520-1528.


http://www.niftyadmin.cn/n/5346654.html

相关文章

蓝桥杯备战——4.继电器/蜂鸣器

1.分析原理图 最好自己先去查查138以及ULN2003的使用方法,我这里直接讲思路。 由上图我们可以看到如果138输入ABC101,则输出Y50,此时若WR通过跳线帽接地则Y5C1 ,于是573(U9)处于输出跟随输入P0状态,此时若P061,则573输出Q71&am…

物业app开发成功案例:如何满足用户需求

在当今数字化时代,物业管理已经不再是一个简单的领域。随着智能手机的普及和移动互联技术的发展,许多物业管理公司纷纷投入物业App开发,以提升管理效率、改善用户体验。本文将介绍一个成功的案例,探讨如何满足用户需求。 物业App…

HNU-编译原理-甘晴void学习感悟

前言 熬过煎熬的考试周、复习以及更加煎熬的等成绩,查到成绩的那一刻,心里还是挺开心的。 虽然我没有完全学懂这门课程,但我还是兢兢业业地通过了课程的考试,拿到了这门课程的认可。 记录一下自己对编译原理的学习感悟&#xf…

Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据

Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据 引言正文 引言 之前在 《pandas向已经拥有数据的Excel文件中添加新数据》 一文中我们介绍了如何通过 pandas 向 Excel 文件中写入数据。那么对于含有多表头的数据,我们该如何将它们…

Unity制作右键菜单(自适应分辨率)

一、需求 右键触发打开菜单,左键在内部可选择选项,左键单击菜单范围外关闭。难点在于屏幕坐标系,鼠标位置,UI位置之间的关系。 二、理论 前置知识: unity中,用RectTransform对象的position.x和position.y表…

【开源】基于JAVA的房屋出售出租系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 房屋销售模块2.2 房屋出租模块2.3 预定意向模块2.4 交易订单模块 三、系统展示四、核心代码4.1 查询房屋求租单4.2 查询卖家的房屋求购单4.3 出租意向预定4.4 出租单支付4.5 查询买家房屋销售交易单 五、免责说明 一、摘…

Unity出AAB包资源加载过慢

1)Unity出AAB包资源加载过慢 2)Unity IL2CPP打包,libil2cpp.so库中没有Mono接口 3)如何在URP中正确打出Shader变体 4)XLua打包Lua文件粒度问题 这是第370篇UWA技术知识分享的推送,精选了UWA社区的热门话题&…

leetcode-200-岛屿问题

一 参考 200. 岛屿数量 - 力扣(LeetCode) 二 代码 class Solution { public:int numIslands(vector<vector<char>> &grid){int m = grid.size();int n = grid[0].size();int islandNum = 0;for (int i = 0; i < m; i++){for (int j = 0; j < n; j++…