本文主要介绍如何使用Yolo-V5+DeepSORT实现多目标检测与跟踪。(公众号:OpenCV与AI深度学习)
该模块负责使用一些对象检测器(如YOLOv4、CenterNet等)检测和定位画面中的对象。
该模块负责使用其过去的信息预测对象的未来运动【1】目标跟踪的必要性您可能会疑惑,为什么我们需要对象跟踪?为什么我们不能只使用物体检测?需要目标跟踪的原因很多,例如:
SORT算法做目标跟踪非常成功,可以击败许多最先进算法。目标检测器为我们提供检测,卡尔曼滤波器为我们提供跟踪,匈牙利算法执行数据关联。那么,为什么我们还需要DeepSORT?
【2】深度排序
SORT在跟踪精度和准确度方面表现非常出色。但是SORT返回具有大量ID开关的轨道,并且在遮挡的情况下失败。这是因为使用了关联矩阵。DeepSORT使用结合了运动和外观描述符的更好的关联度量。DeepSORT可以定义为跟踪算法,它不仅基于对象的速度和运动,而且还基于对象的外观来跟踪对象。
出于上述目的,在实施跟踪之前离线训练一个具有良好区分性的特征嵌入。该网络在大规模人员重新识别数据集上进行训练,使其适用于跟踪上下文。在DeepSORT余弦度量学习方法中训练深度关联度量模型。根据DeepSORT的论文,“余弦距离考虑了外观信息,当运动的判别力较低时,这对于在长期遮挡后恢复身份特别有用。”这意味着余弦距离是一种度量,可帮助模型在长期遮挡和运动估计失败的情况下恢复身份。使用这些简单的东西可以使跟踪器更加强大和准确。
【3】DeepSORT实现
DeepSORT可以用于各种现实生活中的应用程序,其中之一就是体育运动。在本节中,我们将在足球和100m短跑等运动中实现DeepSORT。与DeepSORT一起,YOLOv5将用作检测器来检测所需的对象。该代码是在TeslaT4GPU上的GoogleColab上实现的。
YOLOv5实现:
首先,我们将克隆YOLOv5官方存储库以访问功能和预训练的权重。
%cd./yolov5!pipinstall-rrequirements.txt现在我们已经准备好YOLOv5,让我们将DeepSORT与它集成。
集成DeepSORT
同样,我们将克隆DeepSORT的官方实现以访问其代码和功能。
【4】推理
如前所述,此追踪器将在运动场景中进行测试。detect_track脚本接受许多参数,但其中一些参数需要传递。
首先,让我们在下面的视频中进行测试。
检测器的工作做得非常好。但是在球的情况下以及球员的情况下,遮挡都没有得到很好的处理。此外,还有许多ID开关。视频中的球员被很好地跟踪,但由于运动模糊,球甚至没有被检测到,也没有被正确跟踪。也许DeepSORT在密度较低的视频上会表现更好。
让我们在另一个短跑比赛的体育视频上对其进行测试。
!pythondetect_track.py--weightsyolov5m.pt--img640--source./sprint.mp4--save-txt--classes0--line-thickness1速度仍然同样快,大约52FPS。输出还是很准确的,ID开关非常少,但是在遮挡时无法保持。输出可以在下面查看。
因此,我们可以从这些结果中得出结论,DeepSORT不能很好地处理遮挡并可能导致ID切换。
在试验和测试新事物时,评估总是扮演着重要的角色。同样,对于DeepSORT,我们将根据一些标准指标来判断其性能。众所周知,DeepSORT是一种多目标跟踪算法,因此要判断其性能,我们需要特殊的指标和基准数据集。我们将使用CLEARMOT指标来判断我们的DeepSORT在MOT17数据集上的性能。让我们在下一节中更深入地研究这些内容。
【1】MOT挑战基准
MOTChallengebenchmark是一个框架,它提供了大量具有挑战性的真实世界序列、准确注释和许多指标的数据集。MOTChallenge由各种数据集组成,例如人、对象、2D、3D等等。更具体地说,每年都会发布数据集的几种变体,例如MOT15、MOT17和MOT20,用于衡量多个对象跟踪器的性能。
对于我们的评估,我们将使用MOT17数据集的一个子集。
数据集格式:
所有数据集变体都具有相同的格式,为我们提供
这些指标有助于评估跟踪器的整体优势并判断其总体性能。其他措施如下:
对于人员跟踪,我们将基于MOTA评估我们的性能,它告诉我们检测、未命中和ID切换的性能。跟踪器的准确度,MOTA(多目标跟踪准确度)计算公式为: