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

modelbox,姿态,匹配,抖抖,手动,动脚,深呼吸 · 浏览次数 : 84

小编点评

**二次开发案例:姿态匹配** **简介:** 本文使用 Windows 版本的 ModelBox SDK 进行二次开发,主要针对姿态匹配案例开发实践。作者吴小鱼分享了从华为云社区《姿态匹配:抖抖手动动脚勤做深呼吸》中学习的姿势匹配案例,并使用 ModelBox SDK 进行二次开发。 **工程目录:** * single_human_pose - 原有基础版本 * build_project.sh - 二次开发文件 **主要修改:** * 新增一个 `draw_pose.toml` 文件,配置流单元类型。 * 新增关键点匹配算法,计算欧几里得距离。 * 修改 `data_pre` 和 `data_post` 方法,处理关键点匹配结果。 * 使用摄像头运行技能流程图。 **其他改变:** * 巨佬飞戈在基础案例上开发了一个体感小游戏。 * 示例代码可从 obs桶下载。 **结果:** 该案例可用于演示姿态匹配算法,并可根据需要进行修改和扩展。

正文

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

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

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

pose

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

本案例使用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书籍等多重好礼,还等什么,马上报名吧!

报名链接:http://su.modelarts.club/5a7o

 

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

与ModelBox姿态匹配:抖抖手动动脚勤做深呼吸相似的内容:

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

摘要:本案例使用Windows版本的ModelBox SDK进行二次开发,主要是针对姿态匹配案例开发实践。 本文分享自华为云社区《姿态匹配:抖抖手动动脚勤做深呼吸》,作者:吴小鱼。 在之前发布的AI说ModelBox推理真的高效吗一文中,我们使用双阶段单人人体关键点检测作为案例对比测试了ModelB

快速识别你家的猫猫狗狗,教你用ModelBox开发AI萌宠应用

本文介绍了如何使用ModelBox开发一个动物目标检测的AI应用,从而掌握图片标注、数据处理和模型训练方法,以及对应的推理应用逻辑。

ModelBox实战开发:RK3568实现摄像头虚拟背景

摘要:本文将使用ModelBox端云协同AI开发套件(RK3568)实现摄像头虚拟背景AI应用的开发。 本文分享自华为云社区《ModelBox开发案例 - RK3568实现摄像头虚拟背景【玩转华为云】》,作者:AI练习生 。 本文将使用ModelBox端云协同AI开发套件(RK3568)实现摄像头虚

如何使用ModelBox快速提升AI应用性能?

摘要:在开发初期开发者往往聚焦在模型的精度上,性能关注较少,但随着业务量不断增加,AI应用的性能往往成为瓶颈,此时对于没有性能优化经验的开发者来说往往需要耗费大量精力做优化性能,本文为开发者介绍一些常用的优化方法和经验。 本文分享自华为云社区《如何使用ModelBox快速提升AI应用性能》,作者:

当线下门店遇上AI:华为云ModelBox携手佳华科技客流分析实践

摘要:在赋能传统门店客流经营数字化转型方面,华为云ModelBox与伙伴佳华科技合作推出的“华为云客流统计项目”,算是一次成功的探索。 本文分享自华为云社区《当线下门店遇上AI—华为云ModelBox携手佳华科技客流分析实践》,作者: 华为云社区精选 。 现如今,AI技术蓬勃发展,相关的理论技术和应

程序员买啥游戏机,自己动手做一个体感小游戏

摘要:结合一个仿制的简易Flappy Bird游戏,ModelBox体感小游戏就这样诞生了。 本文分享自华为云社区《ModelBox开发案例 - 体感小游戏》,作者:菊厂飞戈。 前段时间,小鱼老师在AI说发布了文章 ModelBox推理真的高效吗,里面介绍了双阶段单人人体关键点检测案例,运行速度超快

带你动手做AI版的垃圾分类

摘要:本案例将使用YOLOX模型,实现一个简单的垃圾分类应用。 本文分享自华为云社区《ModelBox社区案例 - 使用YOLOX做垃圾分类》,作者:HWCloudAI。 1 ModelBox社区案例 - 使用YOLOX做垃圾分类 本案例将使用YOLOX模型,实现一个简单的垃圾分类应用,最终效果如下