点击上方AIWalker,关注“AIWalker”公众号
重磅干货,第一时间送达
标题&作者团队
paper: https://arxiv.org/pdf/2103.13425.pdf
code: https://github.com/DingXiaoH/DiverseBranchBlock
本文是清华大学&旷视科技的丁霄汉博士在“过参数化”卷积方面继ACNet、RepVGG之后的又一次探索,它创造性的将Inception的多分支、多尺度思想与过参数化思想进行了一次组合,得到了本文所提出的DBB。本文从卷积的两种线性特性(同质、加法)出发,设计了两种可组合的变换,在此基础上了结合Inception思想设计了动态多分支结构DBB。作为一种“等价嵌入”模块,它可以显著提升现有ConvNet的性能,比如在ImageNet任务上,最高可以带来1.9%的性能提升。

Abstract

本文提出一种可以提升CNN性能且“推理耗时无损”的通用模块组件,我们将其称之为Diverse Branch Block(DBB),它通过组合不同尺度、不同复杂度的分支(不同分支采用卷积序列、多尺度卷积或者均值池化)丰富特征空间的多样性达到提升单个卷积(注:推理时合并为单个卷积)表达能力的目的。一旦完成训练,一个DBB可以等价地转换为单个卷积以方便布署
不同于ConvNet架构的推陈出新,DBB在训练时采用了复杂的“微结构”且保持网络整体结构不变;而在推理/部署时,DBB这种复杂结构可以等价转换为单个卷积。这使得DBB可以作为一种“等价嵌入”的模块直接嵌入到现有任意架构中。
通过这种训练-推理时的“异构”,所得模型可以在训练时以更高的复杂度达到更高的性能;而在训练时又可以等价折叠为原始模型以方便布署。在ImageNet数据集上,DBB可以提升模型精度高达1.9%top-1精度;同时对于目标检测以及语义分割均有一定性能提升。
本文主要贡献包含以下几点:
  • 提出一种包含丰富信息的“微结构”且可以作为”即插即用“模块直接嵌入到现有ConvNet(保持模型的”宏观结构“不变)中提升模型性能;
  • 提出了一种通用模块组件DBB,它将六种矩阵变换等价转为为单个卷积,做到了“推理耗时无损”;
  • 提出了一种特征表达方式类似Inception的DBB模块,它可以直接嵌入到ConvNet并取得了显著的性能提升,比如在ImageNet上取得了1.9%的top-1精度提升。

Method

在介绍具体结构之前,我们先来看一下卷积的线性特性;然后再介绍本文所设计的多分支模块。

Linearity of Convolution

我们假设卷积输入通道数为C,输出通道数为D,卷积尺寸为,那么其卷积核为,偏置参数可选。为方便后续的合并,我们将偏置参数表示为,此时卷积可以表示如下:
输出通道的每个值可以表示如下:
卷积的线性特性可以从上述沟通推导得到,包含同质特性与加法特性:
注:加法特性只有当两个滤波器满足相同配置(比如通道数量、卷积核尺寸、stride、padding等等)时才满足。

Convolution for Diverse Branches

image-20210326100725397
上图给出了本文所设计的包含六种变换的DBB模块,它包含分支加法组合、深度拼接组合、多尺度操作、均值池化以及卷积序列等。在上述多分支模块合并时会涉及到这样几个变换:(1) Conv-BN的合并:(2)分支合并;(3) 卷积序列合并;(4) 深度拼接合并;(5) 均值池化转换;(6) 多尺度卷积转换等。接下来,我们分别针对这六种变换进行介绍。
Transform1:Conv-BN  一般而来,卷积与BN这对“基友”会同时出现,而两者在推理时又可以合并为单一卷积。那么如何合并呢?这个比较简单,公式如下:
这里利用了卷积的同质特性进行合并。变换后的卷积参数如下:
Transform2: Branch Addition  分支合并利用了卷积的加法特性,两个卷积的参数合并方式如下:
Transform3: Conv Sequential  我们可以将连续的卷积与卷积合并为单个卷积。注:这里假设卷积的groups=1,groups大于1的情况可参考Transform4。此时与两个卷积的卷积核分别为与(注:D可以是任意整数,所以这里可以极大的提升FLOPs,比如把D设置为10000,哈哈)。这两个卷积核的合并方法也是非常简单,公式如下:
注:表示将为空间。
Transform4:Depth Concatenation  Inceptioin采用了深度拼接方式组合不同的分之,当这些分支包含相同配置的卷积时,我们可以通过核参数的拼接进行等价变换,示意图如下。
组合的公式也是非常的简单,描述如下:
此时。这里的组合是一种通用变换,可以将两个分支的卷积变换成组卷积形式。注:在这个情况下,该分支的卷积序列应当具有相同的groups参数。
Transform5:Average Pooling  均值池化到卷积的变换就更简单了,看公式:
Transform6: Multi-scale Conv 考虑到可以通过零padding等价变换为卷积,因此可以等价的转换,这也就是ACNetV1的本质所在。下图给出另一个等价转换的可视化图。

