ByteTrack: Multi-Object Tracking by Associating Every Detection Box

code

paper

摘要

  多目标跟踪(MOT)旨在估计视频中目标的边界框和身份。大多数方法通过关联分数高于阈值的检测框来获得身份。检测分数低的对象,如:被遮挡的物体被简单地扔掉,这带来了不可忽略的真实物体丢失(即假阴)和轨迹的碎片化(即导致idsw升高)。为了解决这一问题,我们提出了一种简单、有效和通用的关联方法,即通过关联每个检测框而不是仅关联高分检测框来进行跟踪。对于低分数检测框,我们利用它们与轨迹的相似性来恢复真实对象并过滤掉背景检测。当应用于9种不同的最先进的跟踪器时,我们的方法在IDF1分数上实现了1-10个百分点的提升。为了展示MOT的先进性能,我们设计了一种简单而强大的跟踪器,名为BYTETCK。我们第一次测试,基于单张v100的环境下,就在MOT17测试集中实现了80.3的MOTA、77.3的IDF1和63.1的HOTA,且此时的fps为30。(注:本文使用的方法即不直接忽略低置信度的检测框,很像最近半监督检测中的一些想法,所以说检测跟踪不分家嘛。)
在这里插入图片描述

1.引言

存在即合理。 —黑格尔

  检测跟踪是当前最有效的多目标跟踪(MOT)方法。由于视频场景复杂,探测器的预测往往不完美。最先进的MOT方法[3,17,44,2,69,7,67,12,4,81,56]需要处理检测盒中的真阳性/假阳性权衡,以消除低置信度检测盒[5,39]。然而,这是消除所有低置信度检测框的正确方法吗?我们的答案是否定的:正如黑格尔所说:“合理的事物是真实的;真实的才是合理的。”低置信度检测框有时表示物体的存在,例如:被遮挡的物体。对这些目标进行过滤会导致MOT产生不可逆转的误差,并带来不可忽略的缺失检测和碎片轨迹。

  图2(a)和(b)显示了这个问题。在图 t 1 t_1 t1中,我们初始化了三个不同的轨迹,因为它们的分数都高于0.5.然而,在第 t 2 t_2 t2帧和第 t 3 t_3 t3帧中,当遮挡发生时,红色轨迹的相应检测分数变低,例如:0.8到0.4以及0.4到0.1。这些检测框被阈值机制消除,红色轨迹也随之消失。然而,如果我们将每个检测框都考虑在内,就会立即引入更多的假阳。例如:图2(a)第 t 3 t_3 t3帧中最右边的框。据我们所知,MOT中很少有方法[29,60]能够处理这种检测难题
在这里插入图片描述
  在本文中,我们发现可以用轨迹的相似性以实现将低置信度的检测框区分为背景和对象。如图2(c)所示,运动模型的预测框将两个低分数检测框与轨迹匹配,从而正确地恢复对象。同时,背景框被移除,因为它没有匹配的轨迹。
  为了在匹配过程中充分利用从高分到低分的检测框,我们提出了一种简单有效的关联方法称其为BYTE,将每个检测框命名为轨迹的基本单元,作为计算机程序中的字节,我们的跟踪方法对每个详细的检测框进行赋值。我们首先根据运动相似性将高分检测框与轨迹匹配。与[7]类似,我们使用卡尔曼滤波器[28]在新帧中预测轨迹的位置。运动相似性可以通过预测框和检测框的IoU来计算。图2(b)正是第一次匹配后的结果。随后,我们在未匹配的轨迹之间执行第二次匹配,例如:红色框中的轨迹,以及低分数检测框。图2(c)显示了第二次匹配后的结果。检测分数低的被遮挡者与之前的轨迹正确匹配,背景被移除。

  为了评估我们提出的关联方法的泛化能力,我们将其应用于9种不同的最优秀的跟踪器,包括基于re - id的跟踪器[66,81,32,46],基于运动的跟踪器[85,68,47],基于链(chain-based)的[47]和基于注意力的跟踪器[56,76]。我们在几乎所有指标上都取得了显著的改进,包括MOTA、IDF1评分和IDSW。例如,我们将CenterTrack[85]的MOTA从66.1提高到67.4,将IDF1从64.2提高到74.0,并将mo17的半验证集的id从528降低到144[85]。

  为了推动MOT最先进的性能,我们提出了一个简单和强大的跟踪器,命名为ByteTrack。我们采用最新的高性能探测器YOLOX[24]来获取检测盒,并将它们与我们提出的BYTE关联。在MOT挑战中,ByteTrack在mo17[43]和mo20[16]上均排名第一,在mo17 V100 GPU上以30 FPS运行速度获得80.3 MOTA, 77.3 IDF1和63.1 HOTA,在拥挤的mo20上获得77.8 MOTA, 75.2 IDF1和61.3 HOTA。

  我们提出的方法是第一个通过极其简单的运动模型,无需任何Re-ID模块或注意机制而实现高度竞争的跟踪性能的工作[81,32,46,65,76,56]。它阐明了运动线索在处理咬合和长期关联方面的巨大潜力。我们希望ByteTrack的效率和简单性能够使它在实际应用中具有吸引力。
  (注:综上所述,作者认为所有的检测框均有一定的存在意义,故此如何合理的区分低置信度检测框就是本文的重点)

