当前位置: 代码迷 >> 综合 >> Object Track(十):经典论文JDE速读
  详细解决方案

Object Track(十):经典论文JDE速读

热度:86   发布时间:2023-11-21 09:11:56.0

写在前面:

一般地,在目标跟踪任务中我们将two-step形式的方法视为一个数据关联问题,将one-shot形式的方法视为一个多任务学习问题。

two-step形式的方法又可以细分为检测与嵌入完全分离的SDE和端到端的形式,其本质上就是“使用何种形式的信息去做关联”的区别。

当然,这两种只是较为普遍的方法,还有些工作他们的思路和方法论都比较新奇,且处在发展阶段,不太容易分类,如Trackor++和近期大火的基于Transformer的工作以及一些基于图优化的解决思路。

JDE方法对one-shot被定义为多任务学习起了很大的推动作用,很值得学习。

摘要

现代多目标跟踪(MOT)系统通常采用tracking-by-detection的方式。它包括1)用于目标定位的检测模型和2)用于数据关联的外观嵌入模型。单独执行这两个模型可能会导致效率问题,因为运行时间只是这两个步骤的总和,而没有研究它们之间可以共享的潜在结构。现有对实时MOT的研究主要集中在关联步骤上,本质上是实时关联方法,而不是实时MOT系统。

在本文中,我们提出了一个MOT系统,它允许在一个共享模型中学习目标检测和外观嵌入。具体地说,我们将外观嵌入模型引入到single-shot检测器中,使得该模型可以同时输出detections和相应的embeddings。因此,该系统被描述为一个多任务学习问题,也就是有一次任务多个目标(目的),即anchor分类、bounding box回归和embedding学习;并且独立损失(individual loss)被自动加权。

据我们所知,这项工作报告了第一个(接近)实时MOT系统,根据输入分辨率的不同,运行速度为18.8FPS到24.1FPS。同时,它的跟踪准确率可与包含分离检测和嵌入(SDE)学习的最先进的跟踪器相媲美(64.4%的MOTA  vs.  66.1%的MOTA在MOT-16挑战上)。

代码和模型可在https://github.com/Zhongdao/Towards-Realtime-MOT上找到

overview

图2:(A)网络架构和(B)预测头的图示。预测头被添加到多个FPN尺度上。在每个预测头中,JDE的学习被建模为一个多任务学习问题。我们通过学习一组辅助参数,即与任务相关的不确定性,来自动加权异质(多相的、不均匀的、由不同成分形成的)损失。 

JDE中有一个我很喜欢的说法

The first objective requires the model to detect targets accurately. The second objective requires the appearance embedding to have the following property. The distance between observations of the same identity in consecutive frames should be smaller than the distance between different identities. The distance metric d(·) can be the Euclidean distance or the cosine distance. Technically, if the two objectives are both satisfied, even a simple association strategy, e.g., the Hungarian algorithm, would produce good tracking results.

第一个目标要求模型准确检测目标。 第二个目标要求外观嵌入具有以下属性。 连续帧中相同身份的观察之间的距离应该小于不同身份之间的距离。 距离度量d(·)可以是欧几里得距离或余弦距离。 从技术上讲,如果两个目标都满足,即使是简单的关联策略,例如匈牙利算法,也会产生良好的跟踪结果。

这种说法就统一了上面我们提到的几种基本跟踪方法以及SORT等使用经典算法(指KF和HA算法),虽然可能形式上会有所不同,但只要满足这两个条件即可视为一种work的跟踪方法。

清华大佬yyds。

框架概述

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

检测学习部分

看原文,蛮有意思的

有两个修改。首先是重新设计锚的数量,尺度和纵横比,以便能够适应目标。基于公共先验,将所有锚设置为1:3的纵横比,锚模板的数量被设置为12个,使得每个尺度的A=4,锚的尺度(宽度)从大约11到512。

其次,认识到用于前景/背景分配的双重阈值选择适当的值是很重要的。通过可视化,确定IOU>0.5,GT近似地保证了前景,这与通用对象检测中的公共设置是一致的。另一方面,那些框IOU<0.4。 在我们的案列/情况(case)下,GT应该被视为背景,而不是在一般情况下使用0.3。初步实验表明,这些阈值有效地抑制了假警报,这通常发生在严重遮挡下。

检测的学习目标具有两个损失函数,即前景/背景分类损失Lα和包围盒回归损失Lβ。 Lα被表述为交叉熵损失。

嵌入学习部分

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

三元组损失这部分我还不太了解,之后来填坑。

损失自动平衡部分

可以将JDE中每个预测头的学习目标建模为多任务学习问题。联合目标可以写成每个尺度和每个分量的加权线性损失和。

用这种策略搜索损失权重可以在几次尝试中产生良好的结果。然而,搜索空间的减少也给损失权重带来了很大的限制,使得由此产生的损失权重可能远远不是最优的。相反,我们通过使用任务无关不确定性的概念,采用了一种自动学习的方法来迭代权重损失。

简单讨论

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

这也是之后的FairMOT所要论述和解决的问题。

参考

原文:https://arxiv.org/pdf/1909.12605v1.pdf

链接:Towards Real-Time Multi-Object Tracking(JDE)论文阅读及代码实验_藏晖的博客-CSDN博客_jde论文

  相关解决方案