乐趣区

关于算法:RepLKNet不是大卷积不好而是卷积不够大31×31卷积了解一下-CVPR-2022

论文提出引入多数超大卷积核层来无效地扩充无效感触域,拉近了 CNN 网络与 ViT 网络之间的差距,特地是上游工作中的性能。整篇论文论述非常具体,而且也优化了理论运行的体现,值得读一读、试一试

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

论文: Scaling Up Your Kernels to 31×31: Revisiting Large Kernel Design in CNNs

  • 论文地址:https://arxiv.org/abs/2203.06717
  • 论文代码:https://github.com/megvii-research/RepLKNet

Introduction


 在图像分类、特色学习等前置工作 (pretext task) 以及指标检测、语义宰割等上游工作 (downstream task) 上,卷积网络的性能一直被 ViTs(vision transformer)网络超过。人们普遍认为 ViTs 的性能次要得益于 MHSA(multi-head self-attention)机制,并为此进行了很多钻研,从不同的角度比照 MHSA 与卷积之间的优劣。
 解释 VisTs 与 CNNs 的性能差别不是这篇论文的目标,绝对于钻研 MHSA 和卷积的差别,论文则关注于 ViTs 与 CNNs 在构建长距离地位关系 (long-range spatial connections) 的范式上的差别。在 ViTs 中,MHSA 通常应用较大的感触域 ($\ge 7\times 7$),每个输入都能蕴含较大范畴的信息。而在 CNNs 中,目前的做法都是通过重叠较小($3\times 3$) 的卷积来增大感触域,每个输入所蕴含信息的范畴较小。

 基于下面发现的感触域差别,论文尝试通过引入大量大核卷积层来补救 ViTs 和 CNNs 之间的性能差别。借此提出了 RepLKNet 网络,通过重参数化的大卷积来建设空间关系。RepLKNet 网络基于 Swin Transformer 骨干进行革新,将 MHSA 替换为大的深度卷积,性能比 ViTs 网络更好。另外,论文通过图 1 的可视化发现,引入大卷积核绝对于重叠小卷积能显著晋升无效感触域(ERFs),甚至能够跟 ViTs 一样可能关注形态特色。

Guidelines of Applying Large Convolutions


 间接应用大卷积会导致性能和速度大幅降落,论文通过试验总结了 5 条高效应用大卷积核的准则,每条准则还附带了一个备注。

