Robust Multi-Modality Multi-Object Tracking 论文笔记

为什么要做多模态融合的 MOT?

Motivation

普通的基于视觉的 MOT 会遇到过曝问题导致检测跟踪失效或出现损坏导致单一传感器失效, 而 LiDAR 在雨天时检测容易出现问题,所以多源异质传感器前端融合可以弥补上述的问题:
Robust Multi-Modality Multi-Object Tracking 论文笔记
又因为单靠一种传感器的跟踪结果有时并不可靠,会出现 FN 的情况,多传感器可以增强检测跟踪的效果:
Robust Multi-Modality Multi-Object Tracking 论文笔记

Method

关键词: tracking- by-detectionmin-cost flow perspective
共有四个 module 组成: object detector, feature extractor, adjacency estimatormin-cost flow optimizer

  1. object detector:可以选择多个框架例如 PointPillar
  2. feature extractor:将各传感器的 feature 提取出来并进行 fusion 送入后端的 adjacency estimator
  3. adjacency estimator:这个模块是 modality agnostic 的(可能是因为前面已经融合了 feature 的信息吧),向后面的 optimizer 输入得分。
  4. min-cost flow optimizer:是一个线性规划器(linear programing solver),根据前面的 各个得分算最优解。

问题构造:

假设一帧检测到了 N 个物体:
Xi={xiij=1,,N} X^{i}=\left\{x_{i}^{i} | j=1, \cdots, N\right\}
后一帧检测到了 M 个物体:
Xi+1={xki+1k=1,,M} X^{i+1}=\left\{x_{k}^{i+1} | k=1, \cdots, M\right\}
对于每一个 xjx_j,都会有四个二进制参数: yjtrue,yjklink,yjnew,yjendy_{j}^{\text {true}}, y_{j k}^{\text {link}}, y_{j}^{\text {new}}, y_{j}^{\text {end}}

  1. yjtruey_{j}^{t r u e} 指是否为检测是否为 TP

  2. yjklinky_{j k}^{\text {link}} 指这个第 j 个 detection 是否和后一帧中第 k 个 detection 属于同一个轨迹中 (trajectory),相当于是否为同一物体,这些个二进制参数能组成一个第 i 帧的邻接矩阵AiA_i,可知 AiA_iRN×M\in R^{N \times M}

  3. yjnew,yjendy_{j}^{\text {new}}, y_{j}^{\text {end}} 指第 j 个检测是否为轨迹中新的(最后一个的)检测

在文中,作者为了方便将 AiA_i 展成了一个一维向量 YlinkY^{\text {link}} ,将 yjtruey_{j}^{t r u e} 也展成了 Ytrue,Ynew,YendY^{\text {true}}, Y^{\text {new}}, Y^{\text {end}} 的形式,最后把他们拼成了一个:
Y=[Ytrue,Ylink,Ynew,Yend]\mathbf{Y}=\left[Y^{t r u e}, Y^{l i n k}, Y^{n e w}, Y^{e n d}\right]
这四个大 YY 分别由 confidence estimator, affinity estimator, start and end estimator 给出结果,这四个 estimator 共同组成了 adjacency estimator。

下面是详细介绍:

单模态的 feature extractor:

图像 feature extractor: 将检测结果 crop 成 224*224 像素大小,最终会得到一个(N+M)×3×224×224(N +M) × 3 × 224 × 224 大小的 tensor,backbone 是 VGG-Net,采用 skip-pooling 的策略将各个 level 的 feature 拼接到一起,最后达到 1×D×(N+M)1 \times D \times(N+M) 的形式,DD 为 512。

点云 feature extractor: 受 F-PointNet 启发,利用 2D bounding box 投影的锥形区域中的点云进行特征提取而不是直接利用提取 3D bounding box,这样可以获得高灵活度和置信度并且减少 3D 的运算 (这里不太确定理解的正不正确,看代码)。点云为 1×D×L1 \times D \times L 的数据形式,DD 是 3(维度),LL 是所有 bounding box 中的所有点数。利用 pointnet 进行特征提取,在进行 average pooling 操作,最终每个 detection 的 feature vector 的 DD 维都是 512,形式也为 1×D×(N+M)1 \times D \times(N+M) .
Robust Multi-Modality Multi-Object Tracking 论文笔记

多模态 Fusion module:

有 ABC 三种形式,不同于惯例的 fusion,该 module 进过 fusion 后的 feature 和原始的 来自于相机和 LiDAR 的 feature 一起送入后端。

