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

一、总体方案设计

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

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来说 试了没有…

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

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

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. ⼤模型微调方法

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

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

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

一台Mac同时安装vue2和vue3

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

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

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

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

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

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

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

step导入到solidworks外观处理方法

在导入到solidworks中的kuka机器人会变成灰色。看上去很不好看。如何才能大体恢复一下原外观呢?主要可以使用如下两种方法。 主要是使用了将里面的形状单独变成零件,方便装配,使机器人可以变化姿态。造成外观颜色丢失。 1.外观复制 如下图所…

springboot165科研工作量管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

WebSocket基础详解

文章目录 前言由来简介优缺点适用场景兼容性 API介绍构造函数实例方法send()close() 实例属性ws.readyState(只读)ws.bufferedAmount(只读)ws.binaryTypeextensions(只读)protocol(只读&#xf…

Power Designer的使用 创建数据库表模型,生成sql语句,生成C#实体类

几年前用过PowerDesigner,好几年没用,有点忘记了,在这里记个笔记,需要的时候翻一翻 PowerDesigner版本16.5 下面的例子是以MySQL数据库为准 生成C#实体类 一 安装 1.1 安装 不让放网盘链接,审核通不过。。。。 …

JCTC | 利用几何深度学习对蛋白质-配体结合pose进行等变灵活建模

Overview 该论文解决了药物开发中蛋白质-配体复合结构灵活建模的挑战。作者提出了一种名为FlexPose的新型深度学习框架,它可以直接对复杂结构进行建模,而不需要传统的采样和评分策略。 该模型结合了标量-向量双特征表示和 SE(3)等变网络设计来处理动态结…

用Python做一个文件夹整理工具

文章目录 目标文件夹对话框文件映射组件完整组件 此前曾经基于函数实现过这个功能:用Python做一个文件夹整理工具。这次基于面向对象的方法,重新实现这个小工具。 本文中提到的FileSystem,来自于这里:Python根据文件后缀整理文件…

2024年G3锅炉水处理证考试题库及G3锅炉水处理试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年G3锅炉水处理证考试题库及G3锅炉水处理试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大纲随机…

Linux安装Java

yum安装 下面命令直接复制粘贴一件安装java17 yum list installed | grep java #查看已经安装的javayum remove java* -y #移除现在系统已经安装的javayum list | grep java-17 #查看安装java17yum install -y java-17-openjdk #安装java17此处可…

Win32 SDK Gui编程系列之--弹出式菜单

1.弹出式菜单 例如,在命令提示窗口中点击鼠标右键,会出现如下图所示的弹出菜单(下拉菜单)。 这种弹出式菜单的实现很简单。不创建菜单栏,用CreatePopupMenu函数创建的菜单是最顶端的菜单就可以了。 菜单的显示使用TrackPopupMenu函数进行。 例如,点击鼠标右键显示弹出…