论文链接:https://arxiv.org/pdf/1611.09326.pdf

tensorflow代码:https://github.com/HasnainRaz/FC-DenseNet-TensorFlow

实验代码:https://github.com/fourmi1995/IronSegExperiment-FC-DenseNet.git

摘要

经典的分割结构大致由以下部分构成:(1)用于提取粗略特征的下采样过程。(2)可训练的上采样通道,用于将模型的输出至输入图片大小的分辨率。(3)可选择的加上一个后处理过程,来增强分割边缘,像CRF等。

一种新型的CNN结构DenseNet,其主要思想是在网络的前向传播过程中,每一层网络与其他各层都直接相连,大大提高了网络的准确率,同时,使网络也更易训练。本文,对DenseNet进行改进用于分割任务,此改进网络并没有后处理模型,同时,由于DenseNet结构的优点,改进后的网络现有的模型也具有更少的参数。

介绍

网络很深的CNN在一些标准benchmarks上表现出惊人的效果,但网络由于连续的卷积池化操作大大减少了图像的输入分辨率。FCNs在标准的CNN上增加上采样,来实现模型输出的分辨率恢复(输入分辨率的大小)。因此,FCNs可以处理任意尺寸大小的图片。FCNs通过在下采样与上采样之间引入跳跃结构来恢复分辨率上的损失。

ResNet通过增加一个残差块(将输入的非线性变换与输入相加)来优化深层网络的训练过程。改进ResNet通过引入shortcut paths变为FCN,提高了分割的准确率,同时也加速了模型的收敛。

DenseNet可以看作是ResNet的改进,由dense block和池化操作组成。dense block 由上几层网络的feature maps进行拼接而成。 改进后,DenseNet有如下几个效果:(1)更加有效的利用模型的参数。(2)简介的深层监督,通过引入short paths来实现深层监督。(3)feature resue:通过跳跃结构引入前几层网络的feature map及不同尺寸的信息。

该文将DenseNet引入上采样通道,来恢复输入feature map的分辨率,而这样做的一个缺点是在softmax层前引入大量难以处理的高分辨率feature map,而且,会有大量的filters与feature map进行卷积操作,大大增加了计算量和参数。因此,该文只对dense block后的feature map进行upsampling ,从而在上采样的过程中,每种分辨率的feature map上在不依赖池化层数量的基础上允许有大量的dense block。上采样中的dense block组合相同分辨率下的另一个dense block的特征信息。更高分辨率的信息通过上下采样通道之间的跳跃结构进行连接。网络结构如下,该文贡献:

(1)改进DenseNet结构为FCN用于分割,同时缓解了feature map数量的激增。

(2)根据dense block提出的上采样结构,比普通的上采样方式效果好很多。

(3)该模型不需要预训练模型和后处理过程。

 相关工作

分割网络结构上的改进有:(1)改进上采样过程,同时增加全卷积网络内的连接。(2)增加可以获得上下文信息的模型。(3)让FCN具有结构化输出的能力。

(1)不同的方法用于分辨率的恢复,从双线性插值,上采样,到转置卷积,下采样与上采样之间的跳跃结构也可以获得一个更好的恢复效果。

(2)分割网络中利用更多的上下文信息,一种非监督的全局图像描述因子经计算后添加到每个像素的feature map中。RNN从水平和垂直两个方向上进行旋转过的图片中重新提取语义信息。在CNN后端的池化层用空洞卷积进行替换,从而在不减少图像尺寸的条件下捕捉更多的语义信息。

(3)条件随机场CRF在增强分割网络输出的结构连续性上有着较大的影响,同时,近年来,也引入了RNN来近似CRF的优化效果,同时,允许FCN与RNN进行端到端的联合训练。

(4)目前的分割网络仍依赖于预训练的模型(VGG or  ResNet)进行训练。

方法

全卷积DenseNets:FCNs主要由上采样,下采样及跳跃结构构成。该文主要针对DenseNet进行改进,并在网络的上采样过程中进行了处理避免feature map 数量激增。该文首先回顾了DenseNets,提出了上采样通道并介绍了他的优点。

