[论文分享]VOLO: Vision Outlooker for Visual Recognition

news2025/1/11 23:42:15

VOLO: Vision Outlooker for Visual Recognition

概述

视觉 transformer(ViTs)在视觉识别领域得到了广泛的探索。由于编码精细特征的效率较低,当在 ImageNet 这样的中型数据集上从头开始训练时,ViT 的性能仍然不如最先进的 CNN。

作者通过实验分析,作者发现:
1)输入图像的简单标记化未能对边缘、线条等重要的局部结构进行建模,导致训练样本效率低下;
2)ViT 的冗余注意力主干设计导致固定计算预算和有限训练样本的特征丰富度有限。

为了克服这些限制,作者提出了一种新的简单通用架构,称为 Vision Outlooker (VOLO),它实现了一种新颖的 Outlook 注意力操作,以滑动窗口的方式在输入图像上动态地进行局部特征聚合机制。与自注意力侧重于在粗略层面上建模局部特征的全局依赖性不同,作者提出的前景注意力目标是编码更精细的特征,这对于识别至关重要,但被自注意力忽略了。 Outlook Attention 打破了 self-attention 的瓶颈,其计算成本与输入空间维度呈二次方缩放,因此内存效率更高。

换句话说:作者提出了一种新的Vision Outlooker模块,仅使用像素空间相邻的信息来生成attention权重。

方法

Outlooker由一个 outlook attention layer来编码空间信息,而后使用一个MLP来实现不同通道间的信息的交换。

outlook attention:
1)每个空间位置的特征都具有足够的代表性,可以生成用于局部聚合其相邻特征的注意力权重;
2)密集的局部空间聚合可以有效地编码精细级别的信息。

outlook attention
V Δ i , j ∈ R C × K 2 \mathbf {V}_{\Delta _{i,j}} \in \mathbb {R}^{C \times K^{2}} VΔi,jRC×K2 表示以 (i,j) 为中心的本地窗口内的所有值,即
V Δ i , j = { V i + p − ⌊ K 2 ⌋ , j + q − ⌊ K 2 ⌋ } , 0 ≤ p , q < K . \begin{equation*} \mathbf {V}_{\Delta _{i,j}}=\lbrace \mathbf {V}_{i+p-\lfloor \frac{K}{2} \rfloor,j+q-\lfloor \frac{K}{2} \rfloor }\rbrace, \quad 0 \leq p,q < K. \tag{1} \end{equation*} VΔi,j={Vi+p2K,j+q2K},0p,q<K.(1)

位置 (i,j) 处的前景权重直接用作价值聚合的注意力权重,将其重塑为 A ^ i , j ∈ R K 2 × K 2 \hat{\mathbf {A}}_{i,j} \in \mathbb {R}^{K^{2}\times K^{2}} A^i,jRK2×K2 ,后跟 Softmax 函数。

Y Δ i , j = MatMul ⁡ ( Softmax ⁡ ( A ^ i , j ) , V Δ i , j ) . \begin{equation*} \mathbf {Y}_{\Delta _{i,j}} = \operatorname{MatMul}(\operatorname{Softmax}(\hat{\mathbf {A}}_{i,j}), \mathbf {V}_{\Delta _{i,j}}). \tag{2} \end{equation*} YΔi,j=MatMul(Softmax(A^i,j),VΔi,j).(2)

Outlook 注意力密集地聚合了预测值表示。将来自不同局部窗口的同一位置处的不同权重值相加,得到输出
Y ~ i , j = ∑ 0 ≤ m , n < K Y Δ i + m − ⌊ K 2 ⌋ , j + n − ⌊ K 2 ⌋ i , j . \begin{equation*} \tilde{\mathbf {Y}}_{i,j} = \sum _{0 \leq m, n < K} \mathbf {Y}_{\Delta _{i+m-\lfloor \frac{K}{2}\rfloor,j+n-\lfloor \frac{K}{2}\rfloor }}^{i,j}. \tag{3} \end{equation*} Y~i,j=0m,n<KYΔi+m2K,j+n2Ki,j.(3)

我们的前景注意力继承了卷积和自注意力的优点。它具有以下优点。

  • 首先,outlook 注意力通过测量标记表示对之间的相似性来编码空间信息,这对于特征学习来说比卷积更具参数效率,正如之前的工作[57]、[66]中所研究的那样。
  • 其次,前景注意力采用滑动窗口机制对标记表示进行精细的本地编码,并在一定程度上保留了视觉任务的关键位置信息[42],[71]。
  • 第三,注意力权重的生成方式简单高效。与依赖于查询键矩阵乘法的自注意力不同,我们的前景权重可以通过简单的重塑操作直接产生,从而节省计算量。为了看到这一点,我们比较了在具有滑动窗口大小 K×K

