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

一、总体方案设计

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

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.rhkb.cn/news/253080.html

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

相关文章

如何修改远程端服务器密钥

前言 一段时间没改密码后,远程就会自动提示CtrlAltEnd键修改密码。但我电脑是笔记本,没有end键。打开屏幕键盘按这三个键也没用。 解决方法 打开远程 1、远程端WINC 输入osk 可以发现打开了屏幕键盘 2、电脑键盘同时按住CtrlAlt(若自身电…

【iOS ARKit】人形提取

为解决人形分离和深度估计问题,ARKit 新增加了 Segmentation Buffer(人体分隔缓冲区)和Estimated Depth Data Buffer(深度估计缓冲区)两个缓冲区。人体分隔缓冲区作用类似于图形渲染管线中的 Stencil Buffer&#xff0…

机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

文章目录 1.K-近邻算法思想2.K-近邻算法(KNN)概念3.电影类型分析4.KNN算法流程总结5.k近邻算法api初步使用机器学习库scikit-learn1 Scikit-learn工具介绍2.安装3.Scikit-learn包含的内容4.K-近邻算法API5.案例5.1 步骤分析5.2 代码过程 1.K-近邻算法思想 假如你有一天来到北京…

2月6日作业

1.现有无序序列数组为23,24,12,5,33,5347&#xff0c;请使用以下排序实现编程 函数1:请使用冒泡排序实现升序排序 函数2:请使用简单选择排序实现升序排序 函数3:请使用快速排序实现升序排序 函数4:请使用插入排序实现升序排序 #include<stdio.h> #include<string.h&…

嵌入式软件bug分析基本要求

摘要&#xff1a;软件从来不是一次就能完美的&#xff0c;需要以包容的眼光看待它的残缺。那问题究竟为何产生&#xff0c;如何去除呢&#xff1f; 1、软件问题从哪来 软件缺陷问题千千万万&#xff0c;主要是需求、实现、和运行环境三方面。 1.1 需求描述偏差 客户角度的描…

十分钟GIS——geoserver+postgis+udig从零开始发布地图服务

1数据库部署 1.1PostgreSql安装 下载到安装文件后&#xff08;postgresql-9.2.19-1-windows-x64.exe&#xff09;&#xff0c;双击安装。 指定安装目录&#xff0c;如下图所示 指定数据库文件存放目录位置&#xff0c;如下图所示 指定数据库访问管理员密码&#xff0c;如下图所…

正点原子--STM32通用定时器学习笔记(2)

1. 通用定时器输入捕获部分框图介绍 捕获/比较通道的输入部分&#xff08;通道1&#xff09; 输入通道映射CC1S[1:0]→采样频率CKD[1:0]→滤波方式IC1F[3:0]→边沿检测方式CC1P→捕获分频ICPS[1:0]→使能捕获CC1E 输入部分对相应的TIx输入信号采样&#xff0c;并产生一个滤波后…

【Linux取经路】探寻shell的实现原理

文章目录 一、打印命令行提示符二、读取键盘输入的指令三、指令切割四、普通命令的执行五、内建指令执行5.1 cd指令5.2 export指令5.3 echo指令 六、结语 一、打印命令行提示符 const char* getusername() // 获取用户名 {return getenv("USER"); }const char* geth…

【教程】Linux使用git自动备份和使用支持文件恢复的rm命令

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 背景介绍 首先非常不幸地告诉你&#xff1a;Linux 系统的标准 rm 命令不支持文件恢复功能。一旦使用 rm 删除了文件或目录&#xff0c;它们就会从文件系统中永久删除&#xff0c;除非你使用专门的文件恢复工具尝试…

【Spring基础】从0开始学习Spring(2)

前言 在上篇文章&#xff0c;我已经讲了Spring中最核心的知识点&#xff1a;IoC&#xff08;控制反转&#xff09;以及DI&#xff08;依赖注入&#xff09;。这篇文章&#xff0c;我将讲一下关于Spring框架中的其它比较琐碎但是又还是挺重要的知识点&#xff0c;因此&#xff…

灵敏可靠的缓激肽(Bradykinin)ELISA检测试剂盒

灵敏可靠的ELISA试剂盒&#xff0c;用于检测血浆、血清和尿液样本中的缓激肽 缓激肽&#xff08;Bradykinin&#xff09;于1949年被发现&#xff0c;由血浆中的球蛋白前体在蛋白酶的作用下生成。它的名字表明它会促使肠道缓慢运动。早在1909年&#xff0c;人们就注意到在尿液中…

动态内存管理(2)

文章目录 4. 几个经典的笔试题4.1 题目14.2 题目24.3 题目34.4 题目4 5. C/C程序的内存开辟6. 动态通讯录7. 柔性数组7.1 柔性数组的特点7.2 柔性数组的使用7.3 柔性数组的优势 4. 几个经典的笔试题 4.1 题目1 #include <stdio.h> #include <stdlib.h> #include …

【极数系列】Flink集成KafkaSink 实时输出数据(11)

文章目录 01 引言02 连接器依赖2.1 kafka连接器依赖2.2 base基础依赖 03 使用方法04 序列化器05 指标监控06 项目源码实战6.1 包结构6.2 pom.xml依赖6.3 配置文件6.4 创建sink作业 01 引言 KafkaSink 可将数据流写入一个或多个 Kafka topic 实战源码地址,一键下载可用&#xf…

零代码3D可视化快速开发平台

老子云平台 老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自主可控的自动化3D云引擎。此技术已经在全球申请了专利…

李宏毅LLM——生成式学习的两种策略

文章目录 生成式学习的两种策略&#xff1a;各个击破和一次到位成为专才&#xff1a;成为通才神秘的 In-context Learning 能力Instruction LearningChain of Thought Prompting 生成式学习的两种策略&#xff1a;各个击破和一次到位 对应视频的 P7-P11 生成有结构的复杂物件也…

(2)(2.14) SPL Satellite Telemetry

文章目录 前言 1 本地 Wi-Fi&#xff08;费用&#xff1a;30 美元以上&#xff0c;范围&#xff1a;室内&#xff09; 2 蜂窝电话&#xff08;费用&#xff1a;100 美元以上&#xff0c;范围&#xff1a;蜂窝电话覆盖区域&#xff09; 3 手机卫星&#xff08;费用&#xff…

React+Echarts实现数据排名+自动滚动+Y轴自定义toolTip文字提示

1、效果 2、环境准备 1、react18 2、antd 4 3、代码实现 原理&#xff1a;自动滚动通过创建定时器动态更新echar的dataZoom属性startValue、endValue&#xff0c;自定义tooltip通过监听echar的鼠标移入移出事件&#xff0c;判断tooltTip元素的显隐以及位置。 1、导入所需组…

CSS太极动态图

CSS太极动态图 1. 案例效果 我们今天学习用HTML和CSS实现动态的太极&#xff0c;看一下效果。 2. 分析思路 太极图是由两个旋转的圆组成&#xff0c;一个是黑圆&#xff0c;一个是白圆。实现现原理是使用CSS的动画和渐变背景属性。 首先&#xff0c;为所有元素设置默认值为0…

uniapp 本地存储的方式

1. uniapp 本地存储的方式 在uniapp开发中&#xff0c;本地存储是一个常见的需求。本地存储可以帮助我们在客户端保存和管理数据&#xff0c;以便在应用程序中进行持久化存储。本文将介绍uniapp中本地存储的几种方式&#xff0c;以及相关的代码示例。 1.1. 介绍 在移动应用开发…

【成品论文】2024美赛B题完整成品论文23页+3小问matlab代码+数据集汇总

2024 年美国大学生数学建模竞赛&#xff08;2024 美赛&#xff09;B 题&#xff1a; 2024 MCM 问题 B: 搜寻潜水艇 题目翻译&#xff1a; Maritime Cruises Mini-Submarines (MCMS)是一家总部位于希腊的公司&#xff0c;专门制造能够携 带人类到达海洋最深处的潜水艇。潜水艇是…