DenseNets: x_l 为第l层网络的输出,将上一层网络的输出进行H非线性处理(ReLU或者dropout),得到最终的输出结果。

训练较深的网络会产生梯度弥散的情况,ResNet因此引入了残差块,可以将输入与非线性处理后的feature map进行相加处理,进而可以重新利用前面网络的feature map,同时保证前几层网络的梯度可以直接进行传播。注意这里的H代表的意义是,ResNet中重复2到3个由BN,ReLU,和卷积层组成的dense block形式的非线性操作。

DenseNets的连接模式更加密集,将网络前向过程中的每一个feature map都进行拼接,从而可以使每一层都可以直接接受训练信息,最终,第l层的输出如下,H代表BN,RelU,卷积,DropOut等非线性操作。第l层网络输出由k个feature map,这里,k代表一个参数,所以,DenseNets深度的增加,feature maps的数量也是呈线性的上升。通过一个1x1的卷积与一个大小为2x2的pooling操作组合进而减少feature map空间上的数量。

Dense block 的功能使输入feature map,然后输出新的feature map,结构如下,将通道数m的图片输入第一层网络后,得到通道数为k的featur map ,记为x1,然后与通道数为m的输入x0,进行拼接为[x0,x1],送入到下一层网络中。也得到通道数为k的feature map。这一个dense block中重复n次操作,最终,一个dense block得到n*k个feature map。

将DesneNets结构组成FC-DenseNet的上采样通道。  下采样过程中,feature map 的数量在增长,但每个feature map经过池化后空间分辨率会有所下降。下采样的最后一层通常是网络的中间部分。

为了恢复输入尺寸的分辨率,FC-DenseNet将卷积操作替换为Desne block和一个上采样操作,其中,这里包含着一个转置卷积用于对以前的feature map上采样。上采样后的feature map与跳跃结构的输出进行级联,然后作为新的dense block的输入。由于上采样过程增加了feature map的空间分辨率,同时,feature map的数量也不少,大大增加了内存的压力,特别是在soltmax前需要输入全部feature map的分辨率。因此,上采样通道的Dense block的输入并不与block输出进行级联,减少空间维度。因此,转置卷积只是在最后一个Dense blokc应用,并没有对所有feature map产生效果。同时,最后一层Desne block结合前几个Dense block相同分辨率信息的feature mapde 信息。在下采样通道中,feature map的信息会有所损失,但通过跳跃结构可以尽可能的利用所有可利用的feature maps。

该文将DenseNet103改进用于分割任务。定义了Desne Block Layer,下变换,上变换,结构组成如下,block layer的输出通道为16

网络的整体结构层数说明:

最后经过上采样通道,将feature map的通道数降为256,通过像素级的交叉熵损失进行训练。

实验

在CamVid与Gatech两个数据集上进行实验。

初始化:HeUniform,

优化方法:RMSprop,

learning rate: 1e-3,

exponential decal:0.995,

weight decay:1e-4,

对图片进行随机裁剪与旋转进行数据增强。

Reference

[1] V. Badrinarayanan, A. Kendall, and R. Cipolla. Segnet: A deep convolutional encoder-decoder architecture for image segmentation. CoRR, abs/1511.00561, 2015.

[2] G. J. Brostow, J. Shotton, J. Fauqueur, and R. Cipolla. Segmentation and recognition using structure from motion point clouds. In European Conference on Computer Vision (ECCV), 2008.

[3] L. Castrejon, Y. Aytar, C. Vondrick, H. Pirsiavash, and A. Torralba. Learning aligned cross-modal representations from weakly aligned data. CoRR, abs/1607.07295, 2016.

个人实验结果

