当前位置: 代码迷 >> 综合 >> Towards Real-Time Multi-Object Tracking(JDE)论文阅读及代码实验
  详细解决方案

Towards Real-Time Multi-Object Tracking(JDE)论文阅读及代码实验

热度:25   发布时间:2023-10-21 03:59:52.0

Towards Real-Time Multi-Object Tracking(JDE)

Paper:https://arxiv.org/pdf/1909.12605v1.pdf
Github:https://github.com/Zhongdao/Towards-Realtime-MOT
前文:https://blog.csdn.net/qq_34919792/article/details/106033055

        之前在Fairmot中做了很多叙述,由于Fairmot是在JDE的基础上改进过来的,后来我发现JDE中很多方法是和Fairmot中十分相似的。本文可以和前一篇文章Fairmot一起阅读了解思路变化。

一、为什么要提出JDE

Towards Real-Time Multi-Object Tracking(JDE)论文阅读及代码实验
图1简要说明了SDE方法,两阶段方法和的JDE之间的区别。我的理解是
1)、SDE(Separate Detection and Embedding)就是两阶段法。检测器和Reid模块是独立开来的,先检测后识别,这些方法需要分为两部分操作,两部分不相互干扰,精度高,但是耗时长。
2)、作者这里的two-stage实际上应该也是一种端到端的方法,只是不是利用检测的最后的结果,而是利用两阶段检测法中FPN生成的框来做Embedding,这样做可以贡献部分特征,减少计算量。但是二阶段法不来就不是很快,所以整体速度依然达不到实时。这种方法可以参考这篇工作(End-to-End Deep Learning for Person Search),放个图有助于理解:
Towards Real-Time Multi-Object Tracking(JDE)论文阅读及代码实验
3)、JDE(Joint Detection and Embedding)直接一个网络把检测结果和特征识别的向量学习出来,可以真正达到实时。

二、JDE的网络结构

Towards Real-Time Multi-Object Tracking(JDE)论文阅读及代码实验
图2:说明(A)网络体系结构和(B)预测头。 预测头被添加到多个FPN尺度上。 在每个预测头中,JDE的学习被建模为多任务学习问题。通过学习一组辅助参数,即与任务相关的不确定性,我们自动加权异构损失。

1、检测与嵌入问题设置的联合学习
        JDE的目标是在一个前向通道中同时输出目标的位置和外观嵌入。第一个目标要求模型准确地检测目标。 第二个目标要求外观嵌入具有以下属性。连续帧中同一标识的观测之间的距离应小于不同标识之间的距离。距离度量d(·)可以是欧氏距离或余弦距离。从技术上讲,如果这两个目标都得到满足,即使是一个简单的关联策略,例如匈牙利算法,也会产生良好的跟踪结果。

2、结构概述
        我们使用FPN的结构。FPN从多尺度预测,因此,在目标规模变化很大的情况下,行人检测带来了改进。 图2简要显示了JDE中使用的神经结构。输入视频帧首先通过主干网络进行前向传递,以获得三个尺度的特征映射,即分别具有1/32、1/16和1/8下采样率的尺度。然后,通过跳过连接从第二个最小尺度上对具有最小尺寸(也是语义上最强特征)的特征映射进行上采样并与特征映射进行融合,其他尺度也是如此。最后,在所有三个尺度的融合特征映射上添加预测头。一个预测头由几个堆叠的卷积层组成,输出一个密集的大小预测图(6A+D)×H×W,其中A是分配给此比例的锚模板的数量,而D是嵌入的维数。密集预测地图分为三个部分(任务):
        1)尺寸为2A×H×W的框分类结果;
        2)尺寸为4A×H×W的盒回归系数;
        3)尺寸D×H×W的密集嵌入映射。

3、检测
        一般来说,检测分支类似于标准的RPN,但有两个修改。首先,我们重新设计锚的数量,尺度和纵横比,以便能够适应目标,即行人在我们的情况下。基于公共先验,将所有锚设置为1:3的纵横比… 锚模板的数量被设置为12个,使得每个尺度的A=4,锚的尺度(宽度)从大约11到512。其次,我们注意到,为用于前景/背景分配的双重阈值选择适当的值是很重要的。通过可视化,我们确定IOU>0.5,GT近似地保证了前景,这与通用对象检测中的公共设置是一致的。另一方面,那些框IOU<0.4。 在我们的情况下,GT应该被视为背景,而不是在一般情况下使用0.3。我们的初步实验表明,这些阈值有效地抑制了假警报,这通常发生在严重遮挡下。
        检测的学习目标具有两个损失函数,即前景/背景分类损失Lα和包围盒回归损失Lβ。 Lα被表述为交叉熵损失。

4、外观嵌入
        第二个目标是度量学习问题,即学习一个嵌入空间,其中相同身份的实例彼此接近,而不同身份的实例相距甚远。为了实现这一目标,一个有效的解决方案是使用三元组损失,并优化。

5、自动损失平衡
        可以将JDE中每个预测头的学习目标建模为多任务学习问题。联合目标可以写成每个尺度和每个分量的加权线性损失和,
Towards Real-Time Multi-Object Tracking(JDE)论文阅读及代码实验
        其中M是预测头数和Wij,i=1,…,M,j=α,β,γ是损失权重。

下面介绍一种确定损失权重的简单方法。
1)让wiα=wiβ,正如现有的目标检测工作所建议的那样。
2)让w1α = … = wMα , w1β = … = wMβ , w1γ = … = wMγ。
3)搜索其余两个独立的损失权重,以获得最佳性能。

        用这种策略搜索损失权重可以在几次尝试中产生良好的结果。然而,搜索空间的减少也给损失权重带来了很大的限制,使得由此产生的损失权重可能远远不是最优的。相反,我们通过使用任务无关不确定性的概念,采用了一种自动学习的方法来迭代权重损失。从形式上说,具有自动损失平衡的学习目标写为,
Towards Real-Time Multi-Object Tracking(JDE)论文阅读及代码实验
        其中Sij是每个个体损失的与任务相关的不确定性,并被建模为可学习的参数。

分析和讨论
        人们可能会注意到,JDE比现有方法具有更低的IDF1分数和更多的ID开关。起初,我们怀疑原因是联合学习的嵌入可能比单独学习的嵌入弱。然而,当我们用单独学习的嵌入替换联合学习的嵌入时,IDF1评分和ID开关的数量几乎保持不变。最后,我们发现主要原因在于当多个行人之间有较大的重叠时,检测不准确。这种不准确的框引入了很多ID开关,不幸的是,这种ID开关经常发生在轨迹的中间,因此IDF1的分数是低一点。

三、关于代码测试

在实际测试中发现JDE的效果比Fairmot略差一些,在检测上和reid上,但是相差并不是特别大,不放图了,有兴趣可以去Fairmot那篇文章看看实验效果图。

  相关解决方案