ModelBox姿态匹配:抖抖手动动脚勤做深呼吸

news2025/4/12 16:23:01
摘要:本案例使用Windows版本的ModelBox SDK进行二次开发,主要是针对姿态匹配案例开发实践。

本文分享自华为云社区《姿态匹配:抖抖手动动脚勤做深呼吸》,作者:吴小鱼。

在之前发布的AI说ModelBox推理真的高效吗一文中,我们使用双阶段单人人体关键点检测作为案例对比测试了ModelBox的性能。作为一个性能测试案例我们只是简单的将检测到的关键点画在原图上,并未进行进一步的应用开发。昨晚做梦,梦到关键点检测案例哭诉大材小用为何对它弃之不理明明广阔天地大有可为,愧疚之下连夜写了这篇动手动脚的案例 ,最终效果如下:

画面左上角随机绘制一个标准姿势,同时检测用户的姿态与标准姿势进行相似性比对,得分绘制在画面中央。如果得分超过阈值,则视为姿态一致,将更新下一个标准姿势。

本案例使用Windows版本的ModelBox SDK进行二次开发。如果对此还不熟悉,请先阅读ModelBox端云协同AI开发套件(Windows)开发环境篇,如果对ModelBox AI应用开发感兴趣,欢迎参加我们的ModelBox实战营。

工程目录

本案例是在single_human_pose应用基础上修改而来,案例所需资源(代码、模型、测试数据等)均可从obs桶下载。工程目录与原始版本基本一致,下面列出其中不一样的地方:

single_human_pose
    ├─data
    │  └─norm_kpts.npy                  // 标准姿态关键点
    ├─etc
    │  └─flowunit                       // 功能单元目录
    │      ├─draw_pose                  // 关键点绘制功能单元
    │         ├─draw_pose.py            // 关键点绘制功能单元入口文件
    │         ├─draw_pose.toml          // 关键点绘制功能单元配置文件
    │         ├─draw_utils.py           // 关键点匹配算法
    │         └─smooth.py               // 平滑算法,使关键点更稳定
    │      ├─...                        // 其他功能单元
    ├─graph
    │  └─single_human_pose.toml         // 默认技能流程图,使用摄像头运行
    ├─...
    └─build_project.sh

主要的不同点有两处:

1.我们希望姿态与标准姿态匹配得分超过阈值后持续展示几帧匹配结果,使结果更可感,这就需要draw_pose单元是有序的,所以我们在关键点绘制功能单元配置文件draw_pose.toml中将单元类型改为流单元:

 # Flowunit Type
 stream = true # Whether the flowunit is a stream flowunit

同时要在draw_pose.py中补充流单元需实现的接口data_pre、data_post:

def data_pre(self, data_context):
 # Before streaming data starts
 return modelbox.Status()
def data_post(self, data_context):
 # After streaming data ends
 return modelbox.Status()

2.draw_utils.py中新增关键点匹配算法,主要思路是将检测到的关键点对检测框进行归一化处理后与标准关键点计算oks:

 def compute_kpts_oks(self, dt_kpts, area=1):
     g = np.array(self.target_kpt)
 xg = g[:, 0]
 yg = g[:, 1]
     d = np.array(dt_kpts)
 xd = d[:, 0]
     yd = d[:, 1]
 vd = d[:, 2]

     dx = xd - xg
 dy = yd - yg
     e = (dx ** 2 + dy ** 2) / self.variances / (area + np.spacing(1)) / 2
     e = e[vd > self.kpts_thre]
 return np.sum(np.exp(-e)) / e.shape[0] if e.shape[0] else 0.0

为防止某些低置信度关键点漂移影响相似性计算,我们只取置信度大于kpts_thre的关键点计算得分。

此外,一时手痒替换了人形检测模型,检测的前后处理以及技能流程图稍有改变;如果使用原本的检测模型只修改上述部分也可以正常运行。由于本项目随机选择标准姿势,所以只提供了使用摄像头运行的技能流程图。

运行项目

打开工程目录下bin/mock_task.toml文件,设置其中的任务输入和任务输出配置为如下内容:

[input]
type = "url"
url = "0"
# 任务输出,目前仅支持"webhook", 和本地输出"local"(输出到屏幕,url="0", 输出到rtsp,填写rtsp地址)
# (local 还可以输出到本地文件,这个时候注意,文件可以是相对路径,是相对这个mock_task.toml文件本身)
[output]
type = "local"
url = "0:Pose"

