Fast-SCNN一种快速语义分割网络
Posted AI 菌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fast-SCNN一种快速语义分割网络相关的知识,希望对你有一定的参考价值。
本文发布于BMVC2019,是由英国东芝研究院Rudra、Stephan和剑桥大学Roberto共同完成的。本文的亮点是提出了一种快速的语义分割网络 Fast-SCNN,在 NVIDIA Titan XP GPU 上测试表明,在Cityscapes数据集上的mIOU达到68.0%,速度达到123.5帧/秒。
摘要
编解码器框架是目前最先进的离线语义图像分割方法。随着自主系统的兴起,人们对实时计算的要求越来越高。
本文介绍了一种高分辨率(1024×2048px)图像数据的快速分割卷积神经网络(Fast-SCNN),该模型适用于低存储的嵌入式设备上的高效计算。在已有的两分支快速分割方法的基础上,我们引入了我们的“学习下采样”模块,该模块可以同时计算多个分辨率分支的低层特征。
我们的网络结合了高分辨率的空间细节和低分辨率提取的深度特征,在Cityscapes数据集上的平均准确率(mIOU)为68.0%,速度达到123.5帧/秒。我们还表明,大规模的预训练是不必要的。我们使用ImageNet预训练和城市景观的粗标数据进行了实验,充分验证了我们的度量方法的有效性。最后,在不进行任何网络修改的情况下,我们展示了更快的计算速度。
1. Introduction
我们观察到,在文献中,语义分割通常由具有编码器-解码器框架的深度卷积神经网络(DCNN)来处理,而许多运行时高效的实现采用双分支或多分支体系结构。通常情况下:
- 较大的感受野对于了解对象类之间的复杂关联(即全局上下文)非常重要
- 图像中的空间细节是保持对象边界所必需的
- 需要特定的设计来平衡速度和准确性(而不是重新定位分类DCNN)
具体地说,在双分支网络中,在低分辨率下使用较深的分支来捕捉全局上下文,而在全输入分辨率下设置浅分支来学习空间细节。然后,通过合并两者来提供最终的语义分割结果。重要的是,由于深层次网络的计算成本只需很小的输入就可以克服,而且只对少数几层使用全分辨率,因此在现代GPU上实现实时性能是可能的。与编码器-解码器框架不同,在两分支方法中不共享不同分辨率的初始卷积。这里值得注意的是,引导上采样网络(GUN)和图像级联网络(ICNet)仅在最初几层之间共享权重,而不是计算。
在这项工作中,我们提出了快速分割卷积神经网络 Fast-SCNN,这是一种融合了现有技术的两分支设置和经典编解码器框架的实时语义分割算法。
总而言之,我们的贡献是:
- 针对1024×2048px的高分辨率图像,我们提出了一种具有竞争力的实时语义分割算法FAST-SCNN(123.5帧/秒)。
- 我们采用了离线DCNN中流行的跳跃连接,并提出了一种浅层学习下采样模块,用于快速高效的多分支低层特征提取。
- 我们专门设计了低容量的Fast-SCNN,并通过实验验证了更多轮数的训练与使用ImageNet进行预训练(或在小容量网络中使用额外的粗数据进行训练)的效果相当。
2. Related Work
2.1. Foundation of Semantic Segmentation
最新的语义切分DCNN结合了两个独立的模块:编码器和解码器。编码器模块使用卷积和合并运算的组合来提取DCNN特征。解码器模块从子分辨率特征恢复空间细节,并预测对象标签(即语义分割)。最常见的是,编码器改编自简单的分类DCNN方法,例如VGG或ResNet。在语义分割中,完全连接的层被移除。
开创性的完全卷积网络(FCN)为大多数现代分段架构奠定了基础。具体地说,FCN采用VGG作为编码器,采用双线性上采样和低层跳过连接相结合的方法来恢复空间细节。U-Net利用密集的跳跃连接进一步利用了空间细节。
然后,受DCNNs之前的全局图像级上下文的启发,使用PSPNet的金字塔池模块和DeepLab的Arous空间金字塔池(ASPP)对全局上下文进行编码和利用。
其他竞争性的基本分段结构使用条件随机场(CRF)[38,3]或递归神经网络[32,38]。然而,它们都不是实时运行的。
在FCN的基础上,SegNet引入了联合编解码器模型,并成为最早的有效分割模型之一。继SegNet之后,ENet 也设计了一种少层的编解码器,以降低计算量。
最近,两分支和多分支系统被引入。ICNet、ContextNet、BiSeNet 和 GUN 在深分支中通过降低分辨率输入来学习全局上下文,而在浅分支中以全分辨率学习边界。
然而,最先进的实时语义分割仍然具有挑战性,通常需要高端GPU。受两分支方法的启发,Fast-SCNN采用共享的浅层网络路径来编码细节,同时以低分辨率高效地学习上下文。
2.2. Efficiency in DCNNs
高效DCNN的常用技术可以分为四类:
- 深度可分离卷积:MobileNet将标准卷积分解为深度卷积和1×1逐点卷积,统称为深度可分离卷积。这种因式分解减少了浮点运算和卷积参数,从而降低了模型的计算成本和内存需求。
- DCNNs的高效重新设计:Chollet 使用高效的深度可分离卷积设计了 Xception 网络。MobleNet-V2 提出了反向瓶颈剩余块来构建用于分类任务的高效DCNN。ContextNet利用倒置瓶颈残差块设计了一个两分支网络来实现高效的实时语义分割。
- 网络量化:由于与整数或二进制运算相比,浮点乘法的成本较高,因此可以使用DCNN过滤器和激活值的量化技术进一步缩短运行时间。
- 网络压缩:应用修剪来减小预先训练的网络的大小,从而实现更快的运行时间、更小的参数集和更小的内存占用。
FAST-SCNN在很大程度上依赖于深度可分离的卷积和ResNet的瓶颈块。此外,我们引入了一个两分支模型,该模型结合了我们的学习到下采样模块,允许在多个分辨率级别上共享特征提取(图2)。注意,即使多个分支的初始层提取相似的特征,普通的双分支方法也不能利用这一点。网络量化和网络压缩可以正交应用,留待下一步研究。
2.3. Pre-training on Auxiliary Tasks
人们普遍认为,辅助任务的预训练可以提高系统的精确度。早期关于对象检测[7]和语义分割[4,37]的研究已经在ImageNet[27]的预训练中展示了这一点。紧随这一趋势,其他实时高效的语义切分方法也在ImageNet上进行了预训练。然而,目前还不知道在低容量网络上是否有必要进行预训练。FAST-SCNN是专门为低容量而设计的。在我们的实验中,我们表明小型网络并没有从预训练中获得显着的好处。相反,积极的数据扩充和更多的训练轮数提供了类似的结果。
3. Proposed Fast-SCNN
FAST-SCNN的灵感来自双分支体系结构[21,34,17]和具有跳跃连接的编解码器网络[29,26]。我们将跳跃连接重新解释为学习下采样模块,使我们能够合并两个框架的关键思想,并允许我们构建快速的语义分割模型。图1和表1显示了Fast-SCNN的布局。在下面,我们将讨论我们的动机,并更详细地描述我们的构建块。
当前最先进的实时运行的语义分割方法是基于具有两个分支的网络,每个分支在不同的分辨率级别上操作。它们从输入图像的低分辨率版本中学习全局信息,并采用全输入分辨率的浅层网络来改进分割结果的精度。由于输入分辨率和网络深度是影响运行时间的主要因素,因此这两个分支方法允许实时计算。
众所周知,DCNN的前几层提取低层特征,如边缘和角点。因此,我们引入了下采样的学习,它在浅层网络块的低层分支和高层分支之间共享特征计算,而不是使用单独计算的两个分支方法。
3.2. Network Architecture
我们的Fast-SCNN采用了学习下采样模块、粗全局特征提取器、特征融合模块和标准分类器。所有模块都采用深度可分离卷积构建,这已经成为构建高效深度CNN中重要的模块。
3.2.1 Learning to Downsample
在学习下采样模块中,我们采用了三层。只使用了三层来确保低级特征共享的有效性和高效实施。第一层是标准卷积层(Conv2D),其余两层是沿深度可分离的卷积层(DSConv)。这里我们要强调的是,虽然DSConv的计算效率更高,但我们使用的是Conv2D,因为输入图像只有三个通道,这使得DSConv的计算优势在这个阶段微不足道。
我们学习下采样模块中的所有三层都使用了STRIDE 2,然后是批归一化和RELU。卷积和纵卷积层的空间核大小为3×3。在[5,28,21]的基础上,我们省略了纵卷积和点卷积之间的非线性。
3.2.2 Global Feature Extractor
全局特征提取模块的目的是捕获图像分割的全局上下文。与在低分辨率版本的输入图像上操作的常见两分支方法不同,我们的模块直接将学习模块的输出下采样(其分辨率为原始输入的1/8)。模块的详细结构如表1所示。我们使用MobileNet-V2引入的高效瓶颈剩余块(表2)。特别地,当输入和输出大小相同时,我们对瓶颈剩余块采用剩余连接。我们的瓶颈块使用了一种高效的深度可分离卷积,从而减少了参数和浮点运算的数量。此外,在末尾添加金字塔池模块(PPM)以聚集基于不同区域的上下文信息。
3.2.3 Feature Fusion Module
与ICNet[36]和ContextNet[21]类似,我们更喜欢简单地添加功能以确保效率。或者,可以以运行时性能为代价使用更复杂的特征融合模块(例如[34]),以达到更高的精度。功能融合模块的详细信息如表3所示。
3.2.4 Classifier
在分类器中,我们采用了两个深度可分离卷积(DSConv)和逐点卷积(Conv2D)。我们发现,在特征融合模块之后增加几层可以提高准确率。分类器模块的详细信息如表1所示。
在训练期间使用Softmax,因为使用了梯度下降。在推理过程中,我们可以用argmax替换昂贵的softmax计算,因为这两个函数都是单调递增的。我们将此选项表示为Fast-SCNN cls(分类)。另一方面,如果需要基于标准DCNN的概率模型,则使用SoftMax,表示为Fast-SCNN Prob(概率)。
3.3 Comparison with Prior Art
我们的模型受到两分支框架的启发,并结合了编码器-解码器方法的思想(图2)
3.3.1 Relation with Two-branch Models
最先进的实时模型(ContextNet[21]、BiSeNet[34]和GUN[17])使用双分支网络。我们的学习到下采样模块等同于他们的空间路径,因为它是浅的,从全分辨率学习,并且用于特征融合模块(图1)。
我们的全局特征提取模块相当于这类方法的更深层次的低分辨率分支。相反,我们的全局特征提取器与学习下采样模块共享前几层的计算。通过共享这些层,我们不仅降低了特征提取的计算复杂度,而且由于Fast-SCNN使用1/8分辨率而不是1/4分辨率进行全局特征提取,因此我们还减少了所需的输入大小。
3.3.2 Relation with Encoder-Decoder Models
所提出的Fast-SCNN可以看作是编解码器框架的特例,例如FCN[29]或U-Net[26]。然而,与FCN中的多跳连接和U-Net中的密集跳连接不同,Fast-SCNN只使用单个跳连接来减少计算量和内存。
与主张仅在DCNN的早期层共享功能的[35]相对应,我们将我们的跳过连接定位在网络的早期。相反,在应用跳过连接之前,现有技术通常在每个分辨率下采用更深的模块。
4. Experiments
本文提出的快速分割卷积神经网络(Fast-SCNN)在Cityscapes城市景观数据集[6]的验证集上进行了评估,并在城市景观测试集(即城市景观基准服务器)上报告了其性能。
4.1. Implementation Details
当涉及到高效的DCNN时,实现细节与理论同等重要。因此,我们在这里仔细描述我们的设置。我们使用Python在TensorFlow机器学习平台上进行了实验。我们的实验是在NVIDIA Titan X(Maxwell)或NVIDIA Titan XP(Pascal)GPU、CUDA 9.0和CuDNN v7的工作站上进行的。运行时评估在单个CPU线程和一个GPU中执行,以测量正向推理时间。我们使用100帧进行burn-in,并报告每秒帧数(Fps)测量的平均值为100帧。
我们使用动量为0.045,批量为12的随机梯度下降(SGD)。受[4,37,10]的启发,我们使用Poly学习率,基数为0.045,幂为0.9。类似于MobileNet-V2,我们发现l2深度卷积不需要正则化,对于其他层l2是0.00004。由于用于语义分割的训练数据有限,我们应用了各种数据增强技术:0.5到2之间的随机大小调整、平移/裁剪、水平翻转、颜色通道噪声和亮度。我们的模型是在交叉熵损失的情况下训练的。我们发现,学习结束时的辅助损失对下采样和具有0.4权重的全局特征提取模块是有利的。
在每个非线性函数之前使用批归一化[12]。丢弃仅用于最后一层,恰好在Softmax层之前。与MobileNet[10]和ContextNet[21]相反**,我们发现Fast-SCNN使用RELU训练速度更快,精度略高于ReLU6**,即使使用我们在整个模型中使用的深度可分离卷积也是如此。
实现发现,不需要需训练模型,直接在原始数据集上训练,只要训练的轮数足够,也能达到相同的效果。值得一提的是,Fast-SCNN的容量很低,因为我们使用了111万个参数。
Fast-SCNN 的参数量:
Fast-SCNN 的运行速度:
4.2. Evaluation on Cityscapes
我们评估了我们提出的关于城市景观的Fast-SCNN,这是城市道路上最大的公开可用的数据集[6]。该数据集包含从欧洲50个不同城市拍摄的各种高分辨率图像(1024×2048px)。它有5000张高标签质量的图像:2975张的训练集、500张的验证集和1525张的测试集。训练集和验证集的标签可用,并且可以在评估服务器上评估测试结果。此外,20,000个弱注释图像(粗标签)可用于训练。我们用这两种方法报告结果,只用精细数据,用粗标数据报告精细数据。Cityscapes提供了30个等级标签,而只有19个等级用于评估。mIOU和网络推理时间如下所示。
注意:The mean of intersection over union(mIOU)是评价语义分割准确性的一种指标
我们在保留的城市景观测试集上评估整体性能。与其他实时语义切分方法(ContextNet[21]、BiSeNet[34]、GUN[17]、ENET[20]和ICNet[36])和离线语义分割方法(PSPNet and DeepLab-V2)的比较,实验结果如下图:
4.3. Pre-training and Weakly Labeled Data
大容量的DCNN,如R-CNN[7]和PSPNet[37],已经表明通过不同的辅助任务进行预训练可以提高性能。由于我们专门将Fast-SCNN设计为具有低容量,现在我们希望在有和没有预训练的情况下,以及在有和没有额外的弱标记数据的情况下测试性能。据我们所知,在低容量DCNN上预先训练和附加弱标记数据的意义以前没有被研究过。表6显示了结果。
实验发现,采用ImageNet预训练的Fast-SCNN在城市景观验证集上的准确率为69.15%,仅比未经预训练的Fast-SCNN提高0.53%。因此,我们得出结论,使用ImageNet预训练无法显著提升Fast-SCNN的性能。
由于Cityscapes的城市道路和ImageNet的分类任务之间的重叠是有限的,因此有理由假设Fast-SCNN可能不会因两个域的容量有限而受益。因此,我们现在合并了Cityscapes提供的20,000个粗略标记的附加图像,因为这些图像来自类似的领域。尽管如此,使用粗训练数据(有或没有ImageNet)训练的Fast-SCNN表现相似,并且在没有预处理的情况下仅比原始Fast-SCNN稍有改进。 请注意,由于DCNNs的随机初始化,小的变化是微不足道的。
实验表明,无论是ImageNet预训练还是弱标记数据对我们的低容量DCNN都没有显著的好处。图4显示了训练曲线。由于标签质量较弱,具有粗数据训练的Fast-SCNN在迭代方面较慢。两个ImageNet预训练版本在早期阶段的表现都更好(仅训练集就有多达400个阶段,用附加的粗略标记数据训练时有100个阶段)。这意味着,当我们从头开始训练我们的模型时,我们只需要训练我们的模型更长时间就可以达到类似的精度。
4.4. Lower Input Resolution
由于我们对可能没有全分辨率输入或无法访问强大图形处理器的嵌入式设备感兴趣,我们在评估结束时研究了一半和四分之一输入分辨率的性能(表7)。实验表明,Fast-SCNN 直接适用于较低的输入分辨率,因此非常适合嵌入式设备,无需修改。
5. Conclusions
我们为高于实时场景理解提出了一个快速分割网络。共享多分支网络的计算成本产生的运行时间效率。在实验中,我们的跳过连接显示有利于恢复空间细节。我们还证明,如果足够长的训练,低容量网络的额外辅助任务的模型对模型的大规模预培训是不需要的。
最好的关系是互相成就,各位的「三连」就是【AI 菌】创作的最大动力,我们下期见!
以上是关于Fast-SCNN一种快速语义分割网络的主要内容,如果未能解决你的问题,请参考以下文章