【深度学习】总目录

  SegNet是Cambridge提出旨在解决自动驾驶或者智能机器人的图像语义分割深度网络,开放源码,基于caffe框架。SegNet运用编码-解码结构最大池化索引进行上采样,最主要的贡献是它在效率上的提升(内存和时间)。文章很长,消融实验写的很详细,了解一下对以后改模型有所帮助。最后与DeepLab-LargeFOV和DeconvNet的对比实验我没有细看,这边先不写了。

原文地址:https://arxiv.org/abs/1511.00561

复现详解:http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html

1 Motivation

  最近的一些方法尝试直接采用用于类别预测的深度体系结构来进行像素级标记。结果虽然非常令人鼓舞,但结果看起来还是粗糙的。这主要是因为最大池化和子采样降低了特征图的分辨率。我们设计SegNet的动机来自于将低分辨率特征映射到输入分辨率以实现像素级分类。这种映射必须产生对精确的边界定位有用的特征。  

  道路场景理解需要对外观(道路、建筑)、形状(汽车、行人)进行建模,并理解不同类别(如道路和人行道)之间的空间关系(上下文)。在典型的道路场景中,大多数像素属于道路、建筑等大类,因此网络必须产生平滑的分割。引擎还必须能够根据物体的形状描绘物体,尽管它们的尺寸很小。因此,在提取的图像表示中保留边界信息是重要的。从计算角度来看,在推理过程中,网络必须在内存和计算时间方面都有效。网络需要有端到端训练的能力,以便使用有效的权重更新技术(如随机梯度)联合优化网络中的所有权重。

2 网络结构

  • 左边是Encoder:卷积提取特征,通过pooling增大感受野,同时图片变小。使用的是VGG16的前13层卷积网络,去除全连接层可以保留更高分辨率的特征图,并且能够显著地减小网络的参数(134M->14.7M)
  • 右边是Decoder:Upsamping就是Pooling的逆过程,将图片变成两倍大小,再用index信息直接将数据放回对应位置,后面再接Conv训练学习。
  • 最后通过Softmax,得到每一个像素属于某个类别的概率,最大概率所属类别做为该像素的label,最终完成图像像素级别的分类。

max-pooling indices(亮点)

  在Encoder中,每次max-pooling,都会保存max权值在2x2filter中的相对位置;在Decoder中,根据保存的indices进行上采样:首先对输入的特征图放大两倍,然后把输入特征图的数据根据Encoder中pooling层的索引位置放入,其他位置为0

  利用池化索引来执行非线性上采样的优点:(1)保留了部分重要的边界信息,改善了网络模型对于边界的描述 (2)减少了FCN中因上采样而需要训练的参数 (3)能在极小修改的条件下与Encoder-Decoder网络模型相结合。

3 实验

3.1 评价指标

  使用如下几种指标(1)global accuracy(G)(2)class average accuracy(C) (3)mIoU:比类平均准确率更严格,因为它惩罚FP预测,然而mIoU并不是类别平衡cross-entropy损失函数的优化目标(其优化目标是准确率最大化)。这三种指标在语义分割评价指标中介绍过。还有对边界描述的评价指标boundary F1-measure (BF):涉及计算边界像素的F1指标。给定一个像素容错距离,计算预测值和ground truth类别边界之间的精确度和召回率。作者使用图像对角线的0.75%作为容错距离。与mIoU相比,BF的评判结果更符合人类对语义分割效果的判定

3.2 Decoder Variants

很多语义分割网络有相同的Encoder,仅在Decoder上有所不同。这边选择比较FCN和SegNet的解码技术。