M-Adds ( S A ) ≈ 4 H W C 2 + 2 ( H W ) 2   C M-Adds ( L S A ) ≈ 4 H W C 2 + 2 H W K 2   C M-Adds ( O A ) ≈ H W C ( 2  C + N K 4 ) + H W K 2   C . \begin{align*} \text{M-Adds}(\mathbf{SA}) &\approx 4HWC^{2} + 2(HW)^{2}~C \tag{4}\\ \text{M-Adds}(\mathbf{LSA}) &\approx 4HWC^{2} + 2HWK^{2}~C \tag{5}\\ \text{M-Adds}(\mathbf{OA}) &\approx HWC(\text{2}~C + NK^{4}) + HWK^{2}~C. \tag{6} \end{align*} M-Adds(SA)M-Adds(LSA)M-Adds(OA)4HWC2+2(HW)2 C4HWC2+2HWK2 CHWC(2 C+NK4)+HWK2 C.(4)(5)(6)

网络架构

VOLO 架构
VOLO架构的整体网络架构。首先将图像发送到卷积干以进行补丁嵌入。我们的 VOLO 的主体包含两个阶段,分别由阶段 I 中提出的 Outlooker 块和阶段 II 中的 Transformer 块组成。 Outlooker 负责精细级别的特征编码。更详细的架构信息可以在表 2 中找到。

VOLO不同变体的架构信息

实验

训练设置

在这里插入图片描述

消融实验

在这里插入图片描述

方法比较

在这里插入图片描述

模型性能评估

在这里插入图片描述

reference

@article{Yuan2022Sep,
author = {Yuan, Li and Hou, Qibin and Jiang, Zihang and Feng, Jiashi and Yan, Shuicheng},
title = {{VOLO: Vision Outlooker for Visual Recognition}},
journal = {IEEE Trans. Pattern Anal. Mach. Intell.},
volume = {45},
number = {5},
pages = {6575–6586},
year = {2022},
month = sep,
urldate = {2023-08-24},
issn = {1939-3539},
publisher = {IEEE},
language = {english},
doi = {10.1109/TPAMI.2022.3206108}
}

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

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

相关文章

解密长短时记忆网络(LSTM):从理论到PyTorch实战演示

目录 1. LSTM的背景人工神经网络的进化循环神经网络&#xff08;RNN&#xff09;的局限性LSTM的提出背景 2. LSTM的基础理论2.1 LSTM的数学原理遗忘门&#xff08;Forget Gate&#xff09;输入门&#xff08;Input Gate&#xff09;记忆单元&#xff08;Cell State&#xff09;…

【洛谷】P1678 烦恼的高考志愿

原题链接&#xff1a;https://www.luogu.com.cn/problem/P1678 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 将每个学校的分数线用sort()升序排序&#xff0c;再二分查找每个学校的分数线&#xff0c;通过二分找到每个同学估分附近的分数线。 最后…

【Java】对象与类

【Java】对象与类 文章目录 【Java】对象与类1、学习背景2、定义&使用2.1 创建类2.2 创建对象 3、static关键字3.1 修饰变量3.2 修饰方法3.3 修饰代码块3.4 修饰内部类 4、this关键字5、封装特性5.1 访问修饰符5.2 包的概念 6、构造方法7、代码块7.1 普通代码块7.2 成员代码…

信息安全:入侵检测技术原理与应用.(IDS)

信息安全&#xff1a;入侵检测技术原理与应用. 入侵检测是网络安全态势感知的关键核心技术&#xff0c;支撑构建网络信息安全保障体系。入侵是指违背访问目标的安全策略的行为。入侵检测通过收集操作系统、系统程序、应用程序、网络包等信息&#xff0c;发现系统中违背安全策略…

无公网IP内网穿透使用vscode配置SSH远程ubuntu随时随地开发写代码

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】

【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】 1、前言2、实验环境3、自我总结&#xff08;1&#xff09;文件的编写&#xff08;2&#xff09;信号与槽的新理解&#xff08;3&#xff09;线程数据的传递 4、移植步骤第一步&#xff1a;添加新文…

在Linux系统上安装和配置Redis数据库,无需公网IP即可实现远程连接的详细解析

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 Redis作为一款高速缓存的key value键值对的数据库,在…

React组件间数据传递(弹框和高阶组件(HOC)特性实现)

