写在前面
有个城市之星的活动,加紧赶一篇博文出来吧。这是 VALSE 2023 大会(VALSE 2023 无锡线下参会个人总结 6月11日-2)上的一篇 Poster 论文,遂找来读读。
- 论文地址:DETRs with Hybrid Matching
- 代码地址:https://github.com/HDETR
- 收录于:CVPR 2023
- PS:2023 每周一篇博文,主页 更多干货,欢迎关注吖,这是这周加更的一篇,还剩 3️⃣ 篇未补,期待 5 千粉丝有你的参与咩 ~
一、Abstract
一对一匹配是 DETR 建立端到端训练的关键,以至目标检测不再需要 NMS了。然而更少的 queries 被赋值为正样本,导致一对一匹配显著减低了正样本的有效训练。于是提出混合匹配计划:在训练中结合原始的一对一匹配分支和辅助的一对多匹配分支。在推理过程中,仅采用原始的一对一匹配分支,维持端到端的优点以及 DETR 相同推理效率的同时,提高精度。本文提出的方法名为 H-DETR,提升了一系列包括 Deformable-DETR、PETRv2、PETR、TransTrack 等方法在大量视觉任务上的表现。
二、引言
DETR 在各大视觉任务上都取得了突破性的进展,后续的工作通过重新设计更加先进的 Transformer 编码器和解码器结构,或者 query 的构成方法都实现了一定的提升。与之前不同,本文关注于一对一匹配造成的训练效率问题:仅给每个 GT 赋值一个 query。例如,在单个图像中,Deformable-DETR 通常从一组 300 个 queries 中仅选择少于 30 个的 query 来匹配 GT。于是将近 99% 的 COCO 图像中 boxes 选择标注的数量少于 30,而剩下的 270 个 queries 被赋值为空,仅由分类损失来监督,而这导致了非常低的定位能力。
为了克服一对一匹配的问题以及扩大正样本 queries 所带来的好处,本文提出混合匹配计划,通过引入额外的一对多匹配分支来赋值多个 queries 到每个正样本。在推理过程中,仅采用原始的一对一解码器分支,维持了端到端的优点以及 DETR 相同的推理效率的同时,提高了精度。
本文提出的混合匹配方法名为 H-DETR,在大量的视觉任务上验证了 H-DETR 及其变体的有效性。如下图所示;
三、相关工作
目标检测中的 DETR
列举 Deformable-DETR、DAB-DETR、DINO-DETR、DE-DETR。不同于这些工作,本文关注于 DETR 中的匹配机制,提升训练效率的同时保留了原版 DETR 的优点。
其它视觉任务中的 DETR
分割、3D 目标检测、姿态估计、目标跟踪。对于分割任务,首先构造 baseline 方法:Mask-Deformable-DETR,然后在这个 baseline 加上本文提出的方法。对于其他任务,直接采用最近提出的 PETRv2、PETR、TransTrack 作为 baseline 来验证本文的混合匹配方法。
标签赋值
现有的标签赋值可划分为两类:一对多的标签赋值,即为每个 GT box 赋值多个正样本的预测;一对一的标签赋值,为每个 GT box 仅赋值一个正样本预测,方法举例:POTO。本文采用混合匹配的方法。
与 DN-DETR 和 DINO-DETR 的关系
本文提出的方法与最近的这两个方法有关,通过引入 GT 目标噪声增强来辅助 queries。然而 DN-DETR 和 DINO-DETR 主要解决的是:由 Hungarian 赋值带来的不稳定性问题,本文主要解决:一对一匹配过程中正样本训练不充分的问题。
另外,DN-DETR 和 DINO-DETR 都设计了噪声方式以及在噪声 querise 和 GT 目标间手动赋值,本文提出的方法使用端到端赋值的方式来匹配辅助的 queries 和 GT boxes,相比于匈牙利匹配则更简单。DN-DETR/DINO-DETR 需要微调或者重新设计噪声方式及 query 的格式,本文的方法更容易拓展到其他 DETR 变体上而不需要额外的微调。
四、方法
4.1 基础知识
通用的 DETR 框架
给定输入图像 I I I,DETR 首先应用 Backbone 和 Transformer 编码器来提取出增强的像素 embedding X = { x 0 , x 1 , ⋯ , x N } X=\{x_0,x_1,\cdots,x_N\} X={x0,x1,⋯,xN},之后将 X X X 和一组默认的目标 query embedding Q = { q 0 , q 1 , ⋯ , q n } Q=\{q_0,q_1,\cdots,q_n\} Q={q0,q1,⋯,qn} 送入到 Transformer 解码器。然后在解码器的输出上,DETR 利用特定任务的预测头将更新后的 Q Q Q 输出为一组预测 P = { p 0 , p 1 , ⋯ , p n } P=\{p_0,p_1,\cdots,p_n\} P={p0,p1,⋯,pn}。最后 DETR 在预测和 GT G = { g 0 , g 1 , ⋯ , g n } G=\{g_0,g_1,\cdots,g_n\} G={g0,g1,⋯,gn} 间执行一对一的双边匹配。具体来说,DETR 将具有最小匹配损失的预测和 GT 关联起来,然后利用相应的监督损失来训练。示意图如下:
后续的一些工作根据不同的的视觉识别任务修改目标 query 从而实现不同的功能,例如修改目标 query 为 mask query、pose query、track query、bins query 等等。
通用的可变形 Deformable-DETR 框架
Deformable-DETR 从以下几个方面提升了 DETR:
- 采用多尺度 deformable self-attention 和多尺度 deformable cross-attention 替代了原始的多头自注意力和交叉注意力机制;
- 用迭代的精炼预测代替了原始的每层独立预测;
- 用 Transformer 解码器输出的动态 query 代替了原始的图像上下文不相关的 query。
需要注意的是 Deformable-DETR 和 DETR 同样执行的是一对一双边匹配原则。
4.2 混合匹配
混合匹配方法关键在于结合一对一匹配和一对多匹配,其中一对一匹配对于移除 NMS 是必须的,而一对多匹配丰富了与 GT 匹配的 queries 数量。
4.2.1 混合分支计划
采用两组 queries Q = { q 1 , q 2 , ⋯ , q n } Q=\{q_1,q_2,\cdots,q_n\} Q={q1,q2,⋯,qn} 和 Q ^ = { q ^ 1 , q ^ 2 , ⋯ , q ^ n } \widehat Q=\{\widehat q_1,\widehat q_2,\cdots,\widehat q_n\} Q ={q 1,q 2,⋯,q n},前者用于执行一对一匹配,后者执行一对多匹配。
一对一匹配分支
采用
L
L
L 层解码器处理第一组
Q
Q
Q,在每个解码器的输出层分别执行预测。之后在每一层的 {predictions,GT} 间执行双边匹配,估计
L
(
P
l
,
G
)
\mathcal{L}{(\mathbf{P}^l,\mathbf{G})}
L(Pl,G):
L
one2one
=
∑
L
Hungarian
(
P
l
,
G
)
\mathcal{L}_{\text{one2one}} =\sum\mathcal{L}_{\text{Hungarian}}(\mathbf{P}^l,\mathbf{G})
Lone2one=∑LHungarian(Pl,G)其中
P
l
\mathbf{P}^l
Pl 表示第
l
l
l 层 Transformer 解码器层的输出预测。沿用 DETR 和 Deformable-DETR,选择
L
m
a
t
c
h
(
⋅
)
\mathcal{L}_{match}(\cdot)
Lmatch(⋅) 和
L
H
u
n
g
a
r
i
a
n
(
⋅
)
\mathcal{L}_{Hungarian}(\cdot)
LHungarian(⋅):由一个分类损失、
L
1
\mathcal{L}_1
L1 回归损失和 GIoU 损失组成。
一对多匹配分支
之后,采用相同数量
L
L
L 层 Transformer 解码器来处理第二组 queries
Q
^
\widehat {\mathbf{Q}}
Q
,得到
L
L
L 组预测。为执行一对多匹配,简单重复 GT
K
K
K 次,得到增强的目标
G
^
=
{
G
1
,
G
2
,
⋯
,
G
K
}
\widehat{\mathbf{G}}=\{{\mathbf{G}}^1,{\mathbf{G}}^2,\cdots,{\mathbf{G}}^K\}
G
={G1,G2,⋯,GK},其中
G
1
=
G
2
=
⋯
=
G
K
=
G
\mathbf{G}^1={\mathbf{G}}^2=\cdots={\mathbf{G}}^K=\mathbf{G}
G1=G2=⋯=GK=G。同样在每层的 {predictions,增强的 GT} 对上执行双边匹配,估计
L
match
(
P
^
l
,
G
^
)
\mathcal{L}_{\text{match}}(\widehat{\mathbf{P}}^l,\widehat{\mathbf{G}})
Lmatch(P
l,G
):
L
one2many
=
∑
l
=
1
L
L
Hungarian
(
P
^
l
,
G
^
)
\mathcal{L}_{\text{one2many}}=\sum_{l=1}^L\mathcal{L}_{\text{Hungarian}}(\widehat{\mathbf{P}}^l,\widehat{\mathbf{G}})
Lone2many=l=1∑LLHungarian(P
l,G
)其中
P
^
l
\widehat {\mathbf{{P}}}^l
P
l 表示第
l
l
l 层 Transformer 解码器的预测输出。
训练总体损失为
λ
L
one2many
+
L
one2one
\lambda\mathcal{L}_{\text{one2many}}+\mathcal{L}_{\text{one2one}}
λLone2many+Lone2one。为了加快训练速度和并行处理
Q
\mathbf Q
Q 和
Q
^
\widehat {\mathbf{Q}}
Q
,进一步采用一种 masked 多头自注意力来避免彼此交互,实验中并未发现额外的训练损失。最后在评估过程中仅保持一对一匹配分支,即
Q
\mathbf Q
Q。
4.2.2 更多的混合匹配变体
混合 epoch 计划
不同于混合分支计划,在混合 epoch 计划中,仅维持单组的 queries Q ~ = { q ~ 1 , q ~ 2 , ⋯ , q ~ M } \widetilde{\mathrm{Q}}=\{\widetilde{\mathrm{q}}_1,\widetilde{\mathrm{q}}_2,\cdots,\widetilde{\mathrm{q}}_M\} Q ={q 1,q 2,⋯,q M},在不同的训练 epochs 中基于 Q ~ \widetilde{\mathrm{Q}} Q 来执行一对一匹配和一对多匹配。
一对多匹配训练 epochs
在第一个
ρ
\rho
ρ 训练 epochs 内,采用一对一匹配来处理
L
L
L 层 Transformer 解码器中的
Q
~
\widetilde{\mathrm{Q}}
Q
,从而得到
L
L
L 组预测。同时采用相似的策略通过一对多分支执行一对多匹配得到增强的
G
~
=
{
G
1
,
G
2
,
⋯
,
G
K
~
}
\tilde{\text{G}}=\{\text{G}^1,\text{G}^2,\cdots,\text{G}^{\tilde{K}}\}
G~={G1,G2,⋯,GK~}。之后在
L
~
match
(
P
~
l
,
G
~
)
\tilde{\mathcal{L}}_{\text{match}}(\widetilde{\mathbf{P}}^l,\widetilde{\mathbf{G}})
L~match(P
l,G
) 间执行双边匹配:
L
one2many
=
∑
l
=
1
L
L
Hungarian
(
P
~
l
,
G
~
)
\mathcal{L}_{\text{one2many}}=\sum\limits_{l=1}^L\mathcal{L}_{\text{Hungarian}}(\widetilde{\mathbf{P}}^l,\widetilde{\mathbf{G}})
Lone2many=l=1∑LLHungarian(P
l,G
)
一对一匹配训练 epochs
在剩下的
1
−
ρ
1-\rho
1−ρ 个 epochs 上执行一对一匹配,唯一的区别在于匹配预测和原始的 GT 的损失不同:
L
one2one
=
∑
L
H
u
n
g
a
r
i
a
n
(
P
~
l
,
G
)
\mathcal{L}_{\text{one2one}} =\sum \mathcal{L}_{\mathrm{Hungarian}}(\widetilde{\mathbf{P}}^l,\mathbf{G})
Lone2one=∑LHungarian(P
l,G)最后直接在评估时应用
Q
~
\widetilde{\mathrm{Q}}
Q
。总结一下,在一个
ρ
\rho
ρ epochs 上仅应用
L
one2many
\mathcal{L}_{\text{one2many}}
Lone2many,在剩下的
1
−
ρ
1-\rho
1−ρ 个 epochs 上应用
L
one2one
\mathcal{L}_{\text{one2one}}
Lone2one
混合层计划
与混合 epoch 计划类似,仅维持单组的 queries Q ‾ = { Q ‾ 1 , Q ‾ 2 , ⋯ , Q ‾ N } \overline{\mathbf{Q}}=\{\overline{\mathbf{Q}}_1,\overline{\mathbf{Q}}_2,\cdots,\overline{\mathbf{Q}}_N\} Q={Q1,Q2,⋯,QN}。在第一个 L 1 L_1 L1 Transformer 解码器层应用一对多匹配,而在剩下的 L 2 L_2 L2 层应用一对一匹配策略。
一对多匹配解码器层
在第一个
L
1
L_1
L1 层 Transformer 解码器的输出预测和增强的 GT
G
‾
=
{
G
‾
1
,
G
‾
2
,
⋯
,
G
‾
K
‾
}
\overline{\mathbf{G}}=\{\overline{\mathbf{G}}^1,\overline{\mathbf{G}}^2,\cdots,\overline{\mathbf{G}}^{\overline{K}}\}
G={G1,G2,⋯,GK} 间应用一对多匹配计划:
L
one2many
=
∑
l
=
1
L
L
Hungarian
(
P
‾
l
,
G
‾
)
\mathcal{L}_{\text{one2many}}=\sum_{l=1}^L\mathcal{L}_{\text{Hungarian}}(\overline{\mathbf{P}}^l,\overline{\mathbf{G}})
Lone2many=l=1∑LLHungarian(Pl,G)在计算上述损失之前,也需要执行双边匹配
L
match
(
P
‾
l
,
G
‾
)
\mathcal{L}_{\text{match}}(\overline{\mathbf{P}}^l,\overline{\mathbf{G}})
Lmatch(Pl,G)。
一对一匹配解码器层
对接下来的
L
2
L_2
L2 层 Transformer 解码器,执行一对一匹配计划:
L
one2one
=
∑
l
=
L
1
L
1
+
L
2
L
Hungarian
(
P
‾
l
,
G
)
\mathcal{L}_{\text{one2one}}=\sum_{l=L_1}^{L_1+L_2}\mathcal{L}_{\text{Hungarian}}(\overline{\mathbf{P}}^l,\mathbf{G})
Lone2one=l=L1∑L1+L2LHungarian(Pl,G)总结:在整个训练过程中执行
L
one2many
\mathcal{L}_{\text{one2many}}
Lone2many 和
L
one2one
\mathcal{L}_{\text{one2one}}
Lone2one 的组合。
五、实验
5.1 提升基于 DETR 的方法
2D 目标检测的结果
3D 目标检测的结果
多人姿态估计的结果
多目标跟踪的结果
全景分割的结果
见补充材料 C 部分。
5.2 消融实验
不同混合匹配计划的比较
计算/训练时间/GPU 内存的成本
基于 Deformable-DETR 的每个组建的有效性
一对多匹配分支内 K K K 的选择
一对多匹配分支内 T T T 的选择
共享参数的效果
仅使用一对多匹配的比较
5.3 与 SOAT 方法的比较
六、结论
本文展示了一种简单但有效的混合匹配方法,解决基于 DETR 系列的方法在多个任务上的低效率问题。结合了一对一匹配方法的优势,即避免 NMS,和一对多匹配的优势,即增加正样本 queries 的数量和训练效率。希望大家都来 follow。
补充
A、数据集
COCO、LVIS、nuScnes、ScanNetV2、MOT17。
B、更多的超参数细节
C、全景分割的结果
D、更多的消融结果
E、加速混合匹配
在原始方法中,用两个独立的函数来简单执行一对一和一对多的匹配及损失计算,因此增加了整体的训练时间。当与使用相同数量 queries 的 baseline 方法进行比较时,从 75 分钟增加到 85分钟。为了降低这一额外的耗时,在下列算法中融合这两个函数,从而将原始的训练时间从 85 分降为 80 分 🐮。
写在后面文章来源:https://www.toymoban.com/news/detail-723515.html
别看这篇论文简短且简单,人家这个实验做的可是滴水不漏,工作量恐怖! 实验部分的做法与写法值得好好学习。文章来源地址https://www.toymoban.com/news/detail-723515.html
到了这里,关于DETR 系列有了新发现?DETRs with Hybrid Matching 论文阅读笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!