基于YOLOv5的多目标社交距离监测系统(yolov5实现多目标检测,距离太近为红色,距离过近为黄色,距离适中为绿色)

ops/2024/9/23 11:12:59/

本项目旨在利用计算机视觉技术,特别是目标检测算法,来实时监测公共场合中人群的社交距离情况。通过摄像头或视频输入,系统能够识别并跟踪个体,评估它们之间的距离,并根据这些距离来判断是否符合推荐的社交距离标准。系统将通过颜色编码来直观地表示不同个体间的距离状态,使观察者能够快速了解现场的安全状况。

技术栈

  • YOLOv5:作为主要的目标检测模型,用于检测视频帧中的人体。
  • OpenCV:用于视频处理和图像操作。
  • Python:编程语言。
  • NumPy:进行数值计算。
  • Pandas(可选):数据处理与分析。

功能描述

  1. 人体检测:使用YOLOv5模型实时检测视频中的所有个体。
  2. 个体跟踪:对检测到的个体进行跟踪,以便持续监测其位置变化。
  3. 距离计算:计算个体之间的距离,并基于此距离进行分类。
  4. 颜色编码
    • 当两个个体之间的距离小于某个阈值时,标记为红色,表示距离过近,存在高风险。
    • 当两个个体之间的距离位于两个阈值之间时,标记为黄色,表示距离较近,存在中等风险。
    • 当两个个体之间的距离大于某个安全阈值时,标记为绿色,表示距离适中,风险较低。
  5. 可视化输出:在视频帧中标记每个个体的位置,并根据它们之间的距离用不同的颜色编码表示风险等级。

实现流程

  1. 环境搭建:安装必要的Python库,如YOLOv5、OpenCV等。
  2. 数据准备:获取训练YOLOv5模型所需的标注数据集。
  3. 模型训练:训练YOLOv5模型以精确地检测人体。
  4. 后处理:实现距离计算逻辑以及个体跟踪机制。
  5. 颜色编码与输出:开发颜色编码方案,并将其应用于视频输出。
  6. 测试与优化:对系统进行全面测试,并根据反馈进行优化。

关键代码片段

这里提供一个简化的代码示例来说明如何实现上述功能:

import cv2
import numpy as np
from ultralytics import YOLO# 初始化YOLOv5模型
model = YOLO('yolov5s.pt')# 安全距离阈值设置
SOCIAL_DISTANCE_THRESHOLD = 1.5  # 米
CLOSE_DISTANCE_THRESHOLD = 0.75  # 米# 颜色定义
RED = (0, 0, 255)
YELLOW = (0, 255, 255)
GREEN = (0, 255, 0)# 视频捕获
video_capture = cv2.VideoCapture('path/to/video.mp4')# 主循环
while True:ret, frame = video_capture.read()if not ret:break# 使用YOLOv5进行人体检测results = model(frame)# 提取检测结果detections = results[0].boxes.xyxy.cpu().numpy()scores = results[0].boxes.conf.cpu().numpy()classes = results[0].boxes.cls.cpu().numpy()# 获取检测到的人体框person_boxes = detections[classes == 0]  # 假设0代表人体类别# 计算每个个体中心点centers = [(int((x1 + x2) / 2), int((y1 + y2) / 2)) for x1, y1, x2, y2 in person_boxes]# 绘制每个个体的位置for center in centers:cv2.circle(frame, center, 5, GREEN, -1)# 计算个体间距离并标记for i, (cx1, cy1) in enumerate(centers):for j, (cx2, cy2) in enumerate(centers):if i < j:distance = np.sqrt((cx1 - cx2)**2 + (cy1 - cy2)**2)# 根据距离标记颜色if distance <= CLOSE_DISTANCE_THRESHOLD:color = REDelif distance <= SOCIAL_DISTANCE_THRESHOLD:color = YELLOWelse:color = GREENcv2.line(frame, (cx1, cy1), (cx2, cy2), color, 2)# 显示帧cv2.imshow("Social Distance Monitoring", frame)# 按'q'退出if cv2.waitKey(1) & 0xFF == ord('q'):break# 清理资源
video_capture.release()
cv2.destroyAllWindows()

结论

该系统能够有效地监测公共场合中的社交距离,帮助维护公共卫生安全。通过实时的颜色编码反馈,可以提高公众对保持适当社交距离的认识,并促进社区内的健康行为。


http://www.ppmy.cn/ops/94054.html

相关文章

React 学习——react项目中加入echarts图

实现的代码如下&#xff1a; import * as echarts from echarts import { useEffect, useRef } from react; const Home ()>{const chartRef useRef(null);useEffect(()>{// const chartDom document.getElementById(main);//使用id获取节点const chartDom chartRef…

从0开始的算法(数据结构和算法)基础(八)

说了这么久的数据结构&#xff0c;理论性比较强&#xff0c;下面我们来进入算法部分&#xff0c;运用之前学的数据结构来实现算法。今天的主体部分是排序&#xff0c;难度不大。 排序 排序的算法是比较简单实用的算法&#xff0c;也是很多的算法的基础。也分很多种&#xff0c…

简单的射箭小游戏网页源码

简单的射箭小游戏网页源码,对准靶心开启你的射击之旅吧 微信扫码免费获取源码

(源码)Springboot项目集成Activiti工作流,前端Vue,Bpmn.js

前言 activiti工作流引擎项目&#xff0c;企业erp、oa、hr、crm等企事业办公系统轻松落地&#xff0c;一套完整并且实际运用在多套项目中的案例&#xff0c;满足日常业务流程审批需求。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器&#xff0c;流行的前后端…

多云网络部署存在挑战,F5分布式云应用简化方案解读

伴随着人工智能与云计算领域的深度融合与集中爆发&#xff0c;企业在多云环境中面临着挑战&#xff0c;包括复杂性、成本和风险的增加等……对于高度敏捷企业中的开发团队而言&#xff0c;传统网络的沉重运维成本和低效率将会成为发展的障碍。作为一家提供多云应用安全和应用交…

从0开始搭建vue + flask 旅游景点数据分析系统(九):旅游景点管理之增删改查

这一期来做旅游景点数据的增删改查 先看下我们做好的效果是这样的&#xff1a; ## 1 后台接口 这里的接口已经考虑到了分页的情况&#xff0c;因为前端的表格是带有分页的&#xff0c;接受的前端传过来的get参数为 title 、page、 limit &#xff0c;titie是查询的关键词&…

【初阶数据结构题目】28. 层序遍历

层序遍历 除了先序遍历、中序遍历、后序遍历外&#xff0c;还可以对二叉树进行层序遍历。 设二叉树的根结点所在层数为1&#xff0c;层序遍历就是从所在二叉树的根结点出发&#xff0c;首先访问第一层的树根结点&#xff0c;然后从左到右访问第2层上的结点&#xff0c;接着是…

【活动报名】打造编程学习“知识宝库”:高效笔记记录与整理指南

如何高效记录并整理编程学习笔记&#xff1f; 在编程学习的旅程中&#xff0c;拥有一套高效的笔记记录和整理方法至关重要。以下将从三个方向为您详细介绍如何打造属于自己的编程学习“知识宝库”。 方向一&#xff1a;笔记工具选择 选择合适的笔记工具是高效记录编程学习笔记…