姿态分析开源工具箱MMPose使用示例:人体姿势估计

2023-10-27

      MMPose的介绍及安装参考:https://blog.csdn.net/fengbingchun/article/details/126676309,这里给出人体姿势估计的测试代码,论文:《Deep high-resolution representation learning for human pose estimation》:

      (1).准备测试图像:原始图像来自网络

image_path = "../../data/image/"
image_name = "human.png"

      (2).通过MMDetection模块检测人体框:注,为了去除伪人体框,这里设置了一个阈值,只有大于此阈值的框才作为后面的人体姿势估计

def mmdet_human_detection(device, image, threshold=0.9):
	path = "../../data/model/"
	checkpoint = "faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth"
	url = "https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth"
	download_checkpoint(path, checkpoint, url)

	config = "../../src/mmpose/demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py"
	model = init_detector(config, path+checkpoint, device)

	mmdet_results = inference_detector(model, image)
	# print(mmdet_results)

	human_results = process_mmdet_results(mmdet_results)
	# print(human_results)

	filter_results = []
	mat = cv2.imread(image)
	for result in human_results:
		print("result:", result)
		if result['bbox'][4] > threshold:
			filter_results.append(result)
			cv2.rectangle(mat, (int(result['bbox'][0]), int(result['bbox'][1])), (int(result['bbox'][2]), int(result['bbox'][3])), (255, 0, 0), 1)

	cv2.imwrite("../../data/result_mmpose_2d_human_detection.png", mat)
	cv2.imshow("show", mat)
	cv2.waitKey(0)

	return filter_results

 

      (3).下载人体姿势估计模型: 

def download_checkpoint(path, name, url):
	if os.path.isfile(path+name) == False:
		print("checkpoint(model) file does not exist, now download ...")
		subprocess.run(["wget", "-P", path, url])

path = "../../data/model/"
checkpoint = "hrnet_w48_coco_256x192-b9e0b3ab_20200708.pth"
url = "https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w48_coco_256x192-b9e0b3ab_20200708.pth"
download_checkpoint(path, checkpoint, url)

      (4).根据配置文件和checkpoint文件构建人体估计模型:

config = "../../src/mmpose/configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/coco/hrnet_w48_coco_256x192.py"
model = init_pose_model(config, path+checkpoint, device)

      (5).进行人体姿势估计推理,输入包括检测到的人体框:

pose_results, returned_outputs = inference_top_down_pose_model(model, image, human_bbox_results, bbox_thr=None, format='xyxy')
print(pose_results)

      (6).显示及保存结果:

vis_pose_result(model, image, pose_results, radius=1, thickness=1, show=True, out_file="../../data/result_mmpose_2d_human_pose_estimation.png")

      执行结果如下图所示: 

      GitHub: https://github.com/fengbingchun/PyTorch_Test

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

姿态分析开源工具箱MMPose使用示例:人体姿势估计 的相关文章

