关于机器学习:DGC真动态分组卷积可能是解决分组特征阻塞的最好方案-ECCV-2020-Spotlight

40次阅读

共计 2925 个字符,预计需要花费 8 分钟才能阅读完成。

近期,动静网络在减速推理这方面有很多钻研,DGC(Dynamic Group Convolution)将动静网络的思维联合到分组卷积中,使得分组卷积在轻量化的同时可能增强表达能力,整体思路间接清晰,可作为网络设计时的一个不错的抉择

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

论文: Dynamic Group Convolution for Accelerating Convolutional Neural Networks

  • 论文地址:https://arxiv.org/abs/2007.04242
  • 论文代码:https://github.com/zhuogege1943/dgc

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$ 个 head,重要性向量 $g^i$ 的计算为:

  $g^i\in \mathbb{R}^{1\times C}$ 代表输出维度的重要性向量,$(z)_+$ 代表 ReLU 激活,$p$ 将每个输出特色图放大为单个标量,论文采纳应用全局均匀池化,$\beta^{i}$ 和 $W^{i}$ 为可学习参数,$\beta^{i}$ 为偏置,$W^{i}$ 两部转换操作 $\mathbb{R}^{1\times C}\mapsto \mathbb{R}^{1\times C/d}\mapsto \mathbb{R}^{1\times C}$,其中 d 为压缩比。这里的 $x^{i}$ 为全副输出维度,即在每个 head 中,所有的输出维度都是候选。

Gating Strategy

  在取得重要性向量后,下一步是决定以后 head 抉择哪些输出维度参加后续的卷积操作,能够用 head-wise 阈值或 network-wise 阈值来过滤分数较低的输出特色。论文应用的是 head-wise 阈值,给定指标裁剪比例 $\zeta$,第 $i$ 个 head 的阈值 $\tau^{i}$ 满足:

  重要性分数有两个作用:1) 重要性分数小于阈值的将被去除 2) 残余的维度会应用对应的重要性分数进行加权,失去加权特色 $y^{i}\in \mathbb{R}^{(1-\zeta)C\times H\times W}$。假如 head 数量为 $\mathcal{H}$,第 $i$ 个 head 的卷积核为 $w^{i}\subset \theta^{i}, \theta^{i} \in \mathbb{R}^{k\times k\times C\times \frac{C^{‘}}{\mathcal{H}}}$,则对应的卷积计算为:

  公式 7 其实就是将抉择的特色和对应的权值选出来进行惯例卷积计算,$\mathcal{I}_{top} \lceil k\rceil (z)$ 返回 $z$ 中最大的 $k$ 个元素的下标,输入 $x^{‘i}\in \mathbb{R}^{\frac{C^{‘}}{\mathcal{H}}\times H^{‘}\times W^{‘}}$,$\otimes$ 为惯例卷积。在 DGC 的最初,各输入会合并而后打乱,输入 $x^{‘}$。
  为了让重要性分数尽量稠密,引入 lasso 损失:

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

Computation Cost

  卷积核大小为 $k$ 的惯例卷积 MAC 为 $k^2C^{‘}CH^{‘}W^{‘}$,而 DGC 中,每个 head 的 saliency generator 和卷积的 MAC 为 $\frac{2C^2}{d}$ 和 $k^2(1-\zeta)C\frac{C^{‘}}{\mathcal{H}}H^{‘}W^{‘}$。所以 DGC 层的 MAC 绝对于惯例卷积的节俭比例为:

  head 的数量 $\mathcal{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)将动静网络的思维联合到分组卷积中,使得分组卷积在轻量化的同时可能增强表达能力,整体思路间接清晰,可作为网络设计时的一个不错的抉择。



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

正文完
 0