参考文章:优化deepsort的ID跳变问题
由于原文没有解释清楚,这里重新解释一下改进思路。
思路:存在序列:1, 2, 3, 5, 8, 12...,如何将其修改成:1, 2, 3, 4, 5, 6, ...。参考leetcode41,用哈希表在常数时间内找到第一个缺失的数。
使用一个顺序增加的索引,建立起与追踪id的映射关系。
在deep_sort.py文件中:
__init__中增加红色框内:
update中注释掉绿色框内,增加红色框内:
注意:原始deepsort不会返回类别和置信度,这里增加这两个结果的方法参考:YOLOv8源码修改(3)-多个YOLOv8模型 +deepsort 实现多目标跟踪 and 修改原始deepsort结果,加入预测类别和置信度
本质上,实现的是:{1:1, 2:2, 3:3, 5:4, 8:5, 12:6...}这样一个映射。
实现结果:
修改前,ID到30:
修改后,ID到24: