StrongSORT论文阅读笔记

        写在前面:这篇论文是2022.02.28放在arxiv上的,是对DeepSORT的改进,其中用到了许多现有的网络的tricks,正好目前我在做目标跟踪方面的工作,感觉可以抄抄作业啦(美滋滋)。以下内容是我根据论文做的翻译,希望可以帮助到大家,有不足的地方也希望大家多多包涵。

论文地址:论文阅读(BETA)-专业的学术讨论社区-粤港澳大湾区数字经济研究院(福田)

github:https://github.com/dyhBUPT/StrongSORT

摘要:

        现有的多目标检测方法可以大致分为tracking-by-detection和joint-detection-association两种范式。尽管后者受到了更多的关注并且表现出与前者相近的性能,就跟踪精度而言,我们仍然认为tracking-by-detection范式是更优的解决方案。在这篇文章中,作者回顾了经典的跟踪器DeepSort,并从检测、嵌入和关联等多个方面对其进行了升级。由此产生的跟踪器叫StrongSORT,在MOT17和MOT20两个任务上取得了新的HOTA和IDF1记录。作者还提出了两种轻量级的、即插即用的算法来进一步完善跟踪结果。首先,提出了一种与外观无关的连接模型(AFLink)来将短的轨迹关联成完整的轨迹。就作者目前所知,这是第一个没有用到外观信息的全局连接模型。其次,作者提出了高斯平滑插值法(GSI)来填补漏检。GSI不像线性插值法一样忽略运动信息,而是基于高斯过程回归算法,可以实现更加精确的定位。此外,AFLink和GSI基于可以在没有额外计算的情况下插入其他的跟踪器。通过结合AFLink和GSI,最终集成出来的跟踪器StrongSORT++在MOT17和MOT20上HOTA和IDF1两项指标上均排名第一,且超越第二名1.3~2.2。

