DGC:真动态分组卷积,可能是解决分组特征阻塞的最好方案 | ECCV 2020 Spotlight

近期,动态网络在加速推理这方面有很多研究,DGC(Dynamic Group Convolution)将动态网络的思想结合到分组卷积中,使得分组卷积在轻量化的同时能够加强表达能力,整体思路直接清晰,可作为网络设计时的一个不错的选择

来源:晓飞的算法工程笔记 公众号

论文: Dynamic Group Convolution for Accelerating Convolutional Neural Networks

Introduction


  分组卷积目前广泛应用于轻量级网络中,但论文分析发现分组卷积有两个致命的缺点:

  • 由于引入稀疏连接,减弱了卷积的表达能力,导致性能的降低,特别对于难样本。

  • 固定的连接模式,不会根据输入样本的特性而改变。而论文通过可视化DenseNet中间层的输入维度对输出维度的贡献发现,不同的输入维度对不同的输出的贡献是不一样的,而且这个贡献关系在不同的输入样本之间也存在差异。

  参考动态网络的思想,论文提出动态分组卷积(DGC, dynamic group convolution),为每个分组引入小型特征选择器,根据输入特征的强度动态决定连接哪些输入维度,而多个分组能捕获输入图片中不同的互补特征,学习到丰富的特征表达能力。为此,动态分组卷积能够在保持原网络的完整结构下,自适应地为每个分组的选择最相关输入维度。

Group-wise Dynamic Execution


  DGC的结构如图2所示,将输出维度分成多个分组,每组都配有辅助head,用来决定那些输入维度用于卷积计算。每个分组的逻辑如下:

  1. saliency generator生成输入维度的重要性分数。
  2. input channel selector采用gating策略根据重要性评分来动态决定输入维度最重要部分。
  3. 对选择的输入维度子集进行正常的卷积操作。

  最后,将所有head的输出concate并打乱,送入后续的BN层和激活层。

Saliency Generator

  saliency generator为每个输入维度指定一个分数用来表示其重要程度,每个head都有特定的saliency generator,用来引导不同的head使用不同的输入维度,从而增加特征的多样化表达。saliency generator遵循了SE block的设计,对于第 i i i个head,重要性向量 g i g^i gi的计算为:

g i ∈ R 1 × C g^i\in \mathbb{R}^{1\times C} giR1×C代表输入维度的重要性向量, ( z ) + (z)_+ (z)+代表ReLU激活, p p p将每个输入特征图缩小为单个标量,论文采用使用全局平均池化, β i \beta^{i} βi W i W^{i} Wi为可学习参数, β i \beta^{i} βi为偏置, W i W^{i} Wi两部转换操作 R 1 × C ↦ R 1 × C / d ↦ R 1 × C \mathbb{R}^{1\times C}\mapsto \mathbb{R}^{1\times C/d}\mapsto \mathbb{R}^{1\times C} R1×CR1×C/dR1×C,其中d为压缩比。这里的 x i x^{i} xi为全部输入维度,即在每个head中,所有的输入维度都是候选。

Gating Strategy

  在获得重要性向量后,下一步是决定当前head选择哪些输入维度参与后续的卷积操作,可以用head-wise阈值或network-wise阈值来过滤分数较低的输入特征。论文使用的是head-wise阈值,给定目标裁剪比例 ζ \zeta ζ,第 i i i个head的阈值 τ i \tau^{i} τi满足:

  重要性分数有两个作用:1) 重要性分数小于阈值的将被去除 2) 剩余的维度会使用对应的重要性分数进行加权,得到加权特征 y i ∈ R ( 1 − ζ ) C × H × W y^{i}\in \mathbb{R}^{(1-\zeta)C\times H\times W} yiR(1ζ)C×H×W。假设head数量为 H \mathcal{H} H,第 i i i个head的卷积核为 w i ⊂ θ i , θ i ∈ R k × k × C × C ′ H w^{i}\subset \theta^{i}, \theta^{i} \in \mathbb{R}^{k\times k\times C\times \frac{C^{'}}{\mathcal{H}}} wiθi,θiRk×k×C×HC,则对应的卷积计算为:

  公式7其实就是将选择的特征和对应的权值选出来进行常规卷积计算, I t o p ⌈ k ⌉ ( z ) \mathcal{I}_{top} \lceil k\rceil (z) Itopk(z)返回 z z z中最大的 k k k个元素的下标,输出 x ′ i ∈ R C ′ H × H ′ × W ′ x^{'i}\in \mathbb{R}^{\frac{C^{'}}{\mathcal{H}}\times H^{'}\times W^{'}} xiRHC×H×W ⊗ \otimes 为常规卷积。在DGC的最后,各输出会合并然后打乱,输出 x ′ x^{'} x
  为了让重要性分数尽量稀疏,引入lasso损失:

L \mathcal{L} L为DGC层数, λ \lambda λ为预设的超参数。

Computation Cost

  卷积核大小为 k k k的常规卷积MAC为 k 2 C ′ C H ′ W ′ k^2C^{'}CH^{'}W^{'} k2CCHW,而DGC中,每个head的saliency generator和卷积的MAC为 2 C 2 d \frac{2C^2}{d} d2C2 k 2 ( 1 − ζ ) C C ′ H H ′ W ′ k^2(1-\zeta)C\frac{C^{'}}{\mathcal{H}}H^{'}W^{'} k2(1ζ)CHCHW。所以DGC层的MAC相对于常规卷积的节省比例为:

  head的数量 H \mathcal{H} H几乎对整体的计算消耗没有影响。

Invariant to Scaling

  DGC方法整体思想与动态剪枝算法FBS有点类似,FBS算法的流程如上图所示,计算的是输出维度的重要性分数,在最后的特征输出时使用重要性分数进行了加权,没有采用BN。这种加权方式会导致每个样本的特征分布差异较大,造成internal covariate shift问题。
  而DGC虽然也使用重要性分数进行特征加权,但其对最后的卷积结果进行BN+ReLU归一化来避免这个问题:

Training DGC Networks

  DGC网络从零开始训练,不需要预训练模型。在反向传播阶段,仅计算推理时选择的维度的相关权值的梯度,其它设为零。为了防止剪枝导致训练损失变化过大,在训练过程逐步增加裁剪比例 ζ \zeta ζ。整体训练分为3个阶段,第一阶段(前1/12 epochs)用于warm up,第二阶段逐步提升剪裁比例进行训练,第三阶段(后1/4 epochs)用于fine-tune稀疏网络,学习率下降采用余弦退火下降方法。

Experiments


  与剪枝方法和动态维度选择方法对比,DGC-G使用network-wise阈值进行维度选择,这个阈值是在训练中学习来的。

  与其它轻量级网络对比。

  不同参数设置的性能对比。

  可视化浅层和深层的重要性分数和过滤情况。

  DGC网络某层的其中一个head对于各输入维度的裁剪概率。

Conclustion


  DGC(Dynamic Group Convolution)将动态网络的思想结合到分组卷积中,使得分组卷积在轻量化的同时能够加强表达能力,整体思路直接清晰,可作为网络设计时的一个不错的选择。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值