前言
上一篇文章分享了百度的PP-Tracking目标跟踪算法,探讨了其在多目标跟踪任务中的应用。尽管PP-Tracking在精度方面表现出色,但在一些复杂场景下,尤其是高帧率和快速运动的场景中,实时性成为了其一个显著的瓶颈。实际应用中,随着目标数量的增加以及场景的复杂化,算法的计算负担也随之加重,从而导致帧率下降,影响了实时跟踪的表现。为此,我查阅了大量文献并研究了其他算法,下面是一些我的心得。
算法选择
目标跟踪算法从算法本身是否使用深度学习技术的角度来说,我把他们分为两类基于传统算法的目标跟踪算法
和基于深度学习的目标跟踪算法
。前者主要依赖于经典的计算机视觉技术,如特征匹配、卡尔曼滤波、匈牙利算法等,优点在于计算开销较小、实时性较强,适用于硬件资源有限或对速度要求较高的场景
。后者基于深度学习的目标跟踪算法通过利用深度神经网络自动学习目标的特征,优点在于能够有效地处理复杂场景中的各种挑战,追踪精度高
。
总的来说,基于传统算法的目标跟踪方法在实时性和计算效率上表现优异,适合于需要快速响应的应用场景,尤其在硬件资源受限的情况下具有优势。然而,传统方法在面对复杂动态场景、目标遮挡、外观变化和背景干扰等问题时,精度往往无法与深度学习方法相比。
常用算法介绍
1.基于传统算法的目标跟踪算法
1.1 SORT (Simple Online and Realtime Tracking)
SORT 是基于卡尔曼滤波和匈牙利算法的目标跟踪方法,利用卡尔曼滤波进行目标状态预测,使用匈牙利算法解决目标的关联问题。
优点:
计算开销较小:由于不涉及复杂的深度学习模型,算法效率高,实时性强。
简单实现:基于经典的滤波和关联技术,易于实现,且对计算资源要求较低。
缺点:
在复杂场景下表现较差:对目标遮挡和外观变化的适应能力有限,可能导致目标丢失。
精度较低:与基于深度学习的方法相比,在精度上有所欠缺。
总热度: 非常高,广泛应用于实时目标跟踪,尤其在性能要求较高且硬件资源有限的场景中。
实时性: 实时性较强,适用于快速跟踪任务。
精确度: 精度一般,在复杂场景和长时间跟踪中可能出现精度下降。
1.2 ByteTrack
ByteTrack 是在 SORT 和 DeepSORT 的基础上提出的改进算法,主要通过卡尔曼滤波和匈牙利算法处理低置信度目标,避免了目标丢失和遮挡问题。
优点:
低置信度目标处理能力强:通过改进数据关联方式,能够有效跟踪低置信度目标。
应对复杂场景的能力较强:在多目标跟踪中,尤其对于目标遮挡和丢失的场景,表现优秀。
缺点:
仍然依赖传统算法:尽管比 SORT 更先进,但依旧没有利用深度学习来增强目标特征的学习能力。
复杂度较高:相比 SORT,ByteTrack 需要更多的计算资源来处理低置信度目标。
总热度: 较高,尤其在涉及低置信度目标和目标丢失的任务中,ByteTrack 展现了优秀的性能,逐渐成为常用算法。
实时性: 实时性较强,但在低置信度目标处理时可能略有延迟。
精确度: 精度较高,尤其在复杂环境和目标遮挡时有很好的表现。
1.3 KCF (Kernelized Correlation Filters)
KCF 利用核方法增强目标匹配性能,基于相关滤波器进行目标跟踪。
优点:
处理速度快:比传统的模板匹配方法速度更快。
精度较高:在较简单和中等复杂度的跟踪任务中有较好的精度。
缺点:
对于复杂场景表现一般:当面对目标遮挡或快速变化时,KCF 的鲁棒性较弱。
总热度: 较高,广泛应用于实时目标跟踪任务。
实时性: 较强,适用于低至中复杂度的跟踪任务。
精确度: 精度较好,适合中等复杂度的场景。
2.基于深度学习的目标跟踪算法
2.1 DeepSORT (Deep Learning-based SORT)
描述:DeepSORT 是 SORT 的扩展,结合了深度学习网络进行外观特征提取,从而改善了 SORT 在目标遮挡或相似目标场景下的表现。
优点:
提高了目标外观特征提取能力:能够应对目标遮挡和相似目标的挑战。
精度较高:与传统的 SORT 相比,DeepSORT 在复杂场景中的精度有显著提高。
缺点:
计算资源要求高:需要较强的计算资源和处理能力,实时性较差。
训练过程复杂:需要深度学习模型的训练。
总热度:非常高,尤其在目标跟踪领域,有广泛的应用,适合复杂场景。
实时性:实时性较差,但在复杂环境下依旧能提供较好的跟踪精度。
精确度:精度较高,特别适用于复杂场景。
2.2 Tracktor
描述:Tracktor 是基于回归的目标跟踪算法,通过回归目标的位置来实现跟踪,不依赖传统的检测和关联过程。
优点:
减少目标丢失:通过回归模型,能够在目标遮挡或外观变化时进行稳定跟踪。
精度较高:利用深度学习模型优化跟踪过程。
缺点:
实时性较差:需要较强的计算资源,实时性可能受到影响。
需要大量数据进行训练:相比传统算法,Tracktor 依赖大量数据进行优化和训练。
总热度:较高,尤其在深度学习驱动的目标检测和跟踪任务中受到关注。
实时性:实时性较差,适合精度要求高的任务。
精确度:精度较高,尤其在动态场景下表现优秀。
2.3 FairMOT
描述:FairMOT 是一种多目标跟踪算法,能平衡目标检测和目标关联的精度。
优点:
优秀的多目标跟踪性能:能够在大规模目标跟踪中表现优秀,特别适合复杂场景。
较高的精度和鲁棒性:平衡检测和关联,提供较高的精度。
缺点:
计算资源需求较高:由于涉及深度学习模型,需要较强的计算支持。
总热度:较高,尤其在多目标跟踪(MOT)领域,受到研究人员和开发者的关注。
实时性:实时性较差,但精度高。
精确度:精度较高,尤其在多目标场景中表现优秀。
总结
从开源代码的实现程度、易用性和社区支持来看,DeepSORT、ByteTrack、Sort、KCF都是比较好的选择,如果需要更高的精准度,FairMOT会是个不错的选择。
推荐的开源项目:
yolov5+DeepSort/ByteTrack
ByteTrack