VOLO Vision Outlooker for Visual Recognition论文分析

Abstract

多年来,CNN 主导着视觉识别任务。尽管最近 ViTs 在 ImageNet 分类任务上展现了自注意力模型不俗的潜力,但如果没有额外数据支撑的话,仍要弱于 SOTA 卷积模型。本文作者尝试弥补性能的差距,证明基于注意力的模型能超越 CNN。作者发现对于 ImageNet 分类任务,限制 ViT 性能的主要因素就是它们不擅长在 token 表征中编码细粒度特征。为了解决这个问题,作者引入了一个新的 outlook 注意力,提出了一个简单而通用的架构,叫做 Vision Outlooker(VOLO)。自注意力关注在粗粒度的全局依赖性上,outlook 注意力则可以有效地在 tokens 中编码细粒度特征和语义信息,这对识别任务来说非常有帮助,但自注意力却忽略了这点。实验表明 VOLO 在 ImageNet-1K 分类任务上取得了 87.1 % 87.1\% 87.1%的 top-1 准确率,第一次有模型在不需要额外数据的前提下准确率高于 87 % 87\% 87%。此外,预训练 VOLO 在下游任务上迁移学习也效果不错,比如语义分割。作者在 cityscapes 验证集上取得了 84.3 % 84.3\% 84.3% mIoU,在 ADE20K 验证集上取得了 54.3 % 54.3\% 54.3%。代码位于:https://github.com/sail-sg/volo

1. Introduction

对视觉识别建模,在过去很长一段时间内由 CNN 主导,但最近的 ViT 已对其发起了挑战。CNN 通过局部密集的卷积核来聚合、变换特征,而 ViT 则直接通过自注意力机制对局部区域(即token)的长期依赖关系建模,在对视觉内容建模时更灵活。尽管在视觉识别任务上取得了显著成绩,但 ViT 的表现仍然落后于 SOTA 的 CNN。比如,如表1所示,CaiT 在 ImageNet 上取得了 86.5 % 86.5\% 86.5% 的 top-1 准确率,但仍然落后 CNN 的 NFNet-F5 的 86.8 % 86.8\% 86.8% 的 top-1 准确率,它利用了 SAM 和 augmult 操作。

本文作者尝试弥补这类性能差距。作者发现束缚 ViT 性能的一个主要因素就是,在 token 表征中编码细粒度特征和语义时非常低效。细粒度信息可以通过细粒度图像的 tokenization 编码进 tokens,但这会造成 token 序列变长,指数级增加自注意力机制的复杂度。
在这里插入图片描述
表1. 与之前 SOTA 分类模型比较,大部分在 PaperWithCode 的 leaderboard 上都取得比较靠前的排名。

本文作者提出了一个新颖、轻量级的注意力机制,叫做 Outlooker,通过细粒度信息有效地丰富 token 表征。Outlooker 提出生成注意力用于 token 聚合,让模型能有效地编码细粒度信息。它提出通过有效的线性映射,直接聚合 anchor 附近的 tokens,因此摆脱了昂贵的点积注意力计算。

基于 Outlooker,作者提出了 VOLO,对于视觉任务来说它简单而又强大。给定大小是 224 × 224 224\times 224 224×224的输入图片,在使用自注意力去构建粗粒度(比如 14 × 14 14\times 14 14×14)的全局依赖关系之前,VOLO 将图像 tokenize 为小的区块(比如 8 × 8 8\times 8 8×8),利用多个 Outlookers 编码细粒度 token 表征( 28 × 28 28\times 28 28×28)。这样得到的 token 表征更具表现力,极大地提升图像分类性能。

