CVPR 2022 | 卷积核大到31x31!涨点又高效!清华&旷视提出RepLKNet:视觉主干新网络...

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

本文转载自:丁司图公众号

你有多久没调过kernel size了?

当你在卷积网络(CNN)的深度、宽度、groups、输入分辨率上调参调得不可开交的时候,是否会在不经意间想起,有一个设计维度,kernel size,一直如此显而易见却又总是被忽视,总是被默认设为3x3或5x5?

当你在Transformer上调参调得乐不思蜀的时候,是否希望有一种简单、高效、部署容易、下游任务性能又不弱于Transformer的模型,带给你朴素的快乐?

我们发表于CVPR 2022的工作表明,CNN中的kernel size是一个非常重要但总是被人忽略的设计维度,在现代模型设计的加持下,卷积核越大越暴力,既涨点又高效,甚至大到31x31都非常work(如下表所示,左边一栏表示模型四个stage各自的kernel size)!即便在大体量下游任务上,我们提出的超大卷积核模型RepLKNet与Swin等Transformer相比,性能也更好或相当!

53c947add7380da0ec94913082ba1aff.png

Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs

论文:https://arxiv.org/abs/2203.06717

MegEngine代码和模型:

https://github.com/megvii-research/RepLKNet

PyTorch代码和模型:

https://github.com/DingXiaoH/RepLKNet-pytorch

0a20092d6d5f44c0335ca406303fa503.png


太长不看版

以下是两分钟内可以看完的内容总结

A. 我们对业界关于CNN和Transformer的知识和理解有何贡献?

我们挑战了以下习惯认知:

1. 超大卷积不但不涨点,而且还掉点?我们证明,超大卷积在过去没人用,不代表其现在不能用。人类对科学的认知总是螺旋上升的,在现代CNN设计(shortcut,重参数化等)的加持下,kernel size越大越涨点!

2. 超大卷积效率很差?我们发现,超大depth-wise卷积并不会增加多少FLOPs。如果再加点底层优化,速度会更快,31x31的计算密度最高可达3x3的70倍

3. 大卷积只能用在大feature map上?我们发现,在7x7的feature map上用13x13卷积都能涨点

4. ImageNet点数说明一切?我们发现,下游(目标检测、语义分割等)任务的性能可能跟ImageNet关系不大

5. 超深CNN(如ResNet-152)堆叠大量3x3,所以感受野很大?我们发现,深层小kernel模型有效感受野其实很小。反而少量超大卷积核的有效感受野非常大

6. Transformers(ViT、Swin等)在下游任务上性能强悍,是因为self-attention(Query-Key-Value的设计形式)本质更强?我们用超大卷积核验证,发现kernel size可能才是下游涨点的关键

B. 我们做了哪些具体的工作?

