BoT-SORT 论文笔记及思考

本文解析BoT-SORT论文,介绍了其改进的卡尔曼滤波、相机运动补偿策略,以及IOU+ReID融合匹配方法,提升MOT性能,具有实战参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BoT-SORT: Robust Associations Multi-Pedestrian Tracking

BoT-SORT论文链接
参考文章

最近新出的霸榜的多目标跟踪BoT-SORT论文在MOTChallenge数据集上得出的结果排名第一(state-of-the-art),其中指标实现了 80.5% MOTA、80.2% IDF1 和 65.0% HOTA。

MOT指标参考

论文秉持一贯的风格使用 Tracking-by-detection 作为MOT任务,使用当前最先进的检测器YOLOX作为检测任务,在ByteTrack的基础上更新很多作者自己的想法。

一、修改卡尔曼滤波(KF)中的状态向量及其他矩阵参数

起初SORT中KF状态向量为7元组组成:在这里插入图片描述,其中x,y为中心值,s为边界框比例(面积),a为边界框的纵横比(w/h)。

而DeepSort中KF状态向量改为8元组:在这里插入图片描述,a依然为边界框的纵横比,只是将第四维改成的边界框的高度h预测。

论文中修改KF状态向量为如下形式:在这里插入图片描述,将宽高比改成了预测宽度w,是因为作者发现在真实预测的过程中预测框总是不将行人完全包括进去,而正确的预测宽高能更好的匹配行人框,对跟踪匹配中的IOU也有很大的改善。
论文中截取的图
在这里插入图片描述
另外根据状态向量修改初始化的矩阵参数(过程噪声、测量噪声)以满足总体修改预测。

二、相机运动补偿(Camera Motion Compensation)

由于KF是匀速线性运动模型,对于跟踪非线性来说会产生不适配的问题,作者提出使用传统的方法Global motion compensation (GMC),使用OpenCV中的提取图像关键点技术对背景提取特征描述子(类似ORB、SIFT、SURF),并且通过特征点进行稀疏光流跟踪来使用RANSAC计算并获取背景运动的仿射变换矩阵,以此通过前后帧的运动信息生成仿射变换矩阵来预测行人边界框,称为运动补偿,仿射变换矩阵平移部分只会影响中心点位置,而其它的影响状态向量和噪声矩阵。
由此作者给出了运动校正的等式方程:
在这里插入图片描述
对于在跟踪中加入运动补偿后的效果其实是可想而知的,作者实验也贴了图,实际过程中,KF在预测的时候,假如目标运动过快或者过慢的情况可能会出现预测的滞后与提前,而在运动匹配的过程中iou匹配其实会显得比较困难,因为不管预测框是滞后或提前总是会造成与检测框的重合度不高的情况,这就给MOT带来了极大的挑战,况且不说运动模糊的情况。
在这里插入图片描述
三、IOU+ReID的融合机制
使用FastReID库中ResNest50作为backbone,BoT(SBS)作为基线训练reid网络,网络训练使用默认的参数,从FastReID项目中可以找到,使用的分辨率为128x384的输入分辨率,损失函数使用了经典的TripletLoss,总共迭代60个epoch训练出强有力的ReID网络提取特征。并且采用指数移动平均(EMA)来更新第k帧中第i个预测框的轨迹状态,在拥挤以及遮挡的场景中检测得分低的表示特征不可靠,并不会用来做特征匹配。

并且有提出使用IOU+ReID融合机制的策略来进行匹配,使用下面公式作为匹配输出:
在这里插入图片描述
作者使用设置iou阈值为0.5,余弦相似度阈值为0.2作为匹配的限制。
在这里插入图片描述

作者最后提到可能对于使用场景的不同,对于GMC来说大图会产生耗时较大的问题,可以采用多线程的方式来抵消平衡这一部分耗时,不过博主觉得在嵌入式端的话使用的分辨率一般不会太大,毕竟板端的耗时太大会影响整个跟踪的性能。

另外作者也使用到了一些匹配小技巧,在跟踪中经常发生,由于目标的遮挡以及未匹配会导致预测的梯度弥散效应,导致预测框的形变发生,而这里可以做一些基础的策略来保持,作者未提出只是给了相关文献,大概能知道为了保持此预测框在目标出现是尽可能的匹配上连接之前的轨迹,类似ByteTrack策略,在低得分的检测框出现的时候依然使用IOU去做匹配,以保持轨迹的连续性。

而且作者说自己其实也不清楚是为什么使得MOT的一些指标有提升的,猜想可能是因为KF的状态向量W参数的预测修改使得预测框与检测框拟合,匹配更好导致的。这一点我觉得还是很有用的,对于预测框大小的拟合能做到与检测框类似相差不大的情况下,iou匹配是可以起到很鲁棒的作用。

实用性:
个人认为这篇论文还是有很多实用参考价值的,因为其中的运动过程中丢失目标是跟踪过程中时常发生的,对于KF中的状态修改可以直接影响预测的匹配,对于运动补偿对于实践可能会稍微困难点,但值得一试!!!

### botsort 和 StrongSORT 的区别及应用场景 #### 主要差异 botsort 是一种轻量级的多目标跟踪算法,它结合了 ByteTrack 中的空间特征重叠匹配策略以及 DeepSort 中的 Re-ID 特征相似度计算方式。这种组合使得 bot-sort 能够有效地处理遮挡情况并保持较高的实时性能[^1]。 StrongSORT 则是在 DeepSort 基础上的改进版本,不仅继承了其优点——通过深度学习模型提取行人外观特征来增强跨摄像头场景下的鲁棒性;还加入了对轨迹管理机制的优化,从而提高了长时间序列中的稳定性与准确性[^2]。 #### 应用场景对比 对于资源受限环境或需要快速响应的应用场合(如无人机监控、移动机器人导航),由于 bot-sort 更加注重效率,在这些情况下可能更受欢迎。bot-sort 减少了不必要的复杂运算,专注于基本功能实现的同时保证了一定程度的目标识别精度。 而在追求高准确率和稳定性的视频分析任务中(例如城市安防系统、大型活动人群监测),StrongSORT 显示出了更大的优势。凭借强大的再识别能力和优秀的长期跟踪效果,能够更好地应对复杂的现实世界挑战,提供更为可靠的数据支持。 ```python # 示例代码展示两种算法初始化过程的不同之处 import numpy as np def init_bot_sort(): # 初始化 bot-sort 所需参数配置 config = { 'min_iou': 0.3, 'max_age': 70, 'nn_budget': 100 } return BotSortTracker(config) def init_strong_sort(): # 初始化 StrongSORT 所需参数配置 model_weights_path = "path/to/model/weights" device = "cuda" if torch.cuda.is_available() else "cpu" reid_model = load_reid_model(model_weights_path, device=device) tracker_config = { 'reid_model': reid_model, 'max_dist': 0.2, 'min_confidence': 0.3, 'nms_max_overlap': 1.0, 'max_iou_distance': 0.7, 'max_age': 30, 'n_init': 3 } return StrongSORT(tracker_config) if __name__ == "__main__": bot_tracker = init_bot_sort() strong_tracker = init_strong_sort() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值