Global Tracking Transformers

GTR

Title: Global Tracking Transformers

paper: https://arxiv.org/pdf/2203.13250.pdf

code: https://github.com/xingyizhou/GTR

得克萨斯大学奥斯汀分校, Apple
CVPR2022

Introduction

​ 本文提出了一种新的基于transformer的全局多目标跟踪体系结构。网络以一个短时间的帧序列作为输入,并为所有对象产生全局轨迹。核心组件是一个全局跟踪转换器,它操作序列中所有帧中的对象。该转换器对所有帧中的对象特征进行编码,并使用track query将它们分组。**track query是来自单个帧的对象特征,并自然地产生独特的轨迹。**Global Tracking Transformers不需要中间的成对分组或组合关联,并且可以与一个目标检测器联合训练。

​ 它在MOT17基准测试上取得了75.3MOTA和59.1HOTA。

在这里插入图片描述

​ Global Tracking Transformers(GTR)对来自多个连续帧的检测进行编码,并使用track query将它们分组为轨迹。这些查询是在非最大抑制后的单个帧(例如,在线跟踪器中的当前帧)的检测特征,并被GTR转换为轨迹。每个轨迹查询通过使用softmax分布从每个帧分配一个检测,生成一个全局轨迹。

在推理过程中,以滑动窗口的方式运行GTR,中等时间大小为32帧,并在线链接窗口之间的轨迹。该模型在时间窗口内是端到端可微分的。

Method

在这里插入图片描述

Object detection.

​ 定义 I I I作为一张图片。目标检测的目标是识别和定位所有对象。检测器将图像 I I I作为输入,并产生一组对象 { p i } \lbrace p_{i} \rbrace {pi},其位置 { b i ∈ R 4 } \lbrace b_{i} \in \R^{4} \rbrace {biR4}作为输出。对于多类目标检测,第二阶段的获取目标的特征,并从一组预定义的类别 C C C和一个细化的位置 b ^ i \hat b_{i} b^i中生成一个分类分数。对于单类检测(如行人检测),则可以省略第二个阶段。

Tracking.

​ 定义 I 1 , I 2 , . . . I T I^{1},I^{2},...I^{T} I1,I2,...IT作为一系列图像,跟踪器的目标是找到轨迹 τ 1 , τ 2 , . . . τ K \tau_{1},\tau_{2},...\tau_{K} τ1,τ2,...τK的在时间上的关联对象。每个轨迹 τ k = [ τ k 1 , . . . , τ k T ] τ_{k}=[\tau_{k}^{1},...,\tau_{k}^{T}] τk=[τk1,...,τkT]描述了物体 k k k在时间 t t t的轨迹。 τ k t = ∅ \tau_{k}^{t}=\emptyset τkt=表示对象 k k k不能在帧 t t t中。跟踪器可以有选择地预测每个轨迹的对象类得分 s k s_{k} sk,通常作为其每帧切片的平均类。

Tracking by detection

​ Tracking by detection将跟踪问题分解为每帧检测和帧间对象关联。Object detection首先找到 N t N_{t} Nt个候选对象,即每一帧的检测对象的边界框 b 1 t , b 2 t , . . . b_{1}^{t},b_{2}^{t},... b1t,b2t,...。然后用对象分配器 α k t ∈ { ∅ , 1 , 2 , . . . N t } \alpha_{k}^{t}\in \lbrace \emptyset,1,2,...N_{t} \rbrace αkt{,1,2,...Nt}将存在的轨迹 τ k t \tau_{k}^{t} τkt连接到当前帧的候选对象:

在这里插入图片描述

​ 之前的大多数工作都通过相邻或相邻帧中的对象之间的成对匹配来定义关联,或者依赖于离线组合优化来进行全局关联。在这项工作中,我们展示了如何执行联合检测和全局关联在一个单一的前向网络。该网络以端到端的方式在一个32帧的视频中学习全局跟踪。我们利用了关联问题的一个概率公式,并在第4节中展示了如何在变压器架构中实例化跟踪。

Global tracking transformers

​ Global Tracking Transformers(GTR)以概率和可微的方式关联对象。它将帧中 I t I_{t} It的对象 p i t p_{i}^{t} pit链接到一组轨迹查询 q k q_{k} qk每个轨迹查询 q k q_{k} qk在所有帧的对象上产生一个对象关联得分向量 g ∈ R N g\in \R^{N} gRN。然后,这个关联得分向量生成一个每帧每个对象的关联 α k t ∈ { ∅ , 1 , 2 , . . . N t } \alpha_{k}^{t}\in \lbrace \emptyset,1,2,...N_{t} \rbrace αkt{,1,2,...Nt},其中 α k t = ∅ \alpha_{k}^{t}= \emptyset αkt=表示没有关联, N t N_{t} Nt是在帧 T t T_{t} Tt中检测到的对象的数量。关联的组合然后产生一个轨迹 τ k \tau_{k} τk

