FairMOT

FairMOT

论文:FairMOT: On the Fairness of Detection and Re-Identification in Multiple
Object Tracking

代码: https://github.com/ifzhang/FairMOT

直接将ReID头加入检测网络会造成跟踪性能大的下降,从而造成过多IDSW。本文探究了失败的原因,并提出了一种简单有效的解决方案。

1. 动机

失败的原因:

  1. anchor不适合用来提取re-ID特征(anchor更偏好检测任务;训练re-ID时产生歧义,特别是拥挤场景一个anchor可能对应多个实例,一个实例可能对应多个anchor)
  2. 检测任务和re-ID任务需要的特征是冲突的
  3. 特征维度不同,re-ID任务的特征一般高达512甚至1024

2. 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$.

$$ L_{\text {heat }}=-\frac{1}{N} \sum_{x y} \begin{cases}\left(1-\hat{M}_{x y}\right)^{\alpha} \log \left(\hat{M}_{x y}\right), & M_{x y}=1 ; \\ \left(1-M_{x y}\right)^{\beta}\left(\hat{M}_{x y}\right)^{\alpha} \log \left(1-\hat{M}_{x y}\right) & \text { otherwise }\end{cases} $$

offset损失和hw损失都是L1 loss:

$$ L_{\mathrm{box}}=\sum_{i=1}^{N}\left\|\mathbf{o}^{i}-\hat{\mathbf{o}}^{i}\right\|_{1}+\lambda_{s}\left\|\mathbf{s}^{i}-\hat{\mathbf{s}}^{i}\right\|_{1} $$ 其中对于每个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损失为交叉熵损失,只计算中心点的损失:

$$
L_{\text {identity }}=-\sum_{i=1}^{N} \sum_{k=1}^{K} \mathbf{L}^{i}(k) \log (\mathbf{p}(k))
$$
其中$\mathbf{p}(k)$为预测出的属于每个实例的概率,$\mathbf{L}^{i}(k)$ 为one-hot编码的GT label。

总损失如下,使用一篇多任务论文提出的不确定性损失来平衡多个任务:

$$ \begin{aligned} &L_{\text {detection }}=L_{\text {heat }}+L_{\text {box }} \\ &L_{\text {total }}=\frac{1}{2}\left(\frac{1}{e^{w_{1}}} L_{\text {detection }}+\frac{1}{e^{w_{2}}} L_{\text {identity }}+w_{1}+w_{2}\right)\\ \end{aligned} $$ 其中 $w_{1},w_{2}$是可学习的参数

3. 关联过程

首先用卡尔曼滤波预测轨迹,然后计算预测轨迹和检测结果的马氏距离$D_m$,马氏距离中大于阈值的部分置为无穷。与DeepSORT一样计算ReID距离$D_r$,总距离$D=\lambda D_r+(1-\lambda)D_m,\lambda=0.98$,使用匈牙利算法完成第一阶段的匹配。

对于第一阶段没匹配的检测和轨迹,以0.5的覆盖率阈值再次匹配。更新匹配到的轨迹的ReID特征。没匹配到的轨迹保留30帧,为没匹配到的检测初始化轨迹。

4. 实验

消融实验:

  • ReID特征的采样方法:ROI Align、 POS-Anchor(JDE)、Center、Center-BI(带双线性插值)、 two-stage;结果两个Center的方法最好
  • 多任务损失:fixed weights(grid search)、Uncertainty-task、Uncertainty-branch、GradNorm、MGDA-UB;结果fixed有最好的MOTA、AP和最差的IDs和TPR,MGDA-UB有最高的TPR和最低的MOTA和AP。GradNorm有最高的IDF1和次高的MOTA但是训练时间长。
  • 多层特征融合:(无)ResNet、RegNet;(有)FPN、HRNet、DLA、HarDNet、RegNet;结果多层特征融合可以涨0.8~2个点,而单纯用更大的模型涨点不明显。DLA34里的可变形卷积也很重要,如果用普通卷积会掉4个点。HRNet-W18小目标(小于7000像素)表现好,DLA-34中大目标表现好。
  • reID特征维度:64维比512维能有更高的MOTA。
  • 关联方法:IoU、re-ID特征、卡尔曼滤波。卡尔曼滤波最重要,累加别的能涨一点儿。

性能对比(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: 无

请我喝杯咖啡吧~

支付宝
微信