Fast-SCNN语义分割网络详解
文章目录
- 一、简要介绍
- 二、主要贡献
- 三、相关背景
- (1)编码器-解码器架构
- (2)多分支结构
- (3)Fast-SCNN
- 四、网络架构
- (1)学习下采样模块
- (2)全局特征提取器
- (3)特征融合模块
- (4)标准分类器
- 五、实验结果
- (1)实验环境与参数设定
- (2)在 Cityscapes 上的实验效果
- (3)在弱标签上测试性能
- (4)大规模预训练测试结果
一、简要介绍
本文发布于BMVC2019,是由英国东芝研究院Rudra、Stephan和剑桥大学Roberto共同完成的。本文的亮点是提出了一种快速的语义分割网络 Fast-SCNN,对于高分辨率(1024×2048)图像,在 NVIDIA Titan XP GPU 上测试表明,在Cityscapes数据集上的mIOU达到68.0%,速度达到123.5帧/秒。
二、主要贡献
本文主要的贡献,有以下几个方面:
- 调整了捷径连接,提出了一个浅层的learning to downsample模块,可以快速而高效地通过multi-branch来提取低层次特征。
- 验证了大规模的预训练不是必须的,也可以通过加大训练的轮数来达到接近的效果。
- 融合了经典编解-码器框架和多分支框架的思想,提出了一个新的实时语义分割架构Fast-SCNN。
三、相关背景
语义分割通常由具有编码器-解码器框架的深度卷积神经网络(DCNN)来处理,而许多运行时高效的实现采用双分支或多分支体系结构。
通常情况下,对于设计语义分割网络架构来说,需要注意以下几个方面:
- 较大的感受野对于了解对象类之间的复杂关联(即全局上下文)非常重要
- 图像中的空间细节是保持对象边界所必需的
- 需要特定的设计来平衡速度和准确性
(1)编码器-解码器架构
编码器利用卷积和池化操作提取深度卷积网络特征,解码器从低分辨率特征上恢复空间信息,然后通过像素分类层(softmax)来预测物体标签。其中,编码器通常采用VGG、ResNet来构建,解码器则上采样模块来构建。
下面是经典的编码器-解码器架构,最开始的语义分割网络就是采用这种结构,比如FCN、SegNet、UNet等语义分割网络。
(2)多分支结构
在双分支网络中: 在低分辨率输入分支下,使用较深的CNN来捕捉全局上下文;在全分辨率输入分支下,采用较浅的分支来学习空间细节;然后,通过合并两者来提供最终的语义分割结果。通过这种设计方式,降低了网络的计算成本,使其能在一般GPU上实时运行。
下面是经典的多分支结构,采用这种的架构的语义分割网络实时性能一般都比较高,比如ICNet、ContextNet、BiSeNet 和 GUN 等一些语义分割网络。
(3)Fast-SCNN
本文提出的Fast-SCNN是一种融合了经典编解-码器框架和多分支框架的实时语义分割算法。
四、网络架构
Fast-SCNN的整体网络架构如下所示,由四部分组成:学习下采样模块、全局特征提取器、特征融合模块和标准分类器,所有模块都采用深度可分离卷积构建。
(1)学习下采样模块
在学习下采样模块中,采用了三层的结构。只使用了三层来确保低级特征共享的有效性和高效实施。第一层是标准卷积层(Conv2D),其余两层是沿深度可分离的卷积层(DSConv)。这里我们要强调的是,虽然DSConv的计算效率更高,但是在第一层仍然采用Conv2D,因为输入图像只有三个通道,这使得DSConv的计算优势在这个阶段微不足道。
学习下采样模块中的所有三层都使用了步长为2、卷积核大小为3×3的卷积层,卷积层之后是批归一化和RELU激活函数。
(2)全局特征提取器
全局特征提取器模块旨在捕获用于图像分割的全局上下文。与对输入图像的低分辨率版本进行操作的普通两分支方法相比,我们的模块直接将学习的输出带到下采样模块(它是原始输入的1/8分辨率)。
模块的详细结构如表1所示。我们使用了从 MobileNet-V2 引入的 bottleneck residual block(表2)。特别是,当输入和输出大小相同时,我们对bottleneck residual block残差连接。我们的bottleneck residual block使用了高效的深度可分离卷积,从而减少了参数和浮点运算的数量。此外,在末尾添加了一个金字塔池模块(PPM) ,以聚合基于不同区域的上下文信息。
(3)特征融合模块
与 ICNet 和 ContextNet 类似,通过简单地融合不同branch的特征以确保有效性。或者,可以以运行时性能为代价使用更复杂的特征融合模块(例如Bisenet),以达到更高的精度。特征融合模块的详细信息如表3所示:
(4)标准分类器
在分类器中,我们采用了两个深度可分离卷积(DSConv)和逐点卷积(Conv2D)。我们发现,在特征融合模块之后增加几层可以提高准确率。分类器模块的详细信息如表1所示。
在训练期间使用Softmax,因为使用了梯度下降。在推理过程中,我们可以用argmax替换昂贵的softmax计算,因为这两个函数都是单调递增的。我们将此选项表示为Fast-SCNN cls(分类)。另一方面,如果需要基于标准DCNN的概率模型,则使用SoftMax,表示为Fast-SCNN Prob(概率)。
五、实验结果
(1)实验环境与参数设定
使用Python在TensorFlow机器学习平台上进行了实验。我们的实验是在NVIDIA Titan X(Maxwell)或NVIDIA Titan XP(Pascal)GPU、CUDA 9.0和CuDNN v7的工作站上进行的。运行时评估在单个CPU线程和一个GPU中执行,以测量正向推理时间。
使用动量为0.045,批量为12的随机梯度下降(SGD)。受[4,37,10]的启发,我们使用Poly学习率,基数为0.045,幂为0.9。类似于MobileNet-V2,我们发现深度卷积不需要L2正则化,对于其他层L2正则化参数是0.00004。
由于用于语义分割的训练数据有限,实验中应用了各种数据增强技术:0.5到2之间的随机大小调整、平移/裁剪、水平翻转、颜色通道噪声和亮度。我们的模型是在交叉熵损失的情况下训练的。我们发现,学习结束时的辅助损失对下采样和具有0.4权重的全局特征提取模块是有利的。
在每个非线性函数之前使用批量归一化。Dropout仅用于最后一层,恰好在Softmax层之前。与MobileNet和ContextNet相反,我们发现Fast-SCNN使用RELU训练速度更快,精度略高于ReLU6,即使使用我们在整个模型中使用的深度可分离卷积也是如此。
(2)在 Cityscapes 上的实验效果
Cityscapes 是城市道路上最大的公开可用的数据集。该数据集包含从欧洲50个不同城市拍摄的各种高分辨率图像(1024×2048px)。它有5000张高标签质量的图像:2975张的训练集、500张的验证集和1525张的测试集。
在 Cityscapes 测试集上评估整体性能,与其他实时语义分割方法(ContextNet、BiSeNet、GUN、ENET 和 ICNet)和离线语义分割方法(PSPNet 、DeepLab-V2)的比较,平均精确度mIOU如下图所示:
分别在英伟达 Titan X 和 Titan Xp(带*号)上进行测试,测得其与不同分割网络的检测速度对比:
(3)在弱标签上测试性能
采用弱标签Coarse、预训练模型ImageNet的形式,进行了几组不同的实验,实验结果对比如下表所示:
从实验结果可以看出,在低容量DCNN上附加弱标记数据进行训练,没有对性显著的改善。
(4)大规模预训练测试结果
下图是采用弱标签Coarse、预训练模型ImageNet训练过程中的测试数据:
从图中可以看出,不管是采用弱标签Coarse,还是预训练模型ImageNet的方式,最终的准确度都趋于一样。所以,通过本实验可以反映出:弱标签Coarse,预训练模型ImageNet对于低容量的Fast SCNN作用不大,甚至,只要训练的时间足够久,不经过Coarse或ImageNet进行训练的模型可以达到相同的效果。
最好的关系是互相成就,各位的「三连」就是【AI 菌】创作的最大动力,我们下期见!
Fast-SCNN语义分割网络详解相关推荐
- 计算机网络中的语法 语义 时序的概念,网络iso协议及语义语法时序详解
网络iso协议及语义语法时序详解 计算机学习 网络协议的三要素 在计算机网路中,通信发生在不同系统的实体之间,,实体(entity)是能够发送和接收信息的任何事物.然而,两个实体间仅发送比特流就指望能 ...
- 【视频课】图像分割最新内容来了(言有三新录制4部分实例分割算法详解)
课程介绍 图像分割在直播,电商,自动驾驶等行业中有着广泛的应用,有三AI此前推出了<深度学习之图像分割-理论实践篇>课程,让你以最短的时间掌握深度学习图像分割的基础知识并进行代码实践. 我 ...
- 计算机视觉算法——语义分割网络总结
计算机视觉算法--语义分割网络总结 计算机视觉算法--语义分割网络总结 1. FCN 1.1 关键知识点--网络结构及特点 1.2 关键知识点--转置卷积 1.3 关键知识点--语义分割评价指标 2. ...
- Mask RCNN(1): 网络详解
1.Mask RCNN介绍 Mask R-CNN论文地址:https://arxiv.org/abs/1703.06870,论文于2017年发表在ICCV上,获得了2017年ICCV的最佳论文奖. 我 ...
- 计算机基础--网络详解
网络详解 零.文章目录 一.概述 1.协议 计算机之间通信是依靠互联网,互联网的核心是一系列协议. 协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定.如怎么样建立连接.怎么 ...
- 第十六章 ConvNeXt网络详解
系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网 ...
- Backbone发展与语义分割网络发展
整理如下(按照arxiv上面时间线的预印版本来整理): Backbone(基础网络,也可以理解为分类网络): Backbone可以塞入UNET作为使用. 年代 网络名称与代码 论文名称 1989 Le ...
- ResNet网络详解与keras实现
ResNet网络详解与keras实现 ResNet网络详解与keras实现 Resnet网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 梯度退化 Residual Lear ...
- GoogleNet网络详解与keras实现
GoogleNet网络详解与keras实现 GoogleNet网络详解与keras实现 GoogleNet系列网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 Incepti ...
最新文章
- Java I/O系统学习系列三:I/O流的典型使用方式
- 笔记本电脑怎么清理灰尘_笔记本电脑玩游戏发热怎么办?笔记本玩游戏发烫解决方法...
- 在乌班图中将py3设置为默认解释器
- [蓝桥杯][2018年第九届真题]全球变暖(DFS)
- [JavaWeb-JavaScript]JavaScript流程控制语句
- 阿里云安全肖力:云的六大安全基因助力企业构建智能化安全体系
- mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中
- Java IO类库之CharArrayWriter
- TIOBE 5 月编程语言排行榜:Python、C++ 竞争白热化,Objective-C 已沦为小众语言
- BZOJ2653middle——二分答案+可持久化线段树
- mysql外部关联视图_MySQL数据库 : 自关联,视图,事物,索引
- PHP泡泡龙源码,泡泡龙 游戏源码
- 《东周列国志》第五十三回 楚庄王纳谏复陈 晋景公出师救郑
- 小米android怎么刷机教程,安卓刷机教程_小米刷机教程_手机刷机教程-IT资讯(PC6.com)...
- Java项目:ssm党员管理系统
- CentOS下安装cups实现局域网共享HP1020打印机
- 2022年山东省安全员A证特种作业证考试题库模拟考试平台操作
- 基于FPGA驱动DAC6004
- Android 简单的内存管理器
- 提供家用咖啡电子秤厨房秤方案芯片CS1238