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

【一步步开发AI运动小程序】二十一、如果将AI运动项目配置持久化到后端?

**说明:**本文所涉及的AI运动识别、计时、计数能力,都是基于云智「Ai运动识别引擎」实现。云智「Ai运动识别」插件识别引擎,可以为您的小程序或Uni APP赋于原生、本地、广覆盖、高性能的人体识别、姿态识别、10余种常见的运动计时、计数识别及自定义扩展运动识别能力。完善的文档、Demo项目,开箱即用,可以帮助您快速实现AI运动、AI体育、AI运动赛事、全民健身赛事、AI体测等应用场景的快速落地。

一、为什么要将运动配置持久化到后端?

当我们根据应用场景重新调整内置运动检测参数或者扩展了新运动项目,发布小程序、APP后,若在运行时发现运动参数不合适需要调整时,便需要重新发布小程序或者APP,这个发布过程需要耗费短则几个小时,长则一两天;不便于运营。
若将运动检测的各项参数持久化到后端,这样便可以避免因为运动调整频繁发布小程序、APP新版本,让用户获得更好的体验。

二、需要持久化的那些配置数据?

运动检测的常规参数有KeyNameTickMode,这是基本的必须的参数,剩的检测规则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乐运动」产品。

image
image


http://www.kler.cn/a/389801.html

相关文章:

  • 新版 idea 编写 idea 插件时,启动出现 ClassNotFound
  • 树形dp总结
  • JAVA题目笔记(十五)经典算法题
  • 什么是数字图像?
  • 使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载
  • 以色列支付龙头遭DDoS攻击,各地超市加油站等POS机瘫痪
  • 【非关系型数据库】【IOT设备】InfluxDB、TimescaleDB、Cassandra和MongoDB
  • Qml 中的那些坑(七)---ComboBox嵌入Popup时,滚动内容超过其可见区域不会关闭ComboBox弹窗
  • C++ | Leetcode C++题解之第559题N叉树的最大深度
  • 蓝牙 SPP 协议详解及 Android 实现
  • 《深入理解 == 与 equals ():Java 中对象比较的奥秘》
  • GIN:逼近WL-test的GNN架构
  • 分布式数据库:深入探讨架构、挑战与未来趋势
  • 鸿蒙Flutter实战:13-鸿蒙应用打包上架流程
  • 随堂测微信小程序ssm+论文源码调试讲解
  • MongoDB 详解:深入理解与探索
  • IOS开发之MapKit定位国内不准的问题
  • LLaMA-Factory全流程训练模型
  • Flink输出算子
  • Tcp中的流量控制,拥塞控制,超时重传时间的选择,都附带相应例子说明
  • OBOO鸥柏:公司品牌部分户外广告一体机已布局文化传媒市场
  • Spring Boot集成Access DB实现数据导入和解析
  • Rust生成随机值实战应用
  • http的发展史
  • Spring Boot与工程认证:计算机课程管理的现代化
  • 【ET8框架进阶】HybridCLR打包丢失元方法问题MissingMethodException:生成LinkXml增加元方法