如上图所示,SegNet使用最大池化索引来上采样,后面再接Conv训练学习。这个上采样不需要训练学习,只是占用了一些存储空间。FCN使用转置卷积进行上采样,这一过程需要学习,然后将Encoder中对应的特征矩阵降维后相加。为了分析SegNet并将其性能与FCN进行比较,作者设计了以下几种变种。

  • SegNet-Basic:4 encoders + 4 decoders,使用池化索引,卷积后加Bn,不用bias和ReLu。在所有编码器和解码器层上选择7×7的恒定内核大小以提供用于平滑标记的宽上下文。
  • SegNet-Basic-SingleChannelDecoder:解码器的卷积用的单通道,显著减少了可训练参数的数量和推理时间。
  • SegNet-Basic-EncoderAddition:池化索引后接卷积 + 逐元素add
  • FCN-Basic:将encoder中的特征图利用1x1的卷积进行维度缩减至K通道(k为类别数)然后作为decoder的输入。decoder中上采样使用8x8大小的转置卷积,上采样后的特征矩阵也是K通道。两者逐元素相加。上采样核使用双线性插值权进行初始化。
  • FCN-Basic-NoAddition:不使用特征矩阵的逐元素add(也就是没有跳跃连接),只学习上采样核。FCN解码器模型要求在推理过程中存储编码器特征图。例如,以180×240分辨率以32位浮点精度存储FCN Basic第一层的64个特征图需要11MB。这可以通过对11个特征图进行降维来缩小,这需要大约1.9MB的存储空间。另一方面,SegNet对池索引的存储成本几乎可以忽略不计(如果每2×2个池窗口使用2位存储,则为0.17MB)。
  • FCN Basic NoDimReduction更占用内存的FCN,没有针对编码器特征图执行维度缩减。这意味着与FCN-Basic不同,最终编码器特征图在传递到解码器网络之前不会压缩到K个通道。因此,每个解码器末端的通道数与相应的编码器相同(即64)。
  • Bilinear-Interpolation:使用固定双线性插值权重的上采样,不需要学习。

3.3 训练

  • CamVid道路场景数据集,由367个训练图像和233个测试RGB图像(白天和黄昏场景)组成,分辨率为360×480,分割11个类别
  • 随机梯度下降(SGD),lr = 0.1,momentum = 0.9
  • 在每个epochs之前,训练集被打乱,然后按顺序挑选mini-batch(12幅图像),从而确保每个图像在一个epochs中只使用一次
  • 选择在验证数据集上性能最高的模型
  • 交叉熵损失 + median frequency balancing,当训练集中每个类的像素数量有很大变化时(例如道路、天空和建筑物像素主导CamVid数据集),则需要根据真实类别对损失进行不同的加权。

median frequency balancing:

(1)计算整个训练集中各个类别出现的频率: fc = 训练集中被标记为c的像素数/训练集中所有图片的总像素数    c=1,...,k

(2)选出集合[f1,...fk]中的中位数fmedian

(3)为每个类别的loss分配权重wc = fmedian / fc   c=1,...,k

3.4 分析

在各网络已训练至均收敛的条件下,各变体的评价结果如上表所示。结果表明:

  • (1) Decoder需要训练,使用双线性插值作为Decoder的效果最差。
  • (2) SegNet-Basic和FCN-Basic性能相近,但后者由于保存各层的feature map消耗更多内存。
  • (3) FCN-Basic-NoAddition的性能差于结构最相近的SegNet-Basic,表明Encoder中信息的重要性。
  • (4) 不对Encoder的输出进行压缩,能带来性能的提升,但在保存feature map时会增大内存消耗。
  • (5) 与FCN-Basic-NoAddition和FCN-Basic-NoAddition-NoDimReduction相比,SegNet-Basic-SingleChannelDecoder虽然丢失了部分信息,但仍保留了部分Encoder中的信息,因此性能优于前两者。
  • (6) 在不限制内存和推断时间的条件下,FCN-Basic-NoDimReduction和SegNet-EncoderAddition达到了最优的性能,FCN-Basic-NoDimReduction的BF1最高,表明存储空间和准确率之间存在着权衡。

