海康威视球机摄像头运动目标检测、跟踪与轨迹预测

一、总体方案设计

运动目标检测与跟踪方案设计涉及视频流的实时拍摄、目标检测、轨迹预测以及云台控制。以下是四个步骤的详细设计:

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_UP21云台以SS的速度上仰
TILT_DOWN22云台以SS的速度下俯
PAN_LEFT23云台以SS的速度左转
PAN_RIGHT24云台以SS的速度右转
UP_LEFT25云台以SS的速度上仰和左转
UP_RIGHT26云台以SS的速度上仰和右转
DOWN_LEFT27云台以SS的速度下俯和左转
DOWN_RIGHT28云台以SS的速度下俯和右转
PAN_AUTO29云台以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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot集成Flowable工作流

文章目录 一、了解Flowable1. 什么是Flowable2. Flowable基本流程3. Flowable主要几张表介绍 二、SpringBoot集成Flowable1. 在idea中安装Flowable插件2. SpringBoot集成Flowable3. SpringBoot集成Flowable前端页面 三、创建流程模版(以请假为例) 提示:以下是本篇文…

这些企业已经有了HCM系统,为什么还要再单独上考勤系统?

最近有几家制造业和零售业的朋友咨询我考勤管理系统选型的问题,都集中在WFM方面的考勤咨询。 奇怪的是这些企业基本上都有一定的HR数字化基础,也上了HR主系统,甚至也实施了考勤系统,那为什么还要再上一个考勤系统呢? …

node cool-admin 后端宝塔面板看代码日志

1.需求 我在处理回调问题的时候 就是找不到问题,因为不像本地的代码 控制台能够直接打印出来问题,你是放在线上了 所以那个日志不好打印 我看网上都说是 直接用一个loger.js 打印 日志 放到代码文件里 这种方法也许有用 但是对我这框架cool来说 试了没有…

LabVIEW高精度主动模拟肺系统的开发与应用

在医疗设备的研发与测试中,高精度主动模拟肺系统扮演了不可或缺的角色。这种系统能够精确模拟人体的呼吸过程,对于呼吸机性能的测试、医疗人员的培训以及临床研究具有极其重要的意义。通过利用先进的硬件控制技术和软件算法,主动模拟肺系统能…

Pandas文本数据处理技术指南—从查找到时间序列分析【第66篇—python:文本数据处理】

文章目录 Pandas文本数据处理技术指南引言 1. 查找文本数据2. 替换文本数据3. 拼接文本数据4. 正则表达式操作5. 虚拟变量6. 处理缺失值7. 分割文本数据8. 字符串处理方法9. 文本数据的合并与连接10. 文本数据的排序11. 文本数据的统计分析12. 文本数据的分组与聚合13. 文本数据…

Java之泛型系列--继承父类与实现多个接口(有示例)

原文网址&#xff1a;Java之泛型系列--继承父类与实现多个接口(有示例)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍java如何用泛型表示继承父类并实现多个接口。 用泛型表示某个类是某个类的子类或者实现了接口的方法为&#xff1a;<T extends A & B & C> 用…

瑞芯微推理RKNN使用

参考资料 toolkit2 官网资料 野火实践指南 Ubuntu22.04实践 安装toolkit2 安装命令pip3 install -r xxx/packages/requirements_cp310-1.6.0.txt pip3 install xxx/packages/rknn_toolkit2-1.6.081f21f4d-cp310-cp310-linux_x86_64.whl注意加上 -i xxx 可能会造成下载tf-es…

react中hook封装一个table组件