Tracking transformers
在这里插入图片描述

​ 定义 p 1 t , p 2 t , . . . p N t t p_{1}^{t},p_{2}^{t},...p_{N_{t}}^{t} p1t,p2t,...pNtt是图像 I t I_{t} It中的所有高置信度的对象。 B t = { b 1 t , . . . b N t t } B^{t}=\lbrace b_{1}^{t},...b_{N_{t}}^{t} \rbrace Bt={b1t,...bNtt}是它们对应的边界框。设 f i t f_{i}^{t} fit是从边界框中提取的 D D D维特征。 F t = { f 1 t , . . . f N t t } F^{t}=\lbrace f_{1}^{t},...f_{N_{t}}^{t} \rbrace Ft={f1t,...fNtt}是图像中所有检测特征的集合,而 F = F 1 ∪ . . . ∪ F T F=F^{1} \cup ...\cup F^{T} F=F1...FT是所有视频帧中特征的集合。所有对象特征的集合 F ∈ R N × D F\in \R^{N \times D} FRN×D是Tracking transformers的输入,其中 N = ∑ t T N t N=\sum _{t}^{T}N_{t} N=tTNt是在所有帧中的检测总数。Tracking transformers采用特征 F F F和一个轨迹查询 q k ∈ R D q_{k}\in \R^{D} qkRD,并产生一个轨迹特定的关联评分 g ( q k , F ) ∈ R N g(q_{k},F)\in \R^{N} g(qk,F)RN。定义 g i t ( q k , F ) ∈ R g_{i}^{t}(q_{k},F)\in \R git(qk,F)R是第 t t t帧中第 i i i个对象的分数,其中 g i ∅ ( q k , F ) = 0 g_{i}^{\emptyset}(q_{k},F)=0 gi(qk,F)=0表示在 t t t时刻没有关联。

​ 然后,Tracking Transformers预测每个轨迹 k k k中所有对象 i i i上的关联分布。将其建模为每个时间步长 t t t的一个独立的softmax激活:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjTgb9ib-1649332229888)(\image\image-20220407190547067.png)]

因为 detector产生一个边界框 b i t b_{i}^{t} bit为每个对象 p i t p_{i}^{t} pit,在时间 t t t内轨迹 k k k和边界框有一个一对一的映射联合分布 P A P_{A} PA和分布 P t P_{t} Pt
P t ( b ∣ q k , F ) = ∑ i = 1 N t 1 [ b = b i t ] P A ( α t = i ∣ q k , F ) P_{t}(b|q_{k},F)=\sum_{i=1}^{N_{t}}1_{[b=b_{i}^{t}]}P_{A}(\alpha^{t}=i|q_{k},F) Pt(bqk,F)=i=1Nt1[b=bit]PA(αt=iqk,F)
其中, 1 [ ⋅ ] 1_{[\cdot]} 1[]为每个关联的查询分配了一个输出边界框。在实践中,检测器的非最大抑制(NMS)确保了也有一个从 P t P_{t} Pt返回到 P A P_A PA的唯一映射。
P T ( τ ∣ q k , F ) = ∏ t = 1 T P t ( τ t ∣ q k , F ) P_{T}(\tau|q_{k},F)=\prod_{t=1}^{T}P_{t}(\tau^{t}|q_{k},F) PT(τqk,F)=t=1TPt(τtqk,F)
在训练过程中,我们最大化了GT轨迹的对数似然值。在推理过程中,我们使用这个可能性以在线的方式产生长期的轨迹。

Training

