yolov8 人体姿态识别

引言

在计算机视觉的各种应用中,人体姿态检测是一项极具挑战性的任务,它能够帮助我们理解人体各部位的空间位置。本文将详细介绍如何使用 YOLOv8 和 Python 实现一个人体姿态检测系统,涵盖模型加载、图像预处理、姿态预测到结果可视化的全流程实现。本文只做了行走,站立,跳三种姿态判断,需要其他姿态可自行添加。

效果

在这里插入图片描述

开发环境

  • Python 3.8+
  • PyTorch 1.7+
  • OpenCV 4.5+
  • ultralytics YOLOv8

1. 模型加载与初始化

首先,我们需要一个 YOLOv8 的预训练模型,该模型可以从 Ultralytics 官方网站下载。加载模型的主要目的是将其调整到评估模式,确保在推断时模型的表现为最优。

import torchclass YOLOv8Pose:def __init__(self, model_path, device='cpu', conf=0.25, iou=0.7):self.model = self.load_model(model_path, device)# 其他初始化设置def load_model(self, model_path, device):ckpt = torch.load(model_path, map_location=device)model = ckpt['model'].to(device).eval()return model

2. 图像预处理

图像预处理是检测流程中不可或缺的一部分,我们需要调整图像的大小以适应模型的输入要求,同时进行归一化处理。

import cv2 as cv
from ultralytics.data.augment import LetterBoxdef preprocess(self, img_path):im = cv.imread(img_path)im = self.letterbox(im)im = im[..., ::-1].transpose((0, 3, 1, 2))  # BGR to RGBim = np.ascontiguousarray(im)im = torch.from_numpy(im).to(self.device).float() / 255.0return im

3. 推断与后处理

使用加载的模型进行前向推断,并对输出的检测结果进行处理。

def infer(self, img):preds = self.model(img)# 使用非极大抑制处理预测结果return predsdef postprocess(self, prediction):# 调整预测框,解析关键点return results

4. 结果可视化

对检测到的姿态进行可视化,包括绘制边框、关键点和骨骼连接。

def draw_results(self, image, results):# 使用 OpenCV 绘制结果return image

5. 整合与测试

将上述所有步骤整合到一个流程中,对指定的图片进行处理并展示结果。

if __name__ == "__main__":yolov8 = YOLOv8Pose(model_path='yolov8s-pose.pt')img_path = 'path_to_image.png'img = yolov8.preprocess(img_path)prediction = yolov8.infer(img)results = yolov8.postprocess(prediction)final_image = yolov8.draw_results(img, results)cv.imshow('Detection Results', final_image)cv.waitKey(0)

源码已上传到github,需要源码请私信或着评论区留下邮箱。


希望这篇博客能够帮助你理解并实践 YOLOv8 在人体姿态检测上的应用!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43705.shtml

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

相关文章

Echarts水球图(liquidFill)添加文字