Inception-like DBB

image-20210326092745087
上图给出了本文所设计的DBB结构示意图。类似Inception,它采用等组合方式对原始卷积进行增强。对于分支,我们设置中间通道数等于输入通道数并将卷积初始化为Identity矩阵;其他分支则采用常规方式初始化。此外,在每个卷积后都添加BN层用于提供训练时的非线性,这对于性能提升很有必要。

Experiments

为验证所提方案的有效性,我们在CIFAR、ImageNet、Cityscapes、COCO等数据集上进行相关实验对比。下表提供了不同数据集、不同任务上的超参配置。
image-20210326101349970
image-20210326101437529
我们先来看一下CIFAR与ImageNet上的性能对比,结果见上表。可以看到:
  • 在CIFAR10与CIFAR100数据上,DBB可以提升VGG16性能高达0.67%与1.67%;
  • 在ImageNet数据集上,DBB可以提升AlexNet性能达1.96%;可以提升MobileNet0.99%;可以提升ResNet18/50达到1.45%/0.57%。
  • 相比DBB的一个特例ACNet,DBB性能提升更明显。这意味着:采用类似Inception方式组合多路径不同复杂度的分支可能比简单的多尺度卷积更有益于提升模型性能
image-20210326101947314
与此同时,我们还从权值幅值角度分支了不同分支的重要性。可以看到:
  • 三个分支的重要性相当;
  • 对于stride=2的DBB,更为重要,这意味着:均值池化对于下采样很有用。
  • 对于stride=1的DBB,卷积很有益处。DBB的这种多分支方式可以自适应的组合学习不同尺度的信息。
image-20210326102522332
我们再来看一下目标检测(CenterNet)与语义分割(PSPNet)方面的性能对比,见上表。可以看到:DBB同样可以带来显著的性能提升。
image-20210326102629302
最后,我们再来看一个DBB的各个分支的消融实验分析,结果见上表。从中可以看到:
  • 移除任意一个分支都会导致性能的下降,这意味每个分支都很重要;
  • 从训练高效角度出发,会是一个不错的选择;
  • 相比多个同尺寸卷积的并行,多分支、不同尺寸、不同模式的DBB设计可以取得更佳的性能提升。这意味着:特征表达能力的提升不仅源自参数量,同时还与分支特征的灵活性有关。
最后的最后,我们附上几个DBB的变种,见下图,注:这几种变种的性能均不及前述DBB结构。
image-20210326103244608
全文到此结束,更多消融实验与分析建议各位同学查看原文。

推荐阅读

  1. 你的感知损失可能用错了,沈春华团队提出随机权值广义感知损失
  2. CVPR2021|超分性能不变,计算量降低50%,董超等人提出用于low-level加速的ClassSR
  3. SANet|融合空域与通道注意力,南京大学提出置换注意力机制
  4. GhostSR|针对图像超分的特征冗余,华为诺亚&北大联合提出GhostSR
  5. 图像超分中的那些知识蒸馏
  6. ICLR2021 | 显著提升小模型性能,亚利桑那州立大学&微软联合提出SEED
  7. RepVGG|让你的ConVNet一卷到底,plain网络首次超过80%top1精度
  8. Transformer再下一城!low-level多个任务榜首被占领
  9. 通道注意力新突破!从频域角度出发,浙大提出FcaNet
  10. 无需额外数据、Tricks、架构调整,CMU开源首个将ResNet50精度提升至80%+新方法
  11. 46FPS+1080Px2超分+手机NPU,arm提出一种基于重参数化思想的超高效图像超分方案
  12. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 ICLR 2021
继续阅读
阅读原文