写在前面:
“how to train your deep multi-object tracker”是论文“DeepMOT-A Differentiable Framework for Training Multiple Object Trackers”的改进版本,前者比后者多了一些实验。
主要工作:
提出了一个端对端的多目标跟踪方法的训练框架,能够针对多目标跟踪的评估指标进行训练。
主要贡献:
- 提出了直接受启发于标准多目标跟踪评估测量MOTA和MOTP的新的损失函数用于端对端的训练深度多目标跟踪器。
- 提出了一个新的网络模块–深度匈牙利网络,学习以一种可微的方式将预测的跟踪与真实目标进行匹配。
- 通过使用本文提出的训练框架训练最近提出的Tracker1证明了提出的损失函数和可微匹配模块的益处。证明了对于baseline方法的提升以及在MOTchallenge 基准上建立了一个新的sort结果。
主要模块
深度匈牙利网络
网络结构
如果所示,深度匈牙利网络由两个连续的Bi-RNN构成,但是代码中的流程与图示流程有所差异。
计算流程
输入尺寸为 N ∗ M N*M N∗M的距离矩阵 D D D,进行一个逐行的flatten,得到尺寸为 M × N M\times N M×N的一维向量。将flatten后的向量输入到第一个Bi-RNN中得到尺寸为 M × N ∗ 2 h M\times N* 2h M×N∗2h的张量,其中 h h h为Bi-RNN的中间层数量。将张量reshape为 M ∗ N ∗ 2 h M*N*2h M∗N∗2h,再进行逐列的flatten,得到尺寸为 N × M ∗ 2 h N\times M*2h N×M∗2h的张量作为第二个Bi-RNN的输入,得到尺寸为 N × M ∗ 2 h N\times M*2h N×M∗2h的输出张量。将得到的张量输入到三个FC层中得到尺寸为 N × M N\times M N×M的输出向量,然后reshape成尺寸为 N ∗ M N*M N∗M的软分配矩阵。
输入距离矩阵
训练时,计算检测位置与gt目标位置之间的距离矩阵。利用IoU计算距离矩阵时,如果两个边界框没有交集,距离1-IoU始终为常数1,来自损失的梯度始终为0,没有信息被反向传播。因此,本文利用欧几里得中心点距离和Jaccard 距离的平均作为距离:
d n m = f ( x n , y m ) + J ( x n , y m ) 2 d_{nm}=\frac{f(x^n, y^m)+J(x^n, y^m)}{2} dnm=2f(xn,ym)+J(xn,ym)
其中:
f ( x n , y m ) = ∣ ∣ c ( x n ) − c ( y m ) ∣ ∣ 2 H 2 + W 2 f(x^n, y^m)=\frac{||c(x^n)-c(y^m)||_2}{\sqrt{H^2+W^2}} f(xn,ym)=H2+W2∣∣c(xn)−c(ym)∣∣2
J ( x n , y m ) = 1 − I o U ( x n , y m ) J(x^n, y^m)=1-IoU(x^n, y^m) J(xn,<