多目标跟踪算法 | FairMOT

前言

本文介绍一个曾经在多目标跟踪上霸榜的追踪器 ,实用又简单的目标追踪Baseline,FairMOT!它属于一阶段多目标跟踪器(one-shot MOT),检测模型和Re-ID重识别模型同时进行,提升了运行速率。FairMOT采用 anchor-free 目标检测方法(CenterNet),估计高分辨率特征图上的目标中心和位置;同时添加并行分支 来估计像素级 Re-ID 特征,这类特征用于预测目标的 id。

论文地址:https://arxiv.org/pdf/2004.01888v2.pdf

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

目录

一、背景

1.1 两阶段多目标跟踪(two-shot MOT)

1.2 一阶段多目标跟踪(one-shot MOT)

二、跟踪器准确性的关键性因素

2.1 基于Anchor锚点的方法不适合Re-ID

2.2 多层特征聚合

2.3 ReID特征的维数

三、FairMOT框架

3.1 主干网络

3.2 物体检测分支

3.3 id嵌入分支 Identity Embedding Branch

四、损失函数

4.1 Heatmap loss

4.2 Offset and Size loss

4.3 Identity Embedding Loss

五、实验结果

六、FairMOT实践


一、背景

多目标跟踪 (MOT) 是计算机视觉领域中的重要任务,近年来,目标检测和 Re-ID 在各自的发展中都取得巨大进步,并提升了目标跟踪的性能。但是,现有方法无法实时速率执行推断,因为两个网络无法共享特征,例如:deepsort。

当前多目标跟踪最优的方法通常分为两大类:两阶段多目标跟踪、一阶段多目标跟踪。

1.1 两阶段多目标跟踪(two-shot MOT)

两阶段多目标跟踪——使用两个单独的模型,首先用检测模型定位图像中目标的边界框位置,然后用关联模型对每个边界框提取重识别 (Re-identification, Re-ID) 特征,并根据这些特征定义的特定度量将边界框与现有的一个跟踪结果联结起来。其中检测模型中的目标检测是为了发现当前画面所有的目标,ReID则是将当前所有目标与之前帧的目标建立关联,然后可以通过ReID特征向量的距离比较和目标区域交并比(IOU)来通过使用卡尔曼滤波器和匈牙利算法建立关联。代表算法:deepsort

两步方法的优点在于,它们可以针对每个任务分别使用最合适的模型,而不会做出折衷。此外,他们可以根据检测到的边界框裁剪图像补丁,并在预测Re-ID功能之前将其调整为相同大小,这有助于处理对象的比例变化。

1.2 一阶段多目标跟踪(one-shot MOT)

单步法MOT——在进行目标检测的同时也进行ReID特征提取,核心思想是在单个网络中同时完成对象检测和身份嵌入(Re-ID功能),以通过共享大部分计算来减少推理时间。现有的方法比如Track-RCNN、JDE(Towards real-time multi-object tracking)直接在Mask R-CNN、YOLOv3的检测端并行加入ReID特征向量输出。

很显然这能节约计算时间,但作者研究发现此类方法存在目标ID关联不正确的问题。具体来说,该类方法使用了anchor-based 的目标检测,目标的ReID特征是在anchor区域提取的,anchor 和目标区域会出现不对齐的问题,这会导致网络训练时存在严重的歧义。

图1:(a)黄色和红色的锚点造成了估计相同的ID(穿蓝色衬衫的人),尽管图像块非常不同。此外,基于锚的方法通常在粗网格上运行。因此,很有可能在锚点(红色或黄色星形)提取的特征未与对象中心对齐。(b)免锚的做法受歧义的影响较小。

二、跟踪器准确性的关键性因素

其实FairMOT属于JDE(Jointly learns the Detector and Embedding model )的一种。实验证明了现有的JDE方法存在一些不足,FairMOT根据这些不足进行了相关的改进。.作者对影响跟踪器准确性的关键性因素做了以下的分析:

2.1 基于Anchor锚点的方法不适合Re-ID

当前的单步法跟踪器都是基于anchor锚的,因为它们是从对象检测器修改而来的。但是,有两个原因造成了锚点不适合学习Re-ID功能。

  • 其一,对应于不同图像块的多个锚点可能负责估计同一个目标的 id,这导致严重的歧义(参见图 1)。即:基于anchor的检测器,多个bbox可能对应一个目标,这就导致了歧义。
  • 其二,需要将特征图的大小缩小 1/8,以平衡准确率和速度。对于检测任务而言这是可以接受的,但对于 Re-ID 来说就有些粗糙了,因为目标中心可能无法与在粗糙锚点位置提取的特征一致。

文章中提出解决该问题的方法,是通过将MOT问题看作为在高分辨率特征图上的像素级关键点(目标中心)估计和 id 分类问题。

2.2 多层特征聚合

这对于 MOT 问题尤其重要,因为 Re-ID 特征需要利用低级和高级特征来适应小型和大型目标。研究者通过实验发现,这对降低 one-shot 方法的 id 转换数量有所帮助,因为它提升了处理尺度变换的能力。

2.3 ReID特征的维数

以前的ReID方法通常学习高维特征,并在其基准上取得了可喜的结果。但是,本文发现低维特征实际上对MOT更好,因为它的训练图像比ReID少(由于 Re-ID 数据集仅提供剪裁后的人像,因此 MOT 任务不使用此类数据集)。学习低维特征有助于减少过拟合小数据的风险,并提高跟踪的稳健性。

针对于第三点实际存在疑问,一开始公布的Fairmot版本用的reid分支是128维度的,但是后来作者团队在MOT20上刷出了MOTA58.7的指标,也更新了github上的Fairmot模型,这时候用的reid维度已经改为512维度,与通用的reid模型接近。但是在实验中发现reid上效果仍然在人员交集处容易跑其他人身上,应该是没有充分训练。

三、FairMOT框架

如上图是FairMOT框架的框架图,它提出了 one-shot MOT跟踪。首先将输入图像送入编码器-解码器网络,以提取高分辨率特征图(步幅=4);然后添加两个简单的并行 head,分别预测边界框和 Re-ID 特征;最后提取预测目标中心处的特征进行边界框时序联结。

首先,采用 anchor-free 目标检测方法,估计高分辨率特征图上的目标中心。去掉锚点这一操作可以缓解歧义问题,使用高分辨率特征图可以帮助 Re-ID 特征与目标中心更好地对齐。

然后,添加并行分支来估计像素级 Re-ID 特征,这类特征用于预测目标的 id。具体而言,学习既能减少计算时间又能提升特征匹配稳健性的低维 Re-ID 特征。在这一步中,本文用深层聚合算子(Deep Layer Aggregation,DLA)来改进主干网络 ResNet-34 ,从而融合来自多个层的特征,处理不同尺度的目标。

3.1 主干网络

采用ResNet-34 作为主干网络,以便在准确性和速度之间取得良好的平衡。为了适应不同规模的对象,如图2所示,将深层聚合(DLA)的一种变体应用于主干网络

与原始DLA 不同,它在低层聚合和低层聚合之间具有更多的跳跃连接,类似于特征金字塔网络(FPN)。此外,上采样模块中的所有卷积层都由可变形的卷积层代替,以便它们可以根据对象的尺寸和姿势动态调整感受野。 这些修改也有助于减轻对齐问题

3.2 物体检测分支

本方法中将目标检测视为高分辨率特征图上基于中心的包围盒回归任务。特别是,将三个并行回归头(regression heads)附加到主干网络以分别估计热图,对象中心偏移和边界框大小。 通过对主干网络的输出特征图应用3×3卷积(具有256个通道)来实现每个回归头(head),然后通过1×1卷积层生成最终目标。

  • Heatmap Head

这个head负责估计对象中心的位置。这里采用基于热图的表示法,热图的尺寸为1×H×W。 随着热图中位置和对象中心之间的距离,响应呈指数衰减。

  • Center Offset Head

该head负责更精确地定位对象ReID功能与对象中心的对齐精准度对于性能至关重要。

  • Box Size Head

该部分负责估计每个锚点位置的目标边界框的高度和宽度,与Re-ID功能没有直接关系,但是定位精度将影响对象检测性能的评估。

3.3 id嵌入分支 Identity Embedding Branch

id嵌入分支的目标是生成可以区分不同对象的特征。理想情况下,不同对象之间的距离应大于同一对象之间的距离。为了实现该目标,本方法在主干特征之上应用了具有128个内核的卷积层,以提取每个位置的身份嵌入特征。

