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

news/2025/1/16 0:18:02/

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.ppmy.cn/news/1060279.html

相关文章

线性代数的学习和整理4: 求逆矩阵的多种方法汇总

目录 原始问题&#xff1a;如何求逆矩阵&#xff1f; 1 EXCEL里&#xff0c;直接可以用黑盒表内公式 minverse() 数组公式求A- 2 非线性代数方法&#xff1a;解方程组的方法 3 增广矩阵的方法 4 用行列式的方法计算&#xff08;未验证&#xff09; 5 A-1/|A|*A* &…

实训笔记8.21

8.21笔记 8.21笔记一、Hive数据仓库技术的基本概念和组成1.1 Hive的组成架构1.1.1 Hive的客户端&#xff08;1&#xff09;Hive的命令行客户端 hive命令&#xff08;2&#xff09;Hive的JDBC的客户端&#xff08;Java API&#xff09;hive的JDBC客户端又有多种使用方式 &#x…

Pygame编程(3)draw模块

draw模块 函数实例 函数 pygame.draw.rect 画一个矩形rect(surface, color, rect) -> Rectrect(surface, color, rect, width0, border_radius0, border_top_left_radius-1,border_top_right_radius-1, border_bottom_left_radius-1, border_bottom_right_radius-1) -> …

剑指Offer41,数据流中的中位数 C++

1、题目描述 如何得到一个数据流中的中位数&#xff1f;如果从数据流中读出奇数个数值&#xff0c;那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值&#xff0c;那么中位数就是所有数值排序之后中间两个数的平均值。 例如&#xff0c; [2,3,4] 的…

《基于 Vue 组件库 的 Webpack5 配置》2.模块规则 module.rule

配置 module.rules &#xff0c;创建模块时&#xff0c;匹配请求的规则数组&#xff1b; 可参考 webpack5 指南-管理资源&#xff1b; vue 可参考上述配置&#xff1b; js 使用 webpack babel-loader&#xff1b; css 参考 webpack 加载 CSS。注意style-loader 和 vue-style…

IO多路转接(复用)多线程 select 并发

1.select // sizeof(fd_set) 128 1024 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> #include <sys/select.h> int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);- 参数…

centos下配置SFTP且限制用户访问目录

一、SFTP使用场景 ftp是大多数网站的文件传输选择工具&#xff0c;但ftp并不是非常安全&#xff0c;并且在centos上搭建的vsftpd也非常的不稳定&#xff0c;偶尔会出现权限问题&#xff0c;例如500、或是账号密码不正确等等。 而SFTP是基于默认的22端口&#xff0c;是ssh内含…

Unity 应用消息中心-MessageCenter

Ps&#xff1a;主要解决耦合问题&#xff0c;把脚本之间的联系通过不同消息类型事件形式进行贯通 1.MessageCenter主脚本 2.DelegateEvent消息类型脚本 3.MC_Default_Data具体接收类脚本 using System; using System.Collections; using System.Collections.Generic; using …