基于无人机平台的多目标跟踪算法
2023-02-18李文邦郭昱汝
任 进,李文邦,郭昱汝
(北方工业大学 信息学院,北京 100144)
0 引言
目标跟踪任务是无人机一项极为重要的功能,无论是目标抓捕、自动检测打击或是移动跟拍等都有着广泛的需求,因此无人机目标跟踪的完善与实践具有极强的现实意义。
无人机的跟踪算法主要有生成式算法和滤波类判别式跟踪算法[1-3]。生成式算法早期主要是根据提取的目标特征,对目标建模后进行跟踪。与生成式目标跟踪算法相比,判别式跟踪不仅考虑目标的模型描述[4],而且将目标的特征信息和其所在位置的环境背景信息加入了考虑范围[5]。
相关滤波类算法由于通过傅里叶变换在频域中进行计算[6],运行速度较快,能够满足无人机目标跟踪最基本的实时性的需要。MOSSE算法作为目标跟踪算法,在669 帧/秒的速度下,对亮度、尺度、位姿和不严格变形的鲁棒性比较好[7]。
深度学习的方法提升了多目标跟踪算法的精度[8-9],大都是通过预训练出卷积神经网络(Convolutional Neural Network,CNN)以分析目标的特征[10],此后再提取深度特征,得到特征信息后进行特征的分类,以此为基础实现目标的确定与跟踪。但是其也依赖于GPU的性能,运行速度较慢,所以深度学习和相关滤波相结合的方法渐渐成为主流。
目前,基于无人机平台的跟踪算法依然存在诸多问题,如目标的移动过快以至于脱离视线、拍摄后低分辨率等,这一系列问题使得学者们对跟踪算法的研究有了新的方向与目标[11]。有的算法如核相关滤波 (Kernel Correlation Filter)算法利用梯度直方图特征并融合多通道特征,通过多种方法结合使得跟踪结果更加准确[12-13]。本文提出一种无人机多目标跟踪算法,旨在使用无人机跟踪地面行人目标,该算法需要在复杂环境和距离变化下依然能够高效地跟踪目标,在围绕无人机特性设计多目标跟踪算法的同时也应该注意目标检测、特征提取和相似度等之间的关联,力求在保证算法时效性和速度的同时,尽可能提高精度。
1 多目标跟踪算法
1.1 YOLOv5算法
YOLOv5网络结构可分为输入端(Input)、骨干网络(Backbone)、多尺度特征融合模块(Neck)和输出端(Output)共4个部分。YOLOv5包含了4个目标检测版本:YOLOv5s,YOLOv5m,YOLOv51和YOLOv5x。4种模型有着一样的网络结构,通过改变网络宽度来改变转换器(Conv)中卷积核的数量,通过改变网络深度来改变瓶颈层(BottleneckC3)中C3的数量,实现不同网络深度和不同网络宽度之间的组合,达到精度与效率的平衡[14]。YOLOv5s是这4种里面网络深度最浅、特征图宽度最小的YOLOv5网络,有着非常不错的性能,其在TeslaP100上检测速度达到140 帧/秒。其他3种模型都在YOLOv5s基础上不断加深、加宽,并且各个网络的网络深度与特征宽度都可用代码控制,在使用时复杂度降低,节约了成本。
4种YOLOv5与EfficientDet检测器[15]对比如图1所示。由图1可以看出,在性能上YOLOv5s 图1 4种YOLOv5与EfficientDet检测器对比Fig.1 Comparison of four YOLOv5 detectors and EfficeintDet detector DeepSort算法由SORT算法改进得来[16]。相比于SORT算法,DeepSort算法的改进在于内容匹配,实现了避免内容匹配忽略多目标身份变换的问题,使用集成表观信息来遏制身份变换的发生频率,采用了一个简单的CNN来提取被检测物体(检测框物体)的外观特征(用低维向量表示),在每次检测+追踪后,进行一次物体外观特征的提取并保存[17]。 在后面每执行一步时,当前帧中被检测到的物体外观特征与之前存储的外观特征都要执行一次相似度的计算,这个相似度将作为一个重要的判别依据。 DeepSort的核心流程是预测、观测和更新3步结合的方式。DeepSort匹配过程分为以下几种情况: ① 卡尔曼滤波的预测未被检验,出现这种情况时结果会进入重叠度(Intersection over Union,IoU)匹配进行核实。 ② 卡尔曼滤波的预测和检测器匹配。在匹配时会出现2种情况:Tracks和Detections匹配成功,则更新卡尔曼滤波并进入下一帧Tracks未匹配。在这种情况下,结果会进入IoU匹配中,并重新生成Tracks,重复这一步。Detections或Tracks未匹配,这种情况下会进入IoU匹配,之后进行二次匹配。若二次匹配失败,算法会标记其为一个不真实轨迹纳入考虑,然后再次进行IoU匹配,如果在第3次匹配时成功了,则将其列为真实轨迹加入计算中。如果再次失败,则会将其列为漏检再次纳入考虑范围。若有轨迹被标记为不真实轨迹,则将其删除并不再考虑。 DeepSort算法流程如图2所示。YOLO预测的位置信息作为观测值输入DeepSort后,卡尔曼滤波先判断是否存在Track,如果存在,对其位置信息进行先验概率预测,然后在匹配模块先后进行级联匹配和IoU匹配,最终得到匹配成功列表。在卡尔曼更新模块,对匹配成功的元素进行后验预测,得到最终的修正坐标,更新卡尔曼增益等参数。一直循环上述操作,直至处理完全部视频。 图2 DeepSort算法流程Fig.2 DeepSort algorithm flow chart 1.2.1 卡尔曼滤波 卡尔曼滤波[18-19]对系统产生的噪声有很好的容错率,它的预测在一定程度上考虑了系统的不稳定性。卡尔曼滤波的预测非常全面,结果也更加接近真实的结果。基于这些优点,卡尔曼滤波逐渐成为各领域中常用的动态系统估算方法: zk=Hkxk+νk, (1) xk=Ak×xk-1+B×μk+wk-1, (2) 式中,Ak为状态转移矩阵;xk为系统状态矩阵;Hk为状态观测矩阵;wk-1表示过程噪声;zk为状态阵的观测量(实测),与系统模拟得到的状态xk相对应;B为控制输入矩阵;νk为高斯测量白噪声。为了使卡尔曼滤波的测量更加准确,在以上公式中过程噪声和测量噪声2个误差量起到了重要的作用,wk-1和νk的加入使卡尔曼滤波即使面对系统的线性变化,依然表现良好。 1.2.2 匈牙利算法 使用匈牙利算法解决分配问题,该算法解决了卡尔曼滤波算法预测框和检测框的匹配问题。 将视频前后帧中的检测框看成2组数据,这2组数据存在匹配关系(同一个目标,在前后帧中的检测框为一对),而同一帧中的目标框,可被认为是不同的目标,不存在匹配关系。显然,前后帧中目标框的匹配问题是一个求二分图最大匹配数的问题(尽量匹配所有目标)。匈牙利算法需要输入一个代价矩阵,代价矩阵可以是IoU的距离,距离越小,匹配得越好。 无人机传统的目标识别方法主要是进行特征提取,然后用分类器进行特征识别,但是传统方法存在识别精度低、对多样性的环境鲁棒性差、无针对性和耗费时间长等问题。利用深度卷积模型,可对目标进行精准识别和锁定,并应用在实时检测上。通过CNN提取目标特征的目标检测算法可以进行精准识别,如YOLO算法,其特点是采用端到端的检测,检测速度快,满足实时检测的要求。 算法设计概要如图3所示,分为特征提取、目标识别、目标锁定和目标跟踪4大模块。 图3 算法设计概要Fig.3 Summary of algorithm design 各模块功能描述如下: ① 视频输入:将需要进行跟踪的视频输入到算法中。 ② 特征提取:算法将设定好的目标特征在视频的帧图像中进行提取,将与设定好的特征相似的地方选取出来,进行判断。 ③ 目标识别:算法会对提取后的特征进行分析,对比后将与设定值相同的部分选中,即可将帧图像中的目标识别出来。 ④ 目标锁定:算法在识别了目标后,会生成一个与帧图像中目标大小相当的锚框,将目标框在其中,以实现目标锁定的功能。 ⑤ 目标跟踪:实现对目标的框定后,跟踪算法会根据检测锚框中的图像信息,使用相关滤波算法对比前后帧,实现对目标的持续跟踪。 ⑥ 输出跟踪结果:跟踪完成之后,程序会输出跟踪结果,结果分为2个,一个是视频跟踪结果,将目标的移动通过锚框的移动清楚地出现在视频中;另一个是一个文本文件,包括目标在每一帧的坐标、锚框大小等数据。 YOLOv5算法和DeepSort算法结合后最终功能如下: ① 提取目标特征并进行检测。 ② 锁定识别后的对象。算法在检测到对象后,自动生成锚框来框定检测到的对象,即将其锁定,检测效果如图4所示。即使应用于高空,从上往下观测,算法依旧有较好的效果。 图4 检测效果Fig.4 Detection effect ③ 对移动中的对象进行跟踪。将目标锁定后,当目标移动时,根据算法的设计和卡尔曼滤波的原理,检测目标框内各个目标的动作变化,从而推测各个目标在下一帧的位置,然后根据下一帧的图像结合匈牙利算法计算出准确的位置,进而实现高效的多目标跟踪。目标移动过程中的跟踪捕捉如图5所示。 图5 移动中目标跟踪Fig.5 Target tracking in movement YOLO将物体检测作为回归问题求解。基于一个单独的端到端网络,完成由原始图像的输入到物体位置和类别的输出。 在网络训练中,网络在初始锚框的基础上输出预测框并与真实框进行比对,计算二者差距,再反向更新,迭代网络参数。BackBone主要进行特征提取,将图像中的物体信息通过卷积网络进行提取,用于后面目标检测。Neck层对特征进行混合与组合,增强网络的鲁棒性,加强物体检测的能力,并将这些特征传递到Head层进行预测,最终进行预测输出。 YOLOv5在接收图像后,会结合训练集判断图像内容并进行识别,并框定出识别后的对象,实验结果如图6所示。由图6可以看出,YOLOv5良好地对所选目标行人进行了识别,并完整地框定了目标对象。实验中,YOLOv5的识别准确率到达了70%左右。在输出的结果中,YOLOv5将每一帧的对象用锚框框住后,也保存了锚框内的图像。 图6 使用YOLOv5进行目标识别的结果Fig.6 Target recognition videos by using YOLOv5 在实现YOLOv5和DeepSort的联用时,相当于视频送入YOLOv5进行识别锁定后,将处理好的视频送进DeepSort算法中对目标进行跟踪,从而实现完整的多目标跟踪。无人机上算法运行效果如图7和图8所示。可以看出,算法在无人机上运行较为稳定,跟踪效果良好。 图7 无人机上算法运行效果(前帧)Fig.7 Operation effect of algorithm on UAV (front frame) 图8 无人机上算法运行效果(后帧)Fig.8 Operation effect of algorithm on UAV (rear frame) 实验采用的是GPU版的PyTorch,选择CUDA11.3版本。安装Pycharm后,安装环境所需的包require-ments,在深度学习中有很多调用视频、图像等的包需要进行调用,还有深度学习的包,例如opencv等,因此将所需的包都放入requirements中一并进行下载安装。 选取公开的无人机数据集VisDrone2021进行图像标注,从而形成自己的数据集来进行目标跟踪。基准数据集由265 228帧和10 209张静态图像构成的400个视频剪辑组成,由各种无人机摄像机捕获,涵盖广泛,包括位置(从中国相隔数千千米的14个不同城市拍摄)、环境(城市和国家)、物体(行人、车辆和自行车等)和密度(稀疏和拥挤的场景)。 本算法设计的目的是为了能够将无人机应用于灾后救援、警方抓捕和环境保护等特殊环境,跟踪目标主要是人群,故选取MOT16作为评估算法的评价指标。MOT16数据集是用于衡量多目标跟踪方法标准的数据集,主要包含行人跟踪图片,专用于行人跟踪领域的评估。 实现算法评价的步骤如下: ① 在seqinfo.init文档中设定好测试视频名称。 ② 对seqinfo.init文档中选定好的测试视频运行检测代码,并生成结果的txt文件。 ③ 运行MOT16评估代码文件,将生成的txt文件与gt.txt文件进行比较,得出代码的准确性能评估。 MOT16代码生成的评价指标如表1所示。“+”代表指标越高越好,“-”代表指标越低越好。 表1 MOT数据集评估指标Tab.1 Evaluation index of MOT dataset MOT指标能否准确测出算法性能,对跟踪算法有以下要求: ① 在跟踪过程中能及时检测到所有出现的目标物体,包括初次进入视野的物体。 ② 算法推测位置和实际位置尽可能一致。 ③ 算法为每个检测到的物体定义一个唯一的ID识别码,相应地该物体分配的ID在整个跟踪程序进行中保持不变。 在MOT的衡量指标中,跟踪准确度(Multiple Object Tracking Accuracy,MOTA)是个很重要的指标,可以直观地看出多目标跟踪的性能并且不受检测器精度的影响。MOTA为: (3) 式中,FN为False Negative;FP为False Positive;IDSW为ID Switch;GT为Ground Truth 图像中物体的数量。MOTA将跟踪过程中的所有错误纳入了考虑范围,这些错误主要是FN,FP,ID Switch。MOTA与物体位置的估计精度无关,但MOTA相应地准确衡量了跟踪算法在检测物体和跟踪轨迹时的能力。MOTA有时也会为负数,即当跟踪器产生的错误过大时。 跟踪精度(Multiple Object Tracking Precision,MOTP)同样也是跟踪过程中的一个重要指标: (4) 式中,ct为t帧时匹配到的个数;dt,i为t帧时第i个匹配目标与GT的距离。 正确识别的计算检测的分数(Identification Precision, IDP)是指每个行人框中行人 ID 识别的精确度;正确识别GT检测的分数(Identification Recall, IDR)是指每个行人框中行人 ID 识别的回召率;ID Switch(ID_SW)为ID切换总数。 不同检测器算法性能如表2所示。“+”代表指标越高越好,“-”代表指标越低越好。 表2 不同检测器算法性能Tab.2 Performance of different detector algorithms 通过测试得出,DeepSort与YOLOv5x检测器配合后,MOTP值最大。YOLOv4-tiny跟踪精确度值最低,但占用内存较小,运行方便。对于搭载处理器较差的无人机,使用YOLOv4-tiny配合DeepSort算法更能发挥作用。 本文基于无人机平台,将DeepSort与YOLOv5算法结合。关于多目标身份变换问题,当跟踪目标消失又重新出现时,SORT算法给它重新分配新的身份,导致识别率降低,DeepSort算法将深度学习引入到SORT算法中,通过添加外观描述符来减少身份切换,从而提高跟踪效率。同时,还能计算目标间距以及特征相似度,并且增添了用来排除错误预测结果的验证机制。实验结果显示,DeepSort与YOLOv5x检测器结合要比YOLOv4-tiny检测器的跟踪精度提高22%,跟踪准确度提高85%。1.2 DeepSort算法
2 目标检测
2.1 无人机平台
2.2 算法设计概要
2.3 多目标跟踪算法功能实现
2.4 使用YOLOv5实现目标检测
2.5 基于YOLOv5+DeepSort的多目标跟踪算法实现
3 实验结果与分析
3.1 实验环境及参数设置
3.2 定量分析
4 结束语