目录 react中hook封装一个table组件依赖CommonTable / index.tsx使用组件效果 react中hook封装一个table组件 依赖 cnpm i react-resizable --save cnpm i ahooks cnpm i --save-dev types/react-resizableCommonTable / index.tsx import React, { useEffect, useMemo, use…

4. ⼤模型微调方法

到底有哪些微调⽅法呢&#xff1f; 第⼀类⽅法&#xff1a;借助OpenAI提供的在线微调⼯具进⾏微调&#xff1b;第⼆类⽅法&#xff1a;借助开源微调框架进⾏微调&#xff1b; 1. OpenAI在线微调⼯具 网址&#xff1a;https://platform.openai.com/docs/guides/fine-tuning/c…

跟着GPT学设计模式之原型模式

如果对象的创建成本比较大&#xff0c;而同一个类的不同对象之间差别不大&#xff08;大部分字段都相同&#xff09;&#xff0c;在这种情况下&#xff0c;我们可以利用对已有对象&#xff08;原型&#xff09;进行复制&#xff08;或者叫拷贝&#xff09;的方式来创建新对象&a…

EasyRecovery2024永久免费版电脑数据恢复软件下载

EasyRecovery数据恢复软件是一款非常好用且功能全面的工具&#xff0c;它能帮助用户恢复各种丢失或误删除的数据。以下是关于EasyRecovery的详细功能介绍以及下载步骤&#xff1a; EasyRecovery-mac最新版本下载:https://wm.makeding.com/iclk/?zoneid50201 EasyRecovery-win…

C++中的时间工具

目录 编译期有理数持续时间 duration时钟时间点 本文主要记录C标准中提供的时间处理工具&#xff0c;并提供简单实现的Linux平台的定时器demo C标准库中的chrono库提供了处理时间和日期相关的功能&#xff0c;头文件&#xff1a;#include<chrono>&#xff1b;这个库包含以…

一台Mac同时安装vue2和vue3

背景&#xff1a;电脑需要运行vue2和vue3项目&#xff0c;就得同时有vue2和vue3环境&#xff0c;之前以配置好vue2了&#xff0c;现在增加vue3 1. 新建一个安装vue3的目录 进入vue3文件夹安装vue3 // 注意这里没有参数-g&#xff0c;因为-g全局安装的命令 npm install vue/cli…

Yearning审核平台本地安装配置并结合内网穿透实现远程访问

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用…

Linux的Vi编辑器显示行数

前言 要在Vi编辑器中显示行数&#xff0c;您可以使用以下方法&#xff1a; 临时显示 进入Vi编辑器。按下 Esc 键确保你处于普通模式。输入 :set number 并按下 Enter 键。 这样就会在Vi编辑器的左侧显示行号。如果想要关闭行号显示&#xff0c;可以输入 :set nonumber 并…

Rust安装——Win10

安装步骤 1、下载RUSTUP-INIT.EXE&#xff08;64-BIT&#xff09; 2、由于国外源下载依赖太慢&#xff0c;因此建议增加win10环境变量配置国内源&#xff0c;增加RUSTUP_DIST_SERVER、RUSTUP_UPDATE_ROOT环境变量即可 RUSTUP_DIST_SERVER随便选择其中的一个源就行&#xff0c;…

人工智能|深度学习——使用多层级注意力机制和keras实现问题分类

代码下载 使用多层级注意力机制和keras实现问题分类资源-CSDN文库 1 准备工作 1.1 什么是词向量? ”词向量”&#xff08;词嵌入&#xff09;是将一类将词的语义映射到向量空间中去的自然语言处理技术。即将一个词用特定的向量来表示&#xff0c;向量之间的距离&#xff08;例…

学习感觉累 速度慢 反应迟钝 容易忘记 说话累 学习的后勤保障

学习的后勤保障 1、睡眠质量 2、精神勿过度紧张 3、过度用脑 4、适量运动 5、营养充足 6、保持新鲜生活每一天 7、简约生活&#xff0c;适中。 8、保持各方面状态良好 身体比较虚弱&#xff0c;气血不足&#xff0c;说话没几句就很累。 身体虚弱和气血不足的问题需要从多方面…

2.6学习总结10

动态规划 知识点 动态规划是一种解决问题的策略&#xff0c;适用于具有重叠子问题和最优子结构性质的问题。 动态规划的基本思想是将原问题分解为一系列子问题&#xff0c;通过求解子问题的最优解来得到原问题的最优解。在求解子问题时&#xff0c;利用已经求解过的子问题的…

力扣热门100题 - 3.无重复字符的最长子串

力扣热门100题 - 3.无重复字符的最长子串 题目描述&#xff1a;示例&#xff1a;提示&#xff1a;解题思路 &#xff08;滑动窗口 哈希表&#xff09;&#xff1a;代码&#xff1a; 题目链接&#xff1a;3. 无重复字符的最长子串 题目描述&#xff1a; 给定一个字符串 s &…