1 导入

        多目标跟踪(MOT)在视频理解中起着至关重要的作用。它旨在逐帧检测和跟踪所有特定类别的对象。在过去的几年里,tracking-by-detection范式[3,4,36,62,69]主导了多目标跟踪的任务。它 对每一帧进行检测并且将MOT转换为一个数据关联任务。受益于高性能的目标检测模型,tracking-by-detection方法由于它们出色的表现而受到青睐。然而,SDE系列(tracking-by-detection)算法需要多个计算昂贵的组件:比如一个检测器和一个embedding模型。而特征共享系列算法[1,60,74]通过联合检测和嵌入模型训练,获得了更好的跟踪性能。

        联合检测器的成功促进了研究人员设计各种组件统一的跟踪网络框架,如运动,检测,嵌入和关联等[30, 32, 38, 57, 59, 65, 68]。然而,作者认为这些联合框架中存在两个问题:(1)不同组件之间的竞争和(2)用于联合训练这些组件的数据有限。尽管已经有一些方法被提出来解决上述两个问题,这些问题的存在还是降低了跟踪准确率的下限。相反,SDE系列的跟踪器似乎被低估了。

        本文作者回顾了经典的独立跟踪器deepsort[62],它是最早将深度学习模型用于多目标跟踪任务的方法之一。作者任务DeepSORT不如当前最先进的方法是因为它的技术过世了,而不是它的跟踪范式。作者通过在多个方面为DeepSORT配备先进的组件,产生了StrongSORT,该模型在MO17和MOT20上能达到新的SOTA。

        作者还提出了两个轻量级的即插即用的与模型、外观无关的算法来完善跟踪结果。第一,为了更好地利用全局信息,一些方法[12,39,55,56,67]提出通过使用一个全局连接模型将短轨迹和轨迹相关联。它们通常生成准确的但是不完成的轨迹段并且使用全局信息通过离线的方式关联它们。尽管这些方法很好地提升了跟踪表现,但是他们都依赖于一个计算密集型的模型,特别是外观嵌入。相反,我们提出了一种与外观无关的连接模型AFLink,它只利用时空信息来预测两个轨迹段是否属于同一个ID。第二,线性插值法被广泛应用于弥补漏检情况。然而,它忽略了运动信息,这限制了插值位置的准确率。为了解决这个问题,我们提出了高斯平滑插值算法GSI,通过使用高斯过程回归算法增强插值效果。

        扩展实验证明这两种方法对StrongSORT以及其他最先进检测器的可观的提升,比如CenterTrack,TransTrack和FairMot。特别地是,通过将AFLink和GSI应用于StrongSORT,产生了StrongSORT++。(此处省略,主要内容是作者‘吹嘘‘自己在MOT17和MOT20上取得了怎样惊人的效果,效果如下图:

StrongSORT论文阅读笔记_第1张图片

 总之,主要的工作贡献可以总结如下三点:

        ①通过在一些方面改进deepsort产生了StrongSORT,在MOT17和20上获得了SOTA表现。         ②提出了AFLink和GSI两种轻量级且和外观无关的算法,可以移植到其他的跟踪器提高性能。         ③将AFLink和GSI集成到StrongSort中,在HOTA和IDF1两个指标上获得第一。

2 相关工作

2.1 分离和联合跟踪器

2.2 多目标跟踪任务中的全局连接

2.3 多目标跟踪任务中的插值法

        此处省略。主要是介绍一些现有的工作,他们的缺点是什么,优点地方作者是怎么借用的巴拉巴拉,感兴趣的朋友可以自行阅读原文,扩展知识面。

3 StrongSORT

        在这一节中,作者将介绍各种方法来改进DeepSORT。

3.1 DeepSORT回顾

StrongSORT论文阅读笔记_第2张图片

         作者将DeepSORT简单地总结为一个两分支框架,即外观分支和运动分支,如Fig2上半部分。在外观分支部分,给定每一帧的检测结果,使用在人物重识别数据集MARS上预训练的深度外观描述器(一个简单的CNN)来提取外观特征。它利用一个特征库机制来储存每个tracklet的最后100帧的特征。随着新的检测结果的到来,第i个tracklet的特征库Ri和第j个检测框的特征fj可以通过(1)式来计算。

这个距离被用做关联过程中的匹配代价。

        在运动分支中,卡尔曼滤波算法用于预测tracklets在当前帧中的位置。接着使用马氏距离来度量轨迹和检测框之间的时空差异。DeepSORT使用这个距离作为门来过滤掉最不可能的关联。之后DeepSORT提出了级联匹配算法,将关联任务分解为一系列子问题来求解,而不是全局分配问题。核心思想是对出现更频繁的对象给与更高的优先级,每个关联子问题都通过匈牙利算法来解决。

3.2 Stronger DeepSORT

        作者对DeepSORT的改进也主要在这两个分支上,如Fig2下半部分所示。对于外观分支,作者使用一个更强的特征提取器BOT来代替原本那个简单的CNN。BOT通过使用ResNeSt50作为backbone,在DukeMTMC-reID数据集上进行预训练,可以提取更具区分性的特征。此外,作者用指数平均移动EMA替代了特征库,它用(2)的方式来更新第t帧的第i个tracklet的外观状态eti:

         

        其中,fti是当前匹配的外观嵌入而α=0.9是动量项。EMA不仅增强了匹配质量,也减少了时间消耗。

        对于运动分支,作者采用ECC来进行摄像机运动补偿。此外,普通的卡尔曼滤波容易受到低质量检测的影响,并且忽略了检测噪声尺度上的影响。为了解决这个问题,作者借用了[12]中提出的NSA卡尔曼滤波算法,这是一个自适应计算噪声协方差Rk~的公式:

        其中,Rk是预置的恒定测量噪声协方差,Ck是状态k下的检测置信度得分。

        此外作者不再只使用外观特征距离进行匹配,而是同时解决了包含外观和运动信息的匹配问题,类似于[60]。代价矩阵C是外观代价Aa和运动代价Am的加权和,如下所示:

       

         其中加权系数λ为0.98.另外作者发现当跟踪器性能变得更强大时,原本的DeepSORT的级联匹配算法会限制匹配的精度,因此作者使用普通的全局线性匹配来代替级联匹配。

4 StrongSORT++

4.1 AFLink

        已经有一些工作为了追求更准确的关联使用轨迹间的全局连接。但是,他们通常依赖于计算昂贵的组件和大量需要微调的超参数。之后作者举例说明。。。此外,作者发现过度依赖外表特征很容易受到噪音的影响。于是,作者设计了一个与外观无关的模型AFLink,仅仅通过时空信息来预测两段轨迹之间的相关性。

StrongSORT论文阅读笔记_第3张图片       

         Fig3展示了AFLink的两个分支框架。输入为两个轨迹集,Ti和Tj,其中T*={fk,xk,yk}Nk=1由帧fk和最近N=30帧的位置(xk,yk)组成。零填充用于那些短于30帧的。通过使用具有7x1卷积核的沿时间维度的卷积核的一个时空模块被用来提取特征,接着融合模块执行1x3卷积来整个来自不同特征维度的信息,这里的不同特征维度主要是f,x,y。将得到的两幅特征图分别合并和压缩成特征向量,然后进行拼接,包含了丰富的时空信息。最后,使用MLP来判断关联的置信度得分。注意,两个分支的时空模块和融合模块是不绑定的,在关联过程汇总,我们过滤出具有时空约束的不合理的轨迹对。然后全局连接被求解为使用预测相关得分的线性分配任务。

4.2 GSI

        作者提到虽然线性插值法得到广泛应用,但是由于没有使用运动信息,所以其精度是有限的。虽然单目标跟踪器,卡尔曼滤波以及ECC等试图解决这一问题,但是他们都会引入额外的耗时模块。而作者提出了一种轻量级的插值算法,它使用高斯过程回归来拟合非线性运动。作者将第i个trajectory的GSImodel描述如下:

         

        其中,t是帧,pt是第t帧时的位置坐标变量。ε是高斯噪声~N(0,σ2)。给定长度为L的跟踪和线性交互轨迹S(i)={t()i, pt(i)}Lt=1, 通过对函数f(i)进行拟合来解决非线性运动建模的任务。假设它服从高斯过程f(i)∈GP(0, k(. , .)),其中K(x, x')是径向基函数。根据高斯过程的性质,在给定新的帧集F*的情况下,可以通过(6)式来预测它的平滑位置P*:

       

         其中K(. , .)是基于k(. , .)的协方差函数。此外,超参数λ控制着轨迹的光滑度,这应该与其长度有关。作者简单地将其设置为与长度l相适应的函数,如下所示:

     

          其中t被设置为10.Fig4举例说明了GSI和线性插值法的区别。原始跟踪结果用橙色表示通常包括噪声抖动,而LI会忽略运动信息,GSI红色通过使用自适应平滑系数同时解决了这两个问题。

5 实验

        第五节主要是作者根据自己的思路做了一些对比实验和消融实验,验证了思路的可行性,截图展示了模型效果,也提到了当前方案的不足,一是速度不够,二是在MOTA等更看重检测精度的指标上表现不如Bytetrack,感兴趣的朋友还是建议阅读原文(不想再截图了hh)

6 总结

        此处省略作者的总结(总之就是重新思考了DeepSORT并加以改进达到了SOTA效果==),主要写一下自己的读后感。正好最近在做多目标跟踪方向的任务,尝试过DeepSORT和ByteTrack,但效果只能说差强人意,于是想找找新的思路去改进一下现有方法。StrongSORT这篇论文确实是做了非常出色的工作,其应用在DeepSORT各种Tricks感觉都可以拿来提升我现在的网络,有点类似于ConvNext刚出的时候那种‘抄作业’的感觉。不过对于online场景,不管是ByteTrack的Tracklet interpolation还是StrongSORT的GSI,都不太适合,只是为了去提升在MOT17或者说是MOT20上的效果。在github上我也跟作者交流了一点想法,作者提到也有将论文中的AFLink和GSI应用到Bytetrack上,不过只有GSI是work的,AFLink则不那么work。总之,还是感谢作者这么好的工作!

        创作不易,希望大家点个赞再走吧!也欢迎大家留言交流,有不对的地方敬请批评!

你可能感兴趣的:(论文阅读笔记,目标跟踪,深度学习)