即使用编号为0的摄像头(默认为PC自带的摄像头),输出画面显示到名为Pose的本地屏幕窗口中。

执行bin/main.bat 运行应用,就可以开始伸展胳膊腿儿了:

另外,巨佬飞戈在single_human_pose应用基础上开发了体感小游戏,有兴趣的朋友可以玩一下。

可以看到,在基础案例上进行简单的二次开发即可得到一个可玩应用,期待大家脑洞大开让基础案例们都可以一展抱负

11月3号晚19点,将进行AI养猪 实时看护猪的健康直播,华为云AI发烧友在线带你学习ModelBox框架,快速AI应用,实现AI监测猪的健康状态。

参与直播互动,有机会赢取华为自拍杆、雷柏机械键盘、ModelArts书籍等多重好礼,还等什么,马上报名吧!

报名链接:AI养猪 实时看护猪的健康_开发者-华为云

点击关注,第一时间了解华为云新鲜技术~

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

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

相关文章

对于含有琥珀酰亚胺酯的叠氮试剂Azidoacetic Acid NHS Ester,N3-C5-NHS ester,N3-C3-NHS ester 知识分享

本文重点为大家总结关于含有琥珀酰亚胺酯基团的叠氮基相关试剂的性质特点,西安凯新生物科技有限公司​主要从Azidoacetic Acid NHS Ester、N3-C5-NHS ester、N3-C3-NHS ester进行分享。 一、Azidoacetic Acid NHS Ester CAS:824426-32-6 中文名&#xff…

Linux shell脚本之回顾及实用笔记

一、前言 我们从事运维的小伙伴,除了自动化运维外,在没有自动化条件下,借助shell脚本/Python脚本来提升运维效率,无疑是一个必选项,当前也可以自建自动化运维平台,我们这里还是以Linux shell脚本为主,来汇总一些常用的运维脚本,对于有基础的同学,也随本文一起回顾下相…

【学习笔记】《模式识别》2:聚类分析

聚类分析 文章目录聚类分析一、聚类分析的概念二、相似性的测度1.距离的四条基本公理2.欧氏距离(Euclid,欧几里得)--距离3.马氏距离(Maharanobis)4.马氏距离与欧氏距离之间的关系5.明氏距离(Minkowaki)6.汉…

4款实用的黑科技软件,白嫖党最爱,功能强大到离谱

闲话少说,直上干货。 1、Dism 这是一款国人研发,免费又好用的电脑优化工具,备受全球电脑爱好者追捧,它解决了系统安装与维护两大痛点问题——自定义设置与优化,相当于给电脑请了免费“保姆”。从系统安装到调校&#x…

LabVIEW基础-VI Scripting

文章目录使用过程前面板界面修改属性节点VI属性无输入时默认当前VI。输入VI引用的静态方法输入VI引用的动态方法获取对象引用从VI获取前面板所有控件的引用设置修饰物的前景色获取选项卡1上所有的数值控件并设置标签前景色从VI获取前面板选项卡的引用-转换为特定的类-获取选项卡…

B+树的插入、删除和分裂,注意国内教材和国外的对于B+树的定义的不同