作者总结了如下要点:

  • 将encoder的特征图全部存储时,性能最好。 尤其是对于边缘的分割
  • 当限制存储时,可以使用适当的decoder(例如SegNet类型)来存储和使用encoder产生的特征图(维数降低,max-pooling indices)的压缩形式来提高性能。
  • 更大的decoder提高了网络的性能
参考:

1.【语义分割】--SegNet理解

2. 深度学习–语义分割(1):SegNet论文详解

3. SegNet算法详解

【论文笔记】SegNet的更多相关文章

  1. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  2. 论文笔记之:Visual Tracking with Fully Convolutional Networks

    论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015  CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...

  3. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  4. Twitter 新一代流处理利器——Heron 论文笔记之Heron架构

    Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...

  5. Deep Learning论文笔记之(六)Multi-Stage多级架构分析

    Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些 ...

  6. Multimodal —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型

    看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.这项任务要求模型可以识别图 ...

  7. 论文笔记(1):Deep Learning.

    论文笔记1:Deep Learning         2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...

  8. 论文笔记(2):A fast learning algorithm for deep belief nets.

    论文笔记(2):A fast learning algorithm for deep belief nets. 这几天继续学习一篇论文,Hinton的A Fast Learning Algorithm ...

  9. 论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN

    论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN ICCV 2017 Paper: http://op ...

  10. 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior

    [论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...

随机推荐

  1. SpringBoot学习:文件上传和下载

    maven导入依赖 首先创建一个maven项目,然后加入以下配置,就创建好了一个springboot项目 <parent> <groupId>org.springframewo ...

  2. mmdetection使用wandb查看训练日志

    mmdetection查看日志之前一直是在用TextLoggerHook,已经觉得挺方便的了,自从用了wandb之后,发现wandb真不错,看log更方便了,回不去了. wandb的简单配置: wan ...

  3. Web前端 - Vue

    <!-- id标识vue作用的范围 --> <div id="app"> <!-- {{}} 插值表达式,绑定vue中的data数据 --> { ...

  4. uniapp中实现简易计算器

    uniapp中实现简易计算器主要问题:在计算器的实现过程中会遇到小数点计算精度:此计算器是依赖了uni-popup的弹出层插件,可在uniapp官方组件中查找扩展插件popup弹窗层下载,也可直接点击 ...

  5. Typescript 的数据类型有哪些?

    一.是什么 typescript 和 javascript几乎一样,拥有相同的数据类型,另外在javascript基础上提供了更加实用的类型供开发使用 在开发阶段,可以为明确的变量定义为某种类型,这样 ...

  6. Quick BI新版本功能解读系列之-V3.5

    前言Quick BI V3.5版本于2019年11月底正式发布啦!本次大版本在智能.开放.以及可视化等方面都有重磅上新,具体包含智能小Q.开放数据服务.主题模板.以及散点图.地图系列等一系列功能的发布 ...

  7. 使用AnalyticDB轻松实现以图搜图和人脸检索

    1. 背景 以图搜图在生活中有着广泛的应用, 当我们在电视上看到有人穿着一件美丽的裙子或者帅气的球鞋也想拥有时, 我们可以拍张照片然后打开淘宝然后上传照片就可以快速的找到这个商品. 我们看到一张电影截 ...

  8. Hexo博客框架—轻量、一令部署

    ​简介:Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页.Hexo支持Github Flavored M ...

  9. 网易云音乐音视频算法的 Serverless 探索之路

    ​简介: 基于音视频算法服务化的经验,网易云音乐曲库团队与音视频算法团队一起协作,一起共建了网易云音乐音视频算法处理平台,为整个云音乐提供统一的音视频算法处理平台.本文将分享我们如何通过 Server ...

  10. WPF 已知问题 dotnet 6 设置 InvariantGlobalization 之后将丢失默认绑定转换导致 XAML 抛出异常

    在设置了 InvariantGlobalization 为 true 之后,将会发现原本能正常工作的 XAML 可能就会抛出异常.本文将告诉大家此问题的原因 这是有开发者在 WPF 仓库上给我报告的 ...