MOT任务中JDE(Jointly learns the Detector and Embedding model)算法解读

目录

    • 一."tracking by detection"领域进展
      • 二.SDE——思路突破口
      • 三. JDE需要处理的问题
      • 四. JDE优缺点总结

一."tracking by detection"领域进展

SORTDeepSORT,都是2015-2018年常见的MOT范式,也就是tracking by detection 。

该类范式因为通俗易懂,且表现出了不俗的追踪精度,在2015年到2018年,一度成为MOT的主流范式。该范式首先通过检测器(detector)检测出画面中物体所在的检测框,然后根据物体检测框移动的规律(运动特征)和检测框中物体的外观特征(通常通过一个ReID网络抽取一个低维的向量,叫做embedding向量)来进行前后帧同一物体的匹配,从而实现多目标追踪。

该类范式将MOT分为了两步,即

物体检测
特征提取与物体关联

该类方法检测与特征提取是分开的,所以又被称为SDE

Separate Detection and Embedding (SDE)

SDE存在的最大缺点就是速度慢,因为将物体检测和(外观)特征提取分开,检测速度自然就下去了。

二.SDE——思路突破口

既然作者提到该方法是基于One-stage检测器学习到物体的embedding的(代码中采用的是经典的YOLO V3模型)。那么JDE范式就应该在检测器的输出(head),多输出一个分支用来学习物体的embedding的。

果不其然,作者就是采用了这种思路。原论文中给出结构图如下MOT任务中JDE(Jointly learns the Detector and Embedding model)算法解读_第1张图片

三. JDE需要处理的问题

第一个问题就是embedding要怎么学出来?

我们知道,理想情况下同一物体在不同的帧中,被同一跟踪标签锁定(即拥有同一track ID)。我们知道的信息就只有他们的标签索引(同一物体的track ID一致,不同物体的track ID不一样)。

那么网络在训练的过程中,应该需要对embedding进行转化,转化为足够强的语义信息,也就是这个embedding到底属于哪个track ID的物体,那么这种就需要借鉴物体分类的思路了(将每个track ID当作一个类别),所以作者引入了全连接层将embedding信息转化为track ID分类信息。

第二个问题就是这个全连结层的输出节点到底是多少?

因为刚才我们提到,要将每个track ID当作一个类别,但是这个track ID的数量十分庞大,甚至不可计数。这个输出节点应该如何设置呢?看了一圈代码,代码中设置了14455个输出节点,这个非常大呀,具体设置的依据是什么,可能和训练数据集的物体数量有关吧。

作者定义了四个损失函数,但是只用到了三个,分别为

self.SmoothL1Loss 用于检测框的回归
self.SoftmaxLoss 用于前景和背景分类
self.IDLoss 用于计算embedding的损失
当然了,作者在论文中提到,JDE是一个多任务的学习,所以在计算损失函数的时候,需要采用任务独立不确定性(task-independent uncertainty)的自动学习方案进行以上三个损失函数的求和,有关参数在上述代码中已经定义。

四. JDE优缺点总结

tracking by detection是非常常见的MOT范式,但是目前MOT领域为了平衡追踪速度和精度,慢慢放弃了这种范式,转而投入将检测与embedding/匹配进行结合的范式研究中。本文介绍的JDE就是一个网络同时输出图像画面中的检测框位置和检测框内物体的embedding,从而加速MOT的速度。

但是值得注意的是,JDE只是同时输出了检测框和embedding信息。后面还是要通过卡尔曼滤波和匈牙利算法进行目标的匹配。总的来说,还是分为检测和匹配双阶段。

后面将介绍一些最新的MOT方法,比如CenterTrack,他采用了一种新的方式,同时输出检测和匹配的信息,比JDE更方便

你可能感兴趣的:(目标跟踪算法与原理,算法,深度学习,人工智能)