ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记

ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记

    • (一) Title
    • (二) Summary
    • (三) Research Object
    • (四) Problem Statement
    • (五) Method
    • (六) Experiments
      • 6.1 BYTE上的消融实验
      • 6.2 在ByteTrack上的消融实验
      • 6.3 MOT chanllenge结果
    • (七) Conclusion
    • (八) Notes
      • 8.1 本文的思路
      • 8.2 MOT中的目标检测
      • 8.3 MOT中的数据关联

(一) Title

ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第1张图片
论文地址:https://arxiv.org/pdf/2110.06864.pdf
代码地址:https://github.com/ifzhang/ByteTrack
前言:截止20211019在MOT17上为SOTA,刚刚看源码的时候被项目的详细程度惊艳到了,而且猛然发现本作一作也是原来FairMOT的一作,不愧是大佬啊,忒强了

(二) Summary

背景介绍

MOT的任务是estimating bounding boxes and identities of objects。从具体任务上大致有3部分工作:检测(估计对象的bounding boxes),匹配和预测(确定对象的identities),在博主看来,检测任务上的改进的主要思路还是基于当前一些SOTA的检测框架,在本文中提供了一个匹配上的改进思路。

当前方法存在的问题

obtain identities by associating detection boxes whose scores are higher than a threshold。对于分数低的bounding boxes会直接丢弃,最终导致true object misssing以及fragmented trajectories简单来说,从检测任务对接到跟踪任务时,采用阈值过滤掉检测网络输出的边界框,使得检测信息出现丢失,造成跟踪过程出现中断的情况,使得跟踪任务对检测任务的要求过高。

本文方法

提出了一种简单、有效、通用的association方法,这里对每一个检测框而不是高分检测框进行跟踪,对于low score的检测框利用他们同轨迹的相似性恢复真实目标,并将错误检测的背景忽略掉。将检测得到的边界框和预测结果

实验表现

  • 应用到9个不同的最先进的trackers上,实现了IDF1 score的一致提升
  • 构建的ByteTrack在单个V100上以30FPS的运行速度,在MOT17上实现了80.3 MOTA,77.3 IDF1以及63.1HOTA。

(三) Research Object

对于MOT任务中出现的missing detection以及fragmented trajectories,本文作者分析原因为在将检测的bounding boxes给到data association时设置了较高的阈值,导致一些低置信度的bounding boxes信息出现不可逆的丢失。为了避免低置信度边界框信息的丢失,需要额外地解决low confidence带来的FP(False Positive)问题,本文中通过引入二次关联,将能够同tracklets匹配上的low confidence boxes加入到tracklets中,无法匹配的boxes看成是背景,也就是False Positive,最终成功解决掉当前的问题。同时为了获得SOTA,采用YOLOX以及若干增强技术来提升检测器性能,并在MOT17和MOT20上取得了惊人的表现。

(四) Problem Statement

当前多目标跟踪存在着的一个难于解决的问题是:如下图中的(a)所示,当前目标检测的框架通过置信度阈值输出最终的边界框,当设置的阈值过大时,会出现missing detection以及fragmented trajectories。这种高阈值的设置是目前MOT中常常使用的方式,但是造成跟踪任务的missing detection的影响是不可逆的。
ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第2张图片
为了保证能够获取完整的trajectory轨迹,从理论上将同时考虑低置信度的检测以及kalman的预测能够更好地应对遮挡问题,然而,使用低置信度带来了新的问题:如何解决置信度较低带来的false positive(误检测)问题,这是现有的MOT工作中很少考虑处理的。

本文中考虑到的一个解决方式为:在low score detection boxes中通过计算和tracklets的**相似性(motion similarity)**来识别objects和background。具体的实现方法为:

  • 首先基于motion similarity将高置信度的detection boxes匹配到tracklets上。同样使用kalman滤波器预测当前轨迹在下一帧的位置。motion similarity的计算方式是通过计算kalman预测的boxes和low confidence boxes之间的IoU表示。
  • 然后在unmatched tracklets中进行二次匹配,也就是通过预测和低置信度边界框之间的IoU进行二次匹配。此时遮挡的低置信度边界框能够得到很好地匹配,同时背景也能够过滤出来。

