一、概述
"目标跟踪 (Object Tracking)"是机器视觉领域中的一个重要研究领域。根据跟踪的目标数量,可以将其分为两大类:单目标跟踪 (Single Object Tracking,简称 SOT) 和多目标跟踪 (Multi Object Tracking,简称 MOT)。
多目标跟踪往往面临一些挑战,例如需要同时跟踪多个目标、目标可能频繁遮挡,这些因素使得目标跟丢成为一个常见问题。为了解决这些问题,可以借助跟踪器 DeepSORT 以及检测器 YOLO v8,从而构建一个高性能的实时多目标跟踪模型。
二、算法与项目流程
在深度学习领域中,目标跟踪是一项任务,旨在使用对象在空间和时间上的特征来预测它们在整个视频序列中的位置。从技术上讲,目标跟踪包括获取初始的目标检测集,为每个目标分配唯一的标识(ID),并在整个视频帧序列中跟踪它们,同时保持它们的标识不变。
1.目标检测与目标追踪
目标检测:
在计算机视觉任务中,目标检测是在图像和视频(一系列的图像)中扫描和搜寻目标并给出目标所在图像的位置坐标(边界框):
在对视频进行检测时,也是把视频拆分成一帧帧来进行处理,这处理的过程中,检测所获取目标在帧与帧之间是无法进行关联的,假设,要对视频进行行人检测时,第一帧检测到了行人,第二帧也检测到同一个行人,但这两帧的这个行人目标是无法进行关联的,假设当前视频中有五个行人,目标检测只能检测到当前视频每一帧都有这个几个目标,并不能确定这几个目标中哪个是目标A,哪个是目标B,那个目标C等等。
视频示例:
行人检测
带界面的代码示例,代码结合了DeepSORT与ByteTrack两种方法,可以用于比对,源码下载地址:https://download.csdn.net/download/matt45m/89036361?spm=1001.2014.3001.5503
YOLOv8目标检测、语义分割、状态估计、目标追踪实践
源码地址 :https://download.csdn.net/download/matt45m/89162905
目标追踪:
从上面的示例可以看出,当使用对象检测器时,只会得到一个包含对象位置信息的输出数组。这个输出数组可能包含多个坐标,每个坐标代表一个检测到的对象的位置。然而,这个输出数组通常不提供有关对象之间的关联信息,因此在查看输出数组时,你无法知道哪个坐标对应于哪个检测框。
与此不同,目标跟踪器在处理检测结果时为每个对象分配一个唯一的标识符(ID),并且会在整个帧序列中保持该ID不变,直到该对象的生命周期结束。这意味着,无论对象在视频中如何移动或遮挡,跟踪器都能够将相同的ID与该对象关联起来,以维护对象的一致性标识。这种ID分配使得跟踪器能够区分不同的对象,并跟踪它们的轨迹,而不仅仅是提供它们的位置信息。
视频示例:
运动目标追踪
目标检测和目标跟踪的区别:
目标检测:
- 目标检测任务要求同时完成对象的定位(即确定对象的边界框位置)和分类(即确定对象的类别)。这意味着目标检测算法必须不仅能够确定对象是否存在,还要知道它是什么。
- 目标检测通常用于识别和定位图像或视频帧中的对象,通常需要明确的目标类别信息。
目标跟踪:
- 目标跟踪任务更关注对象在帧与帧之间的连续性,通常更注重对象的运动特征,而不要求进行目标的分类。
- 目标跟踪可以不涉及目标的类别,它的主要目标是维护对象的位置和轨迹,以实现在视频序列中的跟踪。
2.目标追踪的类型
目标跟踪器根据不同的分类标准可以分为多种类型:
-
单目标跟踪(Single Object Tracking,SOT):
- 这类跟踪器专注于跟踪单个目标,即使在帧中存在多个其他对象。它们通常在第一帧中初始化目标的位置,然后在整个帧序列中跟踪它。一些传统的SOT方法包括CSRT、KCF等,但现在基于深度学习的跟踪器如GOTURN和SiamRPN表现更准确。
-
多目标跟踪(Multi Object Tracking,MOT):
- 这些跟踪器具有能力同时跟踪多个目标,甚至可以跟踪不同类别的目标,并保持高速性能。它们通常在大规模数据集上进行训练,因此具有更高的准确性。一些强大的MOT算法包括DeepSORT、JDE和CenterTrack。
-
通过检测跟踪(Detection-Based Tracking):
- 这种类型的跟踪算法首先使用目标检测器检测帧中的对象,然后跨帧执行数据关联以生成目标的轨迹,实现目标的跟踪。它们能够同时跟踪多个对象,并具备处理新对象引入的能力。即使目标检测失败,这些算法也有助于保持目标的跟踪。
-
无检测跟踪(Detection-Free Tracking):
- 这种类型的跟踪算法需要手动初始化目标的位置,然后在后续帧中跟踪这些目标。这种方法通常使用传统的计算机视觉算法,而不依赖于目标检测。它们在一些特定应用中仍然有用。
不同类型的目标跟踪器适用于不同的应用场景,选择适当的跟踪器取决于任务要求、对象数量和性能要求。
3.目标跟踪的应用
-
交通监控:
- 交通流量管理:目标跟踪可用于监控道路上的车辆,帮助交通管理部门更好地理解交通流量,进行交通优化和拥堵监测。
- 违规行为检测:跟踪器可以检测和记录交通违规行为,如闯红灯、违规变道等,以提供证据用于执法。
-
体育运动/赛事:
- 运动员跟踪:跟踪器可用于追踪运动员在比赛中的位置和移动,为教练和观众提供实时数据和分析。
- 比赛统计:通过跟踪球员和球的位置,可以自动记录得分、犯规和其他比赛统计数据,减轻人工记录的工作量。
-
多摄像头监控:
- 重新识别:核心思想是在多个摄像头之间重新识别相同的对象。如果一个对象在一个带有独特ID的摄像头中被跟踪,然后离开画面并在另一台摄像头中再次出现,跟踪器能够保持相同的ID,帮助重新识别对象。
- 入侵检测:跟踪器可以用于监控区域,以检测不明对象的出现或不寻常的行为,从而帮助提高安全性。
-
智能监控和安全:
- 安防监控:跟踪器可用于监控大型场所,如机场、商场和公共交通站,以监测潜在的威胁或异常行为。
- 人脸跟踪:用于跟踪和记录人员的位置,特别是在人脸识别系统中,以进行出入记录或提供定位服务。
-
无人机和自动驾驶:
- 无人机导航:目标跟踪可用于协助无人机导航和跟踪地面目标,例如搜索和救援、农业监测等。
- 自动驾驶车辆:跟踪技术可以用于自动驾驶车辆中,以帮助车辆理解和预测其他交通参与者的行为。
4. 算法整合
在实际应用中,结合目标检测和目标跟踪可以实现更高效的处理方式。可以使用目标检测来定期锁定目标,然后使用目标跟踪来跟踪目标的位置,这样可以降低计算成本,同时可以定期进行目标分类,从而减轻系统的负担。这种方法可以有效提高处理速度,并在实际场景中得到广泛应用。
-
目标检测:
- 使用目标检测算法在每一帧中检测出目标的位置和边界框。这一步可以提供当前帧中的目标位置信息。
-
特征提取:
- 对每个检测到的目标,使用深度学习模型(如卷积神经网络,CNN)提取目标的特征表示。这些特征表示捕捉了目标的外观和特征,通常是高维向量。
-
目标匹配:
- 将每个检测到的目标与先前帧中已跟踪的目标进行匹配,以确定目标的身份和轨迹。匹配过程通常考虑多个因素,包括目标的特征相似度、运动一致性、外观相似度等。
-
外观特征描述符:
- 在目标匹配中,使用强大的外观特征描述符,如DeepSORT中所使用的,可以更准确地区分不同目标之间的相似度。这些描述符帮助算法区分不同目标,即使它们具有相似的外观特征。
-
处理复杂情况:
- 目标跟踪还需要处理各种复杂情况,如目标的消失和重新出现、遮挡、变形等。算法需要具备鲁棒性,以支持长期目标跟踪,并能够应对这些挑战。
三、DeepSORT算法
DeepSORT是一种计算机视觉目标跟踪算法,旨在为每个对象分配唯一的ID并跟踪它们。它是SORT(Simple Online and Realtime Tracking,简单在线实时跟踪)算法的扩展和改进版本。SORT是一种轻量级目标跟踪算法,用于处理实时视频流中的目标跟踪问题。DeepSORT引入了深度学习技术,以加强SORT的性能,并特别关注在多个帧之间跟踪目标的一致性。
1. SORT目标追踪
SORT 是一种对象跟踪方法,其中使用卡尔曼滤波器和匈牙利算法等基本方法来跟踪对象,并声称比许多在线跟踪器更好。SORT 由以下 4 个关键组件组成: