RepLKNet代码地址Github
RepLKNet论文地址Arixiv
有效感受野论文地址Arxiv
本文设计的网络名为RepLKNet(Reparam Large Kernel Network),其证明了少量的大kernel卷积可以获得比堆叠小kernel卷积的网络架构设计更好的效果。RepLKNet使用的最大卷积核大小为 31 ∗ 31 \mathbf{31}*\mathbf{31} 31∗31,是一个纯CNN网络,极大缩减了CNNs和ViTs(Vision Transformer)的性能差距。同时,作者进一步表示,相比较于小Kernel的CNNs,大Kernel的CNNs有更大的有效感受野(effective receptive fields)和更高的形状偏差(higher shape bias),而不是纹理偏差(texture bias)。
RepLKNet的网络架构设计总体遵循Swin Transformer的宏观架构,进行了一些修改,比如使用大Kernel的depthwise Conv代替多头注意力(multi-head self-attention,MHSA)。
本文实验的重点在中型(middle-size)网络和大型(large-size)网络上,因为过去人们认为 ViTs 在大数据和大模型上超过了 CNN(大的kernel size,也小不了呀)。本文的baseline模型RepLKNet-B(和Swin-B模型大小相近)最大的kernel size为 31 ∗ 31 31*31 31∗31,在ImageNet上达到了 84.8 % 84.8\% 84.8%的Top1准确率。RepLKNET-B比Swin-B的性能要好 0.3 % 0.3\% 0.3%,但在延迟上更加高效。在下游任务中,作者发现大Kernel设计的网络实际上提升比在ImageNet上更高。比如,在相同的复杂度和参数预算前提下,RepLKNet设计的网络,对比ResNeXT-101或ResNet-101为backbone的网络,在COCO目标检测上高 4.4 % 4.4\% 4.4%,在ADE20K语义分割上高 6.1 % 6.1\% 6.1%。
作者认为RepLKNet的高性能是因为大的卷积Kernel带来的大的有效感受野(effective receptive fields,ERFs)带来的提升,如下图1所示。同时,RepLKNet可利用更多的形状信息(相比传统的堆叠小kernel CNNs),这部分是符合人类的认知体系的。
有效感受野的相关知识,在2016年的有效感受野论文中提出,但鲜少有人会去使用和基于此计算感受野。
之前ViTs整体表现要优于CNNs的时候,有些论文研究了其中的原因。一些研究认为是MHSA(multi-head self-attention)使得ViTs效果要比CNNs更好。而本文认为CNNs和ViTs性能差距的重点在于感受野上,ViTs使用大kernel,而CNN中使用大Kernel的网络设计则没那么受欢迎。所以作者将疑问放到了“是否使用大Kernel Conv构建的神经网络是缩小CNNs和ViTs差距的关键?”。所以在后续实验中,进行了大Kernel卷积的相关实验。
实验证明,大的Kernel卷积是能有效提升CNNs的性能的,但对CNN简单地应用大卷积核通常会导致性能和速度下降,所以在使用上需要遵循一些设计指导原则。大Kernel卷积网络的设计指导原则有5条,是实验性结果:
据作者所知,CNNs支配小模型,视觉Transformer被认为在高复杂度容量上比CNN要好。本文提供了一种大模型的思路。
本文设计的网络叫RepLKNet,如下图4所示。每个stage有数个RepLK Block,每个Block都带有shortCut和大kernel Depthwise Conv。在每个stage中,都先用 C o n v 1 Conv1 Conv1,再用 D e p t h w i s e C o n v Depthwise\ Conv Depthwise Conv,但下图4没显示的是,depthwise Conv训练的时候有一个 5 ∗ 5 5*5 5∗5 kernel size的重参数分支。
FFN广泛用于transformers和MLPs中。受这些启发,作者使用了一个类似的CNN风格block,它由shortcut,BN,2个 C o n v 1 Conv1 Conv1和GELU组成,故称为ConvFFN Block,如下图4所示。相比较FFN在FC层之前使用的LN(Layer Normalization),ConvFFN使用的BN可以融入Conv中以提升推理速度。依据实践结果,ConvFFN Block中的内部channel为输入的4倍。为提供更多的非线性和跨通道的信息通信,作者使用 C o n v 1 Conv1 Conv1来提高深度。
Transition Block在不同的stage之间使用。先用 C o n v 1 Conv1 Conv1提升channel维度,再用stride为2的 D e p t h w i s e C o n v Depthwise \ Conv Depthwise Conv下采样。
总结下来,RepLKNet的网络设计上,每个stage有3个结构超参数:RepLK Block的数量B,channel维度C和kernel size 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 ] \mathbf{[B1,B2,B3,B4],[C1,C2,C3,C4],[K1,K2,K3,K4]} [B1,B2,B3,B4],[C1,C2,C3,C4],[K1,K2,K3,K4]。
RepLKNet-B为基础模型,其架构参数为 B = [ 2 , 2 , 18 , 2 ] , C = [ 128 , 256 , 512 , 1024 ] , K = [ 31 , 29 , 27 , 13 ] B=[2, 2, 18, 2],\mathbf{C=[128, 256, 512, 1024]}, K=[31, 29, 27, 13] B=[2,2,18,2],C=[128,256,512,1024],K=[31,29,27,13]。RepLKNet-L为大一些的模型,其架构参数为 B = [ 2 , 2 , 18 , 2 ] , C = [ 192 , 384 , 768 , 1536 ] , K = [ 31 , 29 , 27 , 13 ] B=[2, 2, 18, 2],\mathbf{C=[192, 384, 768, 1536]}, K=[31, 29, 27, 13] B=[2,2,18,2],C=[192,384,768,1536],K=[31,29,27,13]。而RepLKNet-XL为最大的模型,其架构参数为 B = [ 2 , 2 , 18 , 2 ] , C = [ 256 , 512 , 1024 , 2048 ] , K = [ 31 , 29 , 27 , 13 ] B=[2, 2, 18, 2],\mathbf{C=[256, 512, 1024, 2048]}, K=[31, 29, 27, 13] B=[2,2,18,2],C=[256,512,1024,2048],K=[31,29,27,13],同时RepLK Blocks中的invert bottleneck的Depchwise Conv Channel数放大 1.5 1.5 1.5倍。
各个网络在ImageNet的准确率和相关参数如下表所示:◇表示使用半监督数据集MegData73K进行了预训练。尽管RepLKNet-XL的FLOPs要比Swin-L高,但RepLKNet-XL更快,这强调了非常大Kernel的性能。
用预训练model作为backbone,在Cityscapes和ADE20K数据集上训练。使用UperNet在Cityscapes上迭代80K次,在ADE20K数据集迭代160K次。因为只想评估backbone,故不适用任何先进技术、技巧或自定义算法。
Cityscapes数据集,在ImageNet-1K上预训练的RepLKNet-B要优于Swin-B一大截(单尺度mIoU提升2.7),甚至优于ImageNet22k上预训练的Swin-L模型。
在ADE20K上的结果。
在COCO目标检测任务上的结果如下。使用RepLKNet作为FCos和Cascade Mask R-CNN的backbone。这两个算法分别是一阶和二阶的目标检测算法。
大kernel的CNN模型比深层小Kernel模型有更大的有效感受野。作者认为,根据有效感受野理论,ERF是与 O ( K L ) \mathbf{O(K\sqrt{L})} O(KL)成比例的,其中 K K K是kernel size, L L L是深度。其次,网络变深了会给训练带来优化困难的问题。下图展示了ResNet-101、ResNeXt-101和RepLKNet的有效感受野,可以看出,浅层的大Kernel有效感受野要大一些。所以大卷积核的设计仅需要更少的层就可以达到预定的有效感受野,同时避免了深度增加带来的优化问题。
大Kernel的模型在形状偏差特征提取会更好,这和人类相近。
大Kernel设计是一个可以通用的设计,也可以使用在ConvNeXt中。使用 31 ∗ 31 31*31 31∗31的depthwise Conv代替ConvNeXt原本的 7 ∗ 7 7*7 7∗7普通卷积能带来巨大的提升。比如 ConvNeXt-Tiny + large Kernel 是要优于 ConvNeXt-Small的,而ConvNeXt + large Kernel 是要优于 ConvNeXt-Base的。
大Kernel模型的表现要比小Kernel带高空洞率(dilation rates)要好。空洞卷积是一个常用的扩大卷积范围的方法.。尽管最大感受野可能一样,但空洞卷积的表达能力要弱很多,准确率下降非常明显,原因则是空洞卷积计算所用的特征非常少。