打开网易新闻 查看精彩图片

到目前为止,FairMOT是我看过的最简单实用的一份代码,而且在论文方面,论文思路、写作格式方法、工作量上都是十分充足的,这也是我为什么选择FairMOT作为第一篇论文解析。

论文信息

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

代码地址: https://link.zhihu.com/?target=https%3A//github.com/ifzhang/FairMOT

出发点

detection和reid所使用的特征之间有着显著差异。

发现问题:

  1. anchor不适用于reid的特征。

    1. 就像Track RCNN等的anchor-based one-shot trackers忽略了reid任务。
      因为它们用anchor首先去检测物体,然后基于这个检测结果来提取reid特征,言下之意就是如果检测结果不正确那么提取出的reid特征也是无用的

    2. anchors在训练reid特征时也会引入很多歧义。
      因为一个anchor可能对应多个身份,多个anchor可能对应一个身份,尤其是在拥挤的场景中。

  2. detection和reid共享特征引起的。
    detection和reid时完全不一样的任务,按理来说它们需要不同的特征,而现在的方法都是在detection和reid用同一个特征来训练的。
    一般来说,reid特征是来区分同一类中不同实例的,detection特征需要对同一类中不同实例是相似的。因此,one-shot跟踪器中的共享特征会导致特征冲突,从而降低每个任务的性能。

  3. detection和reid特征适用维度不同引起的。
    reid特征通常高达512维或1024,远高于detection。而这两者维度的巨大差异也会损害这两个任务的性能。
    在实验中,作者联合detection和reid的网络学习低维重识别特征可以实现更高的跟踪精度和效率。

  4. 如何平衡det和reid的loss损失

方法

作者提出FairMOT来解决以上三个问题。FairMOT的整体结构如下:

打开网易新闻 查看精彩图片

基于CenterNet和reid的组合上, 由两个相同分支组成,分别用于detection object 和提取reid特征。

其中detection branch以anchor-free方式实现,用来估计object centers 和 sizes,表示为位置感知测量图;reid分支为每个像素估计一个reid特征,来表征以像素为中心的对象。

以前的方法是将一个分支形成两阶段的方式来执行detection和reid。作者说FairMOT与这些方法有着本质区别。

FairMOT结构

BackBone Network 基础网络

使用ResNet-34作为主干网络,DLA-34作为高低层特征融合网络。
输入图像尺寸为HimagexWimage,输出特征图为CxHxW,这里H=Himage/4,W=Wimage/4.
除DLA-34之外,还可选择Higher HRNet

Detection Branch 检测分支

检测分支是基于CenterNet的anchor-free方法。
三个并行头被添加到DLA-34后去预测heatmaps热图,object center offsets目标中心补偿和bounding box sizes边界框尺寸。每个头都是通过对DLA-34的输出特征应用具有256个通道的3x3卷积来实现的,最终通过1x1卷积层来生成三个头的输出特征。

1、Heatmap Head 热图头

这个头负责估计目标中心的位置。热图的维度是1xHxW。如果热土中的某个位置与真实对象中心重叠,则预测的响应为1.响应随着热图位置和目标中心之间的距离呈指数衰减。

 ,这里N代表图像内目标的数量, 代表标准差。
打开网易新闻 查看精彩图片
,这里N代表图像内目标的数量, 代表标准差。
 ,这里 是估计的热图, 是是focalloss中预设定的参数。
打开网易新闻 查看精彩图片
,这里 是估计的热图, 是是focalloss中预设定的参数。

2、Box size and offset Heads

box offset heads 边界框补偿头的目的是更精确的定位目标。由于最终用于下游任务的特征图是由4倍下采样得到的,所以会引入多达四个像素的量化误差。该分支估计每个像素相对于目标中心的连续偏移,来减轻下采样的对于边界框尺寸的影响。主要负责在每个位置上目标边界框的高度和宽度。

从box offset heads 会分别输出尺寸和补偿, 。

对于图像中每个GT框 ,会先计算这个GT框的尺寸和补偿, . 而将相应位置的预测尺寸和补偿表示为 .

 , 这里 是权重参数,预设为0.1