1. 通过一系列探索性的实验,总结了在现代CNN中应用超大卷积核的五条准则

    a. 用depth-wise超大卷积,最好再加底层优化(已集成进开源框架MegEngine

    b. 加shortcut

    c. 用小卷积核做重参数化(即结构重参数化方法论,见我们去年的RepVGG,参考文献[1])

    d. 要看下游任务的性能,不能只看ImageNet点数高低

    e. 小feature map上也可以用大卷积,常规分辨率就能训大kernel模型

2. 基于以上准则,简单借鉴Swin Transformer的宏观架构,提出一种架构RepLKNet,其中大量使用超大卷积,如27x27、31x31等。这一架构的其他部分非常简单,都是1x1卷积、Batch Norm等喜闻乐见的简单结构,不用任何attention。

3. 基于超大卷积核,对有效感受野shape bias(模型做决定的时候到底是看物体的形状还是看局部的纹理?)、Transformers之所以性能强悍的原因等话题的讨论和分析。我们发现,ResNet-152等传统深层小kernel模型的有效感受野其实不大,大kernel模型不但有效感受野更大而且更像人类(shape bias高),Transformer可能关键在于大kernel而不在于self-attention的具体形式。例如,下图分别表示ResNet-101、ResNet-152、全为13x13的RepLKNet、kernel大到31x31的RepLKNet的有效感受野,可见较浅的大kernel模型的有效感受野非常大。

546534f445f420a617ad4b0a2215a91d.png

C. 提出的架构RepLKNet效果如何?

1. ImageNet上,与Swin-Base相当。在额外数据训练下,超大量级模型最高达到87.8%的正确率。超大卷积核本来不是为刷ImageNet设计的,这个点数也算是可以让人满意。

2. Cityscapes语义分割上,仅用ImageNet-1K pretrain的RepLKNet-Base,甚至超过了ImageNet-22K pretrain的Swin-Large。这是跨模型量级、跨数据量级的超越

3. ADE20K语义分割上,ImageNet-1K pretrain的模型大幅超过ResNet、ResNeSt等小kernel传统CNN。Base级别模型显著超过Swin,Large模型与Swin相当。超大量级模型达到56%的mIoU

4. COCO目标检测上,大幅超过同量级的传统模型ResNeXt-101(超了4.4的mAP),与Swin相当,在超大量级上达到55.5%的mAP

下面是详细介绍

初衷:我们为什么需要超大kernel size?

在当今这个时代,我们再去研究听起来就很复古的大kernel,是为什么呢?

1. 复兴被“错杀”的设计元素,为大kernel正名。在历史上,AlexNet曾经用过11x11卷积,但在VGG出现后,大kernel逐渐被淘汰了,这标志着从浅而kernel大到深而kernel小的模型设计范式的转变。这一转变的原因包括大家发现大kernel的效率差(卷积的参数量和计算量与kernel size的平方成正比)、加大kernel size反而精度变差等。但是时代变了,在历史上不work的大kernel,在现代技术的加持下能不能work呢?

2. 克服传统的深层小kernel的CNN的固有缺陷。我们曾经相信大kernel可以用若干小kernel来替换,比如一个7x7可以换成三个3x3,这样速度更快(3x3x3< 1x7x7),效果更好(更深,非线性更多)。有的同学会想到,虽然深层小kernel的堆叠容易产生优化问题,但这个问题已经被ResNet解决了(ResNet-152有50层3x3卷积),那么这种做法还有什么缺陷呢?——ResNet解决这个问题的代价是,模型即便理论上的最大感受野很大,实质上的有效深度其实并不深(参考文献2),所以有效感受野并不大。这也可能是传统CNN虽然在ImageNet上跟Transformer差不多,但在下游任务上普遍不如Transformer的原因。也就是说,ResNet实质上帮助我们回避了“深层模型难以优化”的问题,而并没有真正解决它。既然深而kernel小的模型有这样的本质问题,浅而kernel大的设计范式效果会如何呢

3. 理解Transformer之所以work的原因。已知Transformer性能拔群,特别是在检测、分割等下游任务上。Transformer的基本组件是self-attention,而self-attention的实质是在全局尺度或较大的窗口内进行Query-Key-Value运算。那么Transformer性能强悍的原因是什么,是Query-Key-Value的设计形式吗?我们猜测,会不会“全局尺度或较大的窗口”才是关键?对应到CNN中,这就需要用超大卷积核来验证

探索实验

为了搞明白大kernel到底应该怎么用,我们在MobileNet V2上进行了一系列探索实验,总结出五条准则。这里略去细节只说结论:

1. 用depth-wise大kernel,完全可以做到相当高效。在我们的优化(已经集成进开源框架MegEngine)下,31x31 depth-wise卷积的用时最低可达3x3卷积的1.5倍,而前者的FLOPs是后者的106倍(31x31/9),这意味着前者的效率是后者的71倍!

2. 不带identity shortcut,增大kernel会大幅掉点(ImageNet掉了15%);带shortcut,增大kernel才会涨点。

3. 如果要想进一步加大kernel size,从大kernel到超大kernel,可以用小kernel做结构重参数化(参考文献1)。也就是说,在训练的时候并行地加一个3x3或5x5卷积,训练完成后将小kernel等价合并到大kernel里面去。这样,模型就可以有效捕捉到不同尺度的特征。不过我们发现,数据集越小、模型越小,重参数化越重要。反之,在我们的超大规模数据集MegData73M上,重参数化提升很小(0.1%)。这一发现跟ViT类似:数据规模越大,inductive bias越不重要。

4. 我们要的是在目标任务上涨点,而不是ImageNet上涨点,ImageNet的精度跟下游任务不一定相关。随着kernel size越来越大,ImageNet上不再涨点,但是Cityscapes、ADE20K语义分割上还能涨一到两个点,而增大kernel带来的额外的参数量和计算量很少,性价比极高!

5. 有点反直觉的是,在7x7的小feature map上用13x13也可以涨点!也就是说,大kernel模型不一定需要大分辨率来训,跟小kernel模型差不多的训练方法就可以,又快又省!

RepLKNet:超大卷积核架构

我们以Swin作为主要的对比对象,并无意去刷SOTA,所以简单借鉴Swin的宏观架构设计了一种超大卷积核架构。这一架构主要在于把attention换成超大卷积和与之配套的结构,再加一点CNN风格的改动。根据以上五条准则,RepLKNet的设计元素包括shortcut、depth-wise超大kernel、小kernel重参数化等。

c6ae0a7f0e24344ac32e7ab19e17c463.png

增大kernel size:越大越暴力!

我们给RepLKNet的四个stage设定不同的kernel size,在ImageNet和ADE20K语义分割数据集上进行实验,结果颇为有趣:ImageNet上从7x7增大到13x13还能涨点,但从13x13以后不再涨点;但是在ADE20K上,从四个stage均为13增大到四个stage分别为31-29-27-13,涨了0.82的mIoU,参数量只涨了5.3%,FLOPs只涨了3.5%。所以后面的实验主要用31-29-27-13的kernel size,称为RepLKNet-31B,并将其整体加宽为1.5倍,称为RepLKNet-31L。

a7b3d1f92497d2f8a61db9e98d289033.png

Cityscapes语义分割

RepLKNet-31B的体量略小于Swin-Base,在仅仅用ImageNet-1K pretrain前提下,mIoU超过Swin-Large + ImageNet-22K,完成了跨模型量级、跨数据量级的超越

1790c3405a2cfe4b32c46d0c6cd4faeb.png

ADE20K语义分割

RepLKNet相当能打,特别是Base级别。跟量级差不多的ResNet相比,mIoU高了6.1,体现出了少量大kernel相对于大量小kernel的显著优势。(COCO目标检测上也有相同结论,RepLKNet-31B的mAP比体量相当的ResNeXt-101高了4.4)。RepLKNet-XL是更大级别的模型,用私有数据集MegData-73M进行预训练,达到了56.0的mIoU(跟ViT-L相比,这个模型其实并不算很大)。

43e71cbe91b210777940577cbf999149.png

ImageNet分类、COCO目标检测

结果参见“太长不看”部分或论文。

讨论与分析

有效感受野:大kernel模型远超深层小kernel模型

我们可视化了RepLKNet-31、RepLKNet-13(前文所说的每个stage都是13x13的模型)、ResNet-101、ResNet-152的有效感受野(方法详见论文)发现ResNet-101的有效感受野其实很小,而且ResNet-152相对于101的提升也很小;RepLKNet-13的有效感受野很大,而RepLKNet-31通过增大kernel size进一步将有效感受野变得非常大

8fdfc8f6a6e6a57b65ca84394779f889.png

Shape bias:大kernel模型更像人类

我们又研究了模型的shape bias(即模型有多少比例的预测是基于形状而非纹理做出的),人类的shape bias在90%左右,见下图左边的菱形点。我们选用的模型包括Swin、ResNet152、RepLKNet-31和RepLKNet-3(前文提到的每个stage都是3x3的小kernel baseline),发现RepLKNet-3和ResNet-152的kernel size一样大(3x3),shape bias也非常接近(图中的两条竖直实线几乎重合)。有意思的是,关于shape bias的一项工作提到ViT(全局attention)的shapebias很高(参见参考文献3中的图),而我们发现Swin(窗口内局部attention)的shape bias其实不高(下图),这似乎说明attention的形式不是关键,作用的范围才是关键,这也解释了RepLKNet-31的高shape bias(即更像人类)

e538cd8e73c110591f827ce97ace07e1.png

上面论文PDF和代码下载

后台回复:RepLKNet即可下载论文和代码

后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集

后台回复:ICCV2021,即可下载ICCV 2021论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的3篇Transformer综述PDF

CVer-Transfomer交流群成立
扫码添加CVer助手,可申请加入CVer-Transformer微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。
一定要备注:研究方向+地点+学校/公司+昵称(如Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加小助手微信,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!

▲扫码进群
▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我没有找到关于CVPR2022卷积动作识别的相关信息。CVPR2022计算机视觉和模式识别领域的国际会议,主要涵盖了图像分类、目标检测、目标跟踪、点云与语义分割、GAN、超分辨率、人脸检测与识别、动作行为与时空运动、模型压缩和量化剪枝、迁移学习、人体姿态估计等多个方向的内容。但是关于CVPR2022卷积动作识别的具体论文或研究我无法提供。如果您有其他关于CVPR2022的问题,我会尽力帮助您回答。 #### 引用[.reference_title] - *1* *3* [CVPR2022106篇论文整理|包含目标检测、动作识别、图像处理等32个方向](https://blog.csdn.net/weixin_47196664/article/details/123785328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [CVPR 2022106篇论文分方向整理|包含目标检测、动作识别、图像处理等32个方向](https://blog.csdn.net/Extremevision/article/details/123585539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值