【ICCV2023】Scale-Aware Modulation Meet Transformer

Scale-Aware Modulation Meet Transformer, ICCV2023

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

代码:https://github.com/AFeng-x/SMT

解读:ICCV2023 | 当尺度感知调制遇上Transformer,会碰撞出怎样的火花? - 知乎 (zhihu.com)

摘要

本文提出了一种新的视觉变换器——尺度感知调制变换器(Scale-Aware Modulation Transformer, SMT),通过将CNN和ViT相结合,可以有效地处理各种下游任务。SMT中提出的尺度感知调制(SAM)包括两个主要的新颖设计:

  • 多头混合卷积(MHMC)模块,该模块可以捕捉多尺度特征并扩展感受野。
  • 规模感知聚合(SAA)模块,该模块重量轻但有效,能够实现不同头部的信息融合。通过利用这两个模块,卷积调制得到了进一步增强。

此外,本文提出一种进化混合网络(Evolutionary Hybrid Network,EHN),它可以有效地模拟随着网络变得更深而从捕获局部依赖性到全局依赖性的转变,从而获得更优的性能。在ImagNet、COCO以及ADE20k等任务上都验证了该模型的有效性。SMT在ImageNet-22k上预训练后以仅仅80.5M的参数量在ImageNet-1k上达到了88.1%的精度。

简介

对于多层级的网络架构来说,由于浅层特征图分辨率大的原因,使用ViT的自注意力的二次复杂性会带来严重的计算负担。因此,如何为浅层stage设计高效的attention计算机制是十分重要的。

  • 以往的大部分Hierarchical(Multi-scale)的模型,以Swin为代表,以及CvT,PvT,Shunted Transformer等等,其贡献点都是设计一种更高效的attention计算单元。
  • 另外一些方法并不直接改善attention,而是将CNN与Transformer结构混合,降低计算成本,并融合两种结构的优势。

ViT论文中提出,Transformer模型的注意力捕捉依赖关系为,浅层捕捉local信息,深层捕捉global信息,而这种特性在多层级网络架构上也会出现。在浅层使用CNN替代Transformer可以有效地降低attention计算成本,还能更好地建模局部信息。

但,简单地把卷积直接作用于特征图并不能有效获取所需信息。卷积调制网络,利用卷积调制可以聚合周围的上下文并自适应地调制,使得其建模能力更强。

因此,本文提出一种新的卷积调制,尺度感知调制(Scale-Aware Modulation,SAM),包括两个模块:多头混合卷积(Multi-Head Mixed Convolution,MHMC) 和 尺度感知聚合(Scale-Aware Aggregation,SAA)

  • MHMC模块旨在增强感受野并同时捕捉多尺度特征。
  • SAA模块旨在有效地聚合不同头部的功能,同时保持轻量级架构。

尽管有这些改进,但SAM在捕捉长期依赖方面没有达到自我关注机制。为此,提出了一种新的混合调制变压器架构,称为进化混合网络(Evolutionary Hybrid Network,EHN)。

  • 具体而言,在前两个阶段引入SAM区块,在后两个阶段纳入Transformer区块,同时在倒数第二阶段引入新的堆叠策略。该体系结构不仅模拟了从浅层到深层的长程依赖关系的变化,而且使每个阶段的每个块都能匹配其计算特性,从而提高了各种下游任务的性能。

总体而言,提出的架构称为尺度感知调制转换器(SMT)。

SMT方法

SMT网络包括四个阶段,每个阶段的下采样率为{4, 8, 16, 32}。

  • 首先在前两个阶段采用尺度感知调制(SAM),
  • 然后在倒数第二个阶段中依次堆叠一个SAM Block和一个多头自注意力(MSA) Block,以建模从捕捉局部到全局依赖关系的转变。
  • 对于最后一个阶段,仅使用MSA块来有效地捕捉长距离依赖关系。

Scale-Aware Modulation

SAM模块包括两个关键部分:MHMC 和 SAA 。 

 Multi-Head Mixed Convolution(MHMC)

引入了具有不同卷积核大小的多个卷积层,使其能够捕捉多个尺度上的空间特征。当N head设置得较大时,能够引入大卷积核来扩大感受野,增强其建模长距离依赖关系的能力。如图2(b)所示,MHMC将输入通道分为N个头,对每个头应用独立的深度可分离卷积。将卷积核大小初始化为3x3,并逐头递增。通过调整头的数量来调节感受野的范围和多粒度信息。

​​​​

如图4(a)所示,每个不同的卷积特征图都学习以自适应的方式关注不同的粒度特征,正如预期的那样。值得注意的是,当通过可视化图中的调制图来比较单头和多头时。4(b),发现多头下的可视化在第一阶段准确地描绘了前景和目标对象,同时有效地过滤了背景信息。此外,随着网络的深入,它仍然可以呈现目标对象的整体形状,而与细节相关的信息在单头卷积下丢失。这表明,MHMC在浅层阶段比单个头部更好地捕捉局部细节,同时随着网络的深入,保持目标对象的详细和语义信息。