(五) Method

实现过程概述:

首先,使用所有的检测框,将检测框分为高分检测框和低分检测框。
t时刻,基于高分检测框匹配已有的轨迹,对于当前没有边界框能够匹配得上的轨迹,分析原因是occlusion或者motion blur产生的low confidence的边界框
将低置信度的匹配框同未匹配轨迹进行二次匹配,恢复低置信度边界框,同时将背景过滤掉

对应伪代码实现过程:
ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第3张图片
对于每一帧分步走:

  • 通过Det获得detection boxes和scores,同时基于 τ high  \tau_{\text {high }} τhigh  τ low  \tau_{\text {low }} τlow 将所有的检测框分成两部分 D high  \mathcal{D}_{\text {high }} Dhigh  D low  \mathcal{D}_{\text {low }} Dlow ,将分数值超过 τ high  \tau_{\text {high }} τhigh 的检测框归到 D high  \mathcal{D}_{\text {high }} Dhigh 中,将置信度分数在 τ high  \tau_{\text {high }} τhigh  τ low  \tau_{\text {low }} τlow 之间的检测框归到 D low  \mathcal{D}_{\text {low }} Dlow 
  • 对于所有轨迹 T \mathcal{T} T中的每一个track构建kalman滤波器。
  • 在高分检测框 D high  \mathcal{D}_{\text {high }} Dhigh 和所有轨迹 T \mathcal{T} T间进行关联。(相似性计算是通过IoU,匹配是同过匈牙利算法实现。对于IoU小于0.2的拒绝匹配)。并得到没有能够匹配上轨迹的检测框 D remain  \mathcal{D}_{\text {remain }} Dremain 以及没有和检测框匹配上的轨迹 T remain  \mathcal{T}_{\text {remain }} Tremain ,注意在这边匹配中也可以加入Re-ID特征。
  • 第二次关联是在 D low  \mathcal{D}_{\text {low }} Dlow  T remain  \mathcal{T}_{\text {remain }} Tremain 之间进行关联,对于未匹配上的detection boxes看作是背景直接删除,对于未匹配上的轨迹记作 T re-remain  \mathcal{T}_{\text {re-remain }} Tre-remain ,使用IoU作为相似度量,并没有使用appearance(低置信度的appearance不可靠)
  • 在关联完成之后,从轨迹 T \mathcal{T} T中删除掉unmatched tracks T re-remain  \mathcal{T}_{\text {re-remain }} Tre-remain ,这里为了实现long-range association,是将 T re-remain  \mathcal{T}_{\text {re-remain }} Tre-remain 放到了 T lost  \mathcal{T}_{\text {lost }} Tlost 中,只有当他出现在 T lost  \mathcal{T}_{\text {lost }} Tlost 中的次数超过30帧时,才将轨迹从 T \mathcal{T} T中删除
  • 在第一次关联之后,从没有匹配上的高置信度检测框 D remain  \mathcal{D}_{\text {remain }} Dremain 中初始化新的轨迹。对于 D remain  \mathcal{D}_{\text {remain }} Dremain 中的每一个检测框,如果检测分数超过 ε \varepsilon ε,并且在连续的两帧中出现了,我们初始化一个新的track(轨迹)。

ByteTrack框架

模型基于high-performance detector YOLOX以及本文提出的association 方法BYTE。
YOLOX是将YOLO系列detectors切换到anchor-free模式,并且采用了Mosaic,Mixup,SimOTA等来取得SOTA的性能

  • 骨干网络同YOLOv5相同,采用CSPNet以及附加的PAN头。
  • 在骨干网络之后有两个decouple头,一个用于分类,另一个head用于回归。同时增加了一个IoU-aware branch来预测predicted boxes和gt boxes之间的IoU。
  • 回归部分通过GIoU loss约束;类别以及IoU heads通过binary cross entropy loss 约束。

