阅读笔记-Chained-Tracker
小声逼逼:博客园的markdown依然如此难用。。。
来源于腾讯优图发表在ECCV20的一篇多目标跟踪的文章。
1. 摘要
现有的多目标跟踪方法一般都是基于检测的跟踪框架,在该框架中的方法一般又被划分为三个步骤:目标检测、特征抽取和数据关联。目前有一些跟踪方法将其中两个结合,比如检测和特征抽取(AJDE),但这类方法提供的是部分的end-to-end解决方案。这篇文章宣称首次提出了一种真正的融合三个子任务的end-to-end解决方案。其做法是以相邻帧对为输入样本,经过一个网络回归相同目标在两帧图像中bbox,当然,其中还包括了分类分支和reid分支,作为attention map以希望提升回归精度。跟踪时,通过连续帧对之间共享帧中的前后样本检测的IOU进行配对以铰链的方式形成长轨迹,这也是Chained的由来。该方法在MOT16和MOT17评测库上都能实时获得SOTA的性能。
文章已开源: github: pytorch
对该文章宣称的贡献存疑,并不能算真正的end-to-end解决方案。本质上来说还是生成两帧的tracklet,然后利用基于IOU的数据关联获得长轨迹。我认为除非使用类似LSTM网络处理时序信息外,短时的tracklet的处理都需要独立的数据关联,不能称为端到端的解决方案。
2. 简介
已有的MOT方法存在两个较大的缺陷:
- 大多数方法都是基于检测的跟踪,该类方法一般分为三个独立的子任务:检测,特征抽取和数据关联。往往很难获得全局最优解。另外跟踪结果非常依赖于检测结果。
其实检测是视觉任务的基础,无论端到端合适多个子任务的形式,最终的跟踪结果都会依赖于检测性能。
- 为了获得更好的MOT性能,目前的方法将ReID和attention模块都引入到跟踪中使得模型越来越复杂。
其实ReID模块是处理多目标跟踪任务中轨迹因长时间遮挡或者漏检而丢失的找回任务的必须模块。attention主要用来处理部分遮挡的问题。
这篇文章的跟踪框架可以由下图看出,不再赘述。
本文方法的网络可以认为是从2帧图像构成的视频序列中检测目标形成的通道,即看作是扩展到3D中的检测任务(图像我们这里认为是2D,不考虑通道)。
3. 方法
3.1 问题描述
给定视频序列中的N帧连续图像!$\{F_t\}_{t=1}^N$
, MOT的目标是在感兴趣物体出现时能够同时给出物体的bbox!$\{G_t\}_{t=1}^N$
和对应的label!$\{y_t^{GT}\}_{t=1}^N$
.
3.2 Chained-Tracker的流程图
可以认为网络干的活是:检测当前帧中目标bbox,同时预测该目标在下一帧的bbox,在一帧时同样操作,通过检测结果和前一帧预测结果通过IOU关联。
针对遮挡的鲁棒性处理 为了增强模型对于严重遮挡以及短期消失的鲁棒性,该模型对于跟踪到的轨迹保持其id持续$\sigma$帧,其中通过匀速模型预测其位置,使用预测位置和检测进行IOU的匹配。
这里可以发现,模型其实就是做了个两帧预测的事情。对于间隔多帧的预测采用了匀速模型,准度必然不高。这里其实可以采用reid找回的,可能为了体现所谓的端到端而不用吧。
有效性和局限性 这里有效性说是在丢失轨迹重新出现后能够创建新的tracklet,大多数MOT方法都有该能力。局限性这里说明了为什么采用Node与Node通过IOU关联匹配的方式却还称为end-to-end的解决方案。
Since the regression model does the major work and there is no need to get feedback for it from the chaining operation, we still use the “end-to-end” property to describe CTracker. A pure end-to-end trainable model requires a differentiable replacement to the current IoU matching based chaining strategy
这里说纯粹的end-to-end模型需要一个可差分的IoU匹配策略,其实即使有这样的模块还需要配备能够传递历史信息的功能模块。
3.3 网络结构
网络的backbone采用的是ResNet50的FPN结构。输出包含三个分支:分类分支、ID验证分支和成对box回归分支。
分类分支:这里的分类分支按文中介绍来看是对node中的第一帧的anchor进行前背景的分类。
ID验证分支:用于判断node中来源于两帧图像对应同一个anchor的gt是否具有相同label。
box对回归分支:用于回归每个positive的anchor对应两帧图像中的bboxes。
Joint Attention Module, 在box对回归分支中,同时引入分类结果和ID验证结果作为attention,与原始特征乘在一起再进行回归。
思考:这里的分类分支有点类似于Faster-RCNN中的RPN模块的作用。
3.4 生成Label和Loss
- label
对于分类分支,由于只看Node的第一帧的anchor是否是正样本,所以其label也是针对于第一帧而言的。第一帧给定anchor $A_ti=(x_a, y_a^{t,i}, w_a^{t,i}, h_a^{t,i})$, 类似SSD做法通过计算Gt与anchor的IOU来判断是否是正anchor,公式1表示的是有一个gt与anchor的IOU大于阈值则认为该anchor是正样本。
$$
c_{cls}^i =
\begin{cases}
1, 如果\sum_j M_{ij} =1,\
0, 否则。
\end{cases}
$$
其中 $M_{ij}=1$表示 第i个anchor与第j个gt的IOU大于阈值。
对于ID验证分支,则是对应同一个正anchor的两帧中的gt属于同一个id,则其label为1,否则为0.
$$
c_{id}^i
\begin{cases}
1, 若c_{cls}^i=1且 \mathcal{I}[G_t^i] = \mathcal{I}[G_{t+1}^k],\
0, 否则
\end{cases}
$$
其中 $\mathcal{I}()$表示anchor对应gt的label
这里注意前提是保证一个anchor最多只能对应一个gt。anchor的选择是类似SSD通过聚类方法得到的。
对于box对回归分支,其和Faster-RCNN一样对检测和gt都采用正anchor进行编码,然后采用smoothL1损失约束。此处不再赘述。
最终CTracker的损失是三种损失的加权和。
4. 实验
数据集采用的是MOT16,MOT17, 评测系统采用的是CLEAR和IDF1.
需要注意的实验细节:
- 数据进行了数据增广,同一个node的两帧图像每一次增广方式相同。
- 除了相邻帧作为node,训练中选择间距3帧内的任意一对作为node。
- resnet50作为backbone,BN未参与训练, Kaiming初始化, Adam优化器。初始学习率非常小 $5x10^{-5}$.
- anchor分类标签时,采用的是 0.5和0.4, 而不是检测常用的0.7和0.3
消融实验得到的结论:
- 分类分支作为attention能够使检测更加准确(MOTP提升了0.6个点)
- 单独的ID验证分支并没有带来精度收益。
- ID验证分支同时作为attention能够进一步提升跟踪效果
这时候表中数据表明MOTP并没有提升,表明ID验证分支提供的作用并不是bbox更准确,而是前背景分类更准确。个人分析认为是因为分类分支只限定了node的第一帧,ID验证分支将node的第二帧也纳入进来了。
时间分析:
这里作者将推理时间限定在chaining的范围内,即排除了backbone的推理时间,然后宣称跟踪时间达到 34.4FPS,其实这也是MOT时间对比上一直存在的问题。既然是端到端的了,为什么不直接说整个end-to-end的时间? 整个一次end-to-end时间约148ms,也差不多7.5PFS,远低于RetianTrack。
与SOTA方法的性能对比,能看出几点问题:
- 无论MOT16还是MOT17,其IDS和IDF1都远差于最优值,这估计是只用IOU进行铰接的弊端。
- MOT的CLEAR评测体系里面,FN其实影响非常大,这本身就是CLEAR的不合理之处。从MOT16和MOT17表中其实可以发现MOTA的提升主要源于FN的大幅下降。文章没有分析问什么FN会大幅度下降。
5. 总结
这篇文章可以理解成提出一种同时检测和预测的网络,然后以铰链的方式由tracklet生成trajectory。
其整个思路我觉得没有CVPR20上那片TubeTrack更加完善。