Scale-Aware Aggregation

为了增强MHMC中多个头之间的信息交互,引入了一种新的轻量化聚合模块,称为多尺度感知聚合(SAA),如图2(c)所示。SAA首先对MHMC生成的不同粒度的特征进行重组和分组。具体而言,从每个头中选择一个通道来构建一个组,然后在每个组内进行up-down的特征融合,从而增强多尺度特征的多样性。Num_group = C / N_head,C为输入通道数,这意味着组的数量与MHMC中头的数量成反比,每个组里只包含N个特征通道。随后,使用1x1卷积进行组内-组间模式的跨组信息融合,从而实现轻量且高效的聚合效果。

图5显示,SAA模块明确地增强了语义相关的低频信号,并精确地关注了目标对象的最重要部分。例如,在第2阶段,眼睛、头部和身体被清楚地突出显示为目标对象的基本特征,从而显著提高了分类性能。与卷积映射预聚合相比,SAA模块展示了更好的能力来捕捉和表示视觉识别任务的基本特征。

Scale-Aware Modulation Transformer

在使用MHMC捕捉多尺度空间特征并通过SAA进行聚合后,获得一个输出特征图,称为调制器Modulator。然后,使用标量乘积采用这个调制器来调制 V。

 

Evolutionary Hybrid Network 

提出根据网络的捕捉范围依赖关系的变化模式重新分配适当的计算模块,以实现更好的计算性能。提出两种混合堆叠策略用于倒数第二个阶段,(i) 依次堆叠一个SAM块和一个MSA块。(ii) 在stage的前半部分使用SAM块,在后半部分使用MSA块。(i)混合堆叠策略更加有效。

计算了倒数第二个阶段中MSA块的相对感受野。浅层layer的相对感受野开始阶段有一个轻微的下降趋势。这种下降可以归因于SAM对早期MSA Block的影响,将这种现象称为计算单元磨合适应期。而随着网络的加深,可以看到感受野呈平稳上升的趋势,这表明提出的进化混合网络有效地模拟了从局部到全局依赖捕捉的过渡。

实验

对比实验

分类任务: 

 

目标检测任务: 

 

分割任务: 

 

 消融实验

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Nodejs】Node.js简介

1.前言 Node 的重要性已经不言而喻,很多互联网公司都已经有大量的高性能系统运行在 Node 之上。Node 凭借其单线程、异步等举措实现了极高的性能基准。此外,目前最为流行的 Web 开发模式是前后端分离的形式,即前端开发者与后端开发者在自己喜…

关于若依导出表格隐藏功能延伸--适用于表格导入更新

关于若依导出表格隐藏功能延伸--适用于表格导入更新 编写目的若依现有隐藏策略根据业务需要进行修正编写原理 优化 编写目的 若依框架中,已经自带了表格导出功能,但是有时根据业务要求需要导出后进行修改后更新的操作,如果数据量大且数据库设…

docker清缓存、日志、无用镜像

docker清缓存、日志、无用镜像 docker system df查看docker各类型文件占用情况 docker system df该命令列出了 docker 使用磁盘的 4 种类型: Images: 所有镜像占用的空间,包括拉取的镜像、本地构建的镜像 Containers: 运行中的容器所占用的空间&#x…

Gitlab 合并分支与请求合并

合并分支 方式一:图形界面 使用 GitGUI,右键菜单“GitExt Browse” - 菜单“命令” - 合并分支 方式二:命令行 在项目根目录下打开控制台,注意是本地 dev 与远程 master 的合并 // 1.查看本地分支,确认当前分支是否…

2、HAproxy调度算法

HAProxy的调度算法可以大致分为以下几大类: 静态算法:这类算法的调度策略在配置时就已经确定,并且不会随着负载的变化而改变。常见的静态算法有: Round Robin(轮询) Least Connections(最少连接数) Static-Weight(静态权重) Sourc…

day4 驱动开发 c语言学习

不利用系统提供的register_chrdev&#xff0c;自己实现字符设备的注册 底层代码 led.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include "head.h…

QSlider 样式 Qt15.15.2 圆形滑块

在看文档的时候测试了一下demo&#xff0c;然后发现了一个有意思的东西&#xff0c;自定义滑块为带边框的圆形。 在设置的时候边框总是和预期的有点误差&#xff0c;后来发现了这样一个计算方式可以画一个比较标准的圆。&#xff08;ABCDEF在下方代码块内&#xff09; 滑块的…

Kubernetes 之CNI 网络插件大对比

介绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求&#xff0c;但在实现方面也具有一定的灵活性。因此&#xff0c;业界已有不少不同的网络方案&#xff0c;来满足特定的环境和要求。 CNI意为容器网络接…

MultipartFile重命文件名(中文文件名修改成英文)

思路&#xff1a;把MultipartFile先存到项目目录下&#xff08;或者磁盘&#xff09;&#xff0c;存的时候修改文件名&#xff0c;再读取出来转成MultipartFile 1.实现代码&#xff1a;MultipartFile先存到项目目录&#xff0c;再读取出来File public static MultipartFile n…

K8S集群管理:用名字空间分隔系统资源

Kubernetes 的名字空间并不是一个实体对象&#xff0c;只是一个逻辑上的概念。它可以把集群切分成一个个彼此独立的区域&#xff0c;然后我们把对象放到这些区域里&#xff0c;就实现了类似容器技术里 namespace 的隔离效果&#xff0c;应用只能在自己的名字空间里分配资源和运…

【iOS】—— 持久化

文章目录 数据持久化的目的iOS中数据持久化方案数据持久化方式分类内存缓存磁盘缓存 沙盒机制获取应用程序的沙盒路径沙盒目录的获取方式 持久化数据存储方式XML属性列表Preferences偏好设置&#xff08;UserDefaults&#xff09;数据库存储什么是序列化和反序列化&#xff0c;…

Hadoop概念学习(无spring集成)

Hadoop 分布式的文件存储系统 三个核心组件 但是现在已经发展到很多组件的s 或者这个图 官网地址: https://hadoop.apache.org 历史 hadoop历史可以看这个: https://zhuanlan.zhihu.com/p/54994736 优点 高可靠性&#xff1a; Hadoop 底层维护多个数据副本&#xff0c;所…

工程师分享:如何解决传导干扰?

电磁干扰 EMI 中电子设备产生的干扰信号是通过导线或公共电源线进行传输&#xff0c;互相产生干扰称为传导干扰。传导干扰给不少电子工程师带来困惑&#xff0c;如何解决传导干扰&#xff1f; 找对方法&#xff0c;你会发现&#xff0c;传导干扰其实很容易解决&#xff0c;只要…

Rust中的iter(), into_iter(), iter_mut()

在Rust中&#xff0c;iter(), into_iter(), iter_mut()都是用于在集合类型上创建迭代器的方法。这三个方法各有不同&#xff0c;下面一一进行介绍。 iter(): iter() 方法创建一个不可变的引用迭代器。当你只想读取集合中的元素&#xff0c;而不想改变它们或消耗集合时&#xff…

网页配色之黄金分割法 优漫动游

妇孺皆知&#xff0c;数学上有一个黄金分隔点--0.618。传闻用次比率数分隔是最具美感的&#xff0c;从美眉身体到高楼兴办&#xff0c;从事艺术工作术到美术无不出其之左&#xff0c;所以被称为"神秘的"黄金分隔点。与此同声&#xff0c;人们也对其举行了洪量的接洽&…

Jmeter基础篇(17)Jmeter中Stop和X的区别

一、前言 在Apache JMeter中&#xff0c;Stop和X之间存在一些区别。虽然它们都是用于结束测试的不同方法&#xff0c;但它们在实施方式和效果上存在一些差异。 二、Jmeter中的Stop 首先&#xff0c;让我们了解一下Stop。 在JMeter中&#xff0c;Stop是指在测试结束时关闭线…

redis单线程速度又快

Redis之所以在单进程单线程的情况下能够如此快速&#xff0c;主要有以下几个方面的原因&#xff1a; 纯内存操作&#xff1a;Redis将数据存储在内存中&#xff0c;而不是磁盘上。内存的读写速度远高于磁盘&#xff0c;因此Redis能够以极快的速度进行数据的读写操作。 非阻塞I…

css实现步骤条中的横线

实现步骤中的横线&#xff0c;我们使用css中的after选择器&#xff0c;content写空&#xff0c;然后给这个范围设定一个绝对定位&#xff0c;相当于和它设置伪类选择的元素的位置&#xff0c;直接看代码&#xff1a; const commonStyle useMemo(() > ({fontSize: 30px}),[]…

前端开发中的微服务架构设计

前端服务化和小程序容器技术为前端应用带来了更好的组织结构、可维护性和可扩展性。这些技术的应用将促进前端开发的创新和发展&#xff0c;使团队能够更好地应对复杂的前端需求和业务挑战。通过将前端视为一个服务化的架构&#xff0c;我们能够构建出更强大、可靠且可持续的前…

scp命令----跨服务器传输文件

scp命令 Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的&#xff0c;rcp 是不加密的&#xff0c;scp 是 rcp 的加强版。 一、Linux scp 命令 以下是scp命令常用的…