B树 1 国内教材上B树的定义 一棵 m 阶的B树满足 (考研教材): 每个非叶子结点最多有 m 棵子树(孩子结点)根结点至少有2棵子树 (1层除外),非叶结点至少有 m/2 (向上取整) 棵子树结点的子树的个数与关键字的个数相等: 介于 m/2 (向…

DSL查询文档

目录一、DSL查询语法二、DSL查询分类全文检索查询精确查询地理坐标查询复合查询复合查询——fuction score复合查询——Boolean Query三、搜索结果处理排序分页高亮一、DSL查询语法 DSL Query基本语法 查询成功 二、DSL查询分类 DSL Query的分类 Elasticsearch提供了基于…

【数据结构基础】之树的介绍,生动形象,通俗易懂,算法入门必看

前言 本文为 数据结构基础【树】 相关知识,下边将对树的定义与相关概念,二叉树的定义、特点与性质,二叉树的存储结构,二叉树的遍历,二叉查找树,平衡二叉树,红黑树,B-树与B树等进行详…

六十九、Vue3

Vue3一 Vue3的变化二 创建Vue3项目的两种方式2.1 vue-cl创建2.2 vite创建三 常用API3.1 setup3.2 ref和reactive3.3 计算和监听属性3.4 生命周期3.5 自定义hook函数一 Vue3的变化 性能的提升 打包大小减少41% 初次渲染快55%, 更新渲染快133% 内存减少54% 源码的升级 使用Proxy…

Spring Boot 并行任务,这才是优雅的实现方式!

Spring Boot 的定时任务: 第一种:把参数配置到.properties文件中: 代码: package com.accord.task;import java.text.SimpleDateFormat; import java.util.Date;import org.springframework.scheduling.annotation.Scheduled; …

不会Python迟早失业?Python何以成为找工作必备技能(资料下载)

前言 大数据时代,没听说过Python的人可能很少。(文末送福利) 未来和data与AI紧密连接的当下,金融公司纷纷改成Fintech(financial technology),投行热衷于向科技公司砸钱,就连卖汉堡…

推进生态社会化分工 与伙伴共担未来 数商云受邀出席京东科技合作伙伴论坛

11月1日,2022京东云城市峰会上海站正式启幕。京东科技携手生态伙伴,共聚“合作伙伴论坛”。作为京东集团科技生态的总担当,京东科技秉承“生态社会化分工”理念,与伙伴共担未来。会上,8大场景合作案例依次分享&#xf…

STM32单片机可变频率幅度DDS信号发生器正弦波三角波方波AD9833

实践制作DIY- GC0094-DDS信号发生器 一、功能说明: 基于STM32单片机设计-DDS信号发生器 功能介绍: 硬件组成:STM32F103C系列最小系统板 LCD1602显示器AD9833信号模块4*4矩阵键盘多个按键 1.通过4*4键盘来设定频率值和三角波正弦波的幅度&…

内网搭建图片网站:软件安装配置 1-3

现代的手机功能越来越强大,也让我们能随时随地抓拍有趣瞬间。而照片越来越多,全都存放在手机上并不现实,存在云端又有安全隐患,只能存放在自己的电脑上。而这又带来难以随时与他人分享的问题。不过,我们完全可以在自己…

智能网联赋能汽车品牌全球化 第五届全球汽车发展趋势论坛将召开

当前,全球汽车产业正处于百年未遇的大变革时期,全球汽车产业格局正在重塑,其中,中国汽车产业正在依靠智能化、网联化优势不断加深在全球汽车市场中的影响力,正在迈入高质量发展的新阶段。如何利用智能网联技术以及顺应…

单片机毕业设计 stm32智能婴儿床系统

文章目录1 简介2 项目背景3 设计概要4 设计方案5 硬件清单5.1 stm32主控5.2 OLED显示屏5.3 继电器模块5.4 L298N电机驱动板模块5.5 MAX声音传感模块 一个5.6 Jdy-311蓝牙模块5.7 音乐播放模块6 软件部分设计6.1 声音传感器子函数6.2 声音传感器软件7 实现效果8 关键代码1 简介 …

大数据行业现在工作很难找吗?

工作到底好不好找,市场需求是一方面,更多的还是要看个人成长背景和实际能力~ 抛开两点都不谈就单说好找或者不好找纯属有点耍流氓了~ 大数据开发主要是负责大数据挖掘,大数据清洗处理,大数据建模等,负责大规模数据的处…

C动态内存管理|有张三和如花的故事你心动了吗

C内存管理C程序地址空间为什么存在?1.堆区空间足够大2.堆区空间大小更为灵活动态内存函数mallocfreefree的注意事项内存泄漏没有free和free另外的细节不可对堆区的空间多次释放释放后要对指针置为NULL,避免野指针free(NULL)会有影响吗callocreallocreall…

报表工具怎么选?JAVA开源工具那么好用,为什么大家还花钱买商用

做报表很长时间了,最近发现一个比较奇怪的现象:各家工具使出各种手段做广告、吸引注意力,但是受到程序员热烈追捧的反倒一直是 Jaspereport + ireport 这种免费、开源的 JAVA 工具,几个开了专版讨论 JAVA 报表的论坛里…

场景应用:你知道 i = i++;的含义么?

文章目录引言正文题目原理i i;呢?总结引言 今年面试官小姐姐问了一个灵魂问题:i0; i i;等于多少? 当时人就傻了 当然,面试官小姐姐还是很可爱的,人也很好,让我研究一下,好,那么…