打开网易新闻 查看精彩图片
, 这里 是权重参数,预设为0.1

3、Re-ID Branch

Re-ID分支目的是生成可以区分不同目标的特征。理想情况下,不同目标之间的亲密距离应该小于统一目标之间的亲密距离。

为了达到这一目的,我们在DCN-34后添加了一个具有128个卷积核的卷积层,使生成的主干特征输入到这一卷积层生成reid所使用的特征。

生成的特征表示为 ,这样就可以从特征图中提取出位置 的reid特征

通过分类任务学习reid特征。训练集中具有相同身份的所有目标实力都被视为同一类。对于图像中每个GT box ,先获得下采样后的热图中心点 。之后我们使用128维的卷积层抽取热图中心点的reid特征向量 , 并且之后通过全连接层和softmax层将其映射到类分布向量 。将GT类别标签的one-hot表现形式作为

 , 其中K是训练数据中所有身份的数量。
打开网易新闻 查看精彩图片
, 其中K是训练数据中所有身份的数量。

在网络训练过程中,只使用位于目标中心的身份嵌入向量进行训练,因为我们可以从测试中的目标热图中获得目标中心。

FairMOT 训练

FairMOT框架在训练时,接受两个Loss:detection loss 和 reid loss

作者使用了一种不确定Loss平衡方法来平衡detection和reid任务,具体方式如下:

其中, 。

需要注意的是,虽然FairMOT是基于CenterNet的方法,但不同于CenterNet使用前后帧图像作为使用,它仅使用单张图像作为输入,并且因此将每个目标实例作为单独分类。

在训练时对单张图像的预处理操作包括:HSV增强、旋转、缩放、平移和剪切。

FairMOT 推理

由基础网络得到detection和reid特征

在网络进行推理时,网络将大小为1088x608的图像帧作为输入,与JDE方法相同。

在预测的Heatmap上,通过heatmap的分数来执行非极大值抑制来提取并保留大于阈值的关键点的位置。然后,根据预测的偏移量offset和框大小size计算对应的边界框。最后在预测的目标中心heatmap keypoints提取身份嵌入向量

在线关联

使用MOTDT和分层的数据关联方法。

首先,根据第一帧中检测到的边界框来进行初始化轨迹;然后在后续帧中,我们使用两阶段的匹配策略将检测到的框连接到现有的tracklets中。

两阶段关联方法:

1、第一阶段

使用卡尔曼滤波器和reid特征来获得初始跟踪结果。具体是,使用卡尔曼滤波器预测目标在后续帧的位置,之后计算预测框和检测框之间的马氏距离 ,与DeepSORT方法类似。然后计算基于reid特征的余弦距离 ,并融合马氏和余弦距离: , 这里 是权重参数在实验中预设为0.98。

参照JDE方法的设置,如果 大于阈值,就将马氏距离 设置为无穷大,来避免获得大的运动轨迹

在第一阶段中判断匹配的阈值设置为 ,并使用匈牙利匹配来完成第一阶段的匹配。

2、第二阶段

目的是对第一阶段中不匹配的检测和跟踪,用IoU策略来再匹配一次,即在第二阶段中 。最后将未匹配的检测初始化为新轨迹,并将未关联的跟踪框保存30帧,以备未来再次出现。

Experiments

数据集

1、只包含行人边界框:
ETH、CityPerson、CrowdHuman datasets

2、同时包含行人边界框和身份注释:
CalTech、MOTChallenge、CUHK-SYSU、PRW

作者将只包含行人边界框的数据集仅用于检测分支的训练,同时提供两者注释的数据集用于检测和reid分支的训练。

评估标准

对于检测结果,使用AP(Average Percision)来进行评估;
对于reid特征,使用TPR(true Positive Rate)指标来进行评估;
对于MOT结果,使用MOTA(Multi-object tracking Accuracy)、IDs(Identity switch)、IDF1(Identity F 1 Score)等指标来进行评估的评估。

实验细节

