A Baseline for 3D Multi-odject Tracking:多目标跟踪方法

ref: https://zhuanlan.zhihu.com/p/80993033

流程

使用PointRCNN的目标检测结果来跟踪;

使用卡尔曼滤波器跟踪;

使用匈牙利算法匹配前后帧的对象。

特点:

使用了3D的卡尔曼滤波器

优点:

简单快速效果好

使用的特征和状态转移模型?

10-dimensional vector T = (x, y, z, θ, l, w, h, vx, vy, vz) ,没有使用角速度,加入后效果不好;

状态转移方程是恒定速率模型

论文的结果表显示使用2D的卡尔曼效果也还挺好,MOTA 仅仅降低了一个百分点左右;

匈牙利匹配的cost matrix 是什么?

是跟踪器预测的3D box 和 检测的3D box的 3dIOU矩阵;

怎么创建跟踪器跟踪器的? 怎么销毁的?

至少3帧发现同一个物体,才会创建跟踪器(Fmin)

丢失物体的跟踪器,还会继续检测2帧(age)

为什么有一个把x,y,z,alpha,l,w,h 的顺序调换的步骤,后续又换回来了?

这里 pointRCNN 给出的结果顺序是反的,代码里面只是把它重新调整回来而已。

状态转移矩阵为什么要加3个1,恒速率模型怎么得到它的?

因为 下一时刻距离=上一时刻距离+速度,所以三个方向的速度要加1,但是实际上这里有个问题,每个时刻的间隔不一定是1秒,这样算会带来误差。

使用数据集

kitti MOT 数据集;

这么快的原因?

使用了numba 加速

Total Tracking took: 98.099 for 8008 frames or 81.6 FPS

没有使用 numba 加速

Total Tracking took: 145.496 for 8008 frames or 55.0 FPS

可以得出,不使用 numba 加速的话,速度降低了 32%;

匈牙利算法和NN、 GNN方法有什么区别?

没有很大的差别,都是用于求解指派问题的方法,NN是局部最优,GNN和匈牙利是全局最优;

可以做的改进:

1 把 KF 改为 UKF、EKF效果应该更好吧;

2 使用循环计算 3D IOU 应该是比较慢的,这里其实可以使用2D IOU,并且可以使用 cython 的计算过程来进一步加速。



posted @ 2020-07-20 14:08  Ariel_一只猫的旅行  阅读(821)  评论(0编辑  收藏  举报