Fast-SCNN 多分支结构共享低级特征的语义分割网络
Posted qianbo_insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fast-SCNN 多分支结构共享低级特征的语义分割网络 相关的知识,希望对你有一定的参考价值。
1、fast-scnn 应用场景
github代码
根据对论文的研究,暂时整理了四类使用场景
1 、自动驾驶汽车快速实时识别语义分割
根据论文 fast-scnn本身就是为实时物体分类来做的,从语义级别上来共享特征。
2 、底图层次分割
3、城市房量统计
4、人流量统计
2、现代神经网络需求
以下为论文的开头截图。谈到了encoder-decoder framework
1 以上算法要有的需要实时性,像自动驾驶实时性非常高,有的不需要,但是对底图和图量多并且大是非常需要这类网络的,语义分割是整个视觉感知系统中预处理的一部分,语义分割的结果作为后续感知或融合模块的输入;
算法要占用比较低的内存,以允许部署在低成本的嵌入式设备中。
2.2 城市景观数据集
3、网络层次
Fast-scnn 网络的基本概念是将网络分上几个层次,以下图为论文截图–总体结构图
3.1 Learning to Downsample模块
该模块包括 3 个卷积层,第一个卷积层为普通的卷积层,后面两个卷积层使用深度可分离卷积以提高计算效率。每个卷积层的步长都是 2,因此该模块输出特征的长(或宽)为输入图像的1/8。每个卷积层的卷积核尺寸为 3x3,每个卷积层后面都有 BN 层和 ReLU 激活函数。
Learning to Down-sample其实也是一个特征提取网络,它没有像一般的encoder-decoder分割网络那样用一个resnet或者vgg分类网络直接完成encoder过程,而是参考了mobilenet,使用了两个深度可分卷积(ds)完成初步的特征提取,目的还是为了快。是一个卷积层+两个深度可分卷积。
3.2 Global Feature Extractor 全局特征提取器
fast-scnn 用全局特征提取器提取特征,全局特征提取器类似于传统 2 分支结构中的深度分支。传统的 2 分支结构中深度分支的输入是低分辨率的输入图像,而 Fast-SCNN 中全局特征提取器的输入为 learning to downsample 模块的输出 feature map。
这么理解:Fast-SCNN 中的 learning to downsample 模块代替了传统 2 分支结构中深度分支的前几个卷积层。使用 MobileNet-v2 中提出的 bottleneck residual block 构建全局特征提取器,bottleneck residual block 中的深度可分离卷积有利于减少全局特征提取器的参数量和计算量。全局特征提取器还包含 pyramid pooling 模块(PPM),用于提取不同尺度的上下文特征。
3.3 Feature fusion 特征融合模块
特征融合模块用于融合 2 个分支的输出特征,Fast-SCNN 使用了相对比较简单的结构完成特征融合,以最大限度地提高计算效率。
3.4 分类器
分类器模块中包含 2 个深度可分离卷积和1个卷积核尺寸为 1x1 的卷积以提高网络性能。在分类器模块中使用 softmax 操作。在网络训练时,softmax 操作用于计算损失。在推理时,使用 argmax 操作代替 softmax 以提高推理速度。
整个过程下来,就是经过了输入->常规卷积->dw卷积->ds卷积->bottleneck->pyramid pooling–>upsample(上采样)->最后softmax
下面对dw和ds进行解释
Depthwise(DW)卷积与Pointwise(PW)卷积,合起来被称作Depthwise Separable Convolution,该结构和常规卷积操作类似,可用来提取特征,但相比于常规卷积操作,其参数量和运算成本较低。所以在一些轻量级网络中会碰到这种结构如google MobileNet。
下图为常规卷积运算:
Depthwise Convolution卷积
也就是说,fast-scnn使用或者说参考了mobile-net网络的方式,简化了一些卷积操作。 MobileNet 中的 ReLU6 激活函数,但是fast-scnn使用了ReLU收敛更快,性能好,这应该是实践出来的。
4、训练集
使用 Cityscapes 数据集训练 Fast-SCNN,cityscapes 即城市景观数据集,拥有5000张在城市环境中驾驶场景的图像(2975train,500 val,1525test)。它具有19个类别的密集像素标注(97%coverage),其中8个具有实例级分割。数据集中其中包含一组不同的立体视频序列,记录在50个不同城市的街道场景。
城市景观数据集中于对城市街道场景的语义理解图片数据集,该大型数据集包含来自50个不同城市的街道场景中记录的多种立体视频序列,除了20000个弱注释帧以外,还包含5000帧高质量像素级注释。因此,数据集的数量级要比以前的数据集大的多。Cityscapes数据集共有fine和coarse两套评测标准,前者提供5000张精细标注的图像,后者提供5000张精细标注外加20000张粗糙标注的图像。
Cityscapes数据集包含2975张图片。包含了街景图片和对应的标签。大小为113MB。Cityscapes数据集,包含戴姆勒在内的三家德国单位联合提供,包含50多个城市的立体视觉数据。
cityscapes dataset 城市景观数据集官网
5、code
代码需要python3.x 并且使用了pytorch ,也使用了cuda来加速训练。cityscapes数据集比较大
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
使用conda install 来安装
第一列是原图,第二列是真值,第三列是FastSCNN的输出。FastSCNN的class level mIoU是68.0%,categorie level mIoU是84.7%。
【注】:
在cityscapes数据集中,class指19类小类别,自行车、汽车等等。category指大类如人,车,建筑等。mloU是指图片交并比。其计算方法为:
(即真正样本数量/(真正样本数量+假负样本数量+假正样本数量))。
未完待续 。。。。 后面会对论文进行翻译以及运行代码进行分析
以上是关于Fast-SCNN 多分支结构共享低级特征的语义分割网络 的主要内容,如果未能解决你的问题,请参考以下文章