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

姿态分析开源工具箱MMPose使用示例:2d手势估计

      MMPose的介绍及安装参考:https://blog.csdn.net/fengbingchun/article/details/126676309,这里给出2d手势估计的测试代码,论文:《Simple Baselines for Human Pose Estimation and Tracking》:

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

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

      (2).通过MMDetection模块检测手:

def mmdet_hand_detection(device, image):
	path = "../../data/model/"
	checkpoint = "cascade_rcnn_x101_64x4d_fpn_20e_onehand10k-dac19597_20201030.pth"
	url = "https://download.openmmlab.com/mmpose/mmdet_pretrained/cascade_rcnn_x101_64x4d_fpn_20e_onehand10k-dac19597_20201030.pth"
	download_checkpoint(path, checkpoint, url)

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

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

	hand_results = process_mmdet_results(mmdet_results)

	mat = cv2.imread(image)
	for result in hand_results:
		print("result:", 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_hand_detection.png", mat)
	cv2.imshow("show", mat)
	cv2.waitKey(0)

	return hand_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 = "res50_onehand10k_256x256-e67998f6_20200813.pth"
url = "https://download.openmmlab.com/mmpose/top_down/resnet/res50_onehand10k_256x256-e67998f6_20200813.pth"
download_checkpoint(path, checkpoint, url)

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

config = "../../src/mmpose/configs/hand/2d_kpt_sview_rgb_img/topdown_heatmap/onehand10k/res50_onehand10k_256x256.py"
model = init_pose_model(config, path+checkpoint, device)

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

pose_results, returned_outputs = inference_top_down_pose_model(model, image, hand_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_hand_pose_estimation.png")

      执行结果如下图所示:

 

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

相关文章:

  • MySQL分页查询
  • 第22篇 基础 (二十二)手把手教学 Qt 操作 ini 文件(详解)
  • Linux CentOS 8(用户管理)
  • 算法---找出数组中的所有孤独数字(Kotlin)
  • 【Git命令】git commit --amend
  • 高级js 面向对象 和面向过程 三种函数
  • Linux常用命令:htop(交互式进程查看器)【后台运行及查看状态命令】【top命令的升级版】
  • Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机GA遗传算法PSO粒子群优化算法)、案例应用之详细攻略
  • 计算机操作系统学习(三)处理器管理(2)
  • Linux常用的命令
  • App稳定性优化及Crash率破解之道
  • 【web-代码审计】(14.2)常见漏洞签名
  • 【数据结构】
  • webpack、Vue——笔试题/面试题
  • queue和priority_queue使用+模拟实现
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript异步流程控制的前世今生
  • Java比较器对数组,集合排序
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Netty源码解析1-Buffer
  • node入门
  • rc-form之最单纯情况
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Terraform入门 - 3. 变更基础设施
  • 产品三维模型在线预览
  • 技术胖1-4季视频复习— (看视频笔记)
  • 聚类分析——Kmeans
  • 区块链技术特点之去中心化特性
  • 算法系列——算法入门之递归分而治之思想的实现
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​学习一下,什么是预包装食品?​
  • #pragma once
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (SpringBoot)第二章:Spring创建和使用
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计高校学生选课系统
  • (南京观海微电子)——COF介绍
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • .gitignore文件_Git:.gitignore
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Framework杂记
  • @Service注解让spring找到你的Service bean
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [C++]18:set和map的使用
  • [codevs1288] 埃及分数
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
  • [git]git命令如何取消先前的配置
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
  • [IE9] IE9 beta版下载链接
  • [linux学习]apt-get参数解析