论文标题:ByteTrack: Multi-Object Tracking by Associating Every Detection Box
论文地址:https://arxiv.org/abs/2110.06864
论文源码:https://github.com/ifzhang/ByteTrack
Abstract
沿着多目标跟踪(MOT)中tracking-by-detection的范式,提出了一种简单高效的数据关联方法BYTE。 利用检测框和跟踪轨迹之间的相似性,在保留高分检测结果的同时,从低分检测结果中去除背景,挖掘出真正的物体(遮挡、模糊等困难样本),从而降低漏检并提高轨迹的连贯性。BYTE能轻松应用到9种state-of-the-art的MOT方法中,并取得1-10个点不等的IDF1指标的提升。基于BYTE我们提出了一个跟踪方法ByteTrack,首次以30 FPS的运行速度在MOT17上取得80.3 MOTA,77.3 IDF1和63.1 HOTA,目前位居MOTChallenge榜单第一。
Motivation
为了处理true positive/false positive的trade-off,目前大部分MOT方法会选择一个阈值,只保留高于这个阈值的检测结果来做关联得到跟踪结果,低于这个阈值的检测结果直接丢弃。”低分检测框往往预示着物体的存在(例如遮挡严重的物体)。简单地把这些物体丢弃会给MOT带来不可逆转的错误,包括大量的漏检和轨迹中断,降低整体跟踪性能。
Introduction
(a)和(b)显示了上述问题。在 t 1 t_{1} t1帧中,初始化了三种不同的轨迹,因为它们的边界框分数都高于0.5。而在帧 t 2 t_2 t2和帧 t 3 t_3 t3中,当发生遮挡时,红色轨迹相应的检测得分较低,即0.80.4,然后为0.40.1。分数低于阈值的会被删除,红色轨迹相应消失。然而,如果我们考虑到每个检测盒,就会立即引入更多的假阳性。
在本文中,我们发现与轨迹的相似性可以强有力来区分对象和背景在低分数检测边界框中。如©所示,两个低分数检测框通过运动模型的预测框与轨迹相匹配,从而正确恢复对象。同时,背景框被删除,因为它没有匹配的轨迹。
为了充分利用在匹配过程中从高分数到低分数的检测盒,提出了一个简单而有效的关联方法。首先根据运动相似度将高分检测框与轨迹进行匹配。使用卡尔曼滤波器来预测轨迹在新帧中的位置。运动相似度可以通过预测盒和检测盒的IoU来计算。图(b)正是第一次匹配后的结果。
然后,我们在不匹配的轨迹之间进行第二次匹配,即红色框中的轨迹和低分数检测框之间进行第二次匹配。图©显示了第二次匹配后的结果。检测分数低的被遮挡者与之前的轨迹正确匹配,背景被删除。
BYTE
提出了一种简单、有效和通用的数据关联方法。保留每个检测盒,并将它们分为高分检测盒和低分数检测盒。首先将高分检测框与轨迹联系起来。有些轨迹变得无法匹配,因为它不能匹配合适的高分框,这通常发生在遮挡、运动模糊或大小变化时。然后,将低分数检测框和这些不匹配的轨迹关联起来,以恢复低分数检测框中的对象,并同时过滤掉背景。BYTE将高分框和低分框分开处理,利用低分检测框和跟踪轨迹之间的相似性,从低分框中挖掘出真正的物体,过滤掉背景。
BYTE会将每个检测框根据得分分成两类,高分框和低分框,总共进行两次匹配。
第一次使用高分框和之前的跟踪轨迹进行匹配。
第二次使用低分框和第一次没有匹配上高分框的跟踪轨迹(例如在当前帧受到严重遮挡导致得分下降的物体)进行匹配。
对于没有匹配上跟踪轨迹,得分又足够高的检测框,我们对其新建一个跟踪轨迹。对于没有匹配上检测框的跟踪轨迹,我们会保留30帧,在其再次出现时再进行匹配。
BYTE能work的原因是遮挡往往伴随着检测得分由高到低的缓慢降低:被遮挡物体在被遮挡之前是可视物体,检测分数较高,建立轨迹;当物体被遮挡时,通过检测框与轨迹的位置重合度就能把遮挡的物体从低分框中挖掘出来,保持轨迹的连贯性。
BYTE的输入是一个视频序列 V V V,以及一个对象检测器 D e t Det Det和卡尔曼滤波器 K F KF KF。我们还设置了三个阈值 τ h i g h \tau_{high} τhigh, τ l o w \tau_{low} τlow和 ϵ \epsilon ϵ. τ h i g h \tau_{high} τhigh和 τ l o w \tau_{low} τlow为检测得分阈值, ϵ \epsilon ϵ为跟踪得分阈值。输出是视频的轨道 τ \tau τ,每个轨道都包含边界框和每个物体的ID。
对于视频中的每一帧,我们使用检测器 D e t Det Det来预测检测框和分数。根据检测评分阈值,分别将所有的检测盒分为 D h i g h D_{high} Dhigh和 D l o w D_{low} Dlow两部分。使用卡尔曼滤波器 K F KF KF来预测 τ \tau τ中每个轨道的新位置。
第一个关联是在高分检测盒 D h i g h D_{high} Dhigh和所有轨道 τ \tau τ(包括丢失的轨道 τ l o s s \tau_{loss} τloss)之间执行的。相似度由检测框 D h i g h D_{high} Dhigh与预测的轨迹 τ \tau τ集之间的IoU计算。然后,我们使用匈牙利算法基于相似性完成匹配。如果检测集和轨迹集之间的IOU小于0.2,那么我们拒绝匹配。我们将没有匹配的检测框放入 D r e m a i n D_{remain} Dremain,没有匹配的轨迹集放入 τ r e m a i n \tau_{remain} τremain。
第二个关联是在低分数检测框 D l o w D_{low} Dlow和在第一次没有匹配 τ r e m a i n \tau_{remain} τremain执行的。那么在第二次没有匹配到低分边界框将会被删除,因为它大概率是背景框,在此阶段没有被匹配的轨迹将会被保存到 τ r e − r e m a i n \tau_{re-remain} τre−remain。
在匹配过程中发现在第二阶段使用IOU作为匹配关键,因为第二阶段匹配的是低分段的检测框,它们一般都由严重的遮挡和外观模糊的缺点。在将BYTE应用到其他RE-ID的跟踪器时,并不会使用在第二阶段使用外观相似进行匹配。
在两个阶段匹配完成后,将会从最初的轨迹集中删除。对于没有匹配的轨道 τ r e − r e m a i n \tau_{re-remain} τre−remain在第二次关联后仍然存在,将它们放入 τ l o s s \tau_{loss} τloss中。对于 τ l o s s \tau_{loss} τloss中的每个轨道,在超过30帧,将会删除。
从第一次关联后不匹配的高分检测框 D r e m a i n D_{remain} Dremain中初始化新轨迹。对于 D r e m a i n D_{remain} Dremain中的每个检测框,如果其检测分数高于并且 ϵ \epsilon ϵ。并且连续两帧都存在,将会初始化一个新轨道,继上一帧之后产生的新的目标检测框,因为在已有的轨迹集中没有相似匹配,所以需要重新初始一个轨迹。
ByteTrack
ByteTrack使用当前性能非常优秀的检测器YOLOX得到检测结果。在数据关联的过程中,和SORT一样,只使用卡尔曼滤波来预测当前帧的跟踪轨迹在下一帧的位置,预测的框和实际的检测框之间的IoU作为两次匹配时的相似度,通过匈牙利算法完成匹配。这里值得注意的是我们没有使用ReID特征来计算外观相似度:
(1)第一点是为了尽可能做到简单高速,第二点是我们发现在检测结果足够好的情况下,卡尔曼滤波的预测准确性非常高,能够代替ReID进行物体间的长时刻关联。实验中也发现加入ReID对跟踪结果没有提升。
(2)ByteTrack只使用运动模型没有使用外观相似度能在MOT17,20取得高性能的本质原因是MOT数据集的运动模式比较单一(于是,我们提出了一个新数据DanceTrack.!)
Implementation Detail
Result