本文主要是介绍DAB-Net:用于实时语义分割的深度不对称瓶颈层,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
摘要:
提出一种新的深度非对称瓶颈(DAB)模块,该模块有效采用非对称卷积和扩张卷积来构建瓶颈层。由DAB模块组成的DAB-Net,生成了足够的接受域,密集的利用了上下文信息。
Citycapes测试集上实现70.1%的miou,一张FGTX1080Ti上速度为104FPS。代码地址:https://github.com/Reagan1311/DABNet
1、介绍
[16.18.19.23]已成功地提高了语义分割的实时性,同时也牺牲了准确性。[3,4,5,12,31]已证明了扩张卷积的可用性,扩张卷积可以在保持参数的同时增加感受野。另一种有效减少参数的方式是深度可分离卷积(ds-Conv),它具有独立计算跨通道和空间性,但是简单的将标准卷积替换为ds-conv会导致性能大幅下降,因为ds-conv大大降低了参数,常常导致次优问题。所以,本文将两者结合,构成DAB模块。
本文主要贡献为:
1)提出DAB结构,能同时提取局部和上下文信息,大大降低了参数;
2)DAB-Net不含上采样层,参数比最先进的语义分割少,且有相当的准确性和推理速度;
3)DAB_Net,在1080ti 上 512*1024图104FPS,参数0.76M,Citycapes上miou=0.701。
2、相关工作
ENet [18]是第一个实时设计的网络,它减少大量的卷积以减少滤波器;
ICNet [34]提出一种包含多分辨率分支的图像级联网络;
ERFNet [20]使用残差连接和分解卷积保持效率,同时保持准确率;
ESPNet [16]引入一个高效的空间金字塔(ESP),给速度和性能都带来很大改进;
BiSeNet [30]提出空间信息和上下文信息结合的方法。
扩张卷积。膨胀卷积 [12]在标准卷积中每个像素之间插入零点,在不增加参数的情况下,得到一个较大的有效接受域。在DeepLab系列 [4,5,6]中,引入一个无源控件金字塔池(ASPP)模块,该模块采用多个并行的不同膨胀率卷积收集多尺度信息。DenseASPP [29]将一组膨胀卷积层连接起来,生成密集的多尺度特征表示。
卷积因子分解。将一个标准卷积分解为几个步骤降低计算成本和内存,这在轻量级CNN模型中得到广泛应用。Inception [24,25,26]在保持接收域大小的同时,使用几个小尺寸的卷积来代替大卷积核。Xceprion [7]和MobilNetV2 [22]提出反向残差和线性瓶颈。ShuffleNet [32]将点卷积和通道混洗结合,使得不同通道能够进行信息通信。
3、网络结构
本节中,先介绍DAB模块 ,然后基于DAB设计DABNet。
3.1、深度非对称瓶颈-DAB模块
受ResNet [10]瓶颈设计和ERFNet [20]中因式分解的启发,结合两者优点设计了DAB模块。
a,b,c分别为ResNet、ERFNet、DAB结构。1)首先将通道数减少一半,然后通过点卷积恢复至原始值。2)两个分支结构,为1*N,N*1可分离卷积组合,右分支增加膨胀因子(结合多尺度信息)。3)之后1*1卷积,恢复至原通道大小。4)最后残差连接。
ResNet [10],深层次的卷积网络可以增加感受野,并且提取更复杂的特征。双分支,优秀的网络都会用多尺度信息,但多尺度信息的有效提取是个难题。左分支提取当前信息,右分支利用膨胀卷积提供更大的感受野,使用深度可分离卷积降低计算量。卷积分解降低参数量。膨胀卷积:增加感受野,但当膨胀率增加,也必须实现更多padding维持特征图大小尺度,这导致膨胀卷积计算量大,所以,本文只在深度可分离卷积上进行膨胀卷积。左分支为当前信息,右分支为上下文信息。
ENet [18]使用PRelu激活,浅层网络上PRelu性能优于Relu。[22]中提出1*1卷积后增加激活函数会损失精度,故1*1卷积后不激活。
3.2、DABNet结构设计
首先,使用3*3卷积提取初始特征,然后采取同ENet [18]相似的下采样模块,该模块连接3*3卷积和步长为2的maxpooling。
下采样操作降低输出特征图的尺寸,同时起到增加感受野以提取更多上下文信息的作用,而特征图分辨率的降低常导致信息丢失。因此,本文只做三次将采样,最后特征图为输入的1/8。一般是5次下采样,为输入的1/32。更多的,借鉴ESPNet V2 [17]连接输入与每个下采样模块,减少信息损失。
DAB模块,使用几个连续的DAB模块来提取稠密特征,第一、二个DAB模块分别含连续3、6个DAB结构,左分支膨胀率为2,右分支膨胀率依次为4,4,8,8,16,16,通过这样逐步增加感受野。
设计选择。DABNet只做三次下采样。不含解码结构,以减少计算量。
4、实验
实验中,batch_size设置为8,动量因子0.9,衰减1e-4,SGD优化。初始学习率4.5e-2,幂0.9。迭代1000次。数据增强采用随机翻转、建军治、随机比例尺。随机比例包含0.75、1.0、1.25、1.5、1.75、2.0。最后剪裁至固定尺寸进行训练。
膨胀率设计。在第二个DAB结构后,逐步增加膨胀率。{4,4,8,8,16,16},以固定膨胀率4作为对比。固定rate=4比基线底2.3%。文献 [28]表明大的膨胀率更适合本网络。
解码器。采用ERFNet的解码器结构作对比,用反卷积层做上采样。上表中DABNet-ERFdecoder,指标提升0.3%,但速度下降至58.6 FPS。所以,本文中上采样层是非必须的。
上下文模块。PSPNet [33]是一个分类模型,采用空间金字塔pooling SPP ,通过在不同分辨率的特征图上提取当前、全局上下文信息。为探索捕获上下文能力,本文构造一个带有SPP头的DABNet变体,成为DABNet-SPP。比基线低0.5%的准确率,参数增加4.2%,模型速度降低32FPS。DAB模块提取上下文特征比SPP要好。
推理速度。3.1中,膨胀卷积增加计算量,我们探索高效膨胀卷积。(a)去掉DABNet中所有膨胀卷积,(b)在所有DABNet中,第一层增加rate=2的膨胀率。即使降低膨胀率或去除所有膨胀卷积,FPS几乎没什么变化(从104.2到104.5)。但是,当对标准卷积应用膨胀卷积时,速度明显下降,从104.2下降到85.6。结果表明:膨胀卷积对推理速度有显著影响,但应用于深度卷积时,几乎没有不良影响。
这篇关于DAB-Net:用于实时语义分割的深度不对称瓶颈层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!