Inception Transformer
paper链接: https://arxiv.org/abs/2205.12956v2
code链接: https://github.com/sail-sg/iFormer
Inception Transformer
- 一、引言
- 二、实现细节
- 三、实验
- 一、分类
- 二、检测
- 三、分割
- 四、消融实验
一、引言
最近的研究表明,Transformer具有很强的建立远程依赖关系的能力,但在捕获高频信息时却表现不佳。为了解决这个问题,本文提出了一种新颖的通用Inception Transformer(简称iF),它可以有效地学习视觉数据中高频和低频信息的综合特征。具体地说,将卷积和最大池化的优点移植到Transformer上,以捕获高频信息。与最近的混合框架不同,Inception混频器通过通道分裂机制,采用并行卷积/最大池化路径和自注意路径作为高频和低频混频器,带来了更高的效率,同时具有对分散在宽频率范围内的判别信息建模的灵活性。考虑到底层更多地用于捕获高频细节,而顶层更多地用于建模低频全局信息,进一步引入了频率斜坡结构,即逐渐减少给高频混频器的维数,增加低频混频器的维数,可以有效地权衡不同层之间的高低频分量。
ViT及其变体对视觉数据中的低频捕获能力很强,主要包括场景或对象的全局形状和结构,但对高频学习能力不强,主要包括局部边缘和纹理。这可以直观地解释为:vit中用于在非重叠补丁令牌之间交换信息的主要操作self attention是一个全局操作,并且更能够捕获全局信息(低频)。下图1(a)和1(b)所示,傅里叶频谱和相对对数振幅表明,ViT倾向于很好地捕获低频信号,而很少捕获高频信号。这种低频偏好降低了ViTs的性能,主要表现在:(1)在所有层中填充低频信息会导致高频成分(如局部纹理)的劣化,削弱了ViTs的建模能力;2)高频信息也具有鉴别性,可以使许多任务受益,例如(细粒度)分类。实际上,人类视觉系统以不同的频率提取视觉基本特征低频提供视觉刺激的全局信息,高频传达图像的局部空间变化(如局部边缘/纹理)。因此,有必要开发一种新的ViT体系结构来捕获视觉数据中的高频和低频。
CNN是一般视觉任务最基本的骨干。与ViTs不同,它通过感受野内的局部卷积覆盖更多的局部信息,从而有效地提取高频特征。最近的研究考虑到CNN和ViTs的优势互补,将二者进行了整合。有些方法将卷积层和注意层按串行方式堆叠,将局部信息注入全局上下文。不幸的是,这种串行方式只在一层中对一种类型的依赖项建模,要么是全局的,要么是局部的,并且在局部建模期间丢弃全局信息,反之亦然。其他工作采用并行注意力和卷积同时学习输入的全局和局部依赖关系。但是,部分通道用于处理局部信息,另一部分用于全局建模,这意味着当前的并行结构如果处理每个分支中的所有通道,则具有信息冗余。
为了解决这个问题,作者提出了一个简单有效的Inception Transformer (iFormer),如下图所示,它将CNN捕获高频的优点嫁接到vit上。
iFormer的关键组件是一个Inception令牌混合器,如下图所示。这种Inception混频器旨在通过捕获数据中的高频和低频来增强vit在频谱中的感知能力。为此,Inception混频器首先将输入特征沿通道维度进行分割,然后将分割后的分量分别送入高频混频器和低频混频器。
这里的高频混频器由最大池化操作和并行卷积操作组成,而低频混频器由ViTs中的自注意实现。这样,iFormer可以有效地捕获相应通道上的特定频率信息,从而在较宽的频率范围内获得更全面的特征。
此外,较低的层通常需要更多的局部信息,而较高的层需要更多的全局信息。这是因为,就像人类的视觉系统一样,高频分量中的细节有助于底层捕捉视觉的基本特征,也有助于逐步收集局部信息,从而对输入有一个全局的理解。受此启发,设计了一个频率斜坡结构。特别是,从低到高,逐步向低频混频器提供更多的通道维度。
二、实现细节
与串行方法相比,文献中将注意力与卷积并行结合的作品并不多。CoaT和ViTAE引入卷积作为平行于注意的分支,并利用elementwise sum对两个分支的输出进行合并。然而,Raghu等人发现,一些通道倾向于提取局部依赖关系,而其他通道则用于建模全局信息,这表明当前并行机制处理不同分支中的所有通道具有冗余性。相反,将通道分成高频和低频的分支。GLiT也采用并行方式,但直接将卷积和注意分支的特征拼接成混频器输出,缺少不同频率特征的融合。相反,本文设计了一个显式的融合模块来合并来自低频和高频分支的输出。
提出的Inception混合器,将CNN提取高频表示的强大能力嫁接到Transformer上。之所以使用“Inception”这个名字,是因为令牌混合器受到具有多个分支的Inception模块[的启发。Inception混频器没有直接将图像令牌送入MSA混频器,而是先将输入特征沿通道维度进行分割,然后将分割后的分量分别送入高频混频器和低频混频器。其中高频混频器由最大池化操作和并行卷积操作组成,而低频混频器由自注意实现。
给定输入特征映射X∈RN×CX∈R^{N×C}X∈RN×C,将X沿通道维度分解为Xh∈RN×ChX_h∈R^{N×C_h}Xh∈RN×Ch和Xl∈RN×ClX_l∈R^{N×C_l}Xl∈RN×Cl,其中Ch+Cl=cC_h + C_l = cCh+Cl=c,将X_h和X_l分别分配给高频混频器和低频混频器。
高频混合器:考虑到最大滤波器的敏锐灵敏度和卷积运算的细节感知,提出了一种并行结构来学习高频成分。沿通道将输入XhX_hXh分为Xh1∈RN×Ch2X_{h1}∈R^{N× \frac{C_h}{2}}Xh1∈RN×2Ch和Xh2∈RN×Ch2X_{h2}∈R^{N× \frac{C_h}{2}}Xh2∈RN×2Ch。如下所示,Xh1X_{h1}Xh1嵌入max-pooling层和线性层,Xh2X_{h2}Xh2馈送到线性层和深度卷积层。
最后,将低频和高频混频器的输出沿通道维度进行拼接:
上采样操作选择每个位置的最近点的值,而不考虑任何其他点,这导致相邻符号之间过度平滑。作者设计了一个融合模块来克服这个问题,即在补丁之间交换信息的深度卷积,同时保持跨通道线性层,像以前的Transformer一样在每个位置工作。最终输出可以表示为:
像普通的Transformer一样,iFormer配备了前馈网络(FFN),不同的是,它还包含了上面的Inception令牌混合器(ITM);在ITM和FFN之前应用LayerNorm (LN)。因此,Inception Transformer块的正式定义为:
低频混频器。使用多头自注意在低频混频器的所有令牌之间进行信息通信。尽管特征图具有较强的全局表示学习能力,但较大的分辨率会给底层带来较大的计算成本。因此,简单地使用平均池化层来降低注意力操作前XlX_lXl的空间尺度,使用上采样层来恢复注意力操作后的原始空间维度。这种设计极大地降低了计算开销,使注意力操作集中在全局信息的嵌入上。这个分支可以定义为:
请注意,池化层和上采样层的内核大小和步幅仅在前两个阶段设置为2。
如下图所示,主干有四个不同通道和空间维度的阶段。对于每个块,定义了一个通道比,以更好地平衡高频和低频成分,即ChC\frac{C_h}{C}CCh和ClC\frac{C_l}{C}CCl,其中ChC+ClC=1\frac{C_h}{C}+\frac{C_l}{C}=1CCh+CCl=1。在频率斜坡结构中,ChC\frac{C_h}{C}CCh从浅层到深层逐渐减小,ClC\frac{C_l}{C}CCl,逐渐增大。因此,通过灵活的频率斜坡结构,iFormer可以有效地权衡各层的高频和低频分量。
不同iFormer模型的配置如下:
三、实验
一、分类
二、检测
三、分割
四、消融实验
相关文章:
Inception Transformer
paper链接: https://arxiv.org/abs/2205.12956v2 code链接: https://github.com/sail-sg/iFormer Inception Transformer一、引言二、实现细节三、实验一、分类二、检测三、分割四、消融实验一、引言 最近的研究表明,Transformer具有很强的建立远程依赖关系的能力…...
10分钟学会数据库压力测试,你敢信?
目录 前言 查看数据库版本 下载驱动: 菜单路径 配置 Variable Name Bound to Pool模块配置 Connection pool configuration模块配置 Database Connection Configuration模块配置 菜单路径 Variable Name Bound to Pool 脚本结构 脚本(执行查询…...
论文阅读 | Video Super-Resolution Transformer
引言:2021年用Transformer实现视频超分VSR的文章,改进了SA并在FFN中加入了光流引导 论文:【here】 代码:【here】 Video Super-Resolution Transformer 引言 视频超分中有一组待超分的图片,因此视频超分也经常被看做…...
7-6 带头节点的双向循环链表操作
本题目要求读入一系列整数,依次插入到双向循环链表的头部和尾部,然后顺序和逆序输出链表。 链表节点类型可以定义为 typedef int DataType; typedef struct LinkedNode{DataType data;struct LinkedNode *prev;struct LinkedNode *next; }LinkedNode;链…...
npm publish 、 npm adduser 提示 403 的问题
0. 查看使用的源:npm config get registry1. 如果使用的不是官方的源,切换:npm config set registry https://registry.npmjs.org/2. 登录:npm adduser3. 查看是否登录成功:npm whoami4. 执行发布命令:npm …...
Java 8的函数式接口使用示例
什么是函数式接口 有且只有一个抽象方法的接口被称为函数式接口,函数式接口适用于函数式编程的场景,Lambda就是Java中函数式编程的体现,可以使用Lambda表达式创建一个函数式接口的对象,一定要确保接口中有且只有一个抽象方法&…...
2023年企业如何改善员工体验?为什么员工体验很重要?
什么是员工体验?大约 96% 的企业领导者表示,专注于员工体验可以更轻松地留住顶尖人才。[1] 这还不是全部。令人震惊的是,87%的企业领导者还表示,优先考虑员工的幸福感将给他们带来竞争优势。尽管有这些发现,但只有19%的…...
设计模式:桥接模式让抽象和实现解耦,各自独立变化
一、问题场景 现在对”不同手机类型“的 “不同品牌”实现操作编程(比如: 开机、关机、上网,打电话等) 二、传统解决方案 传统方案解决手机使用问题类图: 三、传统方案分析 传统方案解决手机操作问题分析 1、扩展性问题(类爆炸),如果我们…...
C++学习记录——십 STL初级认识、标准库string类
文章目录1、什么是STL2、STL简介3、什么是string类4、string类的常用接口说明1、常见构造函数2、容量操作3、迭代器4、其他的标准库的string类关于string类的内容,可以在cplusplus.com查看到。 1、什么是STL STL是C标准库的重要组成部分,不仅是一个可复…...
【redis】redis缓存与数据库的一致性
【redis】redis缓存与数据库的一致性【1】四种同步策略【2】更新缓存还是删除缓存(1)更新缓存(2)删除缓存【3】先更新数据库还是先删除缓存(1)出现失败时候的情况1-先删除缓存,再更新数据库&…...
XCP实战系列介绍12-基于Vector_Davinci工具的XCP配置介绍(一)
本文框架 1.概述2. EcuC配置2.1 Pdu添加步骤2.2 配置项说明3. Can 模块配置4. CanIf 模块配置4.1 接收帧的Hardware Receive Object配置4.2 接收帧和发送帧的Pdu配置1.概述 在文章《看了就会的XCP协议介绍》中详细介绍了XCP的协议,在《XCP实战系列介绍01-测量与标定底层逻辑》…...
Unity Material详解
一、创建 二、属性 1.Shader:Unity内置了一些shader,用户自定义的shader也在这里出现. Edit: 可以编辑一些shader可编辑的内容,如一些属性. 2.Rendering Mode:渲染模式 Opaque-不透明-石头适用于所有的不透明的物体Cutout-镂空-破布透明度只有0%和100…...
碰撞检测算法分类
包围形法粗糙检测, 包含以下两种类检测外接圆法轴对齐包围矩形, AABB 碰撞检测算法之包围形法分离轴精细检测 BOX vs PolygonOBBseparating Axis Theorem碰撞检测算法之分离轴定理GJKGJK(Gilbert–Johnson–Keerthi), 相比 SAT 算法ÿ…...
代码随想录第十二天(
文章目录232. 用栈实现队列补充知识——Deque232. 用栈实现队列 答案思路: 在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来࿰…...
电源模块 DC-DC直流升压正负高压输出12v24v转±110V±150V±220V±250V±300V±600V
特点效率高达80%以上1*2英寸标准封装电源正负双输出稳压输出工作温度: -40℃~85℃阻燃封装,满足UL94-V0 要求温度特性好可直接焊在PCB 上应用HRA 1~40W系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9~18V、及18~36VDC标准&…...
【动画图解】这个值取对了,ViewPager2才能纵享丝滑
前言 在前两篇文章中,我们通过一张张清晰明了的「示意图」,详细地复盘了RecyclerView「缓存复用机制」与「预拉取机制」的工作流程,这种「图解」创作形式也得到了来自不同平台读者们的一致认可。 而从本文开始,我们将正式进入Vi…...
CSDN每日一练:小豚鼠搬家
题目名称:小豚鼠搬家 时间限制:1000ms内存限制:256M 题目描述 小豚鼠排排坐。 小艺酱买了一排排格子的小房子n*m,她想让k只小豚鼠每只小豚鼠都有自己的房子。 但是为了不浪费空间,她想要小房子的最外圈尽量每行每列都有…...
Dockerfile命令及实践构建一个网站
dockerfile用于构建docker镜像的,部署一个用于运行你所需的容器环境。相当一个脚本,通过dockerfile自己的指令,来构建软件依赖、文件依赖、存储、定制docker镜像的方式有两种:手动修改容器内容,导出新的镜像基于Docker…...
[VMware]Ubuntu18.04 网络图标消失
Ubuntu 18.04 网络图标消失运行环境问题解决NO.1 执行 sudo systemctl stop network-managerNO.2 执行 sudo rm /var/lib/NetworkManager/NetworkManager.stateNO.3 执行 sudo systemctl start network-managerNO.4 vi /etc/NetworkManager/NetworkManager.confNO.5 执行 sudo …...
国产C2000,P2P替代TMS320F280049C,独立双核32位CPU,主频高达400MHz
一、特性参数 1、独立双核,32位CPU,单核主频400MHz 2、IEEE 754 单精度浮点单元 (FPU) 3、三角函数单元 (TMU) 4、1MB 的 FLASH (ECC保护) 5、1MB 的 SRAM (ECC保护&…...
二十五、Gtk4-多线程分析
1 回顾 1.1 Gnome相关 首先回顾一下GLib,GObject,GIO,Gtk的不同,因为下面会涉及到这些概念里面的函数。 所有这些都是由Gnome项目开发的库,一般都用于Gnome环境相关的应用程序。 Gtk:GUI界面库。GLib&a…...
JVM基础学习
JVM分为两个子系统,两个组件一个子系统是Class loader类装载系统,另一个子系统是Execution Engine执行引擎一个组件是Runtime data area 运行时数据区,Native Interface 本地接口Class loader:根据给定的全限定类名来装载class文件到运行时数…...
ASML逆袭史:人、资金、技术,缺一不可
前言 近年来,由于众所周知的原因,荷兰ASML(阿斯麦)公司的先进半导体制造设备——光刻机,进入普通大众视野,成为人们茶余饭后谈论的焦点话题之一。 1月底,“美日荷三方谈判达成协议,可…...
MongoDB 覆盖索引查询
MongoDB 覆盖索引查询 官方的MongoDB的文档中对覆盖查询做了说明: 所有的查询字段是索引的一部分所有的查询返回字段在同一个索引中 由于所有出现在查询中的字段是索引的一部分, MongoDB 无需在整个数据文档中检索匹配查询条件和返回使用相同索引的查询…...
Flink Checkpoint 中的Aligned Checkpoint 和 Unaligned Checkpoint
文章目录知识点反压CheckpointBarrierAligned CheckpointUnaligned Checkpoint核心思想实现原理UC同步阶段UC异步阶段知识点 反压 反压是流式系统中关于处理能力的动态反馈机制,并且是从下游到上游的反馈,一般是在实时数据处理的过程中,上游…...
C++快速入门
本章内容我将结合C语言一起,初步学习了解c,与大家一起快速入门这门语言。当然鉴于c本身属于一门中级语言,大家对编程有一定了解之后来学习这门知识会更加得心应手。简介C 被认为是一种中级语言,它综合了高级语言和低级语言的特点。…...
ubuntu18.04 network有线网络图标缺失解决记录
先按照博客1安装驱动 博客1链接:Ubuntu安装 Realtek R8125 驱动_Lwang2018的博客-CSDN博客_瑞昱8125 for ubunt 安装完成后,遇到问题:ifconfig -a显示的有线网接口(名字以en开头)没有ip地址…...
java对象克隆和面向对象的设计原则
java进阶注解内置注解元注解自定义注解对象克隆浅克隆深克隆java设计模式建模语言类之间的关系依赖关系关联关系单向关联双向关联自关联聚合关系组合关系继承关系实现关系面向对象设计原则单一职责开闭原则里氏替换原则依赖倒置接口隔离迪米特原则组合/聚合复用原则注解 java注…...
传透式血氧仪设计方案
该方案一种检测方式是选择使用光敏二极管接收光信号,采用传统穿透式夹指测量;另一种是使用光谱传感器接收光信号,采用反射式测量。该传感器可将光信号直接转换成数据信息给主控端进行处理,从而节省了用户将光信号转换成模拟信号&a…...
让逆向工程师们头疼的代码混淆,就像永远也走不出的“浪浪山”
目录 代码混淆究竟是什么? 如何做代码混淆? 代码混淆不等于加密 App 加固非一时之功 “我想离开浪浪山。” 在数次尝试破解某个App 时,某个逆向工程师无奈感慨道。 逆向工程师顾名思义就是把一个个完整的软件逆推,还原成一段段…...
网站建设基本知识代码/网站点击量与排名
作为一名Java程序员,你必须所具备的知识体系,小编特意总结为以下10点: 1.语法 语法需要很熟悉,面对任何编码期的IDE报错都能准备的根据报错信息知道自己犯了什么语法错误并且知道如何改正这个错误。 2.命令 你需要熟悉JDK的常…...
酒店网站建设方案书/免费制作详情页的网站
oracle sum()over函数的使用over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。over函数的参数:over(partition by columnname1 order by columnname2)含义,按columname1指定的字段进行分组排序&#x…...
黄骅市疫情最新消息/怎么优化网络
我来用人脑模拟最常见的,冯诺依曼计算机。即家用电脑的工作原理。我们的题目是:李磊和韩梅梅是什么关系?好了,现在这题目上几个字,被“输入”到我们的“内存”里。就是我们脑海里在想的这句话。然后“控制器”协调我们…...
如何做ps4游戏视频网站/百度小说排行榜风云榜
题目描述 洛谷 P1381 单词背诵 灵梦有 n个单词想要背,但她想通过一篇文章中的一段来记住这些单词。 文章由 个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个)。并且在背诵的单词…...
找代码的网站/百度指数移动版怎么用
关于Shell在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。shell分类:一:图形界面…...
外贸b2c网站建设/上海seo网站优化软件
论文地址 提出了一种用于深网学习的权值初始化的简单方法——层序列单位方差(LSUV)初始化。 该方法包括两个步骤。首先,使用正交矩阵预初始化每个卷积或内积层的权重。第二,从第一层到最后一层,将每层输出的方差…...