作者说由于 adjacency estimator 是 batch-agnostic 的,所以将 fusion 后的 feature 和原 始 feature 在 batch 维 concatenate 起是不影响 adjacency estimator 工作的,只要有 feature 进来就可以。(个人理解实际上就是保证数据输入的数量不影响后续模块的操作,如果有传感器失效也能工作,只不过可能效果不好罢了。。鲁棒性体现在这里) 每个 feature {Fis}s=0S\left\{F_{i}^{s}\right\}_{s=0}^{S} 和融合后的 FifuseF_{i}^{f u s e} 拼起来后的总 feature 大小为 (S+1)×D×(N+M)(S+1) \times D \times(N+M)S+1S+1 是 batch 维,SS 是传感器数量。
Robust Multi-Modality Multi-Object Tracking 论文笔记
三种不同的 fusion 方式:
A: Fifuse=WCONCAT(Fi0,,FiS)F_{i}^{f u s e}=W \otimes \operatorname{CONCAT}\left(F_{i}^{0}, \cdots, F_{i}^{S}\right)
B: Fifuse=(s=0SWsFis)F_{i}^{\text {fuse}}=\left(\sum_{s=0}^{S} W^{s} \otimes F_{i}^{s}\right)
C: Gis=σ(WattsFis)G_{i}^{s}=\sigma\left(W_{a t t}^{s} \otimes F_{i}^{s}\right)
Fifuse=1s=0SGiss=0SGis(WsFis)F_{i}^{f u s e}=\frac{1}{\sum_{s=0}^{S} G_{i}^{s}} \sum_{s=0}^{S} G_{i}^{s} \odot\left(W^{s} \otimes F_{i}^{s}\right)

\otimes是卷积操作,C 模块有类似 attention 机制参与 ,期望能学到那些 feature 比较重要。

相关性运算:

三种对于 feature 的运算方式—
Element-wise multiplication: Fjk=FjiFki+1F_{j k}=F_{j}^{i} \odot F_{k}^{i+1}

Subtraction: Fjk=FjiFki+1F_{j k}=F_{j}^{i}-F_{k}^{i+1}

Absolute subtraction: Fjk=FjiFki+1F_{j k}=\left|F_{j}^{i}-F_{k}^{i+1}\right|

这三个运算是来指导 affinity estimator 计算邻接矩阵 AiA_i 的(至于怎么做目前没搞清要看代码)
Robust Multi-Modality Multi-Object Tracking 论文笔记
应该是先进行 link 的 estimation 再进行 start 和 end 的 estimation(从原文来看) 原文里还有一些细节操作,包括 Ranking Mechanism 等应该是对邻接矩阵的 refine 操作 吧,日后看代码再了解。

Loss function:
L=Llink+αLstart+γLend+βLtrueL=L_{l i n k}+\alpha L_{s t a r t}+\gamma L_{e n d}+\beta L_{t r u e}
分类 loss 采用的 cross entropy loss,其他采用 L2 loss

Linear programming:

对于每一个 TP 的 object,都必须要么是和其他帧有关联要么是一个 track 的开始或结束,即:

对于第 i+1 帧,TP 的物体要么是之前 i 帧中检测的 N 个物体中的一个要么是开始的一个 track k,yktrue=j=0Nyjklink+ykstart\forall k, y_{k}^{\text {true}}=\sum_{j=0}^{N} y_{j k}^{\operatorname{link}}+y_{k}^{\text {start}}
对于第 i 帧,TP 的物体要么是之前 i+1 帧中检测的 M 个物体中的一个要么是结束的一个 track j,yjtrue=k=0Myjklink+yjend\forall j, y_{j}^{\text {true}}=\sum_{k=0}^{M} y_{j k}^{\text {link}}+y_{j}^{\text {end}}
针对这两个约束使用矩阵的形式可以使 CY=0\mathbf{C Y}=0 (可查找更详细资料了解),从而满足一个线性规划:argmaxy=Θ(X)Y s.t. CY=0,Y{0,1}Y\begin{aligned} \arg \max _{y} &=\Theta(\mathbf{X})^{\top} \mathbf{Y} \\ \text { s.t. } \mathbf{C Y} &=0, \mathbf{Y} \in\{0,1\}^{|Y|} \end{aligned}
(这些都在先前工作有讲,准备看一下后补充)

错误分析:

Robust Multi-Modality Multi-Object Tracking 论文笔记
2D 检测时经常由于遮挡或光线变化导致误检,就像第一行中的 ID 6,经过一帧 FN 后,突 然就被分配了个 ID 8,或者第二行中的 ID 7 也是这个情况又如第一行中 ID 9 后面没有继续 检测出来。作者说后续应该引入 temporal information 到数据关联中进行预测的强化。 我个人还是感觉,既然有这种情况发生,是因为前端 2D 的 detector 效果不太好并且后续 和 LiDAR 融合的不够好,如果融合够好,且 3D 的 detector 性能好一些是能提出一个比较 robust 的 fusion 特征的,会使得 ID 重新分配情况减少。或者就如同作者所说,加入时序信息,看这个样子感觉是只利用到了前后帧信息.