需要注意的是MOT17中要求bounding boxes覆盖整个身体,即使是出现遮挡或者是仅仅是partly out of the image。这里本文没有对超过边界的行人进行裁剪,边界框的大小会超过图像尺寸。

(六) Experiments

实验设置

  • 数据集:MOT17和MOT20,这两个数据集包含训练集和测试集,不含验证集。
  • 使用评价指标为CLEAR度量,包括MOTA,FP,FN,IDs等,IDF1和HOTA用于评价跟踪的不同方面,MOTA更多地关注检测性能,IDF1评估了identity的表达能力并且更多地关注association的性能。HOTA用于平衡detection,association以及localization性能。
  • 实现细节: τ high  = 0.6 , τ low  = 0.1 \tau_{\text {high }}=0.6,\tau_{\text {low }}=0.1 τhigh =0.6,τlow =0.1,轨迹的初始化score ε = 0.7 \varepsilon=0.7 ε=0.7
  • YOLOX模型,使用COCOpretrained模型作为初始化权重,训练策略为在MOT17,CrowdHuman,Cityperson以及ETHZ上训练80格epoch。输入图像尺寸为 1440 × 800 1440 \times 800 1440×800.在多尺度训练中,短边从576到1024.在8块tesla V100上使用batch size48训练,使用SGD 1 × 1 0 − 3 1 \times 10^{-3} 1×103学习率, 5 × 1 0 − 4 5 \times 10^{-4} 5×104权重衰减以及0.9的动量,在第一个epcoh使用warm up,同时采用余弦退火策略。FPS在单个GPU上使用fp16精度和batch size1。

6.1 BYTE上的消融实验

ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第4张图片可以看出在IDF1和IDs上的改进,说明了利用低置信度的分数能够更好地处理missing detection以及fragmented trajectories问题。

并且BYTE在检测阈值 τ high  \tau_{\text {high }} τhigh 上具有鲁棒性
ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第5张图片

最后就是对于关联方式解决False Positive问题的实验结果(需要用图表表示处理)
ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第6张图片
首先将在 τ high  , τ low  \tau_{\text {high }},\tau_{\text {low }} τhigh ,τlow 之间的边界框筛选出来,接着根据gt boxes来确定TP和FP的划分。在使用二次关联之后会得到经过筛选后的边界框,进行TP和FP的划分,最终得到上图。

将BYTE应用到其他的trackers上

ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第7张图片
设计了两种不同的模型来将BYTE应用到JDE,CSTrack,FairMOT,TraDes,QuasiDense,CenterTrack,Chained-Tracker,TransTrack以及MOT上

  • 将BYTE插入到不同trackers的原始关联方法中,这些原始的关联方法是采用appearance的。并且二次关联时候不考虑appearance的影响。
  • 直接不带Re-ID的appearance特征。

从实验结果上两种模式BYTE都能够为几乎所有的评价指标MOTA,IDF1,IDs带来稳定的改进。BYTE的泛化能力较强。

6.2 在ByteTrack上的消融实验

通过改变inference图像size来测试speed和accuracy之间的tradeoff
ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第8张图片

不同数据集训练带来的提升
ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第9张图片
不需要大量的训练数据也能够得到一个比较好的结果。

结果的可视化表示
ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第10张图片
主要是在遮挡和运动模糊上有了改善。

Tracklet interpolation(轨迹插值)离线增强
MOT17中有一些完全被遮挡住的行人,在ground-truth annotations都不可见,但是可以通过tracklet interpolation的方式获取到这些目标(通过预测解决遮挡问题),实际上就是已知 t 1 t_1 t1 t 2 t_2 t2时刻是能够检测到目标,而目标在 t 1 t_1 t1 t 2 t_2 t2的中间 t t t时刻发生了遮挡,怎么利用现有的观测来对遮挡情况进行处理。
B t = B t 1 + ( B t 2 − B t 1 ) t − t 1 t 2 − t 1 B_{t}=B_{t_{1}}+\left(B_{t_{2}}-B_{t_{1}}\right) \frac{t-t_{1}}{t_{2}-t_{1}} Bt=Bt1+(Bt2Bt1)t2t1tt1
其中 B t 1 B_{t_{1}} Bt1 t 1 t_1 t1时刻的检测框, B t 2 B_{t_{2}} Bt2 t 2 t_2 t2时刻的检测框,同时设置一个超参数 σ \sigma σ,当 t 2 − t 1 ≤ σ t_{2}-t_{1} \leq \sigma t2t1σ时,也就是对boxes的参数进行插值。

