直接将ReID头加入检测网络会造成跟踪性能大的下降,从而造成过多IDSW。本文探究了失败的原因,并提出了一种简单有效的解决方案。
论文:FairMOT: On the Fairness of Detection and Re-Identification in Multiple Object Tracking
代码: https://github.com/ifzhang/FairMOT
失败的原因:
Backbone: ResNet-34, DLA-34同CenterTrack, HRNet
检测分支: backbone提取的特征后接256x3x3的卷积+1x1的卷积。共三个头:heatmap(通道=类别数),中心点offset(通道数=2),框尺寸(通道数=2)。中心点offset是为了弥补四倍下采样造成的四个像素点的偏移不确定。
Re-ID分支: backbone提取的特征后接128x3x3卷积,然后接一个全连接层和softmax。全连接层输出维度为K,K是训练集的所有实例数。
heatmap损失为修改后的focal loss(原版是针对01离散输入的,改为0~1连续输入),如下式,\hat{M}为预测ht图,M为ground truth按照高斯核映射成的heatmap label, \alpha=2是原版focal loss的参数,\beta=4.
offset损失和hw损失都是L1 loss:
其中对于每个GT框 \mathbf{b}^{i}=\left( x_1^i,y_1^i,x_2^i,y_2^i \right),\mathbf{s}^{i}=\left( x_2^i-x_1^i,y_2^i-y_1^i \right), \mathbf{o}^{i}=\left(\frac{c_{x}^{i}}{4}, \frac{c_{y}^{i}}{4}\right)-\left(\left\lfloor\frac{c_{x}^{i}}{4}\right\rfloor,\left\lfloor\frac{c_{y}^{i}}{4}\right\rfloor\right),超参数\lambda_s=0.1
Re-ID损失为交叉熵损失,只计算中心点的损失:
其中
总损失如下,使用一篇多任务论文提出的不确定性损失来平衡多个任务:
其中 w_{1},w_{2}
首先用卡尔曼滤波预测轨迹,然后计算预测轨迹和检测结果的马氏距离D_m,马氏距离中大于阈值的部分置为无穷。与DeepSORT一样计算ReID距离D_r,总距离D=\lambda D_r+(1-\lambda)D_m,\lambda=0.98,使用匈牙利算法完成第一阶段的匹配。
对于第一阶段没匹配的检测和轨迹,以0.5的覆盖率阈值再次匹配。更新匹配到的轨迹的ReID特征。没匹配到的轨迹保留30帧,为没匹配到的检测初始化轨迹。
消融实验:
性能对比(private detector):
括号中的为最高的非官方实现达到的精度
MOT17-testset:
Method | MOTA | IDF1 |
---|---|---|
Tracktor v2 | 56.5 (61.2) | 55.1 (58.4) |
CenterTrack | 67.8 | 64.7 |
FairMOT | 73.7 | 72.3 |
KITTI: 无
nuScenes: 无