实验表明 VOLO 在 ImageNet 分类任务上表现非常好。以 参数量为 2660 万的 VOLO 模型为例。无需额外的数据,它可以实现 84.2 % 84.2\% 84.2%的准确率。在输入分辨率为 384 × 384 384\times 384 384×384的数据上微调该模型,准确率可以提升到 85.2 % 85.2\% 85.2%。此外,当模型缩放到 2.96亿个参数时,可以在 ImageNet 上取得 87.1 % 87.1\% 87.1% 的准确率,在 ImageNet-ReaL 上取得 90.6 % 90.6\% 90.6%,在 ImageNet-V2 取得 78 % 78\% 78%,刷新了这些基准上 SOTA 的成绩。

如图1所示,和其他基于 CNN 的 SOTA 模型(NFNet-F6)与基于 transformer 的模型(CaiT-M48)相比,本文最佳模型 VOLO-D5 使用的参数量最低,但取得了最佳的准确率。此外,如表1所示,和使用更强数据增广、优化方法(SAM)和 augmult 的模型相比,Outlooker 依然表现最佳。

VOLO 在语义分割任务上也表现很好。作者在两个基准上做了实验:Cityscapes 和 ADE20K。实验显示,VOLO 在 Cityscapes 上取得了 84.3 % 84.3\% 84.3% 的mIoU,要比目前 SOTA 结果(SegFormer-B5)高 0.3 % 0.3\% 0.3%。在 ADE20K 上,取得了 54.3 % 54.3\% 54.3% 的 mIoU,大幅度提升了目前的 SOTA 成绩 53.5 % 53.5\% 53.5%(由 Swin Transformer 取得),它是在 ImageNet-22K 上预训练的。

2. Method

本文模型可以当作由两个分开的阶段组成。第一个阶段由一组 Outlookers 堆成,生成细粒度 token 表征。第二个阶段则利用 transformer 模块序列来聚合全局信息。在每个阶段开始位置,会用一个区域 embedding 模块,将输入映射为指定形状的 token 表征。

2.1 Outlooker

Outlooker 包含一个进行空间信息编码的 outlook 注意力层,以及一个用于通道间信息交互的 MLP 组成。给定一个由 C C C维的 token 表征组成的序列 X ∈ R H × W × C \mathbf{X}\in \mathbb{R}^{H\times W\times C} XRH×W×C,Outlooker 可以写为:

X ~ = OutlookAtt ( LN ( X ) ) + X (1) \tilde \mathbf{X}=\text{OutlookAtt}(\text{LN}(\mathbf{X})) + \mathbf{X} \tag{1} X~=OutlookAtt(LN(X))+X(1)
Z = MLP ( LN ( X ~ ) ) + X ~ (2) \mathbf{Z}=\text{MLP}(\text{LN}(\tilde \mathbf{X})) +\tilde \mathbf{X}\tag{2} Z=MLP(LN(X~))+X~(2)

这里 LN 表示 LayerNorm。

在这里插入图片描述
图1. 在 ImageNet 上,CNN 模型和 Transformer 模型的 top-1 准确率。所有的结果都来自于最佳分辨率,没有用任何额外的训练数据。VOLO-D5 取得了最佳准确率,超过了 NFNet-F6 w/ SAM 和 CaiT-M48 w/ KD,而且训练参数更少。VOLO-D5 是第一个在 ImageNet 上超过 87 % 87\% 87% top-1 准确率的模型。

2.1.1 Outlook Attention

Outlook 注意力非常简单、高效,容易实现。其背后主要思想有:1) 每个空间点的特征足够具有代表性,可以为局部相邻特征的聚合提供权重;2) 密集的、局部的空间聚合可以高效地编码细粒度信息。

在这里插入图片描述
图2. Outlook 注意力概览。对于一个大小是 K × K K\times K K×K的局部窗口,生成 Outlook 注意力矩阵很简单,即对中心 token 使用一个线性层和 reshape 操作(绿色虚线框)。因为注意力权重是用窗口的中心 token 生成的,作用在相邻的 tokens 和自己(黑色虚线块)身上,作者将这些操作命名为 outlook 注意力。

