又是一周周末,光调代码去了,都没时间看论文了,汗。
这是一篇关于开放词汇定位的文章,也是近两年的新坑。
开放词汇检测旨在检测那些未出现在预定词汇中的目标,类似的任务有视觉定位 Visual Grounding (VG)。然而当前的基础模型虽然在很多视觉语言任务上表现很好,但是在开放视觉定位 open-vocabulary visual grounding (OV-VG) 上还没有拿得出手的工作。本文提出一种新的 OV 任务,名为开放词汇定位 Open-Vocabulary Visual Grounding (OV-VG) 和开放词汇短语定位 Open-Vocabulary Phrase Localization (OV-PL)。整体目标是建立起语言描述和新颖目标定位间的联系。
为了测试这两任务,建立了一个包含 7272 张图像的数据集,由 1 万个实例组成,其中的 1 千张用于组成 OV-PL 数据集。基于这些数据,测试了大量的方法,但是效果都不太好。于是本文提出一种方法,其中包含两个关键模块:图像文本 Query 选择 Text-Image Query Selection (TIQS) 、语言引导的特征注意力 Language-Guided Feature Attention (LGFA),用于促进对新类别的识别以及增强视觉和文本信息的对齐。大量的实验表明方法达到了 SOTA 的性能。
首先指出视觉定位的定义和意义。之前的方法通过增强视觉-语言表示弥补了视觉语言的代沟,但是检测新的目标不太行。另外,在视觉定位任务中,目前没有公开的数据集用于支持新类别目标的检测。
最近,开放词汇学习很火,尤其是基于 CLIP 的模型,快速席卷了开放词汇检测和开放词汇分割 open-vocabulary detection (OV-D)、open-vocabulary segmentation (OV-S)。但现有的方法受限于大量的数据。于是本文引入一个手工裁剪的数据集,用于开放词汇视觉定位 open-vocabulary visual grounding (OV-VG) 任务,同时设计了一个数据集,其中包含 100 个新颖的类别,每个类别包含 100 个实例。每张图像对应两种描述:一个只包含基础的类别,而另一个则是基础和新颖的概念组合。提出的方法包含文本-图像 query 选择 text-image query selection (TIQS) 和语言引导的特征注意力 language-guided feature attention (LGFA)。此外,还提供了一些 baseline 模型用于 OV-PL 数据集。OV-VG、OV-PL 与 VG、PL、OV-D 的区别如下表所示:
本文贡献总结如下:
现有的方法可以划分为两阶段的方法和单阶段方法。而大部分的视觉定位基本上都是目标检测方法的拓展。
两阶段方法中,首先是生成区域 proposals,接着是利用特定的语言输入鉴定最合适的 proposal,缺点在于推理速度太慢。另一方面,单阶段的方法能无缝地整合视觉和语言特征来直接圈出特定的区域。然而由于逐点进行特征表示,在捕捉复杂的视觉语言信息时,能力稍显不足。
随着 Transformer 的出现,能够直接检索出特定的目标,例如 TransVG、VLTVG。
短语定位旨在建立起名词短语和特定区域间的联系,通过引入空间关系,可以区分出不同的实体。一些弱监督和无监督的方法尝试减小标注的成本,例如 Align2Ground。而本文引入一种新的开放词汇定位方法,同时展示了多种 Baseline 方法。
主流的开放词汇目标检测 open-vocabulary object detection (OV-D) 可以划分为五个类别:知识蒸馏、区域文本预训练、利用更平衡的数据集和伪标签来训练模型、prompting modeling、区域文本对齐。例如 ViLD、FVLM、Grounding DINO。
开放词汇分割催生了很多技术,例如 Visual Language Models (VLMs)、diffusion models、开放词汇视频理解、开放词汇 3D 理解。然后是一些方法举例:OpenSeeD、X-Decoder。
开放词汇目标检测方法旨在鉴别出未定义的目标类别,应用很广泛。目前还没有 Benchmark 或者方法用于开放视觉定位任务。于是本文引入两个 Benchmark 数据集,OV-VG 和 OV-PL,同时提供大量的 Baseline 模型用于 OV-VG 任务。此外,引入了一些短语定位方法。最后提出了一种网络用于解决 OV-VG 问题。
OV-VG 数据集包含 7272 张图像,共计 1 万个实例。所有的图像选自 MSCOCO 数据集,且与 RefCOCO+\g 无交集。选择 COCO 中的 80 个类别作为基础类,另外 100 个来自 LVIS 的类别作为新颖类别。进一步从 OV-VG 数据集中挑选出 1 千张图像作为开放词汇短语定位任务的数据集,标注格式与 Flickr30k Entities 一致。
由于 RefCOCO 和 COCO2017 的训练集和测试集有交集,于是从 COCO2017 val 和 RefCOCO val 中挑选图像。同时确保 OV-PL 中的 1 千张图像完全来源于 OV-VG。
选择 COCO 中的 80 个类别作为基础类,另外 100 个来自 LVIS 的类别作为新颖类别。
6 个标注打工人,两个质量检测打工人。样本如下图所示;
开始时在每个描述中用新类别来代替旧的,描述中包含颜色、形状、关联关系等。OV-VG 数据集不仅包含新的类别,而且在标注过程中,特意增强对视觉-语言的理解。举例如下:
RefCOCO 包含了目标和一些位置词语,而 RefCOCO+ 用动作行为代替了其绝对位置,RefCOCOg 则使用来更细节的描述。OV-VG 描述模仿 RefCOCOg 的格式,旨在从细节上描述新颖类别目标的信息,同时也并未限制方向词汇和属性词汇的使用。RefCOCO、RefCOCO+、RefCOCOg、OV-VG 数据集的平均描述长度分别为 3.61、3.53、8.43 和 9.32。
利用 LVIS 中的原始标注 boxes,处理成与 RefCOCO 相同的格式,包含位置和尺寸 4 个维度,表示目标的左上角和右下角坐标。OV-VG 和 RefCOCO val 的数据分布如下图所示:
从图中看到,OV-VG 和 RefCOCO val 的实例数量几乎相同,1 万 vs. 10834。相比于 RefCOCO val,OV-VG 的尺度变化则更加明显,更加符合现实。同时 OV-VG 数据集中的目标更小,因此需要模型更精确的定位能力。
从 OV-VG 中选择 1 千张图像构建 OV-PL 数据集,标注方式类似于 Flickr30k Entities,但是只有两种结构化的描述(前者是 5 种)。其中一个句子仅使用基础的类别,而另一个同时使用基础和新颖的类别。标注分为两个阶段:指代描述+bounding box 标注。样本如下图所示:
如上图所示,结合当前的 VG 和 OV-VD 网络结构来设计端到端的 OV-VG 网络。给定图像文本对,首先用图像 Backbone,类似 ResNet-50 或 Swin Tranformer 提取图像特征;文本 Backbone,类似 BERT 或 CLIP 提取文本化的 embedding。之后将图像和文本特征送入一个特征编码器用于特征融合。
为对齐这两种模态,在特征编码器中添加图像-文本和文本-图像跨模特注意力。然后应用语言引导的特征注意力 language-guided feature attention (LGFA) 和文本-图像 query 选择 text-image query selection (TIQS) 来进一步指代目标。LGFA 强化图像特征,使其能够关注指代表达式区域,而 TIQS 提供所有潜在的与位置相关的 boxes,并从中选择出 top-K 个 queries。最后,应用特征编码器来分析编码后的图像和文本特征,定位到更精确的目标位置并输出 top-1 box。算法路线图如下所示:
给定图像和文本表达式,送入 CLIP 图像和文本 Backbone,提取图像特征和文本 embedding。使用多尺度可变形自注意力来增强展平后的图像特征,使用自注意力增强文本特征。最后引入两个跨膜态注意力深度融合图像和文本信息。在融合当前层的输出后,接下来更新输入用于下一层的融合。定义
n
=
m
i
n
(
N
v
,
N
l
)
n=min(N_v,N_l)
n=min(Nv,Nl),其中
N
v
N_v
Nv 和
N
l
N_l
Nl 分别是图像和文本的编码器层,
v
v
′
v_v^{\prime}
vv′ 定义为:
v
v
′
=
c
o
n
c
a
t
(
P
v
→
l
(
P
l
→
v
(
v
v
(
i
)
,
v
l
(
i
)
)
)
)
,
0
≤
i
≤
n
)
v_{v}^{\prime}=concat\left(\mathcal{P}_{v\to l}\left(\mathcal{P}_{l\to v}\left(v_{v(i)},v_{l(i)}\right)\right)\right),0\leq i\leq n)
vv′=concat(Pv→l(Pl→v(vv(i),vl(i)))),0≤i≤n)其中
P
v
→
l
(
⋅
)
\mathcal{P}_{v→l}(\cdot)
Pv→l(⋅) 和
P
l
→
v
(
⋅
)
\mathcal{P}_{l→v}(\cdot)
Pl→v(⋅) 分别表示图像-文本,文本-图像融合。
v
v
(
i
)
v_{v(i)}
vv(i) 和
v
l
(
i
)
v_{l(i)}
vl(i) 分别是图像和文本编码器的第
i
i
i 层,接着是一个 FFN + ReLU 激活。
LGFA 基于多头注意力机制,其中的 query 为展平的图像特征
v
v
′
v_v^{\prime}
vv′,key 和 value 则是文本 embedding
v
l
′
v_l^{\prime}
vl′。多头注意力对齐展平后的图像和文本特征生成语义图
v
s
′
v_s^{\prime}
vs′。然后使用线性投影和 L2 归一化将
v
v
′
v_v^{\prime}
vv′ 和
v
s
′
v_s^{\prime}
vs′ 投影到相同的空间,记为
v
^
v
′
\hat v_v^{\prime}
v^v′ 和
v
^
s
′
\hat v_s^{\prime}
v^s′。接下来为每个点
x
x
x 计算注意力得分:
S
x
=
α
⋅
exp
(
−
(
1
−
v
^
v
′
(
x
)
T
v
^
s
′
(
x
)
)
2
2
σ
2
)
S_x=\alpha\cdot\exp\left(-\frac{\left(1-\hat{v}_v^{\prime}\left(x\right)^{\mathbf{T}}\hat{v}_s^{\prime}\left(x\right)\right)^2}{2\sigma^2}\right)
Sx=α⋅exp
−2σ2(1−v^v′(x)Tv^s′(x))2
其中
α
\alpha
α 和
σ
\sigma
σ 为可学习的参数。
基于上式得到的注意力分数,采用点乘对
v
v
′
v_v^{\prime}
vv′ 计算,得到新的
v
v
′
′
v_v^{\prime\prime}
vv′′ 用于特征解码器:
v
v
′
′
=
β
⋅
v
v
′
⋅
S
x
+
(
1
−
β
)
⋅
v
v
′
v_v^{\prime\prime}=\beta\cdot v_v^{\prime}\cdot S_x+(1-\beta)\cdot v_v^{\prime}
vv′′=β⋅vv′⋅Sx+(1−β)⋅vv′其中
β
\beta
β 是平衡超参数,实验中设为 0.7。
首先生成 Proposals,根据展平的图像特征
v
v
′
v_v^{\prime}
vv′ 和文本特征
v
l
′
v_l^{\prime}
vl′,计算两者间的 eisum:
S
l
=
v
′
T
v
l
′
∥
v
v
′
∥
∥
v
l
′
∥
S_l=\frac{v^{^{\prime}\operatorname{T}}v_l^{\prime}}{\left\|v_v^{\prime}\right\|\left\|v_l^{\prime}\right\|}
Sl=∥vv′∥∥vl′∥v′Tvl′其中
S
l
S_l
Sl 表示 logit 分数。此函数用于衡量图像特征和文本 embedding 间的相似度,旨在匹配这两个模态特征。之后根据 loggit 分数,从中选出 top-K 个 queries,送入到解码器。
引入 DINO 解码器,并添加一些文本注意力来对齐文本-图像模态。
首先,将 top-K 个 queries 作为特征解码器的输入。query
t
q
∈
R
C
×
1
t_q\in\mathbb{R}^{C\times1}
tq∈RC×1 输入到自注意力模块,来收集与目标
t
l
∈
R
C
×
1
t_l\in\mathbb{R}^{C\times1}
tl∈RC×1 相关的语义信息。而 LGFA 模块的输出作为 key 和 value 用于图像-文本跨模态注意力。于是聚合
t
l
t_l
tl 和
v
v
′
′
v_v^{\prime\prime}
vv′′ 特征得到视觉特征
t
l
′
∈
R
C
×
1
t_l^{\prime}\in\mathbb{R}^{C\times1}
tl′∈RC×1 作为 query,文本 embedding
v
l
′
v_l^{\prime}
vl′ 作为 key 和 value,输出
t
v
t_v
tv。定义
i
(
1
<
i
<
N
)
i(1i(1<i<N) 作为解码器的当前阶段,之后通过
t
v
t_v
tv 更新 query
t
q
i
t_q^i
tqi:
t
q
i
+
1
=
f
L
N
(
f
L
N
(
t
q
i
+
t
v
)
+
f
F
F
N
(
f
L
N
(
t
q
i
+
t
v
)
)
)
t_q^{i+1}=f_{LN}\left(f_{LN}\left(t_q^i+t_v\right)+f_{FFN}\left(f_{LN}(t_q^i+t_v)\right)\right)
tqi+1=fLN(fLN(tqi+tv)+fFFN(fLN(tqi+tv)))其中
f
L
N
(
⋅
)
f_{LN}(\cdot)
fLN(⋅) 和
f
F
F
N
(
⋅
)
f_{FFN}(\cdot)
fFFN(⋅) 分别表示 L2 归一化和前项传播网络。每个解码器层添加跨膜态注意力信息用于视觉-语言对齐。
在训练阶段,结合 OV-VD 和 VLTVG 的损失函数到提出的 OV-VG 框架内。此外,引入对比对齐损失。具体来说,将文本 embedding 视为
t
i
t_i
ti,proposal embeddings 的数量为
N
N
N,
O
i
+
O^{+}_{i}
Oi+ 表示与
t
i
t_i
ti 对齐的正样本数量。于是损失定义如下:
L
c
t
s
=
1
∣
O
i
+
∣
∑
j
∈
O
i
+
−
log
(
exp
(
t
i
T
o
j
/
τ
)
∑
k
=
0
N
−
1
exp
(
t
i
T
o
k
/
τ
)
)
\mathcal{L}_{cts}=\frac1{\left|O_i^+\right|}\sum_{j\in O_i^+}-\log\left(\frac{\exp\left(t_i^To_j/\tau\right)}{\sum_{k=0}^{N-1}\exp\left(t_i^To_k/\tau\right)}\right)
Lcts=
Oi+
1j∈Oi+∑−log(∑k=0N−1exp(tiTok/τ)exp(tiToj/τ))其中
τ
\tau
τ 为温度参数,整体损失为:
L
=
λ
g
i
o
u
L
g
i
o
u
+
λ
L
1
L
L
1
+
λ
c
t
s
L
c
t
s
\mathcal{L}=\lambda_{\mathrm{giou}}\mathcal{L}_{\mathrm{giou}}+\lambda_{\mathrm{L1}}\mathcal{L}_{\mathrm{L1}}+\lambda_{\mathrm{cts}}\mathcal{L}_{\mathrm{cts}}
L=λgiouLgiou+λL1LL1+λctsLcts其中
L
g
i
o
u
\mathcal{L}_\mathrm{giou}
Lgiou、
L
L
1
\mathcal{L}_{\mathrm{L1}}
LL1、
L
c
t
s
\mathcal{L}_{\mathrm{cts}}
Lcts 分别表示 GIoU 损失、L1 损失和对比对齐损失。
λ
g
i
o
u
=
L
c
t
s
=
2
\lambda_{\mathrm{giou}}=\mathcal{L}_{\mathrm{cts}}=2
λgiou=Lcts=2、
λ
L
1
=
5
\lambda_{\mathrm{L1}}=5
λL1=5 为平衡的超参数。
模型训练在 RefCOCO 数据集上,推理在 OV-VG。图像 Backbone 采用 ResNet-50 和 CLIP。输入尺寸 640 × 640 640\times640 640×640,最大文本长度 256 256 256。两块 3090,AdamW 优化器,初始学习率 1 × 1 0 − 4 1\times 10^{-4} 1×10−4,权重衰减 1 × 1 0 − 5 1\times10^{-5} 1×10−5,Batch 16,10 个 epochs。
本文引入两个数据集 OV-VG 和 OV-PL,提出了一种 OV-VG 框架,整合了 LGFA 和 TIQS 模块。在 OV-VG 数据集上的表现表明本文提出的方法效果很好。通过可视化实验验证了方法的理论。
写在后面
这是篇挖坑的工作,思路还是比较简单的,后续有想“水”点论文的同学可以按照此种方法来操作下。当然缺点也有,这个创新点还是稍显薄弱,另外 Fig. 1 图片论文中根本没有引用,那么放上来是干啥的?图形摘要?