四、损失函数

4.1 Heatmap loss

作者按照高斯分布将物体的中心映射到了heatmap上,然后使用变形的focal loss进行预测的heatmap和实际真实的heatmap损失函数的求解,公式如下:

 

 \hat{M}_{x,y}是预测的heatmap特征图,M_{x,y}是heatmap的ground-truth。N为一个图中物体总数量。

详细解释:

4.2 Offset and Size loss

作者用了两个L1损失就实现了Offset和Size损失:

其中,N为一个图中物体总数量,s表示Size 框的大小,o表示Offset 中心点的偏差。

详细解释:

4.3 Identity Embedding Loss

FairMOT中的Embedding也是需要借助分类(按照物体ID为不同物体分配不同的类别)进行学习的。其中分类用到softmax损失。

 其中,N为一个图中物体总数量,K是类别数量。即,这部分需要对图片中每个物体进行分类识别,这里分类识别是具体认识到是指那一个物体,具有相同身份的所有对象实例都被视为一个类。

详细参考:

五、实验结果

1. 基于锚点(anchor-based)和无锚点(anchor-free)比较

表 1:在 MOT15 数据集上,基于锚点和无锚点方法在验证视频上的评估结果。

2. 多层特征聚合

 表 2:不同主干网络在 2DMOT15 数据集上的评估结果。

 表 3:主干网络对不同尺度目标的影响。

3、Re-ID 特征维度

 表 4:不同 Re-ID 特征维度在 2DMOT15 数据集上的评估结果

4、与当前最佳模型的比较

表 5:在两个数据集上与当前最佳 one-shot 跟踪器的对比结果。

参考1:https://cloud.tencent.com/developer/article/1634149

参考2:https://jishuin.proginn.com/p/763bfbd2e881

参考3:https://zhuanlan.zhihu.com/p/407851869

六、FairMOT实践

参考:https://github.com/ifzhang/FairMOT

截止2022.2,开源代码的性能,如下表所示。(MOT challenge 数据集)

DatasetMOTAIDF1IDSMTMLFPS
2DMOT1560.664.759147.6%11.0%30.5
MOT1674.972.8107444.7%15.9%25.9
MOT1773.772.3330343.2%17.3%25.9
MOT2061.867.3524368.8%7.6%13.2

曾在2D MOT15、MOT16、MOT17 和 MOT20 的所有跟踪器中排名第一,不愧是在多目标跟踪上霸榜的追踪器。

测试效果:

但是发现其速度还是不够快,后面基于TensorRT进行加速,再看看效果。 

本文直供大家参考和学习,谢谢!

对于FairMOT的环境搭建,下面是基本的步骤: 1. 首先,你需要一个具备GPU支持的计算机,因为FairMOT是基于深度学习模型的目标跟踪算法,需要进行大量的计算。 2. 安装Python和依赖库。FairMOT使用Python作为开发语言,你可以安装最新版本的Python。另外,你需要安装一些常用的Python库,包括NumPy、OpenCV、PyTorch等。 3. 克隆FairMOT代码库。你可以在GitHub上找到FairMOT的代码,并将其克隆到本地。 ``` git clone https://github.com/ifzhang/FairMOT.git ``` 4. 下载预训练模型。FairMOT的作者提供了一些预训练模型,你可以从GitHub上下载这些模型并保存到特定的文件夹中。 5. 准备数据集。FairMOT需要一个目标跟踪的数据集来进行训练和测试。你可以使用现有的数据集,如MOT17、MOT20等,或者自己制作数据集。 6. 配置参数文件。FairMOT使用一个配置文件来设置训练和测试的参数。你需要根据自己的需求修改配置文件中的参数。 7. 训练模型。使用准备好的数据集和配置文件,你可以开始训练FairMOT模型。根据配置文件中的参数设置,执行相应的训练命令。 8. 测试模型。训练完成后,你可以使用测试数据集对FairMOT模型进行评估。同样,根据配置文件中的参数设置,执行相应的测试命令。 这是一个简要的搭建FairMOT环境的步骤,具体的操作可能会因为不同的系统和需求而有所差异。你可以参考FairMOT的官方文档或者在相关的开发社区寻求帮助,以便更好地完成环境搭建。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗小树x

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值