深度学习目标检测构建基于YOLOv8的人体动作识别系统,如何使系统能够通过GUI界面支持图片、视频和摄像头输入,来识别人体动作站立,行走,摔倒,弯腰,坐立进行检测

article/2025/6/16 11:40:05

深度学习目标检测构建基于YOLOv8的人体动作识别系统,如何使系统能够通过GUI界面支持图片、视频和摄像头输入,来识别人体动作站立,行走,摔倒,弯腰,坐立进行检测

文章目录

      • 1. 环境配置
      • 2. 数据准备与模型训练
      • 3. 构建GUI界面
        • Streamlit应用代码
      • 注意事项
      • 1. 环境配置
      • 2. 数据准备与模型训练
      • 3. 构建GUI界面
        • Streamlit应用代码
      • 注意事项

站立,行走,摔倒,弯腰,坐立进行识别

构建一个基于YOLOv8的人体动作识别系统,该系统能够通过GUI界面支持图片、视频和摄像头输入,并提供如打开摄像头、关闭摄像头、上传图片、开始识别等功能。以下是实现这个系统的步骤和代码示例。

1. 环境配置

首先,确保安装了必要的库:

pip install ultralytics opencv-python-headless streamlit torch torchvision

2. 数据准备与模型训练

识别6种人体动作(站立、行走、摔倒等)的预训练YOLOv8模型。,需要先准备数据集并进行模型训练。于如何使用已训练好的模型。

3. 构建GUI界面

我们将使用Streamlit来创建一个简单的Web应用作为我们的GUI界面。完整的示例代码,包括了打开摄像头、关闭摄像头、上传图片、开始识别、保存预测结果等功能。

Streamlit应用代码
import streamlit as st
from ultralytics import YOLO
import cv2
import numpy as np
from PIL import Image
import tempfile# 加载YOLOv8模型
model = YOLO('yolov8n-pose.pt')  # 假设已经有一个针对人体动作识别微调过的模型def process_image(image):results = model(image)for result in results:boxes = result.boxes.cpu().numpy()for box in boxes:r = box.xyxy[0].astype(int)conf = box.confcls = int(box.cls)label = f'{model.names[cls]} {conf:.2f}'cv2.rectangle(image, (r[0], r[1]), (r[2], r[3]), (255, 0, 0), 2)cv2.putText(image, label, (r[0], r[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)return imagest.title("Human Action Recognition System")option = st.sidebar.selectbox("Choose Input Type", ("Image", "Video", "Camera"))if option == "Image":uploaded_file = st.file_uploader("Upload an image", type=['png', 'jpg'])if uploaded_file is not None:image = Image.open(uploaded_file)image = np.array(image)processed_image = process_image(image)st.image(processed_image, caption="Processed Image")if st.button('Save Result'):with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as tmp_file:Image.fromarray(processed_image).save(tmp_file.name)st.write(f"Saved to {tmp_file.name}")elif option == "Camera":run = st.checkbox('Open/Close Camera')FRAME_WINDOW = st.image([])camera = cv2.VideoCapture(0)while run:_, frame = camera.read()frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)processed_frame = process_image(frame)FRAME_WINDOW.image(processed_frame)if any([result.boxes.shape[0] > 0 for result in model(frame)]):with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as tmp_file:Image.fromarray(processed_frame).save(tmp_file.name)st.write(f"Screenshot saved to {tmp_file.name}")else:camera.release()elif option == "Video":uploaded_video = st.file_uploader("Upload a video", type=['mp4'])if uploaded_video is not None:tfile = tempfile.NamedTemporaryFile(delete=False)tfile.write(uploaded_video.read())cap = cv2.VideoCapture(tfile.name)while cap.isOpened():ret, frame = cap.read()if not ret:breakframe = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)processed_frame = process_image(frame)st.video(processed_frame)if st.button('Save Video Result'):# 这里添加保存处理后视频的逻辑passcap.release()

