当前位置: 首页 > news >正文

YOLO v8 目标检测识别翻栏

一、行人翻栏识别背景介绍

1.1跨越围栏是人类活动中一个普遍但需要引起警惕的行为。它不仅可能导致各种意外事故,甚至可能对个人的生命安全构成威胁。在交通领域,跨越围栏可能导致严重的交通事故,造成人员伤亡。在公共场所,如公园、广场等,跨越围栏可能破坏公共设施,给他人带来不便。此外,在某些特定场所,如军事禁区或危险区域,跨越围栏可能触犯法律,甚至构成犯罪行为。

为了降低这种危害,我们需要在多个层面进行防范和治理。首先,公众需要提高安全意识,认识到跨越围栏的危害。其次,政府和社会组织应加强监管,制定并执行相关法规,对违规行为进行惩处。最后,技术手段也是防范跨越围栏的有效途径。例如,通过算法识别技术,可以实时监测和预警潜在的跨越围栏行为,从而减少事故的发生。

2、围栏摄像识别介绍

2.1 摄像头结构:围栏监控摄像头通常由镜头、传感器、图像处理器、存储器等组成。镜头负责采集图像,传感器负责将光信号转换为电信号,图像处理器负责处理图像,存储器负责存储视频。

2.2 图像采集:通过镜头和传感器,摄像头采集图像信息。传感器将光信号转换为电信号,然后通过图像处理器进行处理。

2.3 图像处理:图像处理器对采集的图像进行处理,包括清晰度调整、色彩平衡等,以提高图像质量。

2.4 目标识别:通过图像处理,摄像头能够识别特定目标,如人、车辆等。这通常通过特征提取和匹配来实现。

2.5 运动追踪:摄像头可追踪目标的运动轨迹,实时监测。这通常通过目标跟踪算法来实现。

2.6 视频存储:摄像头将采集的视频存储在存储器中,方便后续查看。存储器可以是内置的,也可以是外接的。

2.7 数据分析:通过数据分析技术,可对存储的视频进行分析,提取有价值的信息。例如,可以分析目标的运动轨迹、行为模式等。

2.8 智能警告:当识别到异常情况时,摄像头会触发报警系统,通知管理者。这可以通过声音、光线、短信等方式实现。

2.9 网络传输:摄像头通过网络将采集的视频实时传输到管理平台。这可以通过有线或无线网络实现。

2.10 电源管理:为了确保摄像头的正常运行,需要采取有效的电源管理措施。例如,可以使用太阳能电池板或备用电源等。

二、算法目标

识别指定区域是否有有人进入改区域,并进行生成相应报警逻辑。

 

三、业务逻辑分析及算法实现

越界识别的功能实现,主要包括行人目标检测、行人追踪及越界识别判断三部分

 

1) 行人目标检测

这一部分主要利用YOLOv8算法实现。

 

首先基于YOLOv8目标检测算法训练一个检测行人(person)的权重person.pt。

 

参考之前代码:

 

Ctrl CV:YOLOV8血细胞检测

2 )行人目标追踪

目标追踪的实现主要是在实现目标检测的前提下,补充目标追踪功能,即通过追踪并绘制每个目标的track_id信息实现。

 

Ctrl CV:YOLOv8目标跟踪

Ctrl CV:YOLOv8_VisDrone2019目标跟踪、模型部署

3) 越界识别判断

(1)越界监测区域绘制

 

实现越界识别,即检测某个感兴趣区域,是否有人违规进入。所以首先需要设置一个感兴趣区域(监测区域),然后结合目标追踪判断是否有人员闯入检测区域内。代码如下:

 

# 绘制越界监测区域 points = [[593,176],[904,200],[835,323],[507,300]] color_light_green=(144, 238, 144) ##浅绿色 res_img = process_points(frame,points,color_light_green) cvs.imshow(res_img)

(2) 人体检测监测点调整

 

