TransFG:用于细粒度识别的 Transformer 架构
Posted AI浩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TransFG:用于细粒度识别的 Transformer 架构相关的知识,希望对你有一定的参考价值。
TransFG:用于细粒度识别的 Transformer 架构
摘要
论文地址:https://arxiv.org/abs/2103.07976
旨在从子类别中识别对象的细粒度视觉分类(FGVC)是一项非常具有挑战性的任务,因为其固有的细微类间差异。大多数现有工作主要通过重用主干网络来提取检测到的判别区域的特征来解决这个问题。然而,这种策略不可避免地使管道复杂化,并推动建议的区域包含大部分对象,因此无法定位真正重要的部分。最近,视觉变换器(ViT)在传统分类任务中显示出其强大的性能。转换器的自注意力机制将每个补丁标记链接到分类标记。在这项工作中,我们首先评估 ViT 框架在细粒度识别设置中的有效性。然后,由于注意力链接的强度可以直观地被认为是令牌重要性的指标,我们进一步提出了一种新颖的零件选择模块,可以应用于大多数变压器架构,其中我们整合了变压器的所有原始注意力权重进入注意力图,用于指导网络有效和准确地选择有区别的图像块并计算它们的关系。应用对比损失来扩大混淆类别的特征表示之间的距离。我们将基于增强型变压器的模型命名为 TransFG,并通过在五个流行的细粒度基准上进行实验来证明它的价值,在这些基准上我们实现了最先进的性能。给出了定性结果以更好地理解我们的模型。
介绍
细粒度视觉分类旨在对给定对象类别的子类进行分类,例如鸟类子类(Wah et al.2011; Van Horn et al.2015)、汽车(Krause et al.2013)、飞机(Maji et al.2013)。 2013)。由于类间变异小、类内变异大以及注释数据的不足,特别是对于长尾类,它一直被认为是一项非常具有挑战性的任务。受益于深度神经网络的进步(Krizhevsky, Sutskever, and Hinton 2012; Simonyan and Zisserman 2014; He et al.2016),FGVC 的性能近年来取得了稳步进展。为了避免劳动密集型的部分注释,社区目前专注于仅具有图像级标签的弱监督 FGVC。现在的方法可以大致分为两类,即定位方法和特征编码方法。与特征编码方法相比,定位方法具有显式捕捉子类之间的细微差异的优势,这更易于解释并产生更好的结果。
定位方法的早期工作依赖于零件的注释来定位判别区域,而最近的工作(Ge, Lin, and Yu 2019a; Liu et al. 2020; Ding et al.2019)主要采用区域提议网络(RPN)来提出边界包含判别区域的框。在获得选定的图像区域后,将它们调整为预定义的大小并再次通过骨干网络转发以获取信息丰富的局部特征。一个典型的策略是单独使用这些局部特征进行分类,并采用等级损失(Chen et al.2009)来保持边界框质量与其最终概率输出之间的一致性。然而,这种机制忽略了选定区域之间的关系,因此不可避免地鼓励 RPN 提出包含大部分无法定位真正重要区域的对象的大边界框。有时这些边界框甚至可以包含大面积的背景并导致混乱。此外,与主干网络相比,具有不同优化目标的 RPN 模块使网络更难训练,并且主干网络的重用使整个管道复杂化。
最近,视觉转换器 (Dosovitskiy et al. 2020) 在分类任务中取得了巨大成功,这表明将纯转换器直接应用于具有先天注意机制的图像块序列可以捕获图像中的重要区域。 对象检测(Carion et al. 2020)和语义分割(Zheng et al. 2021;Xie et al. 2021;Chen et al. 2021)等下游任务的一系列扩展工作证实了其强大的捕获能力 全局和局部特征。
Transformer 的这些能力使其天生适合 FGVC 任务,因为 Transformer 的早期远程“感受野”(Dosovitskiy et al. 2020)使其能够定位早期处理层中的细微差异及其空间关系。相比之下,CNN 主要利用图像的局部性特性,仅在非常高的层中捕获较弱的远程关系。此外,细粒度类之间的细微差别只存在于某些地方,因此卷积一个过滤器来捕捉图像所有地方的细微差别是不合理的。
受这种观点的启发,在本文中,我们提出了第一项研究,该研究探索了视觉转换器在细粒度视觉分类背景下的潜力。我们发现直接在 FGVC 上应用 ViT 已经产生了令人满意的结果,同时可以根据 FGVC 的特点进行大量的调整以进一步提高性能。具体来说,我们提出了零件选择模块,它可以找到判别区域并去除冗余信息。引入对比损失以使模型更具判别力。我们将这个新颖而简单的基于转换器的框架命名为 TransFG,并在五个流行的细粒度视觉分类基准(CUB-200-2011、Stanford Cars、Stanford Dogs、NABirds、iNat2017)上对其进行广泛评估。在图 1 中可以看到性能比较的概述,其中我们的 TransFG 在大多数数据集上优于具有不同主干的现有 SOTA CNN 方法。总之,我们在这项工作中做出了几个重要贡献:
- 据我们所知,我们是第一个验证视觉转换器对细粒度视觉分类的有效性的人,它提供了一种替代具有 RPN 模型设计的主导 CNN 主干网络。
- 我们介绍了 TransFG,这是一种用于细粒度视觉分类的新型神经架构,它自然地专注于对象的最具辨别力的区域,并在多个基准测试中实现了 SOTA 性能。
- 展示的可视化结果说明了我们的 TransFG 准确捕捉有区别的图像区域的能力,并帮助我们更好地理解它如何做出正确的预测。
相关工作
在本节中,我们将简要回顾现有的细粒度视觉分类和变换器工作。
细粒度视觉分类
已经做了很多工作来解决细粒度的视觉分类问题,它们大致可以分为两类:定位方法(Ge, Lin, and Yu 2019a; Liu et al. 2020; Yang et al. 2021)和特征编码方法( Yu et al. 2018; Zheng et al. 2019; Gao et al. 2020)。 前者侧重于训练检测网络以定位判别部分区域并重用它们来执行分类。 后者旨在通过计算高阶信息或查找对比对之间的关系来学习更多信息特征。
定位 FGVC 方法 以前,一些作品 (Branson et al. 2014; Wei, Xie, and Wu 2016) 试图利用部分注释来监督定位过程的学习过程。 然而,由于此类注释成本高昂且通常不可用,因此仅具有图像级标签的弱监督部件提案现在引起了更多关注。 Ge 等人(Ge、Lin 和 Yu 2019a)交替利用 Mask R-CNN 和基于 CRF 的分割来提取对象实例和判别区域。 杨等人。 (Yang et al. 2021) 提出了一种重排序策略,基于区域特征构建的数据库对全局分类结果进行重排序。 然而,这些方法都需要一个特殊设计的模块来提出潜在区域,并且这些选择的区域需要再次通过主干转发以进行最终分类,这在我们的模型中不需要,从而保持我们管道的简单性。
特征编码方法 方法的另一个分支侧重于丰富特征表示以获得更好的分类结果。 Yu et al. (Yu et al. 2018) 提出了一个分层框架来进行跨层双线性池化。 Zheng et al. (Zheng et al. 2019) 采用组卷积的思想,首先将通道按语义划分为不同的组,然后在每个组内进行双线性池化而不改变维度,从而可以集成到任何现有的主干中 直接地。 然而,这些方法通常是不可解释的,这样一个人不知道是什么让模型区分了具有细微差异的子类别,而我们的模型丢弃了不重要的图像块,只保留那些包含大部分信息的图像块以进行细粒度识别。
Transformer
Transformer 和 self-attention 模型极大地促进了自然语言处理和机器翻译的研究(Dai et al. 2019; Devlin et al. 2018; Vaswani et al.2017)。受此启发,最近的许多研究都试图将Transformer应用于计算机视觉领域。最初,Transformer 用于处理由 CNN 主干为视频提取的顺序特征(Girdhar et al. 2019)。后来,Transformer 模型进一步扩展到其他流行的计算机视觉任务,例如对象检测 (Carion et al. 2020; Zhu et al. 2020)、分割 (Xie et al. 2021; Wang et al. 2021)、对象跟踪 (Sun等人,2020)。最近,纯Transformer模型变得越来越流行。 ViT (Dosovitskiy et al. 2020) 是第一个表明将纯Transformer直接应用于图像块序列的工作可以在图像分类方面产生最先进的性能。基于此,Zheng et al. (Zheng et al. 2021) 提出 SETR 来利用 ViT 作为分割编码器。 He et al. (He et al. 2021) 提出了 TransReID,它将边信息与 JPM 一起嵌入到 Transformer 中,以提高对象重新识别的性能。在这项工作中,我们将 ViT 扩展到细粒度视觉分类并展示其有效性。
方法
我们首先简要回顾一下视觉转换器的框架,并展示如何进行一些预处理步骤以将其扩展到细粒度识别。 然后,将详细阐述 TransFG 的总体框架。
视觉转换器作为特征提取器
图像序列化。 在 ViT 之后,我们首先将输入图像预处理为一系列扁平化块
x
p
x_p
xp。 然而,原始的分割方法将图像切割成不重叠的块,这会损害局部相邻结构,尤其是在分割判别区域时。 为了缓解这个问题,我们建议使用滑动窗口生成重叠补丁。 具体来说,我们将输入图像的分辨率表示为 H * W,图像块的大小为 P,滑动窗口的步长为 S。因此,输入图像将被分成 N 个块,其中
N
=
N
H
∗
N
W
=
⌊
H
−
P
+
S
S
⌋
∗
⌊
W
−
P
+
S
S
⌋
(1)
N=N_H * N_W=\\left\\lfloor\\fracH-P+SS\\right\\rfloor *\\left\\lfloor\\fracW-P+SS\\right\\rfloor \\tag1
N=NH∗NW=⌊SH−P+S⌋∗⌊SW−P+S⌋(1)
这样,两个相邻的块共享一个大小为 (P - S) * P 的重叠区域,这有助于保存更好的局部区域信息。 通常来说,步长 S 越小,性能越好。 但是减小 S 会同时需要更多的计算成本,所以这里需要进行权衡。
补丁嵌入。 我们使用可训练的线性投影将矢量化块 xp 映射到潜在的 D 维嵌入空间。 将可学习的位置嵌入添加到补丁嵌入中以保留位置信息,如下所示:
z
0
=
[
x
p
1
E
,
x
p
2
E
,
⋯
,
x
p
N
E
]
+
E
p
o
s
(2)
\\mathbfz_0=\\left[x_p^1 \\mathbfE, x_p^2 \\mathbfE, \\cdots, x_p^N \\mathbfE\\right]+\\mathbfE_p o s \\tag2
z0=[xp1E,xp2E,⋯,xpNE]+Epos(2)
其中 N 是图像块的数量,
E
∈
R
(
P
2
⋅
C
)
∗
D
\\mathbfE \\in \\mathbbR^\\left(P^2 \\cdot C\\right) * D
E∈R(P2⋅C)∗D是块嵌入投影,
E
pos
∈
R
N
∗
D
\\mathrmE_\\text pos \\in \\mathbbR^N * D
Epos ∈RN∗D表示位置嵌入。
Transformer 编码器 (Vaswani et al. 2017) 包含 L 层多头自注意力 (MSA) 和多层感知器 (MLP) 块。 因此第 l 层的输出可以写成如下:
z
l
′
=
M
S
A
(
L
N
(
z
l
−
1
)
)
+
z
l
−
1
l
∈
1
,
2
,
⋯
,
L
(3)
z
l
=
M
L
P
(
LN
(
z
l
′
)
)
+
z
l
′
l
∈
1
,
2
,
⋯
,
L
(4)
\\beginarrayll \\mathbfz_l^\\prime=M S A\\left(L N\\left(\\mathbfz_l-1\\right)\\right)+\\mathbfz_l-1 & l \\in 1,2, \\cdots, L \\text (3) \\\\ \\mathbfz_l=M L P\\left(\\operatornameLN\\left(\\mathbfz_l^\\prime\\right)\\right)+\\mathbfz_l^\\prime & l \\in 1,2, \\cdots, L \\text (4) \\endarray
zl′=MSA(LN(zl−1))+zl−1zl=MLP(LN(zl′))+zl′l∈1,2,⋯,L (3) l∈1,2,⋯,L (4)
其中 LN(·) 表示层归一化操作,zl 是编码图像表示。 ViT 利用最后一个编码器层 z L 0 z_L^0 zL0 的第一个令牌作为 全局特征并将其转发给分类器头以获得最终的分类结果,而不考虑存储在其余标记中的潜在信息。
TransFG 架构
虽然我们的实验表明纯视觉转换器可以直接应用于细粒度视觉分类并取得令人印象深刻的结果,但它并不能很好地捕捉 FGVC 所需的局部信息。 为此,我们提出了零件选择模块(PSM)并应用对比特征学习来扩大混淆子类别之间的表示距离。 我们提出的 TransFG 的框架如图 2 所示。
零件选择模块 细粒度视觉分类中最重要的问题之一是准确定位导致相似子类别之间细微差异的判别区域。 例如,图 3 显示了来自 CUB-200-2011(引文)数据集的一对令人困惑的图像。 该模型需要能够捕捉非常小的差异,即眼睛和喉咙的颜色,以便区分这两种鸟类。 在传统的基于 CNN 的方法中,广泛引入了区域提议网络和弱监督分割策略来解决这个问题。
Vision Transformer 模型以其与生俱来的多头注意力机制非常适合这里。 为了充分利用注意力信息,我们将输入更改为最后一个 Transformer 层。 假设模型有 K 个自注意力头,输入到最后一层的隐藏特征表示为
z
L
−
1
=
[
z
L
−
1
0
;
z
L
−
1
1
,
z
L
−
1
2
,
⋯
,
z
L
−
1
N
]
\\mathbfz_L-1=\\left[z_L-1^0 ; z_L-1^1, z_L-1^2, \\cdots, z_L-1^N\\right]
zL−1=[zL−10;zL−11,zL−12,⋯,zL−1N]。 前几层的注意力权重可以写成:
a
l
=
[
a
l
0
,
a
l
1
,
a
l
2
,
⋯
,
a
l
K
]
l
∈
1
,
2
,
⋯
,
L
−
1
(5)
a
l
i
=
[
a
l
i
0
;
a
l
i
1
,
a
l
i
2
,
⋯
,
a
l
i
N
]
i
∈
0
,
1
,
⋯
,
K
−
1
(6)
\\beginarrayll \\mathbfa_l=\\left[a_l^0, a_l^1, a_l^2, \\cdots, a_l^K\\right] & l \\in 1,2, \\cdots, L-1 \\text (5) \\\\ a_l^i=\\left[a_l^i_0 ; a_l^i_1, a_l^i_2, \\cdots, a_l^i_N\\right] & i \\in 0,1, \\cdots, K-1 \\text (6) \\endarray
al=[al0,al1,a带你读AI论文丨用于细粒度分类的Transformer结构—TransFG
还能这么玩?将Prompt Tuning用于细粒度的图像检索!