SegNet论文笔记
论文英文原文
Abstract
- 论文提出了一个全新的全卷积的Semantic Segmentation模型:SegNet,用于逐个像素的语义分割。
- 模型主要由:编码网络(encoder network),解码网络(decoder network)和逐像素分类器(pixel-wise classification layer)组成。SegNet的新颖之处在于decoder阶段的上采样方式,具体来说,decoder时上采样使用了encoder阶段下采样的最大池化的索引(indices),这消除了上采样的学习需要。考虑到上采样是稀疏的,再配合滤波器产生最后的分割图。
1. IntroductionSemantic
1.Segmentation常用于道路场景分割,大多数像素属于大类,需要平滑的分割,模型要能够依据形状提取物体,这需要保留好的边界信息,从计算的角度来考虑,需要有效的存储量和计算时间。而现有的Semantic Segmentation的问题在于:最大池化和下采样会降低feature map的分辨率(即降低feature map分辨率会损失边界信息),SegNet针对这一问题设计了将低分辨率feature map映射到高分辨率的方法(利用池化索引),从而产生精确边界的分割结果。
2.SegNet的encoder部分使用的是VGG16的前13层(即使用预训练的VGG16做特征提取层),核心在于decoder部分,解码器使用从相应的编码器接受的max-pooling indices来进行输入特征图的非线性upsampling,这样做有以下几个优点:
- 改善边界描述
- 减少end到end的训练参数
- 这样的upsampling的形式形式可以仅需要少量的修改而用于多种encoder-decoder架构
2. LITERATURE R EVIEW
1.传统的Semantic Segmentation方法:用随机森林(RF),Boosting等做类别的中心预测,用SfM提取特征,配合CRF提高预测精度。但是这些方法效果都不好,总结原因是这些方法都需要提高分类特征。
2 而近期深度卷积网络在分类问题上表现出色,考虑将深度网络应用到Semantic Segmentation上,例如:FCN,效果比传统方法好很多。有工作将RNN、条件随机场(CRF)引入配合decoder做预测,有助于提高边界描绘能力,并且指出了,CRF-RNN这一套可以附加到包括SegNet在内的任何深度分割模型。
现有的多尺度的深度神经网络架构的应用,常见两种形式:
- 将输入放缩为多个尺度得到相应的feature map
- 将一张图送到模型,得到不同层的feature map
3.这些方法的共同想法都是使用多尺度信息将高层的feature map包含的语义信息与底层的feature map包含的精度信息融合到一起。但是,这样方法参数多,比较难训练
3. ARCHITECTURE
- SegNet由编码网络,解码网络后接一个像素分类层组成。
- 编码网络(encoder network):由13个卷积层组成,与VGG16的前13层卷积相同,将VGG16在大型数据集上训练得到的权重值作为编码网络的权重初始值,删掉VGG16中的全连接层,有利于在最深的编码器输出处保留较高分辨率的特征图,可以大幅度减少encoder层中训练参数的数量(from 134M to 14.7M)
- 解码网络(decoder network): 每一层encoder都对应着一层decoder,因此decoder网络也是13层,将低分辨率的feature map映射回和输入一样大小分类器(mask)
- 像素分类层(pixelwise classification layer):在decoder网络输出后接一个多分类的soft-max分类器对每个像素生成类别概率。
Encoder network:
encoder网络中的每一个编码器通过一组卷积核来产生一系列的feature maps,后接一层BN+RELU+Max-pooling(2x2,stride=2),Max-pooling用于实现小空间移动上的空间不变性,同时,可以在feature map上有较大的感受野,但由于使用Max-pooling 导致分辨率上的损失。这种损失对边界界定产生不利的影响,因此encoder网络要在进行下采样前着重捕捉和保存边界信息。由于实际内存的限制,所以无法保存feature map 的全部信息。本文提出只保存max-pooling indices(在每个池化窗口maximum feature value的位置)。Decoder network:
在decoder端,采用的也是正常的卷积、bn、relu的操作,不同的地方在于最后加上了一个softmax用来整理输出的k个channel的概率图,k是指定的分割类别数目。不同的地方在于SegNet在上采样过程中解码器使用来自对应的编码器特征图的存储的最大池化索引来上采样其输入特征图,产生的sparse feature map,然后将这些特征图与可训练的解码器滤波器组卷积以产生密集的特征图,然后batch normalization产生多通道feature map,ecoder输出的高维度的特征表示被送入一个可训练的soft-max多分类器,对每个像素进行单独分类。DeconvNet与U-Net有与SegNet相似的结构,但DeconvNet有更多的训练参数,需要更多的计算资源而且不利于进行end-to-end的训练。
U-Net不利用max-pooling index而是将整个feature map 送到decoder 拼接到上采样后的feature map,十分占用内存资源,因此U-Net中无法使用到conv5和max-pool5模块,而SegNet却可以利用VGG16全部预训练过的卷积层的权重值。
这么做会产生稀疏的feature maps。再对执行卷积操作产生密集feature maps。值得注意的是,在与encoder中第一层对应的decoder层中(即decoder的最后一层卷积),与原图像为RGB的3通道不同,该层产生的是一个通道为K(类别数)的multi-channel feature maps,然后将其送入softmax分类器,做逐像素的分类处理。
3.1 Decoder Variants
- SegNet-Basic: SegNet的较小版本,4个encoder和4个decoder
encoder阶段是LRN + (Conv+BN +ReLU + - MaxPool)x4 论文给出的时卷积不使用bias
decoder阶段是(UpPool+Conv+ BN)x4 + Conv(分割层)
convolutional layer in both the encoder and decoder network. No biases are used after convolutions and no ReLU non-linearity is present in the decoder network.
对比SegNet和FCN实现Decoder的过程。SegNet保留pooling时的位置信息,upsampling时直接将数据放在原先的位置,而FCN采用transposed convolutions+双线性插值,每一个像素都是运算后的结果。
不同decoder实验分析
为验证不同decoder结构的表现,作者针对SegNet以及FCN网络设计了不同的decoder结构,并进行了详细的实验分析
其中,解码网络结构如下:
- Bilinear-Interpolation : 双线性插值上采样。
SegNet-Basic:- 4*(encodes[conv+bn+relu+maxpooling] + decoders[conv+bn]) ,kenel size: 7*7。
- SegNet-Basic-SingleChannelDecoder: decoder采用单通道滤波器,可以有效减少参数数量。
- SegNet-Basic-EncoderAddition: 将decoder与encoder对应的特征图相加。
- FCN-Basic:与SegNet-Basic具有相同的encoders,但是decoders采用FCN的反卷积方式。
- FCN-Basic-NoAddition:去掉特征图相加的步骤,只学习上采样的卷积核。
- FCN-Basic-NoDimReduction: 不进行降维。
通过上表分析,可以得到如下分析结果:
- bilinear interpolation 表现最差,说明了在进行分割时,decoder学习的重要性。
- SegNet-Basic与FCN-Basic对比,均具有较好的精度,不同点在于SegNet存储空间消耗小,FCN-Basic由于feature map进行了降维,所以时间更短。
- SegNet-Basic与FCN-Basic-NoAddition对比,两者的decoder有很大相似之处,SegNet-Basic的精度更高,一方面是由于SegNet-Basic具有较大的decoder,同时说明了encoder过程中低层次feature map的重要性。
- FCN-Basic-NoAddition与SegNet-Basic-SingleChannelDecoder:证明了当面临存储消耗,精度和inference时间的妥协的时候,我们可以选择SegNet,当内存和inference时间不受限的时候,模型越大,表现越好。
- 总结:
- encoder特征图全部存储时,性能最好。 这最明显地反映在语义轮廓描绘度量(BF)中。
- 当限制存储时,可以使用适当的decoder(例如SegNet类型)来存储和使用encoder特征图(维数降低,max-pooling indices)的压缩形式来提高性能。
- 更大的decoder提高了网络的性能。
3.2 训练
- 数据集:CamVid (训练:367张,测试:233,图片尺寸:360X480,11个类别)
- 优化方法:SGD
- learning_rate:0.1
- momentum: 0.9
- mini-batch: 12
- loss: cross-entropy
3.3 分析
使用三种评价指标:
- global accuracy 数据集中被正确分类的像素所占的比例。
- class average accuracy 每种类别准确率和取平均。
- mIoU 惩罚 FalsePositivate 的预测,在每个类别上计算IOU然后取平均值。
实现性能最好的是当encoder 的feature map全部被保存,对于一个给定的encoder 网络,更大的decode网络可以提升性能,当inference 内存被限制时,encoder层压缩后的feature maps(降维,max-pooling indices) 可以进行保存并用适当的解码器来提升性能。
SegNet论文笔记相关推荐
- SegNet——论文笔记
1.什么是语义分割(semantic segmentation)? 图像语义分割,简而言之就是对一张图片上的所有像素点进行分类,将所有属于同一类的物体标记为同一像素点. SegNet基于FCN,修改V ...
- unet论文_图像分割之RefineNet 论文笔记
RefineNet: Multi-Path Refinement Networks forHigh-Resolution Semantic Segmentation (2017) 论文笔记 文章的创新 ...
- enet分割_[论文笔记] 图像语义分割——ENet(ICLR 2017)
[论文笔记] 图像语义分割--ENet(ICLR 2017) bluestyle • 2019 年 05 月 03 日 介绍 Motivation: 移动应用上的实时像素级语义分割是一个重要的问题,然 ...
- LinkNet论文笔记
LinkNet论文笔记 LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation Abstract ...
- 论文笔记(FCN网络,语义分割):Fully Convolutional Networks for Semantic Segmentation
FCN论文笔记:Fully Convolutional Networks for Semantic Segmentation 语义分割模型结构时序: FCN SegNet Dilated Convol ...
- ORB-SLAM3 论文笔记
ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...
- 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION
一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...
- 最新图神经网络论文笔记汇总(附pdf下载)
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]近年来,图神经网络变得非常火热,每年顶会在该领域内都会出现大量的研究论文,本文为大家提 ...
- [论文笔记] Fast Quality Driven Selection of Composite Web Services (ECOWS, 2006)
Time: 4.0 hours Jae-Ho Jang, Dong-Hoon Shin, Kyong-Ho Lee, "Fast Quality Driven Selection of Co ...
- 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning
论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning 2017-06-06 21: ...
最新文章
- ipvsadm使用简介
- Mysql商品和图片表_【mysql】数据库设计模式:多个图片怎么和商品关联
- IntelliJ IDEA 导入 IntelliJ IDEA 创建好的JavaWeb项目!
- linux基础—课堂随笔_03 SHELL脚本编程基础
- mongodb同时更新一条记录_MongoDB 存储和优化系列一
- java什么是重构 何时使用重构_Java 之重构现有系统实战(一)
- 使用Hibernate 4,JPA和Maven的架构创建脚本
- GlassFish 3.1.2充满了MOXy(EclipseLink JAXB)
- Linux环境下安装部署AWStats日志分析系统实例
- Python之迭代器(iterator)
- 如何在整个目录上运行dos2unix?
- java获得时间差_Java获取时间差实例代码详解
- 计算机设计大赛南京邮电大学,喜讯:我校信息学子在中国大学生计算机设计大赛中再创佳绩...
- MM眉心为什么会长痘痘
- 树莓派的产品定位,以及探讨与ARM开发板的区别
- vue 手机h5动态银行支付密码键盘前端
- iOS 模拟微信内置浏览器CYWebViewController
- c语言书面作业,巢湖学院2011级网络工程1,2班C语言书面作业(江家宝)版
- 快速寻找9位数内的自幂数
- 测试行业发展何去何从