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

多模态 MOT 专栏收录该内容
3 篇文章 1 订阅

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

Motivation

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

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 个物体:
X i = { x i i ∣ j = 1 , ⋯   , N } X^{i}=\left\{x_{i}^{i} | j=1, \cdots, N\right\} Xi={xiij=1,,N}
后一帧检测到了 M 个物体:
X i + 1 = { x k i + 1 ∣ k = 1 , ⋯   , M } X^{i+1}=\left\{x_{k}^{i+1} | k=1, \cdots, M\right\} Xi+1={xki+1k=1,,M}
对于每一个 x j x_j xj,都会有四个二进制参数: y j true , y j k link , y j new , y j end y_{j}^{\text {true}}, y_{j k}^{\text {link}}, y_{j}^{\text {new}}, y_{j}^{\text {end}} yjtrue,yjklink,yjnew,yjend

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

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

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

在文中,作者为了方便将 A i A_i Ai 展成了一个一维向量 Y link Y^{\text {link}} Ylink ,将 y j t r u e y_{j}^{t r u e} yjtrue 也展成了 Y true , Y new , Y end Y^{\text {true}}, Y^{\text {new}}, Y^{\text {end}} Ytrue,Ynew,Yend 的形式,最后把他们拼成了一个:
Y = [ Y t r u e , Y l i n k , Y n e w , Y e n d ] \mathbf{Y}=\left[Y^{t r u e}, Y^{l i n k}, Y^{n e w}, Y^{e n d}\right] Y=[Ytrue,Ylink,Ynew,Yend]
这四个大 Y Y Y 分别由 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 (N+M)×3×224×224 大小的 tensor,backbone 是 VGG-Net,采用 skip-pooling 的策略将各个 level 的 feature 拼接到一起,最后达到 1 × D × ( N + M ) 1 \times D \times(N+M) 1×D×(N+M) 的形式, D D D 为 512。

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

多模态 Fusion module:

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

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

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

相关性运算:

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

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

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

这三个运算是来指导 affinity estimator 计算邻接矩阵 A i A_i Ai 的(至于怎么做目前没搞清要看代码)
在这里插入图片描述
应该是先进行 link 的 estimation 再进行 start 和 end 的 estimation(从原文来看) 原文里还有一些细节操作,包括 Ranking Mechanism 等应该是对邻接矩阵的 refine 操作 吧,日后看代码再了解。

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

Linear programming:

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

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

错误分析:

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

  • 1
    点赞
  • 1
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值