注意事项

  • 上述代码中,process_image函数用于处理输入图像或视频帧,并在图像上绘制检测到的目标及其标签。
  • 对于视频和摄像头输入,由于Streamlit本身的限制,直接显示处理后的视频流可能会遇到性能问题。考虑使用其他框架(如Flask结合前端技术)可能更合适。
  • 在实际部署时,可能需要根据具体需求调整UI设计和功能细节。

以上就是一个基本的基于YOLOv8的人体动作识别系统的设计思路及其实现代码。根据您的具体需求,您可以进一步扩展和优化这个系统。 在这里插入图片描述1
在这里插入图片描述
1
在这里插入图片描述
在这里插入图片描述
构建一个基于YOLOv8的人体动作识别系统,该系统能够通过GUI界面支持图片、视频和摄像头输入,并提供如打开摄像头、关闭摄像头、上传图片、开始识别等功能。以下是实现这个系统的步骤和代码示例。

1. 环境配置

首先,确保安装了必要的库:

pip install ultralytics opencv-python-headless streamlit torch torchvision

2. 数据准备与模型训练

假设您已经有了一个可以识别6种人体动作(站立、行走、摔倒等)的预训练YOLOv8模型。如果没有,需要先准备数据集并进行模型训练。这里不详细展开模型训练过程,重点在于如何使用已训练好的模型。

3. 构建GUI界面

我们将使用Streamlit来创建一个简单的Web应用作为我们的GUI界面。下面是一个完整的示例代码,包括了打开摄像头、关闭摄像头、上传图片、开始识别、保存预测结果等功能。

Streamlit应用代码
import streamlit as st
from ultralytics import YOLO
import cv2
import numpy as np
from PIL import Image
import tempfile# 加载YOLOv8模型
model = YOLO('yolov8n-pose.pt')  # 假设已经有一个针对人体动作识别微调过的模型def process_image(image):results = model(image)for result in results:boxes = result.boxes.cpu().numpy()for box in boxes:r = box.xyxy[0].astype(int)conf = box.confcls = int(box.cls)label = f'{model.names[cls]} {conf:.2f}'cv2.rectangle(image, (r[0], r[1]), (r[2], r[3]), (255, 0, 0), 2)cv2.putText(image, label, (r[0], r[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)return imagest.title("Human Action Recognition System")option = st.sidebar.selectbox("Choose Input Type", ("Image", "Video", "Camera"))if option == "Image":uploaded_file = st.file_uploader("Upload an image", type=['png', 'jpg'])if uploaded_file is not None:image = Image.open(uploaded_file)image = np.array(image)processed_image = process_image(image)st.image(processed_image, caption="Processed Image")if st.button('Save Result'):with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as tmp_file:Image.fromarray(processed_image).save(tmp_file.name)st.write(f"Saved to {tmp_file.name}")elif option == "Camera":run = st.checkbox('Open/Close Camera')FRAME_WINDOW = st.image([])camera = cv2.VideoCapture(0)while run:_, frame = camera.read()frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)processed_frame = process_image(frame)FRAME_WINDOW.image(processed_frame)if any([result.boxes.shape[0] > 0 for result in model(frame)]):with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as tmp_file:Image.fromarray(processed_frame).save(tmp_file.name)st.write(f"Screenshot saved to {tmp_file.name}")else:camera.release()elif option == "Video":uploaded_video = st.file_uploader("Upload a video", type=['mp4'])if uploaded_video is not None:tfile = tempfile.NamedTemporaryFile(delete=False)tfile.write(uploaded_video.read())cap = cv2.VideoCapture(tfile.name)while cap.isOpened():ret, frame = cap.read()if not ret:breakframe = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)processed_frame = process_image(frame)st.video(processed_frame)if st.button('Save Video Result'):# 这里添加保存处理后视频的逻辑passcap.release()

注意事项

  • 上述代码中,process_image函数用于处理输入图像或视频帧,并在图像上绘制检测到的目标及其标签。
  • 对于视频和摄像头输入,由于Streamlit本身的限制,直接显示处理后的视频流可能会遇到性能问题。考虑使用其他框架(如Flask结合前端技术)可能更合适。
  • 在实际部署时,可能需要根据具体需求调整UI设计和功能细节。

以上就是一个基本的基于YOLOv8的人体动作识别系统的设计思路及其实现代码。根据您的具体需求,您可以进一步扩展和优化这个系统。


http://www.hkcw.cn/article/sXOKQtXbZL.shtml

相关文章

猫粮哪个牌子质量好性价比高?安全猫粮选购推荐

从开始养猫到现在也算是有10年的铲屎年龄了,先后经历了膨化粮、烘焙猫粮以及猫罐头的喂养时期。结果这么多年过去了,现在喂的最多的还是烘焙猫粮,低温工艺留住大部分营养,不会让猫咪黑下巴,适口性也更好,性…

重塑在线软件开发新纪元:集成高效安全特性,深度解析与评估会员与促销管理系统的系统架构设计

案例 阅读以下关于软件架构设计与评估的叙述,回答问题1和问题2。 【题目】 某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管…

【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制

Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 在上篇我们已经学习了关于线程的大部分知识,包括线程概念和线程控制等内容,今天我们来学习一下使用线程要做到的很…

飞牛的ipv6已动态解析到阿里云,访问显示不安全?教你绑定免费SSL证书

前言 最近有很多小伙伴陆续通过DDNS-GO做好了飞牛的ipv6动态解析了,如果还没有弄,又不知道文章在哪,可以点击下方这篇教程: 飞牛NAS有IPV6,想用DDNS-GO动态解析到域名?这简单了! 很多搞定了的…

银河麒麟桌面操作系统V10 SP1:取消安装应用的安全授权认证

银河麒麟桌面操作系统V10 SP1:取消安装应用的安全授权认证 💖The Begin💖点点关注,收藏不迷路💖 使用银河麒麟V10 SP1安装应用时,若频繁遇到安全授权认证提示,可按以下步骤设置: 打开…

最新Spring Security实战教程(十二)CORS安全配置 - 跨域请求的安全边界设定

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…

解决Windows安全中心显示空白页面

1、电脑重装系统后,发现原本一些软件打不开了,电脑莫名认为有病毒,自动删除插件。附图。 2、第一反应是电脑防火墙的原因,默认威胁防护识别到了病毒软件,自动删除。在开始屏幕搜Windows安全中心,打开之后发…

Python全流程开发实战:基于IMAP协议安全下载个人Gmail邮箱内所有PDF附件

文章目录 一、需求分析与安全前置:为什么需要专用工具?1.1 痛点场景1.2 技术方案选择 二、准备工作:Gmail账号安全配置与环境搭建2.1 开启两步验证(必做!)2.2 创建应用专用密码(替代普通密码&am…

【网络安全论文】筑牢局域网安全防线:策略、技术与实战分析

【网络安全论文】筑牢局域网安全防线:策略、技术与实战分析 简述一、引言1.1 研究背景1.2 研究目的与意义1.3 国内外研究现状1.4 研究方法与创新点二、局域网网络安全基础理论2.1 局域网概述2.1.1 局域网的定义与特点2.1.2 局域网的常见拓扑结构2.2 网络安全基本概念2.2.1 网络…

评论员点评郑钦文无缘四强 体能优势未转化

北京时间6月3日,在2025年法网女单1/4决赛中,郑钦文以0-2的成绩不敌萨巴伦卡,遗憾未能晋级四强。赛后,资深评论员许旸对比赛进行了点评。许旸表示,这场比赛让人感到不甘心,郑钦文未能将体能优势转化为战斗力。特别是在第二盘,不仅体能没有得到充分利用,技术上的发挥也非…

【吾爱】逆向实战crackme160破解记录(一)

前言 最近想拿吾爱上的crackme程序练练手,发现论坛上已经有pk8900总结好的160个crackme,非常方便,而且有很多厉害的前辈已经写好经验贴和方法了,我这里只是做一下自己练习的记录,欢迎讨论学习,感谢吾爱论坛…

媒体:硬碰硬才是郑钦文的底色 移山之路无悔前行

面对高山,有人绕路,有人架桥,郑钦文选择移山。第八次和萨巴伦卡交手,郑钦文用硬碰硬的方式展示自己强悍的底色。虽然再次失败,依然无怨无悔。这才是郑钦文的网球为人所爱的原因。她的正手轰球已经让高山颤抖。如果郑钦文在第一盘4比2领先时拿下那两次网前机会球,比赛结果…

德国驻华大使馆祝樊振东大展身手 加盟萨尔布吕肯开启新挑战

6月3日,德国驻华大使馆发文祝贺樊振东加盟德国萨尔布吕肯乒乓球俱乐部。奥运冠军、世界冠军樊振东正式成为德国乒乓球甲级联赛(TTBL)俱乐部——萨尔布吕肯1.FC的一员。樊振东表示,他非常期待在萨尔布吕肯和TTBL的全新挑战,渴望成为这家俱乐部的一员,体验新的环境,并与球…

“俄版珍珠港事件”会否引爆核战争 乌无人机袭击引发紧张态势

就在俄乌定于6月2日举行第二轮直接谈判前夕,当地时间6月1日,俄罗斯境内发生了一系列事件。先是桥梁因爆炸坍塌,随后五个空军基地遭遇大规模无人机袭击。乌克兰安全局宣称对此次袭击负责,这是自俄乌冲突爆发以来乌军对俄领土发动的最具渗透性的袭击之一。俄罗斯国防部认定这…

5个月女婴心脏手术后出现脑损伤 家属质疑治疗过程

近日,四川的徐女士反映,她5个多月大的孩子鱼鱼在四川大学华西第二医院锦江院区做完心脏相关手术后,头部莫名出现一个创口。经检查,鱼鱼被诊断为脑出血和脑损伤,后续还伴有癫痫。当地卫健委介入调查后未能得出明确结论。5月29日,记者在事发医院看到,已经一岁多的鱼鱼仍旧…

SpringBoot1--简单体验

1 Helloworld 打开:https://start.spring.io/ 选择maven配置。增加SpringWeb的依赖。 Generate之后解压,代码大致如下: hpDESKTOP-430500P:~/springboot2/demo$ tree ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── s…

乌蛛网行动有多惊艳 无人机开启新战局

乌克兰在大规模使用无人机发动特种攻击方面再次震惊了世界。6月1日,乌克兰国家安全局对俄罗斯境内多地的军用机场发动大规模无人机攻击,声称摧毁了“多达41架战略轰炸机”。俄罗斯方面表示乌军造成的损失没有那么大,但承认了乌军无人机成功袭击的事实。西方媒体称,这种无人…

永辉超市设首席采购官一职 供应链改革加码

6月3日,永辉超市确认佘咸平已就任该公司首席采购官,负责采购和供应链方面的事务。这一任命是永辉超市在供应链改革方面的重要举措。公开资料显示,佘咸平于2002年加入山姆中国采购部,先后担任过山姆北方区采购总监、全国生鲜采购总监等职位。2016年,他加入盒马,担任过盒马…

男子被困河道中间 飞手用无人机救援 2分钟成功营救

男子被困河道中间 飞手用无人机救援 2分钟成功营救!近日,在浙江丽水,一名垂钓爱好者因突降暴雨导致河水暴涨而被困河道中央。当地无人机飞手陈先生迅速出动,仅用2分钟就成功将被困者吊运至安全地带。执行此次救援任务的无人机原本用于农业植保作业,其最大起飞重量符合国家…

外国游客在三亚连救两溺水者 英勇行为获网友点赞

6月2日,一名外国游客在海南三亚勇救两名溺水者的视频引起了广泛关注。许多网友留言表示希望能找到这位救人者,请他吃饭。据视频拍摄者称,2日晚7时20分左右,在三亚椰梦长廊附近海域有人溺水并呼救。他立即拨打了报警电话。这时,一名外国游客毫不犹豫地朝溺水者游去,并成功…