3.BYTE

  我们提出了一种简单、有效、通用的数据关联方法BYTE。与以往的方法[66,81,32,46]只保留高分检测框不同,我们保留了每个检测框,并将其分为高分检测框和低分检测框。我们首先将高分检测框与轨迹相关联。有些轨迹无法匹配,因为它与适当的高分检测框不匹配,这通常发生在发生遮挡、运动模糊或大小更改时。然后,我们将低分数检测框和这些不匹配的轨迹关联起来,以恢复低分数检测框中的对象并同时过滤掉背景。BYTE的伪码如算法1所示
在这里插入图片描述

  BYTE的输入是视频序列V,以及对象检测器 D E T DET DET和卡尔曼滤波器 K F KF KF。我们还设置了三个阈值 τ h i g h \tau_high τhigh τ l o w \tau_low τlow ε \varepsilon ε τ h i g h \tau_{high} τhigh τ l o w \tau_{low} τlow是检测分数阈值 ε \varepsilon ε是跟踪分数阈值。BYTE的输出是视频的轨迹,每个轨迹包含边界框和每个帧中对象的标识。

  对于视频中的每一帧,我们使用检测器 D E T DET DET预测检测框和分数。我们根据检测分数阈值 τ h i g h \tau_high τhigh τ l o w \tau_low τlow将所有检测盒分为两部分。对于分数高于 τ h i g h \tau_high τhigh的检测盒,我们将其放入高分检测集合 D h i g h D_{high} Dhigh中。对于那些分数在 τ h i g h \tau_high τhigh τ l o w \tau_low τlow中间的检测框,我们将他们放入低分数检测框 D l o w D_{low} Dlow(算法1中的第3行到第13行)。

  在分离低分检测框和高分检测框后,我们使用卡尔曼滤波器 K F KF KF预测 T T T中每个轨迹的新位置(算法1中的第14行到第16行)。

  第一个关联在高分检测框和所有轨迹 T T T之间执行(包括丢失的轨迹 T l o s t T_lost Tlost)。相似性由检测框 D h i g h D_{high} Dhigh和轨迹的预测框 T T T之间的IOU计算。然后,我们使用匈牙利算法[30]完成基于相似度的匹配。特别是,如果检测盒和轨迹盒之间的IoU小于0.2,那么我们拒绝匹配。我们将未匹配的检测结果保存至 D r e m a i n D_{remain} Dremain,将未匹配的轨迹保存至 T r e m a i n T_{remain} Tremain(算法1中的第17行至第19行)。

  BYTE非常灵活,可以兼容其他不同的关联方法。例如,当BYTE与deepsort[67]组合时,在算法1中,Re-ID特性被添加到 ∗ f i r s t a s s o c i a t i o n ( 也 就 是 第 17 行 上 面 那 个 ) ∗ *first association(也就是第17行上面那个)* firstassociation(17)中,其他的都是相同的。在实验中,我们将BYTE应用于9种不同的最先进的跟踪器,并在几乎所有指标上取得了显著的改进。(注:即插即用)

  第二个关联在低分数检测框 D l o w D_{low} Dlow和第一个关联后的剩余轨迹 T r e m a i n T_{remain} Tremain之间执行。我们将未匹配的轨迹保存进 T r e − r e m a i n T_{re-remain} Treremain并删除所有未匹配的低置信度的检测框,因为我们将其(即这些低置信度的检测框)视为背景。

  我们发现在第二个关联中使用IoU作为相似度很重要,因为低分数检测框通常包含严重的遮挡或运动模糊,并且外观特征不可靠。(注:也就是为什么之前的多目标跟踪不采用低置信度的对象的原因,即无外观特征)因此,当将BYTE应用于其他基于Re-ID的跟踪器[66,81,46]时,我们不会在第二个关联中使用外观相似性。

  关联后,将从轨迹中删除不匹配的轨迹。为了简单起见,我们没有在算法1中列出轨道再生的过程[67,12,85]。实际上,长距离关联需要保留轨迹的标识。对于 T r e − r e m a i n T_{re-remain} Treremain中未被匹配的轨迹,我们将其放入 T l o s t T_{lost} Tlost。对于每一个 T l o s t T_{lost} Tlost,只保留一定数量的帧,例如30帧,超时即从轨迹 T T T中删除。在此期间,我们将 T l o s t T_{lost} Tlost保留在轨迹 T T T中。(算法1中的第22行)。

  最后,我们将第一次关联中未配匹配的高置信度检测 D r e m a i n D_{remain} Dremain初始化为新轨迹。具体操作为,对于每一个在 D r e m a i n D_{remain} Dremain中置信度超过 τ \tau τ的检测框,若其存在两个连续帧,则初始化为一个新轨迹(算法1中的第23行到第27行)。(注:这步其实和sort很像,或者说基本上常见的多目标跟踪算法在这都差不多。)

  每一个单独帧的输出为当前帧中的轨迹 T T T的边界框和标识框。注意:不会输出 T l o s t T_{lost} Tlost的边界框和标识。