给定一组GT轨迹 τ ^ 1 , . . . τ ^ K \hat \tau_{1},...\hat \tau_{K} τ^1,...τ^K,我们的目标是学习一个估计 P A P_A PA的Tracking Transformers,并隐式地估计轨迹分布 P T P_T PT。将Tracking Transformers作为两级探测器Faster rcnn的RoI头,共同训练Tracking Transformers进行检测。在每次训练迭代中,首先获得高置信度的非最大抑制后对象 B t = { b 1 t , . . . b N t t } B^{t}=\lbrace b_{1}^{t},...b_{N_{t}}^{t} \rbrace Bt={b1t,...bNtt},及其对应的特征 F t F_{t} Ft。然后,最大化每个GT轨迹 τ \tau τ log ⁡ P T ( τ ∣ q k , F ) \log P_{T}(\tau|q_{k},F) logPT(τqk,F)。这相当于在将 τ \tau τ分配给一组对象后,最大化 log ⁡ P A ( α t ∣ q k , F ) \log P_{A}(\alpha^{t}|q_{k},F) logPA(αtqk,F)。我们遵循目标检测,并使用一个简单的交叉过联合(IoU)分配规则:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Urtn3RAg-1649332229889)(\image\image-20220407192044706.png)]

使用这个分配来训练潜在的两阶段检测器的边界盒回归,以及分配似然 P A P_A PA。然而,这种分配的可能性进一步取决于接下来定义的轨迹查询 q k q_{k} qk

Trajectory queries

每个查询 q k q_{k} qk都会生成一个轨迹。在之前的工作中,将对象查询作为网络参数进行学习,并在推理过程中进行固定。这使得查询与图像无关,并且需要对它们进行几乎详尽的枚举。然而,与简单的盒子相比,轨迹处于指数级更大的潜在移动物体空间中,因此需要更多的查询来覆盖该空间。

相反,我们将直接使用适合的对象特征 f i t f_{i}^{t} fit作为对象查询。具体来说,假设 α ^ k \hat \alpha_{k} α^k为根据公式(2)的GT轨迹 τ k \tau_{k} τk的匹配对象。任何特征 { f α ^ k 1 1 , f α ^ k 2 2 } \lbrace f_{\hat \alpha_{k}^{1}}^{1},f_{\hat \alpha_{k}^{2}}^{2} \rbrace {fα^k11,fα^k22}都可以作为轨迹 τ k \tau_{k} τk的轨迹查询。在实践中,我们使用所有 T T T帧中的所有对象特征 F F F作为查询,并训练转换器以获得 T T T的序列长度。

任何不匹配的特征都被用作背景查询,并监督为所有帧生成 ∅ \emptyset 。我们允许多个查询产生相同的轨迹,并且不需要一对一的匹配的。在推理过程中,我们只使用来自一帧的对象特征作为查询,以避免重复的输出。一个帧内的所有物体特征都是不同的(在标准检测NMS之后),因此产生不同的轨迹。

Training objective

总体训练目标结合了公式(2)中的分配和轨迹查询,以最大限度地提高其分配查询下的每个轨迹的对数似然性。对于每个轨迹 τ k \tau_{k} τk,我们优化其赋值的对数似然值 α ^ k \hat \alpha_{k} α^k

在这里插入图片描述

​ 对于任何不相关的特征,都会产生空的轨迹:

在这里插入图片描述

总体损失

在这里插入图片描述

我们用标准检测损失与 L a s s o \mathcal {L}_{asso} Lasso联合训练,包括分类和边界盒回归损失,以及多类跟踪的选择性第二阶段分类和回归损失,

Online Inference

在推理过程中,我们以滑动窗口的方式在线处理视频流,窗口大小为 T = 32 , s t r i d e = 1 T=32,stride=1 T=32,stride=1。对于每个帧 t t t,在跟踪变压器之前将图像馈给网络,得到 N t N_t Nt个边界框 B t B_t Bt和对象特征 F t F_t Ft。保留了一个 T T T帧的时间历史缓冲区,即 B = { B t − T + 1 , . . . B t } B=\lbrace B^{t-T+1},...B^{t} \rbrace B={BtT+1,...Bt}和, F = { F t − T + 1 , . . . F t } F=\lbrace F^{t-T+1},...F^{t} \rbrace F={FtT+1,...Ft},并对每个滑动窗口运行跟踪变压器。使用当前帧 t t t中的对象特征作为轨迹查询 q k = F k t qk=F_{k}^{t} qk=Fkt来生成 N t N_t Nt个轨迹。

在第一帧所有的检测结果初始化为轨迹。对于任何后续的帧,使用平均分配似然 P A P_A PA作为距离度量,将当前预测的轨迹与现有的轨迹联系起来。使用匈牙利算法来确保从当前的长期轨迹到现有轨迹的映射是唯一的。如果与任何先验轨迹的平均关联得分低于一个阈值θ,就开始一个新的轨迹。否则,将生成轨迹的底层当前检测(查询)附加到匹配的现有轨迹中。

Experiments

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值