随着对CLIP等预训练视觉-语言模型兴趣的增长,最近的研究重点是如何将这些模型适应下游任务。 尽管取得了令人鼓舞的结果,但大多数现有方法都需要所有类别的标注数据,这在现实应用中可能并不适用,因为存在长尾分布和齐普夫定律。 例如,某些类别可能完全缺乏标注数据,例如新兴概念。 为了解决这个问题,我们提出了一种即插即用的生成方法,称为
S
ynt
H
es
I
zed
P
rompts (
SHIP
),以改进现有的微调方法。 具体来说,我们遵循变分自动编码器引入一个生成器,该生成器通过将合成的提示和相应的类别名称输入到CLIP的文本编码器来重建视觉特征。 通过这种方式,我们可以轻松地获得剩余仅包含标签的类别的合成特征。 此后,我们通过结合标注特征和合成特征,使用现成的微调方法对CLIP进行微调。 在基础到新颖的泛化、跨数据集迁移学习和广义零样本学习方面进行的大量实验证明了我们方法的优越性。 代码可在https://github.com/mrflogs/SHIP获取。
图1:
提出的模型架构建立在 VAE 框架之上,包含一个 VAE 编码器和一个生成器。 在训练阶段,我们使用CLIP视觉编码器提取图像特征,并使用VAE编码器将其编码为潜在代码
z
,随后将其限制在一个先验分布中。 之后,生成器利用编码信息重建输入特征。 值得注意的是,引入了一种新颖的基于CLIP的生成器,它包含两个子网络:一个轻量级的MLP和一个冻结的CLIP文本编码器。 MLP将潜在代码
z
转换为局部偏差,随后将其添加到全局可学习的提示向量中以构建最终提示。 然后,将提示与类别名称一起输入到冻结的文本编码器中以获得重建的特征。 在生成阶段,我们从先验分布中采样潜在代码,然后将其与新的类别名称一起使用以合成相应的特征。 最后,我们使用现成的基类和合成的新的类特征,使用离线方法微调CLIP。
3.1
背景
对比语言图像预训练,称为CLIP
[33]
,是一种用于对齐图像及其对应标题的表示的方法,近年来受到了广泛关注。 CLIP包含两个编码器模块:一个视觉编码器
ℐ
(
𝒙
)
和一个语言编码器
𝒯
(
t
)
,它们分别将图像和文本描述编码到一个共享的
d
维空间中。 视觉编码器可以是ViT
[10]
或ResNet
[15]
,而语言编码器是Transformer
[38]
。 使用应用于大型配对图像和标题数据集的对比损失,这两个编码器联合训练。 训练完成后,CLIP可用于下游任务的零样本分类。 要执行
C
类图像分类,类别描述
{
t
c
}
c
=
1
C
是通过提示生成的,例如“一张{class}的照片”。 然后,输入图像
𝒙
的分类概率计算如下:
其中
τ
表示温度,
cos
(
⋅
,
⋅
)
是余弦相似度函数,
y
是目标类别。
3.2
合成提示
在本文中,我们的目标是在保持数据效率与先前方法相同的同时,提高CLIP在基础类别和新类别(即,有和无可用数据类别)上的性能。 为实现此目标,提出了一种名为
S
ynt
H
es
I
zed
P
rompts (
SHIP
)的新型生成方法,该方法包含三个阶段。 首先,我们遵循变分自动编码器引入一个生成器,该生成器通过将合成的提示和相应的类别名称输入到CLIP的语言编码器来重建视觉特征。 随后,我们通过提供类别名称来获得新类别的合成特征。 最后,我们将标记的基础类特征与合成的新的类特征相结合,并采用现有的微调方法,例如CoOp
[50]
和Tip-Adapter
[48]
,来微调CLIP,从而增强其在基础类和新类上的性能。
生成模型的架构如图
1
所示。 为了保持数据效率,我们选择使用变分自动编码器(VAE)
[21]
来训练我们的生成器,而不是生成对抗网络(GAN)
[14]
。 原因是使用有限的标记数据很难训练有效的GAN判别器
[19]
。 如图
1
所示,VAE架构包含一个编码器
E
(
x
)
和一个生成器
G
(
z
,
c
)
。 首先,我们利用固定的CLIP视觉编码器提取输入图像的特征,即
x
=
ℐ
(
i
m
g
)
。 随后,VAE编码器
E
(
x
)
将特征
x
编码成潜在代码
z
,生成器
G
(
z
,
c
)
使用潜在代码
z
和相应的类别名称
c
重建特征
x
。
E
和
G
的优化是通过如下等式给出的证据下界实现的:
其中
K
L
表示Kullback-Leibler散度,
p
(
z
|
c
)
是假设为
𝒩
(
0
,
1
)
的先验分布,
−
log
G
(
z
,
c
)
表示重建损失。
其中局部偏差
𝒓
通过一个两层全连接网络(即
𝒓
=
M
L
P
(
z
)
)获得,该网络将潜在代码
z
嵌入到符元嵌入空间中,而
L
是提示的长度。 如公式(
3
)所示,我们的提示由两部分组成:一组全局固定的可学习提示
{
𝒑
i
,
i
=
1
,
2
,
…
,
L
}
(随机初始化),捕捉输入特征的全局信息;以及一个局部偏差
𝒓
,它将输入特征的特定实例信息编码到提示中。 通过组合提示和对应类名对应的符元嵌入,我们获得重建特征如下:
其中
𝒯
是冻结的语言编码器,
𝒆
𝒄
是对应类名的符元嵌入。
在训练阶段,我们保持CLIP冻结,只优化编码器
E
、轻量级网络
M
L
P
和全局提示
𝒑
=
[
𝒑
𝟏
,
𝒑
𝟐
,
…
,
𝒑
𝑳
]
。
3.3
微调CLIP
训练阶段结束后,生成器用于为新类别合成特征。 具体来说,给定新类别的类名
c
和从先验分布中采样的噪声
z
,利用生成器
G
(
z
,
c
)
生成相应的特征。 对每个新类别重复此过程,从而产生一个新的合成数据集。 与标记的基本数据集结合后,即可获得所有类别的完整数据集。 因此,可以使用现成的CLIP微调方法
[50, 13, 48, 4]
,与之前的对应方法相比,这有望在新的类别上取得更好的性能。
表1:
基于已知类别的泛化能力。
我们提出的模型在少样本训练集(基础类别)上进行训练,然后在基础类别和新类别上进行评估。 +SHIP 表示我们将我们的方法添加到之前的现成方法中。 由于 Tip-Adapter
[48]
无法在新类别上进行测试,因此其结果未包含在表中。 基础类别和新类别的平均准确率分别用
Base
和
New
表示,它们的调和平均数表示为
H
。最佳结果以粗体显示。
Average
ImageNet
[8]
Caltech101
[11]
OxfordPets
[32]
Base
New
H
Base
New
H
Base
New
H
Base
New
H
CLIP
[33]
69.34
74.22
71.70
72.43
68.14
70.22
96.84
94.00
95.40
91.17
97.26
94.12
CoOp
[50]
82.69
63.22
71.66
76.47
67.88
71.92
98.00
89.81
93.73
93.67
95.29
94.47
CoCoOp
[49]
80.47
71.69
75.83
75.98
70.43
73.10
97.96
93.81
95.84
95.20
97.69
96.43
ProDA
[27]
81.56
72.30
76.65
75.40
70.23
72.72
98.27
93.23
95.68
95.43
97.83
96.62
CLIP-Adapter
[27]
83.05
65.20
73.05
75.74
68.21
71.78
98.13
92.19
95.39
91.55
90.10
90.82
CoOp + VPT
[9]
71.98
74.76
73.34
74.73
70.60
72.60
95.47
93.80
94.62
90.77
97.83
94.16
CoOp + SHIP
80.03
73.69
76.73
75.87
69.95
72.79
97.55
95.20
96.36
95.37
97.87
96.61
CLIP-Adapter + SHIP
83.14
67.77
74.67
76.00
69.32
72.51
97.68
95.09
96.37
92.19
93.85
93.01
Tip-Adapter + SHIP
83.80
76.42
79.94
77.53
70.26
73.71
98.32
94.43
96.34
94.95
97.09
96.01
StanfordCars
[22]
Flowers102
[31]
Food101
[3]
FGVCAircraft
[28]
Base
New
H
Base
New
H
Base
New
H
Base
New
H
CLIP
[33]
63.37
74.89
68.65
72.08
77.80
74.83
90.10
91.22
90.66
27.19
36.29
31.09
CoOp
[50]
78.12
60.40
68.13
97.60
59.67
74.06
88.33
82.26
85.19
40.44
22.30
28.75
CoCoOp
[49]
70.49
73.59
72.01
94.87
71.75
81.71
90.70
91.29
90.99
33.41
23.71
27.74
ProDA
[27]
74.70
71.20
72.91
97.70
68.68
80.66
90.30
88.57
89.43
36.90
34.13
35.46
CLIP-Adapter
[13]
79.16
59.49
67.93
98.29
64.68
78.02
88.24
88.33
88.29
42.14
25.67
31.91
CoOp + VPT
[9]
65.27
75.97
70.21
72.97
75.90
74.40
90.37
91.67
91.01
29.57
33.80
31.54
CoOp + SHIP
68.57
73.90
71.14
94.02
74.40
83.06
90.54
91.03
90.78
34.27
32.33
33.28
CLIP-Adapter + SHIP
78.51
62.52
69.61
98.20
65.89
78.86
88.63
87.07
87.84
42.26
30.05
35.13
Tip-Adapter + SHIP
79.91
74.62
77.18
95.35
77.87
85.73
90.63
91.51
91.07
42.62
35.93
38.99
SUN397
[44]
DTD
[7]
EuroSAT
[16]
UCF101
[35]
Base
New
H
Base
New
H
Base
New
H
Base
New
H
CLIP
[33]
69.36
75.35
72.23
53.24
59.90
56.37
56.48
64.05
60.03
70.53
77.50
73.85
CoOp
[50]
80.60
65.89
72.51
79.44
41.18
54.24
92.19
54.74
68.69
84.69
56.05
67.46
CoCoOp
[49]
79.74
76.86
78.27
77.01
56.00
64.85
87.49
60.04
71.21
82.33
73.45
77.64
ProDA
[27]
78.67
76.93
77.79
80.67
56.48
66.44
83.90
66.00
73.88
85.23
71.97
78.04
CLIP-Adapter
[13]
79.44
66.81
72.58
81.94
39.49
53.30
93.45
54.41
68.78
85.42
67.77
75.58
CoOp + VPT
[9]
73.77
77.90
75.77
57.67
58.70
58.18
67.97
71.63
69.75
73.23
74.63
73.92
CoOp + SHIP
79.54
75.27
77.35
74.88
56.88
64.65
88.62
66.87
76.22
81.08
76.85
78.91
CLIP-Adapter + SHIP
79.86
66.52
72.58
81.60
46.38
59.14
93.05
57.15
70.81
86.61
71.61
78.40
Tip-Adapter + SHIP
81.32
77.64
79.43
81.83
61.47
70.21
93.38
81.67
87.13
85.99
78.10
81.85
4.2
结果
4.2.1
基于已知类别的泛化能力
设置。
遵循 CoCoOp
[49]
,我们将每个数据集划分为两个不相交的子集:基础类别和新类别。 随后,我们从基础类别中随机抽取一个少样本训练集,同时保留原始测试集用于评估。 具体来说,我们仅使用每个类别 16 个样本在基础类别上进行训练,并在基础类别和新类别上评估训练后的模型。 为了评估模型的性能,我们计算了基础类别和新类别的平均准确率及其调和平均数
[49]
(
H
=
2
×
b
a
s
e
×
n
e
w
/
(
b
a
s
e
+
n
e
w
)
)。
表2:
跨数据集迁移学习。
这些方法在一个源数据集(ImageNet)上进行训练,随后在目标数据集上进行评估。 我们报告目标数据集的平均准确率。 为了量化我们方法的性能增益,我们计算使用我们的方法(
C
o
O
p
+
S
H
I
P
)获得的结果与基线方法(
C
o
O
p
)获得的结果之间的差值。