Robust Multi-Modality Multi-Object Tracking 论文笔记
Robust Multi-Modality Multi-Object Tracking 论文笔记
为什么要做多模态融合的 MOT?
Motivation
普通的基于视觉的 MOT 会遇到过曝问题导致检测跟踪失效或出现损坏导致单一传感器失效, 而 LiDAR 在雨天时检测容易出现问题,所以多源异质传感器前端融合可以弥补上述的问题:
又因为单靠一种传感器的跟踪结果有时并不可靠,会出现 FN 的情况,多传感器可以增强检测跟踪的效果:
Method
关键词: tracking- by-detection,min-cost flow perspective
共有四个 module 组成: object detector
, feature extractor
, adjacency estimator
和 min-cost flow optimizer
- object detector:可以选择多个框架例如 PointPillar
- feature extractor:将各传感器的 feature 提取出来并进行 fusion 送入后端的 adjacency estimator
- adjacency estimator:这个模块是 modality agnostic 的(可能是因为前面已经融合了 feature 的信息吧),向后面的 optimizer 输入得分。
- min-cost flow optimizer:是一个线性规划器(linear programing solver),根据前面的 各个得分算最优解。
问题构造:
假设一帧检测到了 N 个物体:
后一帧检测到了 M 个物体:
对于每一个 ,都会有四个二进制参数:
-
指是否为检测是否为 TP
-
指这个第 j 个 detection 是否和后一帧中第 k 个 detection 属于同一个轨迹中 (trajectory),相当于是否为同一物体,这些个二进制参数能组成一个第 i 帧的邻接矩阵,可知 是 的
-
指第 j 个检测是否为轨迹中新的(最后一个的)检测
在文中,作者为了方便将 展成了一个一维向量 ,将 也展成了 的形式,最后把他们拼成了一个:
这四个大 分别由 confidence estimator, affinity estimator, start and end estimator 给出结果,这四个 estimator 共同组成了 adjacency estimator。
下面是详细介绍:
单模态的 feature extractor:
图像 feature extractor: 将检测结果 crop 成 224*224 像素大小,最终会得到一个 大小的 tensor,backbone 是 VGG-Net,采用 skip-pooling 的策略将各个 level 的 feature 拼接到一起,最后达到 的形式, 为 512。
点云 feature extractor: 受 F-PointNet 启发,利用 2D bounding box 投影的锥形区域中的点云进行特征提取而不是直接利用提取 3D bounding box,这样可以获得高灵活度和置信度并且减少 3D 的运算 (这里不太确定理解的正不正确,看代码)。点云为 的数据形式, 是 3(维度), 是所有 bounding box 中的所有点数。利用 pointnet 进行特征提取,在进行 average pooling 操作,最终每个 detection 的 feature vector 的 维都是 512,形式也为 .
多模态 Fusion module:
有 ABC 三种形式,不同于惯例的 fusion,该 module 进过 fusion 后的 feature 和原始的 来自于相机和 LiDAR 的 feature 一起送入后端。
作者说由于 adjacency estimator 是 batch-agnostic 的,所以将 fusion 后的 feature 和原 始 feature 在 batch 维 concatenate 起是不影响 adjacency estimator 工作的,只要有 feature 进来就可以。(个人理解实际上就是保证数据输入的数量不影响后续模块的操作,如果有传感器失效也能工作,只不过可能效果不好罢了。。鲁棒性体现在这里) 每个 feature 和融合后的 拼起来后的总 feature 大小为 , 是 batch 维, 是传感器数量。
三种不同的 fusion 方式:
A:
B:
C:
是卷积操作,C 模块有类似 attention 机制参与 ,期望能学到那些 feature 比较重要。
相关性运算:
三种对于 feature 的运算方式—
Element-wise multiplication:
Subtraction:
Absolute subtraction:
这三个运算是来指导 affinity estimator 计算邻接矩阵 的(至于怎么做目前没搞清要看代码)
应该是先进行 link 的 estimation 再进行 start 和 end 的 estimation(从原文来看) 原文里还有一些细节操作,包括 Ranking Mechanism 等应该是对邻接矩阵的 refine 操作 吧,日后看代码再了解。
Loss function:
分类 loss 采用的 cross entropy loss,其他采用 L2 loss
Linear programming:
对于每一个 TP 的 object,都必须要么是和其他帧有关联要么是一个 track 的开始或结束,即:
对于第 i+1 帧,TP 的物体要么是之前 i 帧中检测的 N 个物体中的一个要么是开始的一个 track
对于第 i 帧,TP 的物体要么是之前 i+1 帧中检测的 M 个物体中的一个要么是结束的一个 track
针对这两个约束使用矩阵的形式可以使 (可查找更详细资料了解),从而满足一个线性规划:
(这些都在先前工作有讲,准备看一下后补充)
错误分析:
2D 检测时经常由于遮挡或光线变化导致误检,就像第一行中的 ID 6,经过一帧 FN 后,突 然就被分配了个 ID 8,或者第二行中的 ID 7 也是这个情况又如第一行中 ID 9 后面没有继续 检测出来。作者说后续应该引入 temporal information 到数据关联中进行预测的强化。 我个人还是感觉,既然有这种情况发生,是因为前端 2D 的 detector 效果不太好并且后续 和 LiDAR 融合的不够好,如果融合够好,且 3D 的 detector 性能好一些是能提出一个比较 robust 的 fusion 特征的,会使得 ID 重新分配情况减少。或者就如同作者所说,加入时序信息,看这个样子感觉是只利用到了前后帧信息.