论文阅读笔记十三:The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation(FC-DenseNets)(CVPR2016)的更多相关文章

  1. 论文阅读笔记十七:RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation(CVPR2017)

    论文源址:https://arxiv.org/abs/1611.06612 tensorflow代码:https://github.com/eragonruan/refinenet-image-seg ...

  2. 论文阅读笔记二十:LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation(CVPR2017)

    源文网址:https://arxiv.org/abs/1707.03718 tensorflow代码:https://github.com/luofan18/linknet-tensorflow 基于 ...

  3. 【Semantic segmentation】Fully Convolutional Networks for Semantic Segmentation 论文解析

    目录 0. 论文链接 1. 概述 2. Adapting classifiers for dense prediction 3. upsampling 3.1 Shift-and-stitch 3.2 ...

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

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

  5. Fully Convolutional Networks for semantic Segmentation(深度学习经典论文翻译)

    摘要 卷积网络在特征分层领域是非常强大的视觉模型.我们证明了经过端到端.像素到像素训练的卷积网络超过语义分割中最先进的技术.我们的核心观点是建立"全卷积"网络,输入任意尺寸,经过有 ...

  6. 论文阅读笔记六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

    论文原址:https://arxiv.org/abs/1811.07275 摘要 一个训练好的网络模型由于其模型捕捉的特征中存在大量的重叠,可以在不过多的降低其性能的条件下进行压缩剪枝.一些skip/ ...

  7. 论文笔记(4):Fully Convolutional Networks for Semantic Segmentation

    一.FCN中的CNN 首先回顾CNN测试图片类别的过程,如下图: 主要由卷积,pool与全连接构成,这里把卷积与pool都看作图中绿色的convolution,全连接为图中蓝色的fully conne ...

  8. 论文笔记《Fully Convolutional Networks for Semantic Segmentation》

    一.Abstract 提出了一种end-to-end的做semantic segmentation的方法,也就是FCN,是我个人觉得非常厉害的一个方法. 二.亮点 1.提出了全卷积网络的概念,将Ale ...

  9. 论文学习:Fully Convolutional Networks for Semantic Segmentation

    发表于2015年这篇<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割领域举足轻重. 1 CNN 与 FCN 通 ...

随机推荐

  1. Microsoft SQL - 操作语句

    操作语句(Operation Statement) 操作数据库 创建数据库 关键字:create database 用于创建各种数据库对象(数据库.表.触发器.存储过程等) 格式如:create &l ...

  2. PF部分代码解读

    // 单个粒子数据结构 typedef struct { // 粒子状态 pf_vector_t pose; // 粒子权重 double weight; } pf_sample_t; // Info ...

  3. 【转】Python 面向对象(初级篇)

    [转]Python 面向对象(初级篇) 51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...

  4. Learning Spread-out Local Feature Descriptors

    论文Learning Spread-out Local Feature Descriptors 为什么介绍此文:引入了一种正则化手段,结合其他网络的损失函数,尤其是最新cvpr 2018的hardne ...

  5. libevent的入门学习-库的安装【转】

    转自:https://blog.csdn.net/lookintosky/article/details/61658067 libevent的入门学习-库的安装最近开始接触Linux应用层的东西,发现 ...

  6. requests库入门02-简单了解HTTP协议

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议. HTT ...

  7. 解决win10中chm内容显示为空白的问题

    在win10中打开chm文件,一般会是这个效果,内容显示为空白: 解决这个问题的方法是,在打开chm文件时,会有个安全警告的询问对话框,如下: 将[打开此文件前总是询问(W)]复选框的勾去掉,就OK了 ...

  8. hibernate学习笔记第七天:二级缓存和session管理

    二级缓存配置 1.导入ehcache对应的三个jar包 ehcache/*.jar 2.配置hibernate使用二级缓存 2.1设置当前环境开始二级缓存的使用 <property name=& ...

  9. 【BZOJ 2119】股市的预测(SAM)

    SAM很好用的啊... 传送门 双倍经验:L-Gap Substrings 基本做法类似,这道题的差分改掉,map 改掉就好了QWQ noteskey 反正就是先差分一下,然后把首项丢掉(没有比较的对 ...

  10. VUE 多页面配置(一)

    1. 概述 1.1 说明 项目开发过程中会遇到需要多个主页展示情况,故在vue单页面的基础上进行配置多页面开发以满足此需求. 2. 实例 2.1 页面配置 2.1.1 默认首页 使用vue脚手架搭建后 ...