对于每个空间位置 ( i , j ) (i,j) (i,j),在一个中心位于 ( i , j ) (i,j) (i,j)、大小是 K × K K\times K K×K的局部窗口内, outlook 注意力都会计算一个它和所有相邻点的相似度。自注意力需要一个 Query-Key 矩阵乘,来计算注意力(即 Softmax ( Q T K / d ) \text{Softmax}(\mathbf{Q}^T\mathbf{K}/\sqrt d) Softmax(QTK/d )), Outlook 注意力只通过一个 reshape 操作,简化了这个过程。

给定输入 X \mathbf{X} X,首先利用两个线性层的权重 W A ∈ R C × K 4 \mathbf{W}_A\in \mathbb{R}^{C\times K^4} WARC×K4 W V ∈ R C × C \mathbf{W}_V\in \mathbb{R}^{C\times C} WVRC×C,将每个 C C C维 token映射为 outlook 权重 A ∈ R H × W × K 4 \mathbf{A}\in \mathbb{R}^{H\times W\times K^4} ARH×W×K4 以及数值表征 V ∈ R H × W × C \mathbf{V}\in \mathbb{R}^{H\times W\times C} VRH×W×C。用 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 ) (i,j) (i,j)的局部窗口内的所有值,即

V Δ i , j = { V i + p − ⌊ K 2 ⌋ , j + q − ⌊ K 2 ⌋ } , 0 ≤ p , q < K (3) \mathbf{V}_{\Delta_{i,j}} = \{\mathbf{V}_{i+p-\lfloor \frac{K}{2} \rfloor, j+q-\lfloor \frac{K}{2} \rfloor }\}, \quad 0\leq p,q<K \tag{3} VΔi,j={Vi+p2K,j+q2K},0p,q<K(3)

Outlook Attention. 位置 ( i , j ) (i,j) (i,j)的 outlook 权值直接用作数值聚合时的注意力权重,将其 reshape 为 A ^ i , j ∈ R K 2 × K 2 \mathbf{\hat 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 ) (4) \mathbf{Y}_{\Delta_{i,j}} = \text{Matmul}(\text{Softmax}(\mathbf{\hat A}_{i,j}), \mathbf{V}_{\Delta_{i,j}}) \tag{4} YΔi,j=Matmul(Softmax(A^i,j),VΔi,j)(4)

Dense Aggregation. Outlook 注意力对映射得到的数值表征做密集地聚合。从不同的窗口中,将同一位置的不同权值加起来,得到输出:

Y ~ Δ i , j = ∑ 0 ≤ m , n < K Y Δ i + m − ⌊ K 2 ⌋ , j + n − ⌊ K 2 ⌋ i , j (5) \mathbf{\tilde Y}_{\Delta_{i,j}} = \sum_{0\leq m,n<K} \mathbf{Y}^{i,j}_{\Delta_{i+m-\lfloor \frac{K}{2} \rfloor, j+n-\lfloor \frac{K}{2} \rfloor}} \tag{5} Y~Δi,j=0m,n<KYΔi+m2K,j+n2Ki,j(5)

在算法1中,作者给出了 PyTorch 风格的代码。等式3和等式5对应着 Unfold 和 Fold 操作。在 outlook 注意力后,像自注意力中一样,使用了一个线性层。

在这里插入图片描述

2.1.2 Multi-head Outlook Attention

Multi-head outlook 注意力的实现很简单。假设 head 个数为 N N N。我们只需调节 W A \textbf{W}_A WA的权重形状,从而 W A ∈ R C × N ⋅ K 4 \textbf{W}_A\in \mathbb{R}^{C\times N\cdot K^4} WARC×NK4。然后,outlook 权重和数值 embeddings 会被分为 N N N个部分,得到 A n ∈ R H × W × K 4 \mathbf{A}_n \in \mathbb{R}^{H\times W\times K^4} AnRH×W×K4 V n ∈ R H × W × C N , { n = 1 , 2 , . . . , N } \mathbf{V}_n \in \mathbb{R}^{H\times W\times C_N}, \{n=1,2,...,N\} VnRH×W×CN,{n=1,2,...,N},其中 C N C_N CN是每个head的维度,满足 C N × N = C C_N\times N=C CN×N=C。对于每对 ( A n , V n ) (\mathbf{A}_n,\mathbf{V}_n) (An,Vn),outlook注意力单独计算,然后 concat 起来作为 multi-head outlook 注意力的输出。实验部分,作者进行了 head 个数对模型性能影响的消融实验。