1、采用在COCO数据集上预训练的DLA-34变体作为默认backbone;

2、使用Adam优化器训练30个epochs;

3、开始使用学习率为10^{-4},在第20个epochs时,学习率衰减为10^{-5};

4、使用标准数据集增强技术,包括:旋转、缩放和颜色抖动;

5、输入图像分辨率调整为1088x608,之后的特征图分辨率为272x152;

6、训练阶段,采取双路Nvidia RTX 2080ti GPUs 训练大约30小时。

消融实验

1、ReID特征提取方法

作者说明了目前reid提取特征的来源:

a、RoI-Align in Track R-CNN. reid特征直接从ROI-Align所输出的检测框中采样,造成的问题是许多采样位置偏离目标中心。

b、POS-Anchor in JDE. reid特征直接从正例anchors中采样,同样会造成采样位置偏离目标中心。

c、Center in FairMOT. 直接从目标中心提取。

d、Center + BI in FairMOT. 加上线性插值

e、两阶段方法。第一阶段检测部分和FairMOT相同。第二部分使用ROI-Align跟踪检测到的边界框提取主干特征,然后使用ReID head(一个完全连接层)获得reid特征。

这五种方法都是基于FairMOT做的,不同之处是ReId特征从主干特征如何提取,主要实验结果如下:

打开网易新闻 查看精彩图片

2、多任务Loss平衡方法

在detection和reid loss 如何平衡间,作者尝试了五种方法:

a、Uncertainty-task 和 Uncertainty-branch;

b、GradNorm. 得到最高的总体跟踪精度,这表明可以平衡两者任务,然而需要更长的训练时间;

c、MGDA-UB. 得到最高的TPR,但MOTA和AP最低,这表明该模型偏向于ReID任务;d、Fixed weight. 得到最好的MOTA和AP,但最差的IDs和TPR,意味着模型偏向于检测任务。

主要实验结果如下:

打开网易新闻 查看精彩图片

3、多层特征融合方法

将这些方法分为两类,一类没有多层融合,一类有多层融合

a、ResNet、RegNet

b、FPN、HRNet、DLA、HarDNet

根据在ImageNet上测试的Acc和在MOT任务中的MOTA、IDF1指标的对比,说明在一项基础任务中拥有强 大的主干并不意味着它在MOT中也能获得良好的结果。主要实验结果如下:

打开网易新闻 查看精彩图片

4、特征维度选择

在这个实验中比较了JDE和FairMOT,分别在512维和64维下比较,主要实验结果如下:

打开网易新闻 查看精彩图片

5、数据关联方法

数据关联阶段使用:bbox IoU、reid features 和 卡尔曼滤波预测未来边界框,这些都被用来与检测框计算相似性,最后使用匈牙利方法解决分配问题。主要实验结果如下:

打开网易新闻 查看精彩图片

关于以上所有消融实验,MOT17数据集下进行测试,测试结果如下:

打开网易新闻 查看精彩图片

单图像训练

在这部分作者提出:在CrowdHuman数据集上预训练模型可以直接连接跟踪器并获得可观的实验结果,即可以直接使用预训练模型,之后在带有身份的训练集例如MOT上继续训练reid特征, 主要实验结果如下:

打开网易新闻 查看精彩图片

训练数据消融实验

当仅使用MOT17数据集训练时,可以达到69.8MOTA;当使用与JDE相同的训练数据时,我们可以实现72.9MOT;当继续在CrowdHuman数据集上进行单图训练时,MOTA提高至73.7。

来源:知乎

作者:Yyyyu

深延科技|

打开网易新闻 查看精彩图片

深延科技成立于2018年1月,中关村高新技术企业,是拥有全球领先人工智能技术的企业AI服务专家。以计算机视觉、自然语言处理和数据挖掘核心技术为基础,公司推出四款平台产品——深延智能数据标注平台、深延AI开发平台、深延自动化机器学习平台、深延AI开放平台,为企业提供数据处理、模型构建和训练、隐私计算、行业算法和解决方案等一站式AI平台服务。