Guideline 1: large depth-wise convolutions can be efficient in practice.

 大卷积的计算成本很高,参数量和计算量与卷积核大小成二次方关系,而深度卷积恰好能够补救这一毛病。将各 stage 的卷积核从 $[3,3,3,3]$ 规范卷积改为 $[31,29,27,13]$ 深度卷积,仅带来了 18.6% 的计算量减少和 10.4% 的参数量减少。
 但因为计算量和内存拜访数的比值较低,$3\times 3$ 深度卷积在并行设施上的计算效率较低。不过当卷积核变大时,单个特征值被应用的次数减少,深度卷积的计算密度则会相应进步。依据 Roofline 模型,计算密度随着卷积核的增大而增大,计算提早应该不会像计算量那样减少那么多。

  • Remark 1

 如表 1 所示,目前的深度学习框架对深度卷积的实现较为低效。为此,论文尝试了不同的办法来优化 CUDA 内核,最初抉择了 block-wise(inverse) implicit gemm 算法并集成到了 MegEngine 框架中。绝对于 Pytorch,深度卷积带来的计算提早从 49.5% 升高到了 12.3%,简直与计算量成正比。
 具体的相干剖析和实现,能够去看看这篇文章《凭什么 31×31 大小卷积核的耗时能够和 9×9 卷积差不多?》(https://zhuanlan.zhihu.com/p/…)。

Guideline 2: identity shortcut is vital especially for networks with very large kernels.

 为了验证短路连贯对大卷积核的重要性,论文以 MobileNetV2 作为基准,替换其中的深度卷积核大小来进行有无短路连贯的比照。如表 2 所示,在有短路连贯的状况下,大卷积核能带来 0.77% 的性能晋升。而没短路连贯的状况下,大卷积核的准确率升高至 53.98%。

  • Remark 2

     这个准则同样也实用于 ViTs 中。近期有钻研发现,如果移除短路连贯,ViTs 中的注意力会随着深度的减少而双倍地缩小,最初呈现注意力适度平滑的问题。只管大卷积核性能降落的起因可能跟 ViT 不一样,但同样也有难以捕获部分特色的景象。为此,论文认为如参考文献《Residual networks behave like ensembles of relatively shallow
    networks》所说的,短路连贯可能使得模型显式地变为多个不同感触域大小的模型的组合(小感触域与大感触域一直间接累加),从而可能在更大的感触域中失去晋升并且不会失落捕获小尺度特色的能力。

Guideline 3: re-parameterizing with small kernels helps to make up the optimization issue.

 论文将 MobileNetV2 中的 $3\times 3$ 卷积核别离替换为 $9\times 9$ 和 $13\times 13$,再采纳构造重参数帮忙更好地训练。具体的做法如图 2 所示,先将 $3\times 3$ 卷积核替换为更大的卷积核,再并行一个 $3\times 3$ 深度卷积层,通过 BN 解决后将其后果相加作为输入。训练实现后,合并并行的大小卷积层及其 BN 层,失去没有小卷积层的模型。整体思路跟 RepVGG 相似,有趣味的能够去看看公众号之前的文章《RepVGG:VGG,永远的神!| 2021 新文》

 构造重参数的对比方表 3 所示,卷积核从 9 增大到 13 导致了准确率的降落,应用构造重参数则可用解决这个问题。在语义宰割工作中,构造重参数也同样能够解决增大卷积核导致性能降落的问题。

  • Remark 3

     ViTs 在小数据集上会有优化问题,通常须要增加前置卷积层来解决。比方在每个 self-attention 后面增加一个 $3\times 3$ 深度卷积层,这跟论文提出的并行 $3\times 3$ 卷积的做法相似。增加的卷积层能为 ViT 网络事后引入平移不变性和部分特色,使其在小数据集上更容易优化。论文在 RepLKNet 上也发现了相似的景象,当预训练数据集增大到 7300 万时,不再须要构造重参数化来辅助优化。

Guideline 4: large convolutions boost downstream tasks much more than ImageNet classification.

 如后面表 3 所示,绝对于分类工作,卷积核增大为宰割工作带来的收益更多。而表 5 的后果也有相似的景象,大卷积核在 ADE20K 数据集上的晋升更为显著。这表明,即便预训练模型有类似的 ImageNet 性能,但其在上游工作中的性能可能差距较大。

  • Remark 4

     论文认为导致这一景象的起因次要有两点:

  • 大卷积核能显著减少无效感触域(ERF),可蕴含更多的上下文信息,这对上游工作非常要害。
  • 大卷积能疏导网络偏向于学习更多形态特色。图像分类仅须要上下文或形态信息,而指标辨认则十分须要形态信息。所以,偏向于更多形态特色的模型显然更适宜上游工作。ViTs 之所以在上游工作中体现强劲,也是得益于其弱小的形态特征提取能力。相同,ImageNet 预训练的传统卷积网络则偏向于上下文信息。

Guideline 5: large kernel (e.g., 13×13) is useful even on small feature maps (e.g., 7×7).

 为了验证大卷积在小特色图上的有效性,将 MobileNetV2 最初的 stage(特色图大小为 7 ×7)的深度卷积别离扩充至 7 ×7 和 13×13 进行比照,试验构造附带了准则 3 倡议的构造重参数。后果如表 4 所示,只管特色图曾经很小了,增大卷积核仍然能够带来性能晋升。

  • Remark 5

 当小特色图上的卷积核变大时,卷积的平移不变性不再严格成立。如图 3 所示,两个相邻的输入关联了不同的卷积核权值。这刚好合乎 ViTs 的理念,通过放宽对称的先验要求 (如输入要用雷同的卷积权值得到) 来取得更大的辨认能力。乏味的是,transformer 中应用的 2D 绝对地位编码 (其它特色绝对于以后特色的地位) 也可认为是一个卷积核大小为 $(2H-1)\times(2W-1)$ 的深度卷积,其中 $H$ 和 $W$ 别离为特色图的高和宽。所以,大卷积核不仅可能帮忙学习特色间的绝对地位信息,因为要增加较多 padding,还编码了相对地位信息(参考论文《On translation invariance in cnns: Convolutional layers can exploit
absolute spatial location》)。

RepLKNet: a Large-Kernel Architecture


 基于下面的准则,论文提出了 RepLKNet,一个大卷积核的纯 CNN 架构。目前,SOTA 小网络依然以 CNN 为主,所以论文次要在大模型方面与 ViT 进行比拟。

Architecture Specification

 RepLKNet 的构造如图 4 所示,各模块细节如下:

  • Stem:因为 RepLKNet 的次要利用是上游工作,所以须要在网络后期捕获更多的细节。在开始的 stride=2 3×3 卷积下采样之后接一个 3 ×3 深度卷积来提取低维特色,之后接一个 1 ×1 卷积和 3 ×3 深度卷积用于下采样。
  • Stages 1-4:每个 stage 蕴含多个 RepLK Block,block 外面蕴含了准则 1 倡议的深度卷积和准则 2 倡议的短路连贯。依据准则 3,每个深度卷积并行一个 5 ×5 深度卷积用于构造重参数。除了感触域和空间特征提取能力,模型的特色表达能力还和特色的维度无关。为了减少非线性和通道间的信息交换,在深度卷积前用 1 ×1 卷积减少特色维度。参考 transformers 和 MLPs 网络应用的 Feed-Forward Network(FFN),论文提出 CNN 格调的 ConvFFN,蕴含短路连贯、两个 1 ×1 卷积核 GELU。在利用时,ConvFFN 的两头特色个别为输出的 4 倍。参照 ViT 和 Swin,将 ConvFFN 搁置在每个 RepLK Block 前面。
  • Transition Blocks:放在 stage 之间,先用 1 ×1 卷积扩充特色维度,再通过两个 3 ×3 深度卷积来进行 2 倍下采样。

 总的来说,每个 stage 有 3 个超参数:ReLK Block 数 $B$、维度数 $C$ 以及卷积核大小 $K$,所以一个 RepLKNet 的构造可表白为 $[B_1, B_2, B_3, B_4]$, $[C_1, C_2, C_3, C_4]$, $[K_1, K_2, K_3, K_4]$。

Making Large Kernels Even Larger

 论文固定 $B=[2,2,18,2]$ 以及 $C=[128,256,512,1024]$,简略调整 $K$ 提出了 5 个不同大小的网络,称为 RepLKNet-3/7/13/25/31。在没有非凡调整训练配置状况下,各模型的参数和性能如表 5 所示。
 另外,论文还对训练配置进行细调以便于与 SOTA 模型比照,该模型称为 RepLKNet-31B。在此基础上,调整超参数 $C=[192,384,768,1536]$ 失去 RepLKNet-31L。进一步调整超参数 $C=[256,512,1024,2048]$ 失去 RepLKNet-31XL,该网络的 RepLK Blocks 的两头特色为输出的 1.5 倍。

Discussion


Large-Kernel CNNs have Larger ERF than Deep Small-Kernel Models

 一般来说,重叠的小卷积最终也能达到跟单个大卷积一样的感触域大小,但为什么传统网络的性能要低于大卷积核网络呢?论文认为,只管能达到同样大小的感触域,单层大卷积核要比多层小卷积更无效,次要有两点:

  • 依据无效感触域个性,其大小与 $\mathcal{O}(K\sqrt{L})$ 成比例关系。能够看到,无效感触域与卷积核大小成线性关系,而与深度成次线性关系。
  • 深度的减少会带来训练问题。只管 ResNet 仿佛曾经解决了这个问题,但近期有钻研表明,ResNet 的无效感触域并没有随着深度减少而显著减少。

 所以大卷积核的设计仅须要更少的层就能够达到预约的无效感触域,同时防止了深度减少带来的优化问题。

 论文也对 ResNet 和 RepLKNet 的无效感触域进行可视化和统计,发现 RepLkNet 整体无效感触域要大于 ResNet。

Large-kernel Models are More Similar to Human in Shape Bias

 有钻研发现 ViT 更靠近人体视觉,基于指标的形态进行预测,而 CNN 则更多地依赖部分上下文。论文借用 https://github.com/bethgelab/… 的工具来计算模型的形态特色的偏差性,失去图 5 的后果,后果越低越好。从后果来看,大卷积核的 RepLKNet 更重视形态特色,当卷积核缩小时,RepLKNet- 3 则变为更重视上下文特色。

Dense Convolutions vs. Dilated Convolutions

 空洞卷积是一个罕用的扩充卷积范畴的办法,所以论文对空洞深度卷积和一般深度卷积进行了比照。如表 11 所示,只管最大感触域可能一样,但空洞深度卷积的表达能力要弱很多,准确率降落非常明显。这也是合乎预期的,尽管空洞卷积的感触域较大,但其计算用的特色非常少。

Experiment


 ImageNet 图像分类性能比照。

 Cityscapes 语义宰割性能比照。

 ADE20K 语义宰割性能比照。

 MSCOCO 指标检测性能比照。

Conclusion


 论文提出引入多数超大卷积核层来无效地扩充无效感触域,拉近了 CNN 网络与 ViT 网络之间的差距,特地是上游工作中的性能。整篇论文论述非常具体,而且也优化了理论运行的体现,值得读一读、试一试。



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

退出移动版