Transformer在细粒度分类上的应用
作者:互联网
TransFG :Transformer在细粒度分类上的应用
论文: TransFG: A Transformer Architecture for Fine-grained Recognition
首个验证 vision transformer 在细粒度视觉分类上的有效性工作,为占主导地位的CNN 骨干与 RPN 模型设计提供了一个替代方案。文章中介绍了 TransFG,一种用于细粒度视觉分类的新型神经架构,它可以自然地聚焦于物体中最具分辨力的区域,并在多个标准基准上实现 SOTA 性能。其中可视化结果的呈现,说明了 TransFG 能够准确地捕捉到鉴别性的图像区域。
摘要
- 现有方法
目前,处理细粒度分类问题主要是通过聚焦于如何定位最有区别的图像区域并依靠它们来提高网络捕捉细微变化的能力。这些工作大多是通过重用主干网络来提取选定区域的特征来实现的。
- 存在问题
这种策略不可避免地使整个过程变得复杂,并要求预测框包含对象的绝大大部分。
- TransFG
transformer的自注意力机制将每个patch token链接到分类token,注意力链接的强度可以被直观地认为是表征重要性的指标。
在这项工作中,我们提出了一种新的基于transformer的框架:TransFG,其中我们将transformer的所有原始注意力权重集成到一个attention map中,以指导网络有效和准确地选择有区别的图像块并计算它们之间的关系。应用对比损失来进一步扩大相似子类的特征表示之间的距离。
- 效果
在五个流行的细粒度benchmark上进行实验来证明TransFG的效果:CUB-200-2011, Stanford Cars, Stan-ford Dogs, NABirds and iNat2017 ,在这些基准上,实现了SOTA。
1.引言
目前来说,为了避免人工密集的区域标签,这个领域致力于图片层次标签的弱监督的方法。方法可以分为两大类:局部区域定位和特征编码。与特征编码方法相比,定位方法的优点在于它们明确地捕捉不同子类之间的细微差别,这种差别更具有解释性,并且通常产生更好的结果。
早期定位方法依赖于局部标签去定位有差别的区域,现在主要采用区域提议网络(RPN)来提取包含差别区域的bbox。在获得所选择的图像区域之后,它们被重新调整到预定义的大小,并再次通过主干网络,以获得信息丰富的局部特征。典型的策略是单独使用这些局部特征进行分类,并采用秩损失来保持bbox的质量和它们的最终概率输出之间的一致性。但是,该机制忽略了所选区域之间的关系,不可避免使得RPN预测的bbox包含大部分对象的边界框,以便获得正确的分类结果。有时这些边界框甚至可以包含大面积的背景,导致混乱。此外,与主干网相比,RPN模块具有不同的优化目标,这使得网络更难训练,主干网的重用使得整个算法流程变得复杂。
最近,vision transformer在传统的分类任务中取得了巨大的成功,这表明利用其固有的注意机制将transformer直接应用于图像块序列可以捕获图像中的重要区域,从而便于分类。一系列关于下面任务的扩展工作,如对象检测,语义分割,证实了vision transformer捕捉全局和局部特征的强大能力。
我们在五个流行的细粒度视觉分类基准(CUB-200-2011,斯坦福汽车,斯坦福狗,NABirds,iNat 2017年)上广泛评估了我们的模型。性能比较的概述可以在图1中看到,在大多数数据集上,我们的转换优于现有的具有不同主干的SOTA CNN方法。总之,在这项工作中做出了几项重要贡献:
- 第一个验证vision transformer在细粒度视觉分类上的有效性,它提供了一种替代具有RPN模型设计的CNN主干的方法。
- 引入了TransFG,一种新的用于细粒度视觉分类的神经体系结构,它自然地聚焦于对象的最有区别的区域,并在几个标准基准上实现SOTA性能。
- 可视化结果展示了我们的转换能够准确地捕捉有区别的图像区域,并帮助我们更好地理解它如何做出正确的预测。
2.相关工作
简要回顾了现有的关于细粒度视觉分类和transformer的工作。
细粒度视觉分类
已经做了许多工作来解决细粒度视觉分类的问题,它们可以大致分为两类:定位方法和特征编码方法。前者侧重于训练一个检测网络来定位有区别的部分区域,并重用它们来执行分类。后者旨在通过计算高阶信息或寻找对比对之间的关系来学习更多的信息特征。
- 定位方法
以往,利用区域标签来监督定位过程的学习过程。然而,由于这样的标注是昂贵的并且通常是不可获得的,如今仅具有图像级标签的弱监督区域引起了更多的关注。
He等人[21]提出了一个复杂的强化学习程序,以估计如何选择有区别的图像区域及其数量。
Ge等人[16]交替地使用基于掩蔽的CNN和基于CRF的分割来提取对象实例和区分区域。Yang等人[47]基于区域特征构建的数据库,对全局分类结果进行重新排序。
然而,这些方法都需要一个特殊设计的模块来提出潜在的区域,并且这些选择的区域需要通过主干再次转发以进行最终分类。此外,一些预测的区域往往包含整个对象,这是不够具有区别性。 - 特征编码
该方法一个方面集中于丰富特征表示以获得更好的分类结果。
Yu等人[50]提出了一个分层框架来做跨层双线性池。
Zheng等人[53]采用群卷积的思想,首先根据信道的语义将信道分成不同的群,然后在每个群内进行双线性合并,而不改变维数,从而可以直接集成到任何已有的主干中。
Zhuang等人[56]提出构建对比输入批次并计算它们之间的线索,以迫使特征包含这种区别性信息。然而,这些方法通常是不可解释的,这样的方法不知道是什么使得模型区分具有细微差异的子类别。
Transformer
transformer和自我注意模型极大地促进了自然语言处理和机器翻译的研究[8,9,41,48]。受此启发,最近的许多研究试图将transformer应用于计算机视觉领域。最初,transformer用于处理通过CNN主干网络提取的视频的连续特征。Girdhar等人[18]利用transformer的一种变体来聚合与视频中特定人相关的上下文线索。后来,变压器模型进一步扩展到其他流行的计算机视觉任务,如目标检测[3],分割[46,4,51],目标跟踪[36]。最近,纯transformer模型越来越受欢迎。ViT [11]是第一个证明(将纯transformer直接应用于一系列图像块)可以在图像分类方面产生最先进性能。在此基础上,郑等人[55]提出利用ViT作为分割的编码器。He等人[20]提出了TransReID,它将边信息与JPM一起嵌入到transformer中,以提高对象重识别的性能。在这项工作中,我们将ViT扩展到细粒度的视觉分类,并展示了它的有效性。
3.方法
3.1作为特征提取的vision transformer
图像序列化。基于ViT,我们首先将输入图像预处理成一系列展开的面片
x
p
x_p
xp。然而,原始的分割方法将图像分割成不重叠的小块,这损害了局部邻近结构,尤其是在分割有区别的区域时的时候。为了缓解这个问题,我们提出用滑动窗口生成重叠的面片。具体来说,我们用分辨率
H
∗
W
H*W
H∗W表示输入图像,图像块的大小为
P
P
P,滑动窗口的步长为
S
S
S。因此,输入图像将被分成N个块,其中
N
=
N
H
∗
N
W
=
[
H
−
P
+
S
S
]
∗
[
W
−
P
+
S
S
]
(
1
)
N = N_H*N_W=[\frac{H-P+S}{S}]*[\frac{W-P+S}{S}]\quad\quad\quad (1)
N=NH∗NW=[SH−P+S]∗[SW−P+S](1)这样,两个相邻的块共享一个大小为
(
P
−
S
)
∗
P
(P-S)*P
(P−S)∗P的重叠区域,这有助于更好地保留局部区域信息。通常来说,步长S越小,性能越好。但是减少S的同时会加大计算成本,所以这里需要做一个权衡。
批量嵌入 我们使用可训练的线性投影将矢量化的面片
x
P
x_P
xP映射到潜在的三维嵌入空间中。可学习的位置嵌入被添加到补片嵌入中,以保留如下位置信息:
z
0
=
[
x
p
1
E
,
x
p
2
E
,
.
.
.
,
x
p
N
E
]
+
E
p
o
s
(
2
)
z_0=[x^1_pE,x^2_pE,...,x^\N_pE]+E_{pos} \quad\quad\quad\quad (2)
z0=[xp1E,xp2E,...,xpNE]+Epos(2)
其中
N
N
N是图像批量的数量,
E
∈
R
(
P
2
−
C
)
∗
D
E\in R^{(P^2-C)*D}
E∈R(P2−C)∗D是批量嵌入投影,
E
p
o
s
∈
R
N
+
D
E_{pos}\in R^{N+D}
Epos∈RN+D代表位置嵌入。
Transformer编码器包含
L
L
L层多头自我注意(MSA)和多层感知器(MLP)块。因此,第
l
l
l层的输出可以写如下:
其中
L
N
(
⋅
)
LN(\cdot)
LN(⋅)表示层归一化操作,
z
l
z_l
zl表示编码图像表示。
V
i
T
ViT
ViT利用最后一个编码器层
z
L
0
z^0_L
zL0的第一个token作为全局特征的表示,并将其转发给分类器头,以获得最终的分类结果,而不考虑存储在剩余token中的潜在信息。
3.2. TransFG Architecture
而我们在第4节的实验表明,纯Vision Transformer可以直接应用于细粒度的视觉分类,并取得令人印象深刻的结果。它没有很好地捕获
F
G
V
C
FGVC
FGVC所需的位置信,为此,我们提出了区域选择模块,并应用对比特征学习来扩大相似子类别之间的表征距离。我们提出的transformer框架如图2所示:
图像被分割成小块(此处显示了不重叠的分割),并被投影到嵌入空间中。变压器编码器的输入包括批量嵌入和可学习的位置嵌入。在最后一个transformer层之前,区域选择模块(PSM)来选择对应于区别性图像块的标记,并且仅使用这些选择的tokens作为输入。最终分类标记上的交叉熵损失和对比损失有助于训练TransFG。
区域选择模块
细粒度视觉分类中最重要的问题之一是准确定位区分区域,这些区域解释了相似区域之间的细微差异。
图3:CUB-2002011数据集的一对confusing的实例。模型需要具备捕捉细微差异的能力,以便对其进行正确分类。第二列显示了整体注意力图和我们的转换方法的两个选定标记。最好用彩色观看。子类。以CUB-200-2011数据集的一对令人困惑的图像为例,如图3所示。为了区分这两种鸟类,模型需要能够捕捉非常小的差异,即眼睛和喉咙的颜色。
区域提议网络和弱监督分割策略被广泛地引入到传统的基于聚类的方法中来解决这个问题。vision transformer模型与生俱来的多头注意力机制非常适合这里。为了充分利用注意力信息,我们将输入更改到最后一个transformer层。假设模型有
K
K
K个自注意力头,输入到最后一层的隐藏特征表示为
z
L
−
1
=
[
z
L
−
1
0
;
z
L
−
1
1
,
z
L
−
1
2
,
⋅
⋅
⋅
,
z
L
−
1
N
]
z_{L-1} =[z^0_{ L-1};z^1_{ L-1},z^2_{ L-1},\cdot\cdot\cdot,z^N_{ L-1}]
zL−1=[zL−10;zL−11,zL−12,⋅⋅⋅,zL−1N]前面各层的注意力权重可写如下:
由于嵌入缺乏标记可识别性,原始注意力权重不一定对应于输入标记的相关重要性,特别是对于模型的更高层。为此,我们建议整合所有先前层的注意力权重。具体来说,我们递归地将矩阵乘法应用于所有层中的原始注意力权重,如下所示
由于
α
f
i
a
n
l
\alpha_{fianl}
αfianl最终能捕捉到信息是如何从输入层传播到更高层的嵌入层,因此与单层原始注意力权重
α
L
−
1
\alpha_{L-1}
αL−1.相比,它是选择区分区域的更好选择。然后,关于最后的在
α
L
−
1
\alpha_{L-1}
αL−1中的K个不同注意力头,我们选择最大值(
A
1
,
A
2
,
⋅
⋅
⋅
,
A
k
A_1,A_2,\cdot\cdot\cdot,A_k
A1,A2,⋅⋅⋅,Ak)的索引。这些位置被用作我们的模型的索引,以提取
z
L
−
1
z_{L-1}
zL−1中的相应标记。最后,我们将选择的标记和分类标记连接起来作为输入序列,表示为:
z
l
o
c
a
l
=
[
z
L
−
1
0
;
z
L
−
1
A
1
,
⋅
⋅
⋅
,
z
L
−
1
A
k
]
(
8
)
z_{local}=[z^0_{L-1};z^{A_1}_{L-1},\cdot\cdot\cdot, z^{A_k}_{L-1}]\quad\quad\quad(8)
zlocal=[zL−10;zL−1A1,⋅⋅⋅,zL−1Ak](8)
通过将原始的整个输入序列替换为对应于信息区域的标记,并将分类标记作为输入连接到最后一个transformer层,我们不仅保留了全局信息,还强制最后一个transformer层去关注不同子类别之间的细微差异,同时在一个超类中放弃了像back ground or common features之类的区分度较低的区域。
3.2.2 对比特征学习
在ViT之后,我们仍然采用PSM模块的第一个token
z
i
z_i
zi进行分类。简单的交叉熵损失不足以完全监督特征的学习,因为子类别之间的差异可能非常小。为此,我们采用了对比损失
L
c
o
n
L_{con}
Lcon,它使对应于不同标签的分类标记的相似性最小化,并使具有相同标签
y
y
y的样本的分类标记的相似性最大化。为了防止损失被easy negatives所支配(具有很小的相似性不同类别的样本),引入了恒定的裕度α,使得只有相似性大于α的否定对才有助于损失
L
c
o
n
L_{con}
Lcon。
形式上,一批大小为N的对比损失表示为:
其中
z
i
z_i
zi和
z
j
z_j
zj经过
l
2
l_2
l2一化预处理,
S
i
m
(
z
i
,
z
j
)
Sim(zi,zj)
Sim(zi,zj)为
z
i
z_i
zi和
z
j
z_j
zj的余弦相似度。
总之,我们的模型是用交叉熵损失
L
c
r
o
s
s
L_{cross}
Lcross对比损失
L
c
o
n
L_{con}
Lcon之和来训练的,它可以表示为:
其中
L
c
r
o
s
s
(
y
,
y
’
)
L_{cross(y,y^’)}
Lcross(y,y’)是预测标签
y
‘
y^‘
y‘和真实标签y之间的交叉熵损失。
4.实验
实验设置
- 4.1节中的数据集和训练超参数。
- 4.2节给出了定量分析,
- 4.3节给出了消融研究。
- 4.4节中进一步给出了定性分析和可视化结果。
4.1 实验设计
数据集 我们基于五个广泛使用的细粒度基准来评估我们提出的TransFG,即CUB-200-2011 [42]、斯坦福汽车[27]、斯坦福狗[25]、NABirds [40]和iNat 2017[22]。类别号和数据拆分等详细信息总结如下:
实施细节.
- 我们在iNat 2017将输入图像的大小调整为448 * 448,除了 304 *
304,以进行公平比较(随机裁剪用于训练,中心裁剪用于测试)。 - 我们将图像分割成大小为16的小块,滑动窗口的步长设置为12。因此,等式1
N
=
N
H
∗
N
W
=
[
H
−
P
+
S
S
]
∗
[
W
−
P
+
S
S
]
(
1
)
N = N_H*N_W=[\frac{H-P+S}{S}]*[\frac{W-P+S}{S}]\quad\quad\quad (1)
N=NH∗NW=[SH−P+S]∗[SW−P+S](1)中的H,W,P,S分别为448,448,16,12。
等式9中
中的裕量α被设置为0.4。 - 数据增强采用随机水平翻转和自动调整(Random horizontal flipping and Auto Aug-ment)[7]。
- 从ImageNet21k上预训练的官方ViT-B 16模型加载中间权重。批量大小设置为16。采用了动量为0.9的SGD优化器。学习率初始化为0.03,斯坦福狗数据集为0.003,iNat2017年的数据集为0.01。
- 我们采用余弦退火删减作为优化器的调度器。
- 所有实验都是使用四个Nvidia Tesla V100 GPUs,使用PyTorch工具箱和APEX,使用FP16训练。
4.2 定量分析
我们将我们提出的方法与上述细粒度数据集上最先进的工作进行了比较。CUB-200-2011和斯坦福汽车的实验结果如表2所示。从结果来看,我们发现我们的方法在CUB数据集上优于以前的所有方法,并在斯坦福汽车上取得了竞争性能。
具体来说,表2的第三列显示了CUB-200-2011的比较结果。与迄今为止的最佳结果StackedLSTM [17]相比,我们的TransFG在Top-1指标上提高了1.3%; 与基础框架ViT相比提高了1.4%。
NTS-Net网[49]利用秩损失(ranking loss)来保持的学习区域特征的一致性。在[10]中采用多个ResNet-50作为多个分支,这大大增加了复杂性。还值得注意的是,Stack LSTM是一个非常混乱的多阶段培训模型,这阻碍了实际应用的可用性,而我们的TransFG保持了框架和培训策略的简单性。
表2的第四列显示了斯坦福汽车的结果。我们的方法优于大多数现有的方法,但比PMG [12]和API-Net [56]的性能差,它们误差小。我们认为,原因可能是斯坦福汽车数据集的图像比其他数据集具有更简单和更清晰的背景,因此它需要更少的工作来定位用于分类子类别的区分区域。我们可以观察到,最近的方法在这个数据集上获得了非常相似的结果。然而,即使具有这一特性,我们的Transformer始终比标准的ViT车型提高1.1%。
表3斯坦福狗的实验结果。与斯坦福汽车相比,斯坦福狗是一个更具挑战性的数据集,因为它的某些物种之间存在更细微的差异,同一类别的样本差异也很大。只有少数方法在这个数据集上进行了测试,我们的TransFG优于所有方法。API-Net [56]通过精心构建批量数据并学习它们的相互特征向量和残差,学会捕捉细微差异。尽管ViT [11]在很大程度上优于其他方法,但是我们的TransFG实现了92.3%的准确率,比SOTA的准确率高2.0%。
表4 NABirds是一个大得多的鸟类数据集,图像数量巨大,而且还有355个以上的类别,这使得细粒度的视觉分类任务更具挑战性。我们在表4中显示了我们的结果。我们观察到,大多数方法(要么通过为不同的分支开发多个主干),要么采用相当深的CNN结构来提取更好的特征,从而获得良好的结果。虽然纯ViT [11]可以直接达到89.9%的精度,但与ViT相比,我们的TransFG不断获得0.9%的性能增益,达到90.8%的精度,比SOTA高出1.6%。
表5 iNat2017是一个用于细粒度物种识别的大规模数据集。由于多作物、多尺度和多阶段优化的计算复杂性,大多数以前的方法没有报告2017年的结果。凭借我们模型管道 的简单性,我们能够扩展Transformer大数据集,并评估性能,如表5所示。该数据集对于挖掘有意义的对象部分是非常具有挑战性的,并且背景也非常复杂。我们发现,在这些具有挑战性的大型数据集上,Vision transformer结构的性能远远优于ResNet结构。ViT比ResNet152高出近10%,在2018年和2019年也可以观察到类似的现象。我们的TransFG是唯一一种在输入大小为304的情况下达到70%以上精度的方法,并且以3.5%的大幅度优于SOTA。
4.3.消融实验
我们对我们的TransFG pipeline进行消融研究,以分析其变体如何影响细粒度的视觉分类结果。所有消融研究都是在CUB-2002011数据集上进行的,而同样的现象也可以在其他数据集上观察到。我们评估了以下设计的影响:重叠贴片、区域选择模块、对比速度和结果分析。
图像块分割方法的影响。我们通过标准的非重叠面片分割实验来研究重叠面片分割方法的影响。如表6所示,在纯vision transformer和改进的转换框架上,重叠分割方法带来了一致的改进,即两个框架都有0.2%的改进。由此带来的额外计算成本也是可以承受的,如第四列所示。
区域选择模块的影响。如表7所示,通过**选择模块(PSM)**选择有区别的区域标记作为最后一个transformer层的输入,模型的性能从90.3%提高到91.0%。我们认为,这是因为通过这种方式,我们将最具区别性的tokens作为输入进行采样,这明确地丢弃了一些无用的tokens,并迫使网络从重要的部分学习。
对比损失的影响。ViT和TransFG框架分别在有无对比损失时的性能比较,以验证其有效性。我们观察到,在有对比损失的情况下,模型获得了很大的性能增益。定量地说,它将ViT的准确率从90.3%提高到90.7%,将TransFG的准确率从91.0%提高到91.5%。我们认为,这是因为对比损失可以有效地扩大相似子类别之间的表征距离,减少相同类别之间的表征距离,这可以从图4中混淆矩阵的比较中清楚地看到。
余量α的影响。等式9中裕度α的不同设置结果如表9所示。我们发现,较小的α值会导致训练信号以easy negative为主,从而降低性能,而较大的α值会阻碍模型学习足够的信息来增加hard negative的距离。根据经验,我们在实验中发现0.4是α的最佳值。
4.4.定性分析
我们在图5的四个基准上显示了Transformer的可视化结果。我们从每个数据集中随机抽取三幅图像。呈现了两种可视化。图5的第一行和第三行示出了选定的tokens位置。为了获得更好的可视化结果,我们只绘制Top-4图像块(按激活值排序),并将块的面积放大两倍,同时保持中心位置不变。
第二行和第四行显示了整个图像的整体注意力图,我们对所有注意力头的权重进行平均,以获得单个注意力图。区域越轻越重要。从图中,我们可以清楚地看到,我们的TransFG成功地捕捉到了一个对象的最重要的区域,即鸟的头部、翅膀和尾巴;狗的耳朵、眼睛、腿;灯,车门。同时,即使在复杂的背景下,我们的整体注意力图也能精确地映射出整个物体。参见NABirds数据集中鸟类坐在树枝上的例子。鸟的部分被点燃,而封堵器的细枝被忽略。
5.结论
在这项工作中,我们提出了一个新的细粒度视觉分类框架,并在四个常见的细粒度基准上取得了最新的结果。我们利用自我注意机制来捕捉最具辨别力的区域。与其他方法生成的边界框相比,我们选择的图像块要小得多,因此通过显示哪些区域真正有助于细粒度分类变得更有意义。这种小图像块的有效性也来自于transformer处理这些区域之间的内部关系,而不是依赖于它们中的每一个来分别产生结果。引入对比特征学习来提高分类标记的区分能力。定性可视化进一步证明了我们方法的有效性和可解释性。
由于TransFG取得了令人鼓舞的结果,我们相信基于transformer的模型在细粒度任务上有很大的潜力,我们的TransFG可以作为未来工作的起点。
五个数据集上的比较
标签:transformer,细粒度,分类,Transformer,区域,TransFG,我们 来源: https://blog.csdn.net/wj113149/article/details/115219022