摘要
作者作者提出了新颖的Depth-wise Asymmetric Bottleneck (DAB) module(深度的非对称瓶颈模块),高效的利用深度的非对称卷积和空洞卷积来建立一个瓶颈结构。利用DAB模块构建的DABNet可以构造充足的感受野并密集的利用上下文信息。
DAB模块介绍
图1(c)中展示的是DAB模块,在DAB模块中,作者使用3x3卷积来减少通道数量,之所以不用1x1的原因,作者解释说尽管1x1卷积相比于3x3有更少的参数,ResNet [10]的目的是建立一个具有100多个层的深度模型,因为深度卷积神经网络可以增加接受域并捕获更复杂的特征。 不幸的是,更高的层数也带来了越来越多的运行时和内存需求。 因此,为了提高推理速度,我们改用3×3卷积来避免建立较深的模型。同时作者只是在第一个卷积中将通道数目减半,相比于resnet中上千的通道数目,作者设计的模型中,最大的通道数目只有128,所以为了保留空间信息,作者没有对通道数量压缩太多。作者在DAB模块中采用两条支路来提取特征,第一条支路作者借鉴了ERFNet的non-bottleneck-1D (图1b所示)模块的设计理念,采用卷积分解,将3x3的逐通道卷积,分解为了1x3和3x1的非对称逐通道卷积来提取局部的信息。为了提取更广的上下文信息,作者采用了空洞卷积,来增大感受野的同时没有减小输入特征的分辨率,然而,当空洞卷积率变得越来越大时,需要在特征图上填充padding值来确保特征图的大小,这会带来非常大的计算负担,从而使得空洞卷积无法应用到实时模型。为了解决这个问题,第二个分支支路只是将空洞卷积应用到了深度非对称卷积上,来减少计算负担。作者在bottleneck的结构中,采用的所有卷积都是深度卷积,在两个分支结构中,可以被视为时局部信息分支和上下文信息分支,最后,将两个分支的信息add到一起(此时特征大小为h1,h2,w/2),然后通过1x1卷积来恢复通道的数量,最后叠加上输入的特征作为输出。
激活函数: 作者仿照[11]的方案,采用预激活策略,在每个非线性函数之前采用bn,参考ENet,作者采用了PRelu作为激活函数,因为其在浅层网络模型上的表现优于Relu,参考[22]的策略,在bottleneck中使用非线性层会损害网络的表现,因此非线性激活函数,在最后的1x1逐通道卷积中被移除。
网络模型介绍
作者首先采用三个3x3卷积来提取最初的特征,然后采用ENet的初始下采样策略,是一个步长2的3x3卷积和2x2的最大池化的concat,其余的下采样阶段,都是步长为2的3x3卷积,为了使得下采样率不是特别大,作者只是进行了三次的下采样,收到ESPNetv2的启发,作者在下采样的阶段,都会将原始图concatenates到下采样的模块中,来促进功能重用并补偿信息的丢失。
为了更好地加强空间关系和特征传播,我们引入了块间级联以将高级特征与低级特征相结合,这意味着在每个DAB块中堆叠第一个DAB模块和最后一个DAB模块。对于空洞卷积,DAB块1中的所有DAB模块都包括具有空洞率为2的深度的非对称空洞卷积,并且DAB块2中的空洞率分别为4、4、8、8、16、16。 与[31]一样,我们选择这种顺序方案来逐渐扩大感受野。
由于作者想尽可能的追求更快的推理速度,作者并没有采用精细设计的解码器,同时作者只是下采样了八倍,所以编码器在网络中并不特别需要。
对比试验
图3展示的是DABNet在各个不同模块下的对比实验结果,实验结果可以看出,baseline的结果在mIOU和FPS速度的综合评定方面是最出色的。从DABNet的对比实验中,我们也可以学习到,对于轻量化模型来说,模块对比实验也可以从空洞率、解码器模块和空间金字塔池化三个方面进行入手。
从图4的结果来看,虽然DABNet的计算资源相较于气压网络存在天然的劣势,但是DABNet在各个性能的评比方面依旧是取得了不错的成绩。