随机推荐

  • 【C++】类的默认成员函数(上)

    文章目录 类的默认成员函数 1构造函数 1 1构造函数特征 1 2编译器自动生成的构造函数 1 3编译器默认的构造函数 1 4C 11特征 2析构函数 2 1特征 2 2编译器默认的析构函数 3拷贝构造函数 3 1特征 3 2编译器默认生成
  • ssh渗透与hydra爆破(简明不啰嗦)

    适合新手上路 MSF与hydra两种方式渗透22端口 后进行远程连接 如有不足请各位见谅 此次实验仅供参考 切勿做违法犯罪 出事一切与本人无关后果自负 希望大家早日成为白帽子 渗透机 kali 靶机 192 168 75 128 1 扫描局
  • vim配置全攻略(2)——vim的简单配置

    这篇文章主要讲的是vim的简单配置 相对于vim内置的一些快捷键和功能 vim的客制化才是vim的灵魂 也是vim存活31年仍被热衷的原因 如果你还不了解vim的基本操作和体系 我建议你看一下我上一篇文章 vim配置全攻略 1 vim的基本
  • 【ARM】rk3399挂载nfs报错

    挂载nfs报错mount mnt bad option for several filesystems e g nfs cifs you might need a sbi 实验1 无效 sudo apt get install cifs u
  • 基于Spring Cloud实现日志管理模块

    简介 无论在什么系统中 日志管理模块都属于十分重要的部分 接下来会通过注解 AOP MQ的方式实现一个简易的日志管理系统 思路 注解 标记需要记录日志的方法 AOP 通过AOP增强代码 利用后置 异常通知的方式获取相关日志信息 最后使用MQ
  • Python+Django+Nginx+Uwsgi(史上最全步骤)

    步骤 Python安装 第一步安装Python 很多购买的服务器linux系统中自带python2和python3 我是直接使用自带的python3 5版本的 如果系统中没有 则自己安装 如下 1 下载 wget https www pyt
  • 手写一个解析器

    作者 jolamjiang 腾讯 WXG 前端开发工程师 前言 最近工作中有一些同学在做一些效能工具的时候遇到需要写一门领域相关语言 DSL 及其解析器的场景 笔者恰好有相关的经验向大家指一下北 首先请问一下大家有没有想过这个功能怎么做 点
  • MNIST2_LGB_XGB训练预测

    针对MNIST数据集进行XGB LGB模型训练和预测 部分脚本如下 完整脚本见笔者github lgb param boosting gbdt num iterations 145 num threads 8 verbosity 0 lea
  • 如何实现区块链技术安全?

    随着人们对区块链技术的研究与应用 区块链系统除了其所属信息系统会面临病毒 木马等恶意程序威胁及大规模DDoS攻击外 还将由于其特性而面临独有的安全挑战 区块链可能是安全的 但所有与之交互的软件都是如此 在许多情况下 没有 那么区块链究竟如何
  • 选择排序分析动图演示

    选择排序 思路总结 1 首先在未排序序列中找到最小 大 元素 存放到排序序列的起始位置 2 再从剩余未排序元素中继续寻找最小 大 元素 然后放到已排序序列的末尾 3 重复第二步 直到所有元素均排序完毕 动图演示 代码示例 public st
  • SpringMvc项目配置根据环境自动读取不同的配置文件

    将原有的配置文件拷贝一份 分别放在不同的文件夹内 2 application context xml中读取配置文件的地方 引入变量
  • 小程序实现弹出输入框

    1 微信自带组件 样式 wxml
  • (Chrome42)Lodop页面总提示“未安装”或“请升级”的可能原因和解决办法

    Chrome42之后版本 支持NP插件默认处于关闭状态 要手工打开 方法如下 在谷歌浏览器地址栏输入 chrome flags enable npapi 然后找到 启用NPAPI 地方看到处于启用状态 另外64位Chome不支持js方式访问
  • C语言典型例题八——阶乘

    用递归方法求n 解题思路 求n 可以用递推方法 即从1开始 乘2 再乘3 一直乘到n 这种方法容易理解 也容易实现 递推法的特点是从一个已知的事实 如1 1 出发 按一定规律推出下一个事实 如2 1 2 再从这个新的已知的事实出发 再向下推
  • Acwing 895. 最长上升子序列

    f i 表示所有以第i个数结尾的上升子序列中的最大个数 f i max f j 1 j 0 1 2 i 1 include
  • Openwrt开发笔记(1)—— 开发环境

    OpenWrt简介 OpenWrt 是一个嵌入式设备的 Linux 发行版 以 GPL 许可协议发行 其主要特点有如下几个 代码里不含第三方开源包 只包含开源包地址链接 在编译的时候下载 编译时自动下载源代码 打补丁来满足指定平台要求 并编
  • Oracle生成不重复字符串 sys_guid()

    在oracle8i以后提供了一个生成不重复的数据的一个函数sys guid 一共32位 生成的依据主要是时间和机器码 具有世界唯一性 类似于java中的UUID 都是世界唯一的 其优点就是生成的字符串是唯一的 但其和UUID有同样的弊端 生
  • 论文笔记:FILLING THE G AP S: MULTIVARIATE TIME SERIES IMPUTATION BY GRAPH NEURAL NETWORKS

    0 abstract introduction 之前的补全方法并不能很好地捕获 利用 不同sensor之间的非线性时间 空间依赖关系 高效的时间序列补全方法 不仅应该考虑过去 或者未来 的数值 还应该同时考虑空间上邻近的点的测量值 这里的空
  • 抖音超火的网页表白代码大全(浪漫的html表白源代码)

    精彩专栏推荐 作者主页 进入主页 获取更多源码 web前端期末大作业 HTML5网页期末作业 1000套 程序员有趣的告白方式 HTML七夕情人节表白网页制作 125套 七夕来袭 是时候展现专属于程序员的浪漫了 你打算怎么给心爱的人表达爱意
  • 姿态分析开源工具箱MMPose使用示例:人体姿势估计

    MMPose的介绍及安装参考 https blog csdn net fengbingchun article details 126676309 这里给出人体姿势估计的测试代码 论文 Deep high resolution repres