八千字长文详解ByteTrack,tracking by detection 范式下一大力作

这是一篇 ECCV 2022 的中稿文章,由华中科大,香港大学以及字节跳动联袂打造,最重要的是在giuhub上有4.9k个Star,让我们不得不看看什么样的论文有这样的影响力。

这篇文章读下来感受最深的一点,好的工作不在于是否有高深的理论,不是让人看不懂的就是好工作,而是能解决实际问题的才是好工作,这篇文章就让人挺舒服的,看着不累,它能解决的问题也很清晰,点很小,但是算法行业上没被解决好的问题,同时,这篇文章的链路其实很长,从学术问题的解决到怎么实现工业落地,它都给出了解决方案,我想,这才是它有如此影响力最核心的点。

下面让我们以使用者的角度去解读这篇文章,里面也包含了自己的一些见解,能和大家有共鸣的地方,期待点赞,收藏,转发,评论;有不妥的地方,也欢迎大家及时指出。

文章地址:https://arxiv.org/pdf/2110.06864

开源项目地址:https://github.com/ifzhang/ByteTrack/

同时,这篇文章也是“在实战中学AI-车流量统计项目”的第四篇,该系列的文章列表:

  1. 第一篇:在实战中学AI-车流量统计项目-开篇

  2. 第二篇:在实战中学AI-车流量统计项目-YOLOV11车辆检测-YOLOV11模型的部署

  3. 第三篇:小白也能快速搭的多路视频推拉流服务

论文概述

看一篇论文之前,先要看它能解决什么问题?我们都知道多目标跟踪(MOT)是用来做视频中物体的边框和ID估计的,只是tracking by detection 范式下,目标的边框更多由检测模型提供,跟踪算法负责补全以及做帧间的目标关联。以往的方法,有一个弊端,即检测框得分高的目标才会参与多目标跟踪,像遮挡这种情况目标得分会低一些,因为既定的机制,这样的目标会被舍弃,进而会带来真实对象丢失和轨迹碎片化问题。

本文主要为了解决这个问题,为此,作者提出了一种简单通用的关联方法,即几乎关联每一个检测框,而不仅仅是高分的那些,对于低分检测框,我们利用它们与轨迹片段的相似性来恢复真实对象并过滤掉背景。在目前主流的各类跟踪算法上做了对比测试,均获得不俗的性能提升。同时,文章还关注了算法的运行性能,在V100上可以以30FPS的速度运行。当然,这主要应该是检测模型的消耗,跟踪算法本身应该很低。

问题分析

在基于检测的多目标跟踪中,由于视频场景本身的复杂性,检测模型自身输出的稳定性难以有效保障,会遇到误检,漏检,或者置信度下降等等问题,跟踪算法需要去应对检测模型自身带来的不确定性,即:

  • 假阳性问题,即检测模型的误检,实际上没有,检测模型有输出,如果处理不好,会带来一个错误的目标新增。

  • 假阴性问题,即检测模型的漏检或帧间匹配的错误,会带来一个正常跟踪着的目标丢失。

目前大多数的跟踪算法都是通过设置一个较高的检测框阈值,以确保检测输出的稳定性,这里面有一个逻辑相悖的地方,大多数跟踪算法中匹配面临的挑战在于密集,遮挡,难以区分(包括类别间难以区分或者形态间难以区分)的目标之间效果不太好,孤零零的一个目标一般不会有什么太大问题,同时,像遮挡和难以区分的情况也是检测的难题,那好了,一整个跟踪大框架下,两大干将都撂挑子了,那一遇到这类问题不就得趴窝啊。

为此,作者还给了个示意图,生动形象的说明了这种情况。

给了三张连续的序列,图组(a)显示的是原始检测结果,上面有三个人均被检测出来了,只是其中有一个人在第二张和第三张图上被遮挡了,置信度很低,同时,三张图上均有一个低置信度的误检。图组(b)是传统跟踪思路,只有高置信度检测框才会参与跟踪,那红色框里面的人只在第一张图置信度大于阈值,后面均置信度低,那他就只会被跟踪一帧,但实际上能看到,后面两帧他也出现了,如果后面他脱离被遮挡,那可能会被当成一个新的ID输出了。图组(c)是本文的跟踪思路,低置信目标的也会参与跟踪,同时通过轨迹匹配,低置信度的背景被滤除,很好的保持的跟踪结果的完整性。

BYTE 算法

本文的贡献在于提出了一种简单高效且通用的数据关联方法以应对上述问题,它几乎保留了每一个检测框,只是将它们区分为高分框和低分框,首先,将高分框与轨迹片段(tracklets)进行关联。由于遮挡、运动模糊或尺寸变化等原因,某些轨迹片段可能无法匹配到合适的高分框,从而导致这些轨迹片段未被匹配。接下来,将低分检测框与这些未匹配的轨迹片段关联,以恢复低分检测框中的物体,同时结合一些轨迹匹配的方式过滤掉背景。具体的方法,作者给出了一张伪代码,表述的也比较清晰。

  • 初始化一个空的轨迹集合。

  • 对视频的每一帧执行检测模型,并将输出的几个划分为高分框 D_high 和低分框 D_low。

  • 使用卡尔曼滤波器预测已有轨迹 T 在当前帧中的位置。

  • 执行第一次匹配,利用IoU或Re-ID特征间距离来构建相似度度量,并使用匈牙利匹配构建匹配关系,将当前帧中的 D_high 和 轨迹 T 中的预测框进行匹配,并将未匹配的检测框放在D_remain,未匹配的轨迹放置在T_remain里。(这里查看源码可知,作者是使用IoU做的特征相似性度量,Re-ID特征部分沒有用,这使用卡尔曼预测的结果具有可行性,但是如果使用Re-ID特征是否合适还需要仔细考量,毕竟预测框与真实框之间还是有差距,如果预测的不好,两者之间差异比较大,是否能提取到相近的特征,这块需要根据真实情况看,是直接用上一帧结果的检测框和当前帧检测框做Re-ID特征特征相似性,还是用预测框做。)

  • 执行第二次匹配,本次主要是关联剩下的轨迹以及一些低置信度的检测框,未匹配成功的轨迹存放于T_remain里,未匹配的低的分的检测直接删除࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值