前言 在现代前端开发中&#xff0c;React 已经成为了最受欢迎的 JavaScript 库之一。而在复杂的应用中&#xff0c;不同组件之间的数据传递问题显得尤为关键。在本文中&#xff0c;我们将探讨一种高效的方法&#xff0c;即如何利用弹框和高阶组件特性来实现 React 组件间的数据…

vue3 基础知识 ( webpack 基础知识)05

你好 文章目录 一、组件二、如何支持SFC三、webpack 打包工具四、webpack 依赖图五、webpack 代码分包 一、组件 使用组件中我们可以获得非常多的特性&#xff1a; 代码的高亮&#xff1b;ES6、CommonJS的模块化能力&#xff1b;组件作用域的CSS&#xff1b;可以使用预处理器来…

芯片行业震荡期,数字后端还可以入吗?

自去年开始&#xff0c;芯片行业仿佛进入了动荡期&#xff0c;经历了去年秋招和今年春招的小伙伴都知道&#xff0c;如今找工作有多难。 半导体行业人才缩减、各大厂裁员&#xff0c;在加上高校毕业生人数破千万&#xff0c;对于即将踏入IC这个行业的应届生来说&#xff0c;今…

存储过程的使用

一、实验目的 熟练掌握使用 SQL SERVER 2000 创建和执行存储过程的方法。 熟练掌握存储过程的删除操作。 二、实验准备 1&#xff0e;熟悉 SQL SERVER 2000 设计环境&#xff1b; 2&#xff0e;熟悉存过过程的创建方法、步骤 三、实验内容 1、利用企业管理器或查询分析器…

在线OJ平台项目

一、项目源码 Online_Judge yblhlk/Linux课程 - 码云 - 开源中国 (gitee.com) 二、所用技术与开发环境 1.所用技术: MVC架构模式 (模型&#xff0d;视图&#xff0d;控制器) 负载均衡系统设计 多进程、多线程编程 C面向对象编程 & C 11 & STL 标准库 C Boost 准标…

建议收藏|软考机构推荐看这一篇就够了

需要最近因为软考改革成机考&#xff0c;大家都在问还有没有必要找机构学&#xff1f;本来已经进入自学阶段的考生&#xff0c;也纷纷开始慌张机考改革会不会影响考试难度&#xff1f;今天胖圆给大家总结一下软考要不要报机构&#xff1f;市面上的软考培训机构如何选择&#xf…

高手速成|数据库脚本生成工具

高手速成|数据库脚本生成工具 文章目录 高手速成|数据库脚本生成工具前言1、软件的安装及使用2、建立新工程3、创建Conceptual Data Model&#xff08;概念数据模型&#xff09;4、将E-R图转化为其他数据库模型5、导出DBMS代码&#xff08;Sql执行脚本&#xff09;6、执行sql脚…

【boost网络库从青铜到王者】第六篇:asio网络编程中的socket异步读(接收)写(发送)

文章目录 1、简介2、异步写 void AsyncWriteSomeToSocketErr(const std::string& buffer)3、异步写void AsyncWriteSomeToSocket(const std::string& buffer)4、异步写void AsyncSendToSocket(const std::string& buffer)5、异步读void AsyncReadSomeToSocket(cons…

Java 8 Stream 之 collect() 的奇技淫巧

来源&#xff1a;blog.csdn.net/qq_35387940/ article/details/127008965 前言 正文 第一个小玩法 第二个小玩法 前言 本身我是一个比较偏向少使用Stream的人&#xff0c;因为调试比较不方便。 但是, 不得不说&#xff0c;stream确实会给我们编码带来便捷。 所以还是忍…

python开发环境搭建

1、安装python 下载地址&#xff1a;https://www.python.org/downloads/windows/ 双击安装。 安装完验证&#xff1a; 2、安装IDE 下载地圵&#xff1a;https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows 免费版本 3、安装依赖包 在项目的根目录下…

【RuoYi移动端】HBuild工具插件安装和系统配置manifest.json

一、点【工具】-【插件安装】安装如下工具 二、点【manifest.json】

搭建Tomcat HTTP服务:在Windows上实现外网远程访问的详细配置与设置教程

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器&#xff0c;不仅名字很有趣&#xff0…

数据库概况

数据的基本概念&#xff1a; ①数据 描述事物的符号记录&#xff0c;包括数字&#xff0c;文字&#xff0c;图形&#xff0c;图形&#xff0c;声音&#xff0c;档案记录等以“记录”形式按统一的格式进行存储。 ②表 将不同的记录组织在一起 用来存储具体数据 ③数据库 表的…