论文阅读:《Rethinking BiSeNet For Real-time Semantic Segmentation》

在这里插入图片描述
论文链接https://arxiv.org/pdf/2104.13188.pdf
CVPR 2021

1 Background

语义分割是计算机视觉上比较经典和基础的问题,它旨在为像素分配类别标签。

因为题目是重新思考BiSeNet,那么首先理解一下BiseNet:

为什么提出BiSeNet

  • 在语义分割领域,由于需要对输入图片进行逐像素的分类,运算量很大,如何在语义分割任务中应用轻量级模型,兼顾实时性和精度性能具有相当大的挑战性
  • 之前的实时性语义分割算法,主要有三种加速方法:(1)通过剪裁或 resize 来限定输入大小,以降低计算复杂度(图a的第一个图)。优点:简单而有效。缺点:空间细节丢失,尤其是边界部分,导致度量和可视化的精度下降;(2通过减少网络通道数量加快处理速度,即使用轻量级网络,缺点:弱化空间信息(图a的第二个图)。(3)为追求极其紧凑的框架而丢弃模型的最后stage(比如ENet)。缺点:由于 ENet 抛弃了最后阶段的下采样,模型的感受野不足以涵盖大物体,导致判别能力较差。
  • 为了弥补空间信息的丢失,有些算法会使用U型结构(图b),但是这种结构速度比较慢,而且丢失的信息不可能仅仅通过low-level信息的融合来恢复

为了解决上述的问题,提出了BiSeNet(图c),它有两个路径:context path和spatial path
在这里插入图片描述
下面具体理解一下BiSeNet
在这里插入图片描述
整体很简单,就是两个路径,一个Context path来编码不同感受野和不同尺度的高级语义信息(即high-level feature),一个Spatial path来编码丰富的细节空间信息(即low-level feature),最后把两个信息融合得到最后的准确的预测结果。

  • Context path:首先使用轻量级网络(如ResNet18或者Xception)来得到下采样32x的图像特征,最后再通过一个全局平均池化操作(上图中32x down下面的灰色小块)来得到丰富的Context信息和最大的感受野。为了精细化16x down阶段和32x down阶段的输出特征,提出了一个ARM模块,即通过一个全局池化来得到一个全局上下文信息,后边在通过卷积、relu和sigmoid函数得到一个attention向量,最后把这个向量和原先的特征图进行一个通道attention(相乘)来达到一个细化的目的。之后把16x down、32x down和平均全局池化操作的三个输出全部上采样原图的1/8进行concat,来和Spatial path的输出进行融合。
  • Spatial path:仅有三层。每层是都conv、bn和relu。步长都是2,最终得到下采样8x的结果。
  • FFM:把两个路径的输出先concat到一起,在进行一个1*1的卷积,后边的操作和ARM操作一样的目的。为了得到更精确的结果,还使用了残差结构(文中add部分)。

了解了BiSeNet之后,为什么提出Rethinking BiSeNet?

  • BiSeNet中的lightweight backbones都是从图像分类任务中借来的,无法有效地进行图像分割
  • BiSeNet中添加额外path以对空间信息进行编码的原理很耗时,并且额外path总是缺乏低层次的信息指导。
    -在这里插入图片描述
    因此针对上述两个问题,作者进行了改进。即改进了Context path的backbone,其它的不变,和BiSeNet一样,把BiSeNet中的Spatial path换成了作者提出的Spatial path:detial guidance。

即本文提出了一种新颖且有效的结构,目的是更快的推理速度,可解释的结构和更好的性能:
在这里插入图片描述
上图就是为了说明本文效果好,因为不论FPS还是MIou都是越大越好,即约靠近右上角越好,红色的表示的是作者提出的方法的效果,处于右上角是最好的。

2 Movtivtion

  • 实时分割方法中使用的轻量化的Backbone主要是针对图像分类的设计,可能针对特定的语义分割任务性能并不是那么的好,作者改进了backbone
  • BiSeNet添加一条额外的path来获取low-level特征是很费时的,同时Auxiliary path也往往缺乏low-level信息的引导,作者改进了这个耗时的Spatial path
    在这里插入图片描述

3 Related work

  • Efficient Network Designs:模型设计在计算机视觉任务中起着重要的作用
    • eg,ResNet, MobileNet V1, MobileNet V2, ShuffleNet等都是专门为图像分类任务设计的,应仔细调整它们来对语义分割进行扩展
  • Generic Semantic Segmentation :大多数方法需要大量的计算开销
    • eg, Deeplabv3 , SegNet , PSPNet
  • Real-time Semantic Segmentation:设计有效的分割方法主要有两种:
    • lightweight backbone , eg, DFANet , DFNet
    • multi-branch architecture, eg, ICNet , BiSeNetV1 , BiSeNetV2

4 Method

在这里插入图片描述

  • 针对BiSeNet中的Context path ,本文改进了它的backbone,即encoder部分
  • 针对BiSeNet中的Spatial path,本文提出了了Detial guidance来替代它

下面具体看看每部分是怎么设计的:

4.1. Design of Encoding Network

这部分就是针对针对BiSeNet中的Context path中backbone的改进,本文作者设计了自己的backbone即STDC网络,它是有STDC模块组成的。

(1)Short-Term Dense Concatenate Module (STDC module):通过少量参数来获得Variant Scalable Receptive Fields
在这里插入图片描述
i i i个block的输出为:
x i = C o n v X i ( x i − 1 , k i ) x_{i}=ConvX_{i}(x_{i-1},k_{i}) xi=ConvXi(xi1,ki)

  • C o n v X i ConvX_{i} ConvXi|表示第 i i i个block的操作,包括一个卷积层、一个BN层和一个relu激活层
  • x i − 1 x_{i-1} xi1 x i x_{i} xi分别表示第 i i i个block的输入和输出
  • k i k_{i} ki表示第 i i i个block的卷积层的卷积核的大小,STDC模块中第一个block卷积核大小为1,其它的大小为3
  • 如果STDC模块中的输出通道数为 N N N,则第 i i i个block的卷积层的卷积核个数为 N 2 i \frac{N}{2^{i}} 2iN,只有最后一个block和倒数第二个个数相同。因为( Low-level layers need enough channels to encode morefine-grained informations with small receptive field, whilehigh-level layers with large receptive field focus more onhigh-level information induction, setting the same channel with low-level layers may cause information redundancy)
  • s=2的STDC模块在block2的s=2,block1的分辨率要通过avg pool操作下采样到和block2、block3、block4一样的大小才进行融合
  • Fusion为简单的concat
    在这里插入图片描述
    在这里插入图片描述
    上表为了表明STDC模块可以融合不同感受野的信息。
    在这里插入图片描述
    STDC模块的参数量很简单:每个block的输入通道数✖卷积核大小✖每个block的输出通道数,最后所有的block加起来。

了解了STDC模块后,后边就是使用STDC模块来形成STDC网络,即backbone(encoder部分)

(2)Network Architecture(STDC Network):将STDC模块集成到U-net体系结构中,形成STDC Network,这一操作极大地提高了语义分割任务网络的性能。
在这里插入图片描述

上边是STDC的分类网络,stage6是分类网络一般使用的地方。具体的细节可以看下表。
在这里插入图片描述
表格就很清晰,stage1和2就是步长s=2的卷积层。表格中我们可以看出来,stgae3、4、5都是有STDC模块组成的,具体每个stage由多少个STDC模块组成就可以根据效果来细调。我们可以注意到,stgae3、4、5的第一个STDC模块都是步长为2,其余都是步长为1,这就保证了不同的stage的分辨率不同,同一个stage分辨率相同。STDC1和STDC2表示不同的网路,即它们两个stgae3、4、5的STDC模块数量不同。表中出现了R(重复次数),比如STDC1的stage3是1,1,这就是表明STDC1网络的stage3阶段的STDC模块有两个,一个步长为2,一个步长为1。STDC2的stage3是1,3,这就是表明STDC1网络的stage3阶段的STDC模块有四个,一个步长为2,三个个步长为1

4.2. Design of Decoder

这部分就是针对针对BiSeNet中的Spatial path的改进,本文作者设计了自己设计了detial guidance来替代BiSeNet中的Spatial path。
(1)Segmentation Architecture:使用预训练STDC网络作为编码器的Backbone,并采用BiSeNet的context path对context information进行编码。
在这里插入图片描述
即把BiseNet中的Context path中backbone换成了STDC网络,就是上边红色虚线框部分,其它的部分是不变的。Seg head是在8x之前的,即FFM出来的结果,先通过分割头,然后在进行8x上采样,因此这里的seg gt是原图的1/8大小,Seg loss也是在这种情况下来计算的,这样可以减少计算量。Seg loss是带有OHEM的交叉熵损失。

(2)Detail Guidance of Low-level Features:使用预训练STDC网络作为编码器的Backbone,并采用BiSeNet的context path对context information进行编码。

首先来看一个可视化图来表明Detail Guidance的优点:
在这里插入图片描述
(a)为输入图像,(b)为本文中stage 3输出结果再通过Detail head后的结果,(d)是本文中stage 3输出结果,(d)为本文中stage 3输出结果再通过Detail head后的结果,并且还由Detail GT监督指导的情况下的结果,这就是为了表明Detail Guidance的优点和重要性。

下面具体看一下这一块是怎么进行Detail Guidance的:

  • Detail Ground-truth Generation :通过detail Aggregation模块从语义分割ground truth中生成binary detail ground-truth
    在这里插入图片描述
    Detail GT是由Seg GT通过detail Aggregation模块中生成的,detail Aggregation就是上述蓝色虚线的位置。Seg GT通过不同步长的拉普拉斯卷积(拉普拉斯金字塔)得到不尺度的细节特征图,最后步长为2和4的上采样成原图,三个concat到一起输入到一个11的卷积中得到HW*1的结果,最后会通过阈值为0.1的转换(比如大于0.1的为白色,小于0.1的黑色)得到最后的二值Detail GT。

  • Detail Loss:由于detail pixels的数量远少于非detail pixels,很明显detail预测是一个类不平衡问题。由于加权交叉熵总是导致粗糙的结果,于是本文采用binary cross-entropy和dice loss联合优化细节学习。
    在这里插入图片描述
    在这里插入图片描述
    下面看一下Dice loss怎么来的:
    Dice Loss:来自文章V-Net,旨在应对语义分割中正负样本强烈不平衡的场景

  • Dice系数与Dice Loss
    Dice系数是一种集合相似度度量函数,通常用于计算两个样本的相似度,取值范围在[0,1]:
    在这里插入图片描述
    其中 |X∩Y| 是X和Y之间的交集,|X|和|Y|分表表示X和Y的元素的个数,其中,分子的系数为2,是因为分母存在重复计算X和Y之间的共同元素的原因。
    Dice Loss:
    在这里插入图片描述

Laplace smoothing 是一个平滑项( ϵ \epsilon ϵ):
在这里插入图片描述

带来的好处:
(1)避免当|X|和|Y|都为0时,分子被0除的问题
(2)减少过拟合

  • Dice系数计算
    (1)pre与 gt 的点乘:
    在这里插入图片描述

(2)逐元素相乘的结果元素的相加和:
在这里插入图片描述

(3)计算|X|和|Y|,可以采用元素平方求和的方法:
在这里插入图片描述

5 Experiments

5.1. Datasets

  • ImageNet
  • Cityscapes
  • CamVid

5.2 Ablation Study

(1) Effectiveness of STDC Module
在这里插入图片描述
n表示block,n=4的最好
(2) Effectiveness of Our backbone
在这里插入图片描述

(3) Effectiveness of Detail Guidance
在这里插入图片描述
在这里插入图片描述

5.3 Compare with State-of-the-arts

(1) Results on ImageNet
在这里插入图片描述

(2) Results on Cityscapes
加粗样式
在这里插入图片描述

(3) Results on CamVid
在这里插入图片描述

7 Conclusion

本文提出了一种新颖且有效的结构,即通过消除结构冗余来缓解BiSeNet中的耗时问题(Short-Term Dense Concatenate network)。具体来说,首先将特征图的维数逐渐降低,并将特征图聚合起来进行图像表征,形成了STDC网络的基本模块。在decoder中,提出了一个Detail Aggregation module将空间信息的学习以single-stream方式集成到low-level layers中。最后,将low-level features和deep features融合以预测最终的分割结果。

  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值