继CLIP大火之后, 许多基于CLIP的工作都应用在各种各样的视觉下游任务中, 例如检测, 分割, 风格迁移, 视频动作识别, 视频文本检索等等. 跟踪也不例外, 今天想对这篇文章做一个笔记, 据我所知应该是第一篇将MOT与CLIP结合的文章, 用以通过对目标更高阶的信息表示(也就是自然语言表示)来解决域适应的问题(因为如果将一个目标描述为"穿着红衣服的人", 那么这种目标不论在哪个数据集中都具有相似的特征).
论文: Generalizing multiple object tracking to unseen domains by introducing natural language representation (AAAI2023)
1. Abstract
虽然现在主流的MOT方法取得了非常好的性能, 但是几乎所有的方法是在同一个域中训练与测试的, 所以泛化性就显得不够. 在这篇文章中, 作者发现, 在自然语言中包含的高阶信息是在域之间具有相对不变性的. 然而, 简单地用文本来标记每个目标是很困难的, 因此作者需要限制自然语言的形式或者内容, 来形成一个稳定的特征. 具体地, 作者提出了一个视觉上下文提示模块(Visual Context Prompting, VCP), VCP的输入是帧图像, 输出是视觉的prompt. 之后, 作者提出了一个视觉-语言混合模块(Visual-Language Mixing, VLM), 输入是VCP输出的视觉prompt, 以及预定义好的Track Book(包含文本prompt), 输出是实例级的文本描述. 作者在MOT17与20上进行了实验.
2. Introduction
如上图(a)所示, 作者认为, 现有的方法往往是在同一个域上训练与测试的(也就是训练集与测试集属于同一个分布), 然而当进行域的迁移的时候, 如图(b)所示, 这些SOTA方法取得了显著的性能下降, 然而本文提出的方法还能维持不错的性能.
针对现有方法的这个问题, 作者认为需要找一种更高阶的表示, 使得目标的特征具有域不变性. 作者认为, 自然语言是可以胜任的.
如上图所示, 虽然这两个人完全来自于两个视频序列, 但是他们可以用同一个句子表示. 能够对图像-文本对进行强大检索能力的CLIP模型, 就被作者引入到MOT领域中.
技术上, 作者采用MOTR作为baseline, 这是因为Transformer具有天然的多模态聚合能力, 而且在MOTR中, 每个目标都以一个track query表示, 作者要做的就是将自然语言表达融入到track query中, 形成一个域不变的特征.
但如果让模型放飞自我, 任由模型对每个目标去生成文本, 这并不是一个好的选择, 这是因为生成的文本会比较不稳定, 和原始的目的背道而驰. (因为我们知道prompt的选择会很大程度上影响模型的输出). 因此, 作者定义了一个Track Book, 里面有56个文本模板, 这样MOT的关联问题就变成了如何将文本与检测的目标对应起来.
之后, 作者采用词袋模型(Bag of Words)将Track Book中的短语进行编码, 得到word embeddings. 随后采用VCP和VLM模块进行关联. VCP模块以当前帧图像作为输入, 输出一堆visual prompts, 这些visual prompts是包含了场景信息, 这些信息可以看作是目标的隐含描述,并作为与域无关的text prompts的补充. 随后visual proms和Track book中的word embedding进入到VLM模块, 生成pseudo textual description (这里进行了初步的关联), PTD包含关于跟踪目标的高层描述,并能很好地泛化句子. 最后作者将学习到的PTD和原始的Track query concat起来, 作为一种增强的特征, 来增强泛化性.
Related Work部分略过, 作者分别介绍了MOT的发展历程, visual-language model(特别是CLIP)的原理与应用, 以及域适应在MOT中还没有得到充分的研究.
2. Methodology
作者实际上是基于MOTR (MOTR的笔记见MOTR), 并在MOTR的Encoder和Decoder之间加入了提出的VCP和VLM模块, 这两个模块的根本目的就是为了结合语言信息来增强track query.
2.1. VCP模块
VCP模块的作用是根据当前帧图像的特征以及过去的track query生成visual prompt, 实际上我感觉这里是track query的第一次增强, 也就是和当前帧的特征融合.
VCP采用Transformer Decoder的架构, 其以Encoder的最后一层输出的上下文token c t c_t ct (作为K, V)和过去的track query q t − 1 ∈ R M × D q_{t-1}\in \mathbb{R}^{M \times D} qt−1∈RM×D (作为Q) 为输入, 输出visual prompt:
v t = T r a n s D e c o d e r ( c t , q t − 1 ) v_t = TransDecoder(c_t, q_{t-1}) vt=TransDecoder(ct,qt−1)
2.2. VLM模块
生成visual prompt之后, 和Track book里的这些短语(实际上是经过Bag of words之后的word embedding), 进入到VLM模块, VLM的结构如下所示:
具体来说, Adapter由两个MLP层加一个残差结构组成:
T a ( x ) = Relu ( T ( x ) T W 1 ) W 2 + x T_a(x)=\operatorname{Relu}\left(T(x)^T W_1\right) W_2+x Ta(x)=Relu(T(x)TW1)W2+x
其中 T ( ) T() T()表示CLIP的Text Decoder. 需要注意的是VLM模块是对text与visual prompt单独处理的, 而不是两个输入一个encoder. 作者之所以没有用CLIP的Image Encoder, 是因为作者认为Image Encoder不适用于包含定位的任务.
这样我们分别得到了更新后的text和visual prompt, 就进入到交叉注意力模块进行模态交互:
v = [ v 1 , v 2 , … , v M ] , t = [ t 1 , t 2 , … , t K ] , l = CrossAttn ( T a ( v ) , T a ( t ) ) , \begin{aligned} & v=\left[v_1, v_2, \ldots, v_M\right], \\ & t=\left[t_1, t_2, \ldots, t_K\right], \\ & l=\operatorname{CrossAttn}\left(T_a(v), T_a(t)\right),\end{aligned} v=[v1,v2,…,vM],t=[t1,t2,…,tK],l=CrossAttn(Ta(v),Ta(t)),
l l l就是pseudo language description.
剩下的, 就是和原本的track query( q t − 1 q_{t-1} qt−1) concat起来, 送入MOTR的Decoder即可.
2.3. 整体结构
2.4. 训练
训练遵循了MOTR的形式, 将关联问题转化为集合预测问题. 整个的损失分为对过去轨迹的定位与分类损失, 和当前新产生目标的定位与分类损失:
L clip = ∑ n = 1 N ( L ( P ^ t r i ∣ q t , P t r i ) + L ( P ^ d e t i ∣ q d , P d e t i ) ) ∑ n = 1 N ( T i ) \mathcal{L}_{\text {clip }}=\frac{\sum_{n=1}^N\left(\mathcal{L}\left(\left.\widehat{P}_{t r}^i\right|_{q_t}, P_{t r}^i\right)+\mathcal{L}\left(\left.\widehat{P}_{d e t}^i\right|_{q_d}, P_{d e t}^i\right)\right)}{\sum_{n=1}^N\left(T_i\right)} Lclip =∑n=1N(Ti)∑n=1N(L(P tri qt,Ptri)+L(P deti qd,Pdeti))
其中
L ( P ^ i ∣ q i , P i ) = λ c l s L c l s + λ l 1 L l 1 + λ giou L giou \mathcal{L}\left(\left.\widehat{P}_i\right|_{q_i}, P_i\right)=\lambda_{c l s} \mathcal{L}_{c l s}+\lambda_{l_1} \mathcal{L}_{l_1}+\lambda_{\text {giou }} \mathcal{L}_{\text {giou }} L(P i qi,Pi)=λclsLcls+λl1Ll1+λgiou Lgiou
3. 效果
从上表可以看出, In-domain(也就是在哪里训练, 就在哪里测试)本文的方法还是相比Baseline取得了很好的提升, 并且在Cross-domain(在MOT17训练, MOT20测试), 本文方法提升非常显著, 相比Baseline在HOTA上高了3个点, 是非常可圈可点的.
以下的消融实验分别证明了使用Transformer Encoder提取场景视觉信息的优越性, 多种模态的优越性以及使用Adapter在CLIP基础上微调的优越性:
以下可视化的结果证明, 当目标发生遮挡再恢复的时候, 具有高阶语义信息是有帮助的.