在这里插入图片描述
表2. VOLO 不同变体的结构。输入图像的分辨率为 224 × 224 224\times 224 224×224。参数个数包含主干网络的参数与分类head的参数。“Layer”指 Outlooker 层或 Transformer 模块。

2.1.3 Discussion

Outlook 注意力机制继承了卷积和自注意力的优点。它提供了下面几项好处。第一,outlook 注意力通过计算一对 token 表征的相似度,编码了空间信息,学习特征时的参数效率比卷积更高。其次,outlook 注意力采用了滑动窗机制,在细粒度层级局部编码 token 表征,在某种程度上保留了重要的位置信息。第三,注意力权重的生成简单高效。自注意力依赖于 query-key 矩阵乘,而 outlook 权重可以通过简单的 reshape操作直接得到,节省计算量。为了证明这点,作者比较了自注意力(SA)和自注意力的局部版本(LSA)的计算量,利用 K × K K\times K K×K的滑动窗对 H × W H\times W H×W tokens 操作:

M-Adds ( S A ) ≈ 4 H W C 2 + 2 ( H W ) 2 C (6) \text{M-Adds}(\mathbf{SA}) \approx 4HWC^2 + 2(HW)^2C \tag{6} M-Adds(SA)4HWC2+2(HW)2C(6)
M-Adds ( L S A ) ≈ 4 H W C 2 + 2 H W K 2 C (7) \text{M-Adds}(\mathbf{LSA}) \approx 4HWC^2 + 2HWK^2C \tag{7} M-Adds(LSA)4HWC2+2HWK2C(7)
M-Adds ( O A ) ≈ H W C ( 2 C + N K 4 ) + H W K 2 C (8) \text{M-Adds}(\mathbf{OA}) \approx HWC(2C+NK^4) + HWK^2C \tag{8} M-Adds(OA)HWC(2C+NK4)+HWK2C(8)

假设 C = 384 , K = 3 , N = 6 C=384,K=3,N=6 C=384,K=3,N=6,outlook 注意力要更加节约算力,因为 N K 4 < 2 C NK^4<2C NK4<2C

2.2 Network Architecture Variants

作者基于 LV-ViT 模型构建了 VOLO,LV-ViT 是一个非常强大的基线模型,共有1.5亿个参数,在 ImageNet 上取得 86.2 % 86.2\% 86.2%的 top-1 准确率。原版LV-ViT模型包含一个区域 embedding 模块,将大小是 224 × 224 224\times 224 224×224的输入图像映射为 14 × 14 14\times 14 14×14的tokens,然后有一序列的 transformers 对 14 × 14 14\times 14 14×14的tokens进行操作。为了利用细粒度token表征,在第一阶段,作者调整区域embedding模块,把图像 tokenize 为大小是 8 × 8 8\times 8 8×8的小图块,而非 16 × 16 16\times 16 16×16。然后在细粒度层级,用一组 Outlookers 来生成更具表现力的 token 表征。第二阶段中,使用另一个区域embedding模块,对 tokens 做下采样。然后用一组 transformers 编码全局信息。

有了上面的网络结构,作者引入了 VOLO 的5个版本:VOLO-D1, VOLO-D2, VOLO-D3, VOLO-D4 和 VOLO-D5。在表2中可以看到细节超参设定。在所有版本中,Outlooker 和 Transformer 的比值设为 1 : 3 1:3 1:3,作者发现这样做实验效果最好。在最后一个阶段中,增加了2个类别注意力层,更新类别 embedding。Outlooker中的隐藏维度设为 Transformer 的一半。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值