绘制好监测区域后,结合前面目标检测追踪部分,便可进行越界识别判断。这里需要注意的是在实际业务场景中,通常判断人体越界的点,主要用的是人体脚部的点。使用yolov8算法得到的是人物检测框的四个点信息[x,y,w,h],即目标框的左上角点的x,y坐标和宽w、高h,因此需要通过代码,转换成人体下方的点,即[左上角点x+1/2*宽w,左上角点y+高h]。转换代码如下:

 

# 2.计算得到人体下方中心点的位置(人体检测监测点调整) pt = [tlwh[0]+1/2*tlwh[2],tlwh[1]+tlwh[3]]

(3) 人体状态追踪判断

 

获取了人体的坐标信息,需要结合绘制的检测区坐标,判断人体是否在监测区域内,并将将人体的状态进行区分。比如将人体在监测区域内设置为1,不在监测区域内设置为-1。所以代码中需要判断每个人的运动状态,将每个人运动轨迹中,每一帧在图片上的状态统计下来。

 

# 3. 人体和违规区域的判断(人体状态追踪判断) track_info = is_in_poly(pt, points) if tid not in track_id_status.keys(): track_id_status.update( {tid:[track_info]}) else: if track_info != track_id_status[tid][-1]: track_id_status[tid].append(track_info)

(4)越界行为判断

 

基于上面对行人在视频中每一帧的移动轨迹中状态的记录,便可进一步判断行人是否越界。比如某个人当前一帧的状态是-1,后一帧的状态变成1时,说明刚刚进入越界区域,此时就将当前的图片进行保存,留作告警记录。代码如下:

 

# 4. 判断是否有track_id越界,有的话保存成图片 # 当某个track_id的状态,上一帧是-1,但是这一帧是1时,说明越界了 if track_id_status[tid][-1] == 1 and len(track_id_status[tid]) >1: # 判断上一个状态是否是-1,是否的话说明越界,为了防止继续判别,随机的赋了一个3的值 if track_id_status[tid][-2] == -1: track_id_status[tid].append(3) cv2.imwrite("overstep.jpg",res_img)

(5)越界识别&系统告警

 

一般在实际应用的项目业务系统中,需要对最后检测的报警信息进行通知警告Warning! ID信息,因此可进一步将记录的报警信息进行相应处理,找出越界人员。

相关文章:

  • IDEA之设置项目包的结构层级为eclipse默认样式
  • NoSQL 数据库有哪些典型应用?
  • 【产品经理】产品的实现,需要做好战略规划
  • Next.js加载异步组件 骨架屏
  • 【Vue原理解析】之响应式系统
  • 黑马头条--day01.环境搭建
  • 流量分析基础
  • 【MySQL】启动 和 连接 MySQL
  • Docker构建镜像时空间不足:/var/lib/docker,no space left on device
  • 智能优化算法应用:基于引力搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • QT----第三天,Visio stdio自定义封装控件,鼠标事件,定时器,事件分发器过滤器,绘图事件
  • K8s投射数据卷
  • 【Docker】离线一键式安装docker、docker-compose
  • Java EE 多线程之 JUC
  • 微信小程序(二) ——模版语法1
  • 【翻译】babel对TC39装饰器草案的实现
  • classpath对获取配置文件的影响
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JSONP原理
  • leetcode46 Permutation 排列组合
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React系列之 Redux 架构模式
  • 大整数乘法-表格法
  • 给github项目添加CI badge
  • 记录:CentOS7.2配置LNMP环境记录
  • 码农张的Bug人生 - 初来乍到
  • 你不可错过的前端面试题(一)
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用权重正则化较少模型过拟合
  • 微信开放平台全网发布【失败】的几点排查方法
  • 【云吞铺子】性能抖动剖析(二)
  • FaaS 的简单实践
  • 阿里云移动端播放器高级功能介绍
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​【已解决】npm install​卡主不动的情况
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • $(function(){})与(function($){....})(jQuery)的区别
  • ${ }的特别功能
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (四)汇编语言——简单程序
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)平衡树
  • 、写入Shellcode到注册表上线
  • ..回顾17,展望18
  • .NET CORE Aws S3 使用
  • .Net 垃圾回收机制原理(二)
  • .net(C#)中String.Format如何使用
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • @Autowired 与@Resource的区别