MOT论文阶段性总结

Detect to Track and Track to Detect

贡献:

  1. 设计了一个架构同时进行检测和跟踪
  2. 提出了一种correlation feature用来表达物体的多帧出现进而提升tracking性能
  3. 用tracking的结果在video的层面上使detection的结果提升

方法:

2D detection and tracking 互相refine
MOT论文阶段性总结

Detect to track

  1. 对于每一帧来说:
    利用 R-FCN 进行detection, 重点要搞懂什么是 position-sensitive RoI pooling layer, 方法可见: R-FCN 详解. 如果没兴趣也可以不看,知道是个前端检测器能检测出class, 回归出bounding box的尺寸就行.
    RoI pooling layer的输入是卷积层输出的feature xclstx_{cls}^txregtx_{reg}^t, 实际这看着像一个网络,但是是sibling的结构, 只是画的简单罢了.

  2. 对于帧间来说:
    类似于FlowNet (corr版本) 的操作, 将两帧经由卷积提取的 feature {xregt,xreqt+τ}\left\{\mathbf{x}_{r e g}^{t}, \mathbf{x}_{r e q}^{t+\tau}\right\} 送入 RoI pooling layer 输出bbox的变换 Δt+τ=(Δxt+τ,Δyt+τ,Δwt+τ,Δht+τ)\Delta^{t+\tau}=\left(\Delta_{x}^{t+\tau}, \Delta_{y}^{t+\tau}, \Delta_{w}^{t+\tau}, \Delta_{h}^{t+\tau}\right).

有了前两步, 就可以构造一个 track (object tube), 定义一个 detection 为 Dit,c={xit,yit,wit,hit,pi,ct}D_{i}^{t, c}=\left\{x_{i}^{t}, y_{i}^{t}, w_{i}^{t}, h_{i}^{t}, p_{i, c}^{t}\right\}, i 是 index, 参数分别对应中心点坐标, bbox 长宽和 classification 的概率. 类似定义一个 track 为 Tit,t+τ={xit,yit,wit,hit;xit+Δxt+τ,yit+Δyt+τ,wit+Δwt+τ,hit+Δht+τ}T_{i}^{t, t+\tau}=\left\{x_{i}^{t}, y_{i}^{t}, w_{i}^{t}, h_{i}^{t} ; x_{i}^{t}+\Delta_{x}^{t+\tau}, y_{i}^{t}+\right. \left.\Delta_{y}^{t+\tau}, w_{i}^{t}+\Delta_{w}^{t+\tau}, h_{i}^{t}+\Delta_{h}^{t+\tau}\right\}, 代表 t 时间的一个物体和它 bbox 的变换, 然后定义一个link得分:
sc(Di,ct,Dj,ct+τ,Tt,t+τ)=pi,ct+pj,ct+τ+ψ(Dit,Dj,Tt,t+τ)s_{c}\left(D_{i, c}^{t}, D_{j, c}^{t+\tau}, T^{t, t+\tau}\right)=p_{i, c}^{t}+p_{j, c}^{t+\tau}+\psi\left(D_{i}^{t}, D_{j}, T^{t, t+\tau}\right)
其中, ψ(Di,ct,Dj,ct+τ,Tt,t+τ)={1, if Dit,Djt+τTt,t+τ0, otherwise \psi\left(D_{i, c}^{t}, D_{j, c}^{t+\tau}, T^{t, t+\tau}\right)=\left\{\begin{array}{ll}1, & \text { if } D_{i}^{t}, D_{j}^{t+\tau} \in T^{t, t+\tau} \\ 0, & \text { otherwise }\end{array}\right., 判定为1的标准是计算 Tt,t+τT^{t, t+\tau}DitD_{i}^{t}Djt+τD_{j}^{t+\tau}的 IoU, 大于一个threshold (我的理解就是track到一起了).

Track to detect

最优化得分:
Dˉc=argmaxDˉ1Tt=1ττsc(Dt,Dt+τ,Tt,t+τ)\bar{D}_{c}^{*}=\underset{\bar{D}}{\operatorname{argmax}} \frac{1}{\mathcal{T}} \sum_{t=1}^{\tau-\tau} s_{c}\left(D^{t}, D^{t+\tau}, T^{t, t+\tau}\right)
通过 Viterbi algorithm 可以得到 refine 后的 detection.

Tracking Objects as Points (CenterTrack)

贡献:

  1. point-based tracking
  2. 同样结合了detection和tracking (类似Tracktor)
  3. 效果sota

方法:

基于camera的 2D/3D tracking ( nuScenes 的 benchmark上见到了他的camera+LiDAR的版本, 文章没有介绍)
MOT论文阶段性总结
思想和 Tracktor的很类似, 直接利用检测器进行tracking的任务,文章里用的 CenterNet, 是作者的早期工作. 文章有个很重要的假设: 如果物体离开frame或者被遮挡后重新出现会分配个新的ID!! (原文: when an object leaves the frame or is occluded and reappears, it is assigned a new identity)(不知道后面的策略是否合理??)

CenterTrack思路上保持为Tracktor的风格, 方法上参考了optical flow, 和Detect to Track and Track to Detect的想法相似, 但是采用的是类似一种稀疏光流预测, 具体而言, 会预测一个offset, 通过真值的 displacement 来监督:
Loff=1Ni=1ND^pi(t)(pi(t1)pi(t))L_{o f f}=\frac{1}{N} \sum_{i=1}^{N}\left|\hat{D}_{\mathbf{p}_{i}^{(t)}}-\left(\mathbf{p}_{i}^{(t-1)}-\mathbf{p}_{i}^{(t)}\right)\right|
匹配策略是将这一帧中的这个物体匹配之前帧中最近的offset过以后的物体上(For each detection at position p^\hat{p}, we greedily associate it with the closest unmatched prior detection at position p^D^p^\hat{p}-\hat{D}_{\hat{p}}, in descending order of confidence w^\hat{w}.), 如果offset之后周围(由一个参数决定)没有物体,就认为这个物体是新的track.

该方法做了很多数据集上的实验,表现都很好, 3D tracking的实现是基于CenterNet的3D版本之上做的.

Track to Reconstruct and Reconstruct to Track (MOTSFusion)

贡献:

  1. 实现了一种 long-term tracking, 利用reconstruction来refine tracking任务
  2. 通过reconstruction获得物体的3D 运动信息,进而利用运动信息恢复检测丢失的情况
  3. 效果sota

方法:

多模态 2D/3D tracking 和 reconstruction 互相 refine

MOT论文阶段性总结
该方法由KITTI在CVPR2019上公布的新benchmark multi-object tracking and segmentation 得来
2D segmentation & Tracking: 从video中检测bbox并分割内部物体得到mask, 通过光流估计可以获得2D motion的连续性,从而generate一系列的short tracklets
3D Reconstruction Tracking: 对于一个刚性物体而言,一定会有一系列的pose变换使得这些来自不同视角的点云拼成一个连续的物体(consistent 3D reconstruction)
4D Dynamic Scene Reconstruction: 两个tracklet之间motion的连贯性决定tracklets是否是同一个物体并且是否应该被merge在一个track里