一、总体方案设计
运动目标检测与跟踪方案设计涉及视频流的实时拍摄、目标检测、轨迹预测以及云台控制。以下是四个步骤的详细设计:
1.室内场景视频流拍摄
使用海康威视球机摄像头进行室内视频流的实时拍摄。确保摄像头能覆盖整个室内空间,以便捕捉所有潜在的运动目标。
2.自动检测运动目标
使用计算机视觉算法(如YOLOv8)自动识别和定位视频流中的运动目标。在有多个目标的情况下,设计一个算法来评估并选择最显著的目标。显著性可以基于目标的大小、运动速度、运动路径的复杂性等因素。
3.运动目标轨迹预测
对于学硕项目,轨迹预测是必选项。可以使用卡尔曼滤波器、线性回归或其他适合的算法来预测目标的未来位置。系统应能处理目标的突然变化和非线性运动。
4.云台平稳跟踪运动目标
根据目标检测和轨迹预测的结果,控制云台摄像头跟踪运动目标。实现平稳的云台运动,以最小化视频流中的抖动,并确保目标始终保持在画面中心。
二、关键技术
1. 目标检测与识别
系统实现了对实时视频流的高效分析,能够快速处理和解析图像数据。采用如YOLOv8这样的先进深度学习模型进行目标检测,它不仅提供高准确性,还能有效处理复杂场景中的多种目标[1]。
2. 运动目标选择算法
系统能够评估每个目标的显著性,包括大小、运动速度和运动轨迹等特征。在存在多个目标时,系统能够自动选择最显著的目标进行跟踪,确保重点关注最关键的对象。
3. 轨迹预测技术
统能够实时处理目标数据,为轨迹预测提供即时输入。使用卡尔曼滤波[2]或线性回归等高效算法,准确预测目标的未来运动轨迹。
4. 云台控制系统
通过精确的控制算法,保证云台的平稳移动和准确定位。根据实时目标检测和轨迹预测结果,动态调整云台的方向和角度[3]。
5. 系统集成和优化
通过优化算法和硬件配置,确保系统具有快速响应能力和低延迟特性。系统设计注重长期稳定运行,能够在不同环境和条件下保持稳定性和可靠性。
三、图像采集系统设计
1.硬件组成
海康威视球机摄像头:提供高质量的视频流,具备良好的环境适应性。
计算单元:电脑的CPU和GPU,用于处理深度学习模型和运行复杂的算法。
2.软件架构
目标检测模块:实时分析视频流,识别和定位运动目标,位于主线程内。
目标选择模块:在多个目标存在时,以目标框的大小为指标选择最显著的目标。
轨迹预测模块:预测选中目标的未来运动轨迹,形成一个并行的线程。
云台控制模块:根据预测结果,控制云台摄像头跟踪目标,同样形成一个并行的线程。
3.用户界面
首先,显示实时视频流。
提供系统状态信息,如目标检测结果框和轨迹预测的轨迹线。
显示实时图像处理帧率并显示相应的mode。
4.数据处理流程
从球机摄像头捕获视频流。
通过目标检测模块分析视频。
选择最显著的目标并进行轨迹预测。
控制云台摄像头跟踪预测轨迹。
5.性能优化
确保低延迟和高帧率的视频流处理。
系统的稳健性和容错能力。
四、源程序设计和运行结果
本实验的程序使用的是python语言进行编写[4],使用YOLOv8进行目标检测,使用卡尔曼滤波器和线性回归进行轨迹预测,控制云台摄像头以跟踪移动目标,通过动态休眠时间来平滑云台的移动。
1.程序结构介绍
1.1. 导入所需的库
标准库包含os, platform, threading, time等。也包含了一些第三方库,例如tkinter, numpy, PIL, torch, cv2等。同时有YOLOv8和DeepSort相关库,另外还有Kalman滤波和线性回归的库。使用这些库大大提升了开发效率和效果。
1.2. 全局变量和参数初始化
首先,初始化YOLO模型。然后,需要设置轨迹预测和追踪相关的参数,如历史中心点、预测位置、最大历史记录数等。并且,初始化卡尔曼滤波器和线性回归模型。
1.3. 功能定义
initialize_kalman_filter:初始化卡尔曼滤波器。
predict_next_position_kalman 和 predict_next_point_linear:使用卡尔曼滤波器或线性回归预测目标的下一个位置。
draw_trajectory_on_image:在图像上绘制目标的历史轨迹和预测轨迹。
calculate_dynamic_sleep:根据目标距离计算动态休眠时间。
ytkz_and_gjyc:云台控制和轨迹预测函数。
LoginDev:登录并注册设备。
get_max_area_bbox:获取最大面积的边界框。
1.4. 主程序流程
首先,设置摄像头和设备信息。第二,登录设备并初始化。然后,启动云台控制和轨迹预测线程。主循环中读取视频帧,使用YOLO模型进行目标检测,根据模式进行轨迹预测和对象追踪。并且,显示处理后的视频帧。最后退出时,释放资源并登出设备。
2.目标跟踪
我在实验中主要做目标追踪任务,轨迹预测主要由本组另一名队员完成。
在追踪目标的过程中,采用了分步的方法进行追踪。如果检测框与图像中心的距离大于200像素,采用一个稍微大的速度进行追踪,当距离小于200像素,采用一个较小的速度进行追踪,这样可以使得目标跟踪更加稳定,解决了超调问题。而追踪的时间也是根据需要运动的距离长短来动态调整的。追踪的方向如下表所示,可以在八个方向进行云台移动。
表 云台控制旋转方向
方向命令 | 定义值 | 含义 |
---|---|---|
TILT_UP | 21 | 云台以SS的速度上仰 |
TILT_DOWN | 22 | 云台以SS的速度下俯 |
PAN_LEFT | 23 | 云台以SS的速度左转 |
PAN_RIGHT | 24 | 云台以SS的速度右转 |
UP_LEFT | 25 | 云台以SS的速度上仰和左转 |
UP_RIGHT | 26 | 云台以SS的速度上仰和右转 |
DOWN_LEFT | 27 | 云台以SS的速度下俯和左转 |
DOWN_RIGHT | 28 | 云台以SS的速度下俯和右转 |
PAN_AUTO | 29 | 云台以SS的速度左右自动扫描 |
下图是云台控制的操作流程图。
图 云台控制的操作流程图
本文利用的云台控制方法为NET_DVR_PTZControlWithSpeed,可以调整云台旋转的速度,按不同解码器的速度控制值设置。对云台实施的每一个动作都需要调用该接口两次,分别是开始和停止控制,由接口中的最后一个参数(dwStop)决定。在调用此接口之前需要先开启预览。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码,设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配,需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持,则无法用该接口控制。
需要注意的是追踪目标并不是一步到位的,而是不断地小距离移动来追踪到目标。云台所走的路径是一个多段折线,相当于摄像头每次转动一下就会进行一次轨迹规划,只要相隔时间足够小,多段折线可以等效于一个光滑的曲线,这种实时目标跟踪提升了追踪的效果和性能。
3.运行结果
图 目标识别、目标跟踪、轨迹预测图示
4.结果分析
见于图像左下角,系统在处理视频流时的帧率(FPS)维持在20至50之间,最高可达50。这表明我们的系统能够以较高的频率处理图像,确保了视频显示的流畅性。通过观察和分析,我们发现系统中采用的深度学习目标检测模型展示出了良好的旋转不变性。即使在图像被旋转的情况下,模型仍能准确地识别和定位目标,这一点在实验中得到了验证。这种旋转不变性特别适用于监控场景中的动态环境,无论摄像头的角度如何变化,系统都能可靠地执行目标检测任务。视频流的稳定性是通过观察视频中目标的连续性和平滑性进行评估的。结果表明,即使在较高帧率下,图像保持稳定,没有出现抖动或者明显的延迟。这对于提高目标追踪的准确性和降低误报率非常关键。对于轨迹预测和目标跟踪任务该系统也能较好地完成,可以提前规划做出反应跟踪目标,保持目标居于图像中央。
5.附加功能探索
另外,作为探索,本实验还对yolov7-tiny模型进行了训练。为了识别坦克模型,本实验还制作了坦克目标检测数据集,包含1014张坦克图片:
图 坦克目标检测数据集
由图可见在模型的训练过程中,训练损失和验证损失在最初阶段快速衰减,这说明模型能够快速地学习到一些基本的特征和模式;然而,在训练后期,模型的收敛速度变慢,这可能是因为模型已经学习到了大部分的特征和模式,进一步提升需要更加细致的优化。最终,训练损失和验证损失都趋向于收敛,并且基本重合,这说明模型在训练过程中没有出现明显的过拟合现象,表明模型的泛化能力较好。
图 YOLOv7-tiny训练损失变化图
如图所示,经过训练,检测模型的平均精度(mAP)逐渐提升,并最终稳定在94%左右。这一结果表明,本研究中所采用的训练方法和参数设置都相对有效,训练出的模型具有较高的精度水平。
图 YOLOv7-tiny训练过程中mAP变化图
yolov7-tiny模型的目标检测帧率fps达到了20-30,可以和上文目标检测与跟踪代码的20-50的帧率相匹配,满足海康威视获取视频流的性能要求,该模型可以被用于海康的目标检测中。
图 yolov7-tiny坦克识别效果展示
五、实验结果及其评价
1.实验结果:
在测试中,目标检测准确性方面,系统成功检测目标的准确率很高,误检率控制的比较小。预测轨迹与实际轨迹的平均偏差很小。云台控制性能方面,云台响应速度快,能够平滑跟踪目标,实现画面中心保持目标的效果良好,并且没有出现超调现象。
2.实验评价:
整体表现良好,特别是在目标检测和跟踪方面。然而,在复杂背景或快速移动目标的情况下,性能有所下降。高准确率的目标检测,有效的轨迹预测,以及平稳的云台控制。在光照变化大和目标移动速度快的情况下,系统稳定性有待提高。
六、体会和建议
在设计和实现该系统的过程中,我获得了宝贵的学习经验和深刻的体会,在处理快速移动目标时遇到挑战,通过优化轨迹预测算法和调整云台控制参数得到改善。项目设计初期对硬件性能估计不足,导致实际运行中遇到了性能瓶颈。在实现实时目标检测时,我面临了处理速度和准确性之间的平衡问题。通过优化算法和调整模型参数,我能够提高系统的响应速度,同时保持较高的检测准确率。在目标跟踪的过程中,会出现云台控制超调问题,但是通过了多段跟踪思想对云台控制算法进行优化,解决了跟踪超调问题。
对于目标检测模块,在复杂环境下的适应性仍有提升空间。考虑采用更先进的深度学习模型,以提高其在不同条件下的鲁棒性。轨迹预测算法可以进一步优化,以更好地处理高速移动的目标和复杂的运动模式。在未来,考虑实现算法的并行处理和优化计算资源使用,以提高系统的整体性能。并且研究和集成最新的机器学习技术,持续提升系统的智能化水平。
针对特定应用场景,对于监控和安保领域,重点优化人群检测和异常行为识别功能。在交通监控领域,加强对快速移动车辆的追踪能力和准确性。
七、参考文献
[1] Reis D, Kupec J, Hong J, et al. Real-Time Flying Object Detection with YOLOv8[J]. arXiv preprint arXiv:2305.09972
[2] Kalman, R. E. 1960. A New Approach to Linear Filtering and Prediction Problems[D] Transaction of the ASME—Journal of Basic Engineering, pp. 35-45 (March 1960).
[3] Hikvision. 设备网络SDK使用手册[M]. Hikvision Documentation (2023).
[4] Reitz, Kenneth, and Tanya Schlusser. The Hitchhiker’s Guide to Python: Best Practices for Development[M]. O’Reilly Media, 2016. ISBN: 978-1-491-92737-0.
可公开代码请见github