【一步步开发AI运动小程序】二十一、如果将AI运动项目配置持久化到后端?
说明:本文所涉及的AI运动识别、计时、计数能力,都是基于云智「Ai运动识别引擎」实现。云智「Ai运动识别」插件识别引擎,可以为您的小程序或Uni APP赋于原生、本地、广覆盖、高性能的人体识别、姿态识别、10余种常见的运动计时、计数识别及自定义扩展运动识别能力。完善的文档、Demo项目,开箱即用,可以帮助您快速实现AI运动、AI体育、AI运动赛事、全民健身赛事、AI体测等应用场景的快速落地。
一、为什么要将运动配置持久化到后端?
当我们根据应用场景重新调整内置运动检测参数或者扩展了新运动项目,发布小程序、APP后,若在运行时发现运动参数不合适需要调整时,便需要重新发布小程序或者APP,这个发布过程需要耗费短则几个小时,长则一两天;不便于运营。
若将运动检测的各项参数持久化到后端,这样便可以避免因为运动调整频繁发布小程序、APP新版本,让用户获得更好的体验。
二、需要持久化的那些配置数据?
运动检测的常规参数有Key、Name和TickMode,这是基本的必须的参数,剩的检测规则rules或姿态样本samples则取决于选择何种运动识别方案,若基于body-calc规则识别则持久化rules,基于相似度方案则持久化samples。
三、如果实现持久化配置?
识别引擎的接口设计便考虑了规则和样本便于持久化,根据上面要持久化的数据,我们可以构建出的持久化数据结构如下:
{
"key": "demo",
"name": "测试运动",
"samples": {
"basic": {
"keypoints": [{
"y": 66.0156295428602,
"x": 196.24999974976453,
"score": 0.3974609375,
"name": "nose"
},
{
"y": 56.99219681226278,
"x": 204.68749974880043,
"score": 0.395263671875,
"name": "left_eye"
},
{
"y": 56.48437477557764,
"x": 188.12499975069284,
"score": 0.353759765625,
"name": "right_eye"
},
{
"y": 63.867192043105675,
"x": 217.18751882085854,
"score": 0.6533203125,
"name": "left_ear"
},
{
"y": 60.78125454345827,
"x": 174.99999975219248,
"score": 0.49560546875,
"name": "right_ear"
},
...
]
}
},
"rules": {
"name": '撑状态检查',
"calc": '$and',
"rules": [{
"name": '手臂垂直撑起',
"calc": '$or',
"rules": [{
"name": '左手臂垂直',
"calc": 'vertical',
"upperKey": 'left_shoulder',
"centerKey": 'left_elbow',
"lowerKey": 'left_wrist',
"offset": 20
}, {
"name": '右手臂垂直',
"calc": 'vertical',
"upperKey": 'right_shoulder',
"centerKey": 'right_elbow',
"lowerKey": 'right_wrist',
"offset": 20
}]
}, {
"name": '手臂与腰部垂直',
"calc": '$or',
"rules": [{
"name": '左手臂与腰齐垂直',
"calc": 'match-angle',
"angleKey": 'left_shoulder',
"secondKey": 'left_elbow',
"thirdKey": 'left_hip',
"angle": 90,
"offset": 25
}, {
"name": '右手臂与腰齐垂直',
"calc": 'match-angle',
"angleKey": 'right_shoulder',
"secondKey": 'right_elbow',
"thirdKey": 'right_hip',
"angle": 90,
"offset": 25
}]
}, {
"name": '腿部绷直',
"calc": '$or',
"rules": [{
"name": '左腿绷直',
"calc": 'match-angle',
"angleKey": 'left_knee',
"secondKey": 'left_ankle',
"thirdKey": 'left_hip',
"angle": 160,
"offset": 20
}, {
"name": '右腿绷直',
"calc": 'match-angle',
"angleKey": 'right_knee',
"secondKey": 'right_ankle',
"thirdKey": 'rgight_hip',
"angle": 160,
"offset": 20
}]
}]
}
}
以上便是基本持久化结构,其它的可以根据需要添加字段,持久化到关系数据库、文件、mongodb文档数据库等都可。
除了提供AI运动识别引擎外;还可以使用运动自动适配工具快速适配运动;还有可直接在AI云上赛事、全民健身线上运动、学生体测场落地的「AI乐运动」产品。


【一步步开发AI运动小程序】二十一、如果将AI运动项目配置持久化到后端?的更多相关文章
- 微信小程序二维码推广统计
微信小程序可以通过生成带参数的二维码,那么这个参数是可以通过APP的页面进行监控的 这样就可以统计每个二维码的推广效果. 今天由好推二维码推出的小程序统计工具HotApp小程序统计也推出了带参数二维码 ...
- 开发一个微信小程序教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...
- 开发一个微信小程序项目教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...
- 微信小程序初体验,入门练手项目--通讯录,部署上线(二)
接上一篇<微信小程序初体验,入门练手项目--通讯录,后台是阿里云服务器>:https://www.cnblogs.com/chengxs/p/9898670.html 开发微信小程序最尴尬 ...
- Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序
Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...
- 全栈开发工程师微信小程序-中
全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...
- 开发一个微信小程序实例教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...
- 小程序二维码生成接口API
获取小程序码 我们推荐生成并使用小程序码,它具有更好的辨识度.目前有两个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口. 接口A: 适用于需要的码数量较少的业务场景 接口地址: http ...
- php生成微信小程序二维码源码
目前有3个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口.第一步:获取 access_token public function getWxAccessToken(){ $appid ...
- Java 获取微信小程序二维码(可以指定小程序页面 与 动态参数)
一.准备工作 微信公众平台接口调试工具 小程序的唯一标识(appid) 小程序的密钥(secret) 二.获取access_token 打开微信公众平台接口调试工具,在参数列表中输入小程序的appid ...
随机推荐
- 作为程序员的我只负责修复旧bug制造新bug
不知道什么时候开始写的这网站ttblog,只知道当时是一腔的激情,可是到今日,激情没了.可谓是古人云:"茅坑的屎香三天!" 记得当时刚毕业参加工作,可 ...
- 将文件的换行符由 CRLF 转换为 LF
在 DOS/Windows 文本文件中,换行,也称为新行,是两个字符的组合:回车(CR)后跟一个换行(LF).在 Unix 文本文件中,一行的换行是单个字符:换行(LF).在 Mac 文本文件中,在 ...
- uni-app之camera组件-人脸拍摄
小程序录制视频:10-30秒:需要拍摄人脸,大声朗读数字(123456)这种. 1.camera组件 camera页面内嵌的区域相机组件.注意这不是点击后全屏打开的相机 camera只支持小程序使用: ...
- 1055 - Expression #9 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xxx.xxx.xxx' which is not functionally ...;this is incompatible with sql_mode=only_full_group_by
MySQL 8 的默认 sql_mode 包含了only_full_group_by,如果想要sql不按照这模式做检查,可以设置当前session的sql_mode值不包含oly_full_group ...
- docker高级篇第三章-dockerfile案例之制作自己的centos镜像
在上一篇文章中<Dockerfile介绍及常用保留指令>,我们介绍了Dockerfile是什么以及Dockerfile常用的保留字段.熟悉了这些之后,有没有想自己动手写一个Dockerfi ...
- 【ETL工具】DataX + DataXWeb 初使用过程记录
版本:DataX v202309 DataXWeb 2.1.3预发布版 DataX: Github:https://github.com/alibaba/DataX 功能介绍文档:https://g ...
- C#自定义控件—指示灯
C#用户控件之指示灯 在体现通讯状态.运行状态等用一个靓眼的指示灯如何做? 思路(GDI) 外环用笔绘制(Pen),内圆用画刷(SolidBrush); 两个方法(用笔画圆,用画刷填充圆的内部): 绘 ...
- AT_agc057_e 题解
AT_agc057_e [0] 约定 \(r_i = \sum\limits_{j = 1}^{m}[A_{i,j}\le k]\) \(r^{'}_i = \sum\limits_{j = 1}^{ ...
- 小tips:xml文件转为html表格展示示例
books.xml文件格式如下: <?xml version="1.0" encoding="UTF-8"?> <xbrl xmlns=&qu ...
- ArgoWorkflow教程(四)---Workflow & 日志归档
上一篇我们分析了argo-workflow 中的 artifact,包括 artifact-repository 配置以及 Workflow 中如何使用 artifact.本篇主要分析流水线 GC 以 ...