个人总结:ByteTrack
(1)BYTE将检测框按置信度的阈值分为两类:高置信度的检测框、低置信度的检测框
(2)第一次匹配:将高置信度的检测框与轨迹进行匹配,若iou大于阈值则接受此次匹配
(3)第二次匹配:对于第一次匹配未被配对完的轨迹,用低置信度的检测框进行匹配,未被匹配的低置信度的检测框则为背景。
(4)对于第一次匹配未被用完的检测框,若连续两次出现,则分配新轨迹。若由轨迹未被匹配,保留30帧。


以下为作者原话:我们认为,BYTE能work的原因是遮挡往往伴随着检测得分由高到低的缓慢降低:被遮挡物体在被遮挡之前是可视物体,检测分数较高,建立轨迹;当物体被遮挡时,通过检测框与轨迹的位置重合度就能把遮挡的物体从低分框中挖掘出来,保持轨迹的连贯性。

4.ByteTrack

  为了提高MOT的最新性能,我们设计了一种简单而强大的跟踪器,名为ByteTrack,通过将我们的关联方法BYTE装配到高性能探测器YOLOX[24]上。

  YOLOX将YOLO系列探测器[48,8]切换为无锚方式,并加入了其他先进的探测技术,包括解耦头(decoupled heads)、强大的数据增强,例如马赛克增强[8]和mixup[77],以及有效的标签分配策略SimOTA[23],以实现最先进的目标检测性能。

  主干网与 YOLOv5[1]相同,它采用了先进的CSPNet[62]主干网和额外的PAN[36]头。主干网后有两个解耦头,一个用于回归,另一个用于分类。向回归头添加一个额外的IoU感知分支(IOU-aware branch),以预测预测框和地面真值框之间的IoU。回归头直接预测特征图中每个位置的四个值,例如:根据栅格的左上角以及预测框的高度和宽度,有两个偏移。回归头由GIoU损失[50]训练,分类头和IoU头由二值交叉熵损失训练。

  SimOTA标签分配策略根据正样本对GT的代价自动选择正样本。代价由分类代价和box定位代价的加权和计算[87,11,55]。然后,根据代价,从目标中心周围固定大小的区域中选取若干个动态top-k正样本。采用先进的标签分配策略,显著提高了检测性能。

  我们注意到MOT17[43]要求边界框[85]覆盖整个身体,即使物体被遮挡或部分脱离图像。然而,YOLOX的默认实现将检测框剪辑在图像区域内。为了避免图像边界附近的错误检测结果,我们在数据预处理和标签分配方面对YOLOX进行了修改。在数据预处理和数据增强过程中,我们不裁剪图像内部的边界框。我们只删除数据增强后完全在图像外部的方框。在SimOTA标签分配策略中,正样本需要围绕着对象的中心,而整个body boxes的中心可能位于图像之外,因此我们将对象的中心剪辑到图像内部。(数据处理上的小trick)

  MOT20[16]在中剪辑图像内部的边界框注释,因此我们只使用原始的YOLOX。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值