6.3 MOT chanllenge结果

在MOT17和MOT20上取得了state-of-the-art的成绩。
ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第11张图片
又快,又简单,训练数据还少。
ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记_第12张图片
高的离谱啊!

(七) Conclusion

提出了一种新的数据关联方式data association方法BYTE,以及一个tracker:ByteTracker。以30FPS在MOT17上实现了80.3 MOTA,77.3 IDF1和63.1HOTA。ByteTracker对遮挡情况比较鲁棒。

(八) Notes

8.1 本文的思路

首先分析了检测中使用阈值在true positive/false positive之间trade-off的做法实则是舍弃了低置信度对应的bounding boxes,这种做法是不可逆的,相当于在后续跟踪过程中是没有办法考虑到低置信度的检测结果的(the occluded objects),从而导致missing detection以及fragmented trajectories(支离破碎的轨迹)。
接着,考虑需要使用低置信度的bounding boxes用于后续的预测过程。并思考如何解决低置信度带来的false positive(误检测)问题。
最后提出二次match tracklets的方式,第一次采用高置信度的bounding boxes生成tracklets(高置信度是为了避免引入背景),接着同时利用kalman滤波器预测bounding boxes和low confidence boxes,计算motion similarity(通过IoU表示),将low confidence的true positive匹配到tracklets中,同时将low confidence检测到的背景剔除。

8.2 MOT中的目标检测

popular detection包括:DPM, Faster R-CNN, SDP.
one-stage系列:RetinaNet,CenterNet,YOLO系列
使用单纯的检测器也能进行视频的跟踪,为什么还要引入跟踪呢?

主要原因是视频序列中出现occlusions或者motion blur时,会造成missing detection或者low confidence detection,这种情况下,基于跟踪的方式可以考虑到上一帧的信息来提高视频的检测性能。

目前Tracking-by-detection多目标跟踪的两种思路:

Tracking负责检测,使用kalman进行预测,将预测框和检测框融合增强检测结果
使用previous frame中的tracked boxes来增强接下来一帧的feature representation。这是基于Transformer的跟踪方式。

8.3 MOT中的数据关联

data association是多目标跟踪任务的核心,它首先计算轨迹同检测框之间的相似度,然后根据相似度来进行匹配。主要涉及两个核心问题:如何计算检测框和轨迹的相似度如何根据相似度实现检测框和轨迹的匹配
tracklets和bounding boxes的相似性度量

location,motion以及appearance是association的有用线索,SORT中使用location和motion来进行关联,相似性的计算主要是考虑到bounding boxes检测框和tracklets预测框之间的IoU。现在的一些做法是通过网络来学习object motions。在short-range matching中location和motion是比较准确的。而appearance在long-range matching中则比较有帮助,长时间遮挡时依旧能够通过appearance来对对象进行Re-ID。近期通过联合detecion和Re-ID模型在效率上越来越受欢迎。

tracklets和bounding boxes的匹配策略

在计算完相似度之后,使用匹配算法来给目标分配id。常用的匹配算法有匈牙利算法以及greedy assignment算法。目前一些工作中使用的匹配策略有:
SORT match the detection boxes to tracklets by once matching。
DeepSORT:first match the detection boxes to the most recent tracklets and the to the lost ones
MOTDT:first use appearance similarity to match and then use IoU similarity to match the unmatched tracklets。
QuasiDense:将appearance similarity通过一个双向softmax转换成概率,使用最近邻来进行匹配。
基于Transformer的框架使用注意力交互来隐式构建。

检测决定了跟踪任务的上界,而关联部分则决定是否能够更好地达到检测决定的上界。

你可能感兴趣的:(anchor,free目标检测,MOT,association,SOTA,TrackByDetect)