效果 代码 {type: liquidFill,shape: shapes[0].value,radius: 90%,data: [{name: 独立百货,value: 0}],center: [50%, 50%],color: [{type: linear,x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0,color: #446bf5},{offset: 1,color: #2ca3e2}],globalCoord: false}],backgro…

JSP实现简单的登录和注册

JSP实现登录和注册(Map集合模拟数据库) 1、login.jsp2、 loginSelect.jsp3、register.jsp4、 RegisterSelect.jsp5、 index.jsp 1、login.jsp login.jsp中username和password在LoginSelect.jsp验证是否一致使用session.setAttribute("login_msg&quo…

RTOS系统 -- ARM Cortex-M4 RPMSG之通道初始化函数

RPMsg Lite 在 ARM Cortex-M4 RTOS 中的使用 简介 在ARM Cortex-M4处理器上使用的RTOS(实时操作系统)中,rpmsg_lite是一个轻量级的远程处理消息传递框架,通常用于多核处理器或多核系统中不同处理器之间的通信。本文档将介绍 rpm…

ffmpeg转换MP4为gif命令

这里记录一下使用 ffmpeg去转化 gif 的一些快捷命令 # 直接转换 ffmpeg -i 222.mp4 -r 12 222.gif# 调色板优化处理 ffmpeg -i 222.mp4 -r 12 -vf "split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" 222.gif第二条命令的解释如下: split[s0][s1]&am…

nginx设置代理解决跨域问题

vue工程 npm run build 后把dist包放到 nginx代理服务器的html目录,在conf/nginx.conf配置文件中增加配置,这样就可以正常方位后端接口了,配置如下: server {listen 8193;server_name localhost 127.0.0.1;location / {root D:…

【RHCE】dns实验0707

题目: 做法: 1.创建两个虚拟机 张三:且有加密 李四: 设置zhangsan/lisi对应的html网页 主服务器测试: 证书验证 2.配置dns 主服务器: 区域文件(zs/lisi) 从服务器: 且dns为主服务…

OZON生活家居用品爆款新品

OZON生活家居用品爆款新品涵盖了多个方面,这些产品不仅满足了消费者对生活品质的追求,也反映了当前市场的热门趋势。以下是一些在OZON平台上备受关注的生活家居用品爆款新品: OZON生活家居用品爆款新品工具:D。DDqbt。COm/74rD T…

Midway Serverless 发布 2

可以看看优化后的开发情况,不仅和应用一样,速度还比较快,也不会生成临时目录,修改实时生效。 这是 v2.0 和 v1.0 的根本性变化,也是整体架构升级带来的巨大优势。 当然,这一块并不是功能的新增&#xff0c…

UI 自动化分布式测试 -- Docker Selenium Grid

UI 自动化分布式测试 – Docker Selenium Grid Docker 和 Selenium Grid 的结合为分布式 UI 自动化测试提供了一种高效、可扩展且易于管理的方法。通过使用 Docker 容器化技术,测试环境的设置和配置变得更加简便和一致;而 Selenium Grid 则允许在多个节…

电脑清理c盘内存空间怎么清理免费 怎么清理c盘的垃圾文件又不删除有用文件

在计算机使用过程中,随着时间的推移,C盘空间可能会被各种临时文件、缓存和无用的注册表项占用。这不仅会导致C盘空间不足,还可能影响计算机的性能。那么怎么样清理C盘内存空间,怎么样清理C盘的垃圾避开系统文件呢? 一…

​​ 翻页 上一页/下一页

data里面定义 currentPage: 0 // 当前页数 created 初始化时赋值 this.formProps 是表格 要求是对象 this.contractArr 是传过来要进行分页的数组对象 初始化显示第一个created() {this.formProps this.contractArr[0]} html页面 <div><div>// 左箭头<s…

linux 进程堆栈分析

1.进程pid jsp -l | grep appName 或 ps -ef | grep appName 2.查看cpu top -c pidps -mp pid-o THREAD,tid,time / top -H -p pid #打印出进程对应的线程id及运行时间timeprintf %x\n 线程id3.查看gc jstat -gcutil | grep pid 500jstat -class pid4.查看进程日志 jsta…

数据分析案例-2024 年全电动汽车数据集可视化分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Navicat BI 教程 | 图表设计和仪表板

商业智能&#xff08;Business Intelligence&#xff0c;BI&#xff09;是将数据转化为可操作的洞察力的实践&#xff0c;使组织能够简化生产力和实现更好的整体绩效。本博客最近介绍了新的 Navicat BI&#xff0c;这是一个帮助 BI 专业人员通过创建数据可视化&#xff08;如图…

侯捷C++面向对象高级编程(上)-11-虚函数与多态

1.虚函数 2.virtual 3.继承&#xff0b;复合关系下的构造和析构 4.委托&#xff0b;继承

Shell学习——Shell运算符

文章目录 运算符算术运算符关系运算符布尔运算符逻辑运算符字符串运算符 运算符 算术运算符 #!/bin/bash a10 b20valexpr $a $b echo "a b : $val"valexpr $a - $b echo "a - b : $val"valexpr $a \* $b echo "a * b : $val"valexpr $b / $a…

C语言 | Leetcode C语言题解之第221题最大正方形

题目&#xff1a; 题解&#xff1a; int maximalSquare(char** matrix, int matrixSize, int* matrixColSize){int dp[301][301]{0};int wid0;if(matrixSize0&&matrixColSize[0]0){return 0;}for(int i0;i<matrixSize;i){for(int j0;j<matrixColSize[0];j){if(m…

Docker进入MongoDB

先是命令行开启docker镜像&#xff0c;然后进入docker镜像&#xff0c;这是两步 进入之后&#xff0c;开头会变成root&#xff0c;我的理解是进入了另一个linux系统了&#xff0c;直接执行相应的软件 这里直接use databse就是进入了&#xff0c;据说MongoDB是慢启动&#xff0c…

MMGPL: 多模态医学数据分析与图提示学习| 文献速递-基于深度学习的多模态数据分析与生存分析

Title 题目 MMGPL: Multimodal Medical Data Analysis with Graph Prompt Learning MMGPL: 多模态医学数据分析与图提示学习 01 文献速递介绍 神经学障碍&#xff0c;包括自闭症谱系障碍&#xff08;ASD&#xff09;&#xff08;Lord等&#xff0c;2018年&#xff09;和阿…

开发个人Go-ChatGPT–6 OpenUI

开发个人Go-ChatGPT–6 OpenUI Open-webui Open WebUI 是一种可扩展、功能丰富且用户友好的自托管 WebUI&#xff0c;旨在完全离线运行。它支持各种 LLM 运行器&#xff0c;包括 Ollama 和 OpenAI 兼容的 API。 功能 由于总所周知的原由&#xff0c;OpenAI 的接口需要密钥才…