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 城市景观数据集

cirydataset 城市数据集

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 多分支结构共享低级特征的语义分割网络 的主要内容,如果未能解决你的问题,请参考以下文章

Fast-SCNN语义分割网络详解

Fast-SCNN一种快速语义分割网络

Fast-SCNN一种快速语义分割网络

第七次毕业设计博客

论文阅读BiSeNet V2用于实时语义分割的双边网络

今天看论文