MOTR: End-to-End Multiple-Object Tracking with TRansformer阅读笔记

(一) Title

在这里插入图片描述
论文地址:https://arxiv.org/abs/2105.03247
代码地址:https://github.com/megvii-model/MOTR
前言:最近有幸看了几篇MOT的工作,感觉目前MOT的工作有一些集中将循环神经网络引入来构建对轨迹的预测,从而实现对遮挡情况的处理,提升性能。然而我自己没有仔细研读过Transformer相关的论文,希望以此为契机,开启循环神经网络在视觉领域的研究,本文最显著的贡献就是将track trajectory当成隐状态,并且在细节上的有很多的考究。

(二) Summary

当前存在的问题:

多目标跟踪任务之前的做法中,往往是基于motion以及appearance相似性使用启发式方式来进行检测地关联,但是这种做法忽略了跟踪任务基于视频的属性,并且过多地信任检测和Re-ID的性能,同时对于遮挡和非线性运动的适应能力较差。不过在MOT性能上表现很好。基于FairMOT端到端学习detection和re-id的思想,如何将data association的过程也引入到端到端的过程中来呢?目前基于卷积+RNN的融合有一些实现方式,也取得了比较好的效果,那么基于Transformer的方式在处理上又能起到什么作用呢?基于Transformer的实现,往往是通过一种隐式的关联来构建

本文的方法:

本文提出了MOTR,一个端到端的MOT框架:

  • 学习model the long-range temporal variation of the objects,从而能够实现隐式地association。
  • 引入track query,每一个track query models the entire track of an object,track query is transferred and updated frame-by-frame to perform iterative predictions.
  • 提出Tracklet-aware label assignment在track queries和object tracks实现一对一的assignment。
  • Temporal aggregation network以及collective average loss用来平衡long-range temporal relation。

[注:关于方法这边有一些过于抽象,直接看表述不是很容易理解,Mark下来,等整篇看完回来重新梳理]

实验结果

MOTR取得了competitive performance,可以作为Transformer MOT任务中的一个baseline。

本文贡献

  • 提出了一个端到端的MOT框架,基于DETR,能够隐式地学习appearance以及position变化(通过隐状态来说能够学习appearance和position变化,很难get到。)
  • 将MOT看成是一个set of sequence prediction的问题,从DETR角度来看,只是将固定的检测框转换成track trajectory和检测框,并且track trajectory以及检测框的定义形式都相同,只不过检测框的id标签为-1,并且引入了QIM来实现对输出检测框(图3中的 q t r i ˉ , q d e t i ˉ \bar{q_{tr}^i},\bar{q_{det}^i} qtriˉ,qdetiˉ)的编码,并且这里是将track trajectory看成是隐状态。
  • TALA用来一对一assignment预测和gt boxes,这里在代码中涉及到很多细节的地方(需要运行代码看下)
    引入CAL以及TAN来增强long-range temporal motion

(三) Research Object

本文希望能够构建一种端到端的MOT框架,就需要解决如何定义trajectory?如何处理new-born和death?如何进行轨迹状态的预测等问题,作者这里是将trajectory看成隐状态,使用class score来处理trajectory的生成和退出,并借助transformer的encoder架构来预测下一个时刻的trajectory隐状态。

(四) Problem Statement

本文基于Deformable DETR出发,希望能够使用端到端的方式来解决多目标跟踪任务,使用隐状态(track query)表示track trajectories,需要解决的主要问题包括:

  • 怎么根据这个track query跟踪一个目标?这里我觉得说的应该是怎么基于track query来预测下一个时刻的query?
    在训练期间使用tracklet-aware label assignment(TALA),也就是说通过具有相同id标签的box sequences来监督,马马虎虎不理解,问题也不是很理解
  • 怎么处理track query的new-born和dead objects?
    采用动态长度,对于当前的N个object queries(其中包括m个track querie以及N-m个detection queries,detection queries设置成zero,设置成zero是不是有问题呢?),同时在inference过程中不再使用IoU matching关联。

(五) Method

5.1 构建MOTR的一些相关介绍

  • 关于DETR中使用object query作为隐状态最终生成固定长度的object的描述
    DETR中引入的是object queries(在Decoder中使用的,对Transformer代码部分不是特别理解,先留下疑问吧)使用固定长度的embedding来表示目标,在decoder中image feature和object queries之间进行交互,来实现更新他们呢的表示。进一步采用Bipartite matching实现the updated queries和GTs之间的一一匹配,并且作者这里将这个query看成是object detection的query。
  • 本文是怎么构建track query的,如何实现track query和object query同GTs的一对一对应关系呢?
    首先介绍本文基于DETR的改动,本文中从DETR的detect query中增加了track query,文中指出这里的detect queries是固定长度的,track queries是可变长度的,并且track queries自动能够实现自动更新。

这里的疑问是:detect query中的固定长度跟DETR中是一样的呢,也就是说都指的是最大可以检测到的目标?还是说detect query和track query的总长度是DETR中detect query的长度呢?也就是可以同时使用detect query和track query来和GTs做one-by-one的对应呢?从论文的理解上来看,这里我更倾向于后面这种,需要回头代码中确认
回答:detect query的长度是固定的,相当于DETR中的固定长度,而track query的长度的不固定的,cat到一起输入到decoder中
在这里插入图片描述
这里的问题是 T i T_i Ti帧中的黄色框是不检测1和2目标了嘛?之前看代码好像是这样的,是将GTs分成两部分,一部分用于track query的回归,另一部分用于detect query的回归,回头再确认下是不是这个情况
是的,这里detect query只用于跟new-born的目标进行one-by-one 匹配,也就是说只负责预测除了tracklets中已经有的目标?
参考论文中的原话:While in MOTR, detect queries are only used to detect the new-born objects and track queries predict these tracked objects.

怎么将detect query,track query同GTs一对一对应上呢?本文采用的是tracklet-aware label assignment(TALA)这边应该是本文新起的一个名词,注意这里的detect queries仅仅用来检测new-born目标,并且track queries用来对应已经跟踪上的目标。具体的做法是(这里是博主自己的理解,代码只是粗略的看了下,可能会有问题):

现在有GTs,track queries,detect queries。Track queries不需要使用bipartite matching进行匹配,follow the same assignment of previous frames(这里说的比较抽象,实际上应该是当前已有的track queries中在之前已经将gt的label给到这儿了,接只需要确定当前track queries中和gt id对应上的那个就是要track queries需要对应的gt,如果GTs中没有能够同track queries对应上的,则将当前的track queries设置成无效,应该是将该track query删除),接着剩下的没有匹配上的就看成是detect queries,将detect queries同剩下的GTs做一次匈牙利匹配,也就是一一对应上。

基于上述做法的思考,论文中将 T i T_i Ti时刻的predictions记作 Y i = { Y t r i , Y d e t i } Y_{i}=\left\{Y_{t r}^{i}, Y_{d e t}^{i}\right\} Yi={ Ytri,Ydeti},其中 Y t r i Y_{t r}^{i} Ytri表示track queries对应的预测边界框, Y d e t i Y_{d e t}^{i} Ydeti表示detect queries对应的预测框。同时将GTs记作 Y ^ i = { Y ^ t r i , Y ^ d e t i } \hat{Y}_{i}=\left\{\hat{Y}_{t r}^{i}, \hat{Y}_{d e t}^{i}\right\} Y^i={ Y^tri,Y^deti}, Y ^ t r i \hat{Y}_{t r}^{i} Y^tri表示同track queries对应的gt边界框, Y ^ d e t i \hat{Y}_{d e t}^{i} Y^deti表示同detect queries对应的gt边界框。track queries+detect queries同ground truth之间的对应关系使用 ω i = { ω t r i , ω d e t i } \omega_{i}=\left\{\omega_{t r}^{i}, \omega_{d e t}^{i}\right\} ωi={ ωtri,ωdeti}表示。其中
ω d e t i = arg ⁡ min ⁡ ω ^ d e t i ∈ Ω i L ( Y d e t i ∣ ω ^ d e t i , Y ^ d e t i ) ) ω t r i = { ∅ i = 1 ω t r i − 1 ∪ ω d e t i − 1 2 ≤ i ≤ N \begin{array}{c} \left.{\omega}_{d e t}^{i}=\underset{\hat\omega_{d e t}^{i} \in \Omega_{i}}{\arg \min } \mathcal{L}\left(\left.Y_{d e t}^{i}\right|_{\hat\omega_{d e t}^{i}}, \hat{Y}_{d e t}^{i}\right)\right) \\ \omega_{t r}^{i}=\left\{\begin{array}{ll} \emptyset & i=1 \\ \omega_{t r}^{i-1} \cup \omega_{d e t}^{i-1} & 2 \leq i \leq N \end{array}\right. \end{array} ωdeti=ω^detiΩiargminL(Ydetiω^deti,Y^

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值