轻量级神经网络PeleeNet--对DenseNet的进一步改进

论文地址:

《Pelee: A Real-Time Object Detection System on Mobile Devices》

文章总体上参考DenseNet的设计思路,提出了三个核心模块进行改进,有一定参考价值。

PeleeNet实际上是DenseNet的变体,使用的依然是DenseNet的连接方法,核心的设计原则也和DenseNet相仿(特征重用)。

1. Two-Way Dense Layer:

如下图所示:左边(a)图是DenseNet中设计的基本模块,其中k、4k代表filter的个数;右边(b)图代表PeleeNet中设计的基本模块,除了将原本的主干分支的filter减半(主干分支感受野为3x3),还添加了一个新的分支,在新的分支中使用了两个3x3的卷积,这个分支感受野为5x5(2个3*3卷积堆叠等于1个5*5的卷积核感受野;这样就提取得到的特征就不只是单一尺度,能够同时兼顾小目标和大目标。

 2. Stem Block

这个模块设计受Inceptionv4和DSOD的启发,想要设计一个计算代价比较小的模块。ResNet和DenseNet在第一层都是用的是一个7x7、stride为2的卷积层,浅层网络的作用一般是提取图像的边缘、纹理等信息;Stem Block的设计就是打算以比较小的代价取代7x7的卷积,这个模块可以在几乎不增加计算量的情况下提升特征的表达能力;block先使用strided=2的3x3卷积进行快速降维,然后用了两分支的结构,一个分支用1*1卷积进行降维、strided=2的3x3卷积, 另一个分支使用了一个maxpool;这一部分和组合池化非常相似,stem block使用了strided=2的3x3卷积和最大值池化两种的优势引申而来的池化策略(而组合池化使用的是最大值池化和均值池化),可以丰富特征层。

3. 瓶颈层设置动态变化的通道数

 瓶颈层(1x1卷积层)的输出通道数随输入形状而变化,而并非DenseNet中growth-rate的4倍(growth-rate表示每经过一个dense block,所增加的通道数),从而确保瓶颈层的计算量不会显著增加;为了维持结构的一致性,PeleeNet仍然给所有稠密层添加了瓶颈层,但是数量是依据输入形式而动态调整的,来保证通道数量不会超过输入通道数。将瓶颈层的通道个数根据输入的形状动态调整。

在DenseNet中,有一个超参数k-growth rate, 用于控制各个卷积层通道个数,在DenseNet的瓶颈层中,将其固定为增长率的4倍,DenseNet中,前几个稠密层的瓶颈通道数比输入通道数多很多,这也意味着对这些层来说,瓶颈层增加了计算开销,PeleeNet将瓶颈层的通道个数根据输入的形状动态调整,节约了28.5%的计算消耗。

4. 无压缩的过渡层

在DenseNet中,过渡层是用于将特征图空间分辨率缩小的,并且过渡层中通道数会小于前一层的通道数:DenseNet在dense layer间使用transition layer进行特征维度压缩,压缩比为0.5,而实验发现这个操作会减弱网络特征的表达能力。在PeleeNet中将过渡层和前一层通道数设置为一样的数值。

5. 卷积+relu+bn组合顺序

为了提高速度,采用了conv+bn+relu的组合(而不是DenseNet中的预激活组合(conv+relu+bn)),post-activation中,在推断阶段所有的BN层可以和卷积层合并,可以促进模型推理加速。为了弥补这个改变给准确度带来的负面影响,使用更浅更宽的网络结构,在最后一个dense block后添加一个1x1的卷积层来获得更强的特征表达能力。

6. 网络结构

整个网络由一个stem block和四阶特征提取器构成。除了最后一个阶段的每个阶段的最后一层都是步长为2的平均池化,四阶段结构是一般大型模型设计的通用结构。尽管ShuffleNet使用三阶段的结构,并在每个阶段的开始都压缩了特征图大小,尽管这样可以提升计算速度,但是本文认为前面的阶段对视觉任务尤为重要,且过早的减小特征图大小会损坏特征表达能力,因此仍然使用四阶段结构,前两阶段的层数是专门控制在一个可接受的范围内的。

 参考:

来聊聊DenseNet及其变体PeleeNet、VoVNet

Pelee:移动端实时检测Backbone 

PeleeNet pytorch代码实现

仅为学习记录,侵删 

  • 0
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎记录学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值