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

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

点击进入—> CV 微信技术交流群

转载自:AIWalker

Conv2Former: A Simple Transformer-Style ConvNet for Visual Recognition

本文旨在通过充分利用卷积探索一种更高效的编码空域特征的方式:通过组合ConvNet与ViT的设计理念,本文利用卷积调制操作对自注意力进行了简化,进而构建了一种新的ConvNet架构Conv2Former。ImageNet分类、COCO检测以及ADE20K分割任务上的实验结果表明:所提Conv2Former取得了优于主流ConvNet(如ConvNeXt)、ViT(如Swin Transformer)的性能。

本文方案

上图给出了本文方案架构示意图,类似ConvNeXt、SwinT,Conv2Former采用了金字塔架构,即含四个阶段、四种不同尺寸的特征,相邻阶段之间通过Patch Embedding模块(其实就是一个卷积核与stride均为的卷积)进行特征空间分辨率与通道维度的恶变换。下表给出了不同大小Conv2Former的超参配置,

核心模块

上图给出了经典模块的架构示意图,从经典的残差模块到自注意力模块,再到新一代卷积模块。自注意力模块可以表示为如下形式:

尽管注意力可以更好的编码空域相关性,但其计算复杂性随N而爆炸性增长。

本文则旨在对自注意力进行简化:采用卷积特征对V进行调制。假设输入,所提卷积调制模块描述如下:

需要注意的是:上式中表示Hadamard乘积。上述卷积调制模块使得每个位置的元素与其近邻相关,而通道间的信息聚合则可以通过线性层实现。下面给出了该核心模块的实现代码。

class ConvMod(nn.Module):def __init__(self, dim):super().__init__()self.norm = LayerNorm(dim, eps=1e-6, data_format='channel_first')self.a = nn.Sequential(nn.Conv2d(dim, dim, 1),nn.GELU(),nn.Conv2d(dim, dim, 11, padding=5, groups=dim))self.v = nn.Conv2d(dim, dim, 1)self.proj = nn.Conv2d(dim, dim, 1)def forward(self, x):B, C, H, W = x.shapex = self.norm(x)a = self.a(x)v = self.v(x)x = a * vx = self.proj(x)return x

微观设计理念

Larger Kernel than    如何更好的利用卷积对于CNN设计非常重要!自从VGG、ResNet以来,卷积成为ConvNet的标准选择;Xception引入了深度分离卷积打破了该局面;再后来,ConvNeXt表明卷积核从3提升到7可以进一步改善模型性能。然而,当不采用重参数而进一步提升核尺寸并不会带来性能性能提升,但会导致更高计算负担。

作者认为:ConvNeXt从大于卷积中受益极小的原因在于使用空域卷积的方式。对于Conv2Former,从到,伴随核尺寸的提升可以观察到Conv2Former性能一致提升。该现象不仅发生在Conv2Former-T(),同样在Conv2Former-B得到了体现()。考虑到模型效率,作者将默认尺寸设置为

Weighting Strategy 正如前面图示可以看到:作者采用Depthwise卷积的输出对特征V进行加权调制。需要注意的是,在Hadamard乘积之前并未添加任务规范化层(如Sigmoid、),而这是取得优异性能的重要因素(类似SENet添加Sigmoid会导致性能下降超0.5%)。

Normalization and Activations 对于规范化层,作者参考ViT与ConvNeXt采用了Layer Normalization,而非卷积网络中常用的Batch Normalization;对于激活层,作者采用了GELU(作者发现,LN+GELU组合可以带来0.1%-0.2%的性能提升)。

本文实验

上述两表给出了ImageNet分类任务上不同方案的性能对比,从中可以看到:

  • 在tiny-size(<30M)方面,相比ConvNeXt-T与SwinT-T,Conv2Former-T分别取得了1.1%与1.7%的性能提升。值得称道的是,Conv2Former-N仅需15M参数量+2.2GFLOPs取得了与SwinT-T(28M参数量+4.5GFLOPs)相当的性能。

  • 在base-size方面,相比ConvNeXt-B与SwinT-B,Conv2Former-B仍取得了0.6%与0.9%的性能提升

  • 相比其他主流模型,在相近大小下,所提Conv2Former同样表现更优。值得一提的是,相比EfficientNet-B7,Conv2Former-B精度稍有(84.4% vs 84.3%),但计算量大幅减少(15G vs 37G)。

  • 当采用ImageNet-22K预训练后,Conv2Former的性能可以进一步提升,同时仍比其他方案更优。Conv2Former-L甚至取得了87.7% 的优异指标

采用大核卷积是一种很直接的辅助CNN构建长程相关性的方法,但直接使用大核卷积使得所提模型难以优化。从上表可以看到:当不采用其他训练技术(如重参数、稀疏权值)时,Conv2Former采用时已可取得更好的性能;当采用更大的核时,Conv2Former取得了进一步的性能提升

上表给出了COCO检测任务上不同方案的性能对比,从中可以看到:

  • 在tiny-size方面,相比SwinT-T与ConvNeXt-T,Conv2Former-T取得了2% 的检测指标提升,实例分割指标提升同样超过1%;

  • 当采用Cascade Mask R-CNN框架时,Conv2Former仍具有超1%的性能提升。

  • 当进一步增大模型时,性能优势则变得更为明显;

上表给出了ADE20K分割任务上的性能对比,从中可以看到:

  • 在不同尺度模型下,Conv2Former均具有比SwinT与ConvNeXt更优的性能;

  • 相比ConvNeXt,在tiny尺寸方面性能提升1.3%mIoU,在base尺寸方面性能提升1.1%;

  • 当进一步提升模型尺寸,Conv2Former-L取得了54.3%mIoU,明显优于Swin-L与ConvNeXt-L。

一点疑惑解析

到这里,关于Conv2Former的介绍也就结束了。但是,心里仍有一点疑惑存在:Conv2Former与VAN的区别到底是什么呢?关于VAN的介绍可参考笔者之前的分享:《优于ConvNeXt,南开&清华开源基于大核注意力的VAN架构》。

先来看一下两者的定义,看上去两者并无本质上的区别(均为点乘操作),均为大核卷积注意力

  • VAN:

  • Conv2Former

结合作者开源代码,笔者绘制了上图,左图为Conv2Former核心模块,右图为VAN核心模块。两者差别还是比较明显的!

  • 虽然大核卷积注意力均是其核心,但Conv2Former延续了自注意力的设计范式,大核卷积注意力是其核心;而VAN则是采用传统Bottleneck设计范式大核卷积注意力的作用类似于SE

  • 从大核卷积内在机理来看,Conv2Former仅考虑了的空域建模,而VAN则同时考虑了空域与通道两个维度

  • 在规范化层方面,Conv2Former采用了Transformer一贯的LayerNorm,而VAN则采用了CNN一贯的BatchNorm;

  • 值得一提的是:两者在大核卷积注意力方面均未使用Sigmoid激活函数。两者均发现:使用Sigmoid激活会导致0.2%左右的性能下降。

为更好对比Conv2Former与VAN的性能,特汇总上表(注:GFLOPs列仅汇总了)在Image输入时的计算量Net-1K上的指标进行了对比,可以看到:在同等参数量前提下,两者基本相当,差别仅在0.1%。此外,考虑到作者所提到的“LN+GELU的组合可以带来0.1%-0.2%的性能提升”,两者就算是打成平手了吧,哈哈。

点击进入—> CV 微信技术交流群

CVPR/ECCV 2022论文和代码下载

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

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

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

目标检测和Transformer交流群成立
扫描下方二维码,或者添加微信:CVer222,即可添加CVer小助手微信,便可申请加入CVer-目标检测或者Transformer 微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测或者Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群▲扫码或加微信号: CVer222,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!▲扫码进群
▲点击上方卡片,关注CVer公众号
整理不易,请点赞和在看

超越ConvNeXt!Conv2Former:用于视觉识别的Transformer风格的ConvNet相关推荐

  1. 【YOLOv7/YOLOv5系列改进NO.50】超越ConvNeXt!Conv2Former:用于视觉识别的Transformer风格的ConvNet

    文章目录 前言 一.解决问题 二.基本原理 三.​添加方法 四.总结 前言 作为当前先进的深度学习目标检测算法YOLOv7,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的 ...

  2. ICCV2021 | 用于视觉跟踪的学习时空型transformer

    前言  本文介绍了一个端到端的用于视觉跟踪的transformer模型,它能够捕获视频序列中空间和时间信息的全局特征依赖关系.在五个具有挑战性的短期和长期基准上实现了SOTA性能,具有实时性,比Sia ...

  3. 【深度学习】超越ConvNeXt!Transformer 风格的卷积网络视觉基线模型Conv2Former

    作者丨科技猛兽 编辑丨极市平台 导读 本文提出一种卷积调制模块,利用卷积来建立关系,这比注意力机制在处理高分辨率图像时更高效,称为 Conv2Former.作者在 ImageNet 分类.目标检测和语 ...

  4. 【视觉-语言导航-多模态Transformer】谷歌2021年最新提出-用于视觉-语言导航的多模态Transformer,Episodic Transformer

    Episodic Transformer for Vision-and-Language Navigation 前言: 由Inria, 谷歌, 布朗大学2021年最新提出的Episodic Trans ...

  5. 超越 ConvNeXt、RepLKNet | 看 51×51 卷积核如何破万卷!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨集智书童 自从Vision Transformers (ViT) 出现以 ...

  6. FAN(Understanding The Robustness in Vision Transformers)论文解读,鲁棒性和高效性超越ConvNeXt、Swin

    FAN(Understanding The Robustness in Vision Transformers)论文解读,鲁棒性和高效性超越ConvNeXt.Swin < center > ...

  7. 线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨泡泡机器人SLAM 标题: Line as a Visual Sen ...

  8. Learning a Deep Compact Image Representation for Visual Tracking 学习用于视觉跟踪的深度紧凑图像表示

    原文链接 摘要 在本文中,我们研究了跟踪可能非常复杂背景的视频中运动物体轨迹的挑战性问题.与大多数仅在线学习跟踪对象外观的现有跟踪器相比,我们采用不同的方法,受深度学习架构的最新进展的启发,更加强调( ...

  9. (ICCV-2019)用于视频识别的 SlowFast 网络

    用于视频识别的 SlowFast 网络 paper题目:SlowFast Networks for Video Recognition paper是FAIR发表在ICCV 2019的工作 论文地址:链 ...

最新文章

  1. monty python-Monty Python
  2. Dubbo入门介绍---搭建一个最简单的Demo框架
  3. python保存到txt_python 如何将数据写入本地txt文本文件的实现方法
  4. linux php环境搭建_PHP-小程序:(1)开发环境搭建
  5. 爬取虎扑NBA首页主干道推荐贴的一只小爬虫,日常爬不冷笑话解闷
  6. java map byte[],java中byte数组不能作为map的key使用
  7. 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础
  8. tomcat命令linux,Linux下一些操作Tomcat的命令
  9. opencv-api contourArea
  10. Spring事务控制和传递性理解
  11. SEGGER-RTT调试(代替串口printf输出)的使用方法
  12. Win7开机动画不见了
  13. 好友管理系统--python
  14. matlab非线性超定方程组求代数解,非线性超定方程组求解
  15. 将会彻底破坏你的树莓派的六件事(官网翻译)
  16. unity编辑器拓展九——删除场景中丢失的脚本
  17. 基于fpga的方波发生器
  18. [HNOI2019]鱼
  19. 解决超微主板双卡显示器不亮问题
  20. 页面各手机屏幕的尺寸

热门文章

  1. 数仓 元数据管理 Atlas 的使用
  2. 真正的成功,是一群人一起成事
  3. 一些国外的免费网站模板网站
  4. POJ3014(最小覆盖点;匈牙利算法)
  5. OpenShift 4 - 在 CI/CD Pipeline 中创建 KubeVirt 容器虚拟机 - 方法1+2 (视频)
  6. Sabre选择DXC Technology来助力改变未来旅游业,作为两家公司续约多年期协议的一部分
  7. SnapMotion for Mac(Mac从视频中截图软件)
  8. 量化交易入门——数学模型应用于投机交易
  9. java项目分享,学海无涯,未完待续!
  10. NVIDIA DLI——深度学习基础-理论与实践入门