【一步步开发AI运动APP】十、微调优化内置运动分析器,灵活适配不同的应用场景
之前我们为您分享了【一步步开发AI运动小程序】开发系列博文,通过该系列博文,很多开发者开发出了很多精美的AI健身、线上运动赛事、AI学生体测、美体、康复锻炼等应用场景的AI运动小程序;为了帮助开发者继续深耕AI运动领域市场,今天开始我们将为您分享新系列【一步步开发AI运动APP】的博文,带您开发性能更强、体验更好的AI运动APP。
一、为什么要对内置运动进行微调优化
uni-APP版插件与小程序AI运动识别插件一样,当前都内置了跳绳、开合跳、俯卧撑、仰卧起坐、卷腹、深蹲(深蹲起)、平板支撑、马步蹲、坐位体前屈等丰富的运动项目,所有运动项目都按相应的运动规范标准进行适配,足够应付AI键身、线上运动赛事活动、团建打卡、AI体测等多种应用场景。
但是不同的应用场景对运动检测的要求并不一致,比如云上运动赛事场景主要是提升全民的运动热情,并不是以竞技为目标,如果以标准动作规范进行检测,则动作通过率太低,会挫伤用户参赛热情;而像学生体测这种考评类的应用场景,需要更标准规范的动作检测要求,则可能要适度增加规范检测要求,满足考评要求;而用户自由AI健身,则用户自身的运动水平和偏好有很大的关系,运动素质较好的用可能喜欢标准模式,初级用户开始可能喜欢选择宽松,更具有成就感,后期又可能以标准模式发起挑战等等。
如前文所述,不同应用场景对检测规则的需求存在差异,插件若列举出典型场景进行适配,即难于满足无法预知的小众场景,更无法满足有微调需求开发者。鉴于此,我们为内置的运动分析器提供了统一的微调优化机制,以便开发者能除了开箱即用的使用标准模式进行运动检测外,还能对内置运动分析器的各项参数进行微调优化,灵活适应各种应用场景。

二、APP与小程序在运动微调上的差异
不同于小程序,页面层使用的是JS引擎,且插件也是工作在JS引擎层面的,利用javascript的弱类型特性,开发者可直接修改运动分析器Sport实例的属性;而APP则不同,插件为原生程序包,工作在页面渲染引擎之外,在uni-app下虽然渲染引擎为webview渲染引擎,但是得到的运动分析器是经过序列化的对象,并非原生对象的内存引用,无法直接操作实例对象的参数;且在uni-app x下则更为复杂,在android平台为原生引擎,在iOS仍为优化的webview引擎。
针对uni平台下APP的框架的差异,经过分析研究,我们为uni-app插件提供了一个统一的微调优化机制。
三、内置优化器ISportOptimizer
ISportOptimizer为插件统一的内置运动微调优化器,抹平了两个APP框架的微调优化调用差异,不管是uni-app还是uni-app x,统一使用此对象对内置运动分析器进行微调优化。ISportOptimizer对象可以获取和更新内置运动的检测规则、动作样本、个性参数,以进行深度的优化定制。
四、微调优化示例代码
import { ISportOptimizer, ISport, createSport } from "../uni_modules/yz-ai-sport";
function optimizeing(){
//创建仰卧起坐动分析器
const sport = createSport('high-knee');
//创建运动的微调优化器
const optimizer = sport.buildOptimizer();
//获取运动的检测规则集
const rules = optimizer.getRules();
//获取运动可微调检测参数
const options = optimizer.getOptions();
//执行优化
optimizer.setOption('liftLowest', 0.05);
rules.leftPose.rules[0].offset = 55;
rules.leftPose.rules[1].offset = 55;
optimizer.setRule('leftPose', rules.leftPose);
}
五、微调优化的局限性
对内置运动分析器微调优化,只适合对标准动作进行适当的增减、放宽或收紧,如果动作变化太大,微调优化可能无法满足,比如花式跳绳,无法直接通过现有内置的跳绳微调优化适配。
当然,若微调优化无法满足应用场景需求,也无需担心,插件还支持自定义扩展新的运动项目,我们将在后续章节中介绍,敬请期待...
【一步步开发AI运动APP】十、微调优化内置运动分析器,灵活适配不同的应用场景的更多相关文章
- SNF开发平台WinForm之十四-站内发送系统信息-SNF快速开发平台3.3-Spring.Net.Framework
1运行效果: 2开发实现: .组装站内信息发送实体对象. SNFService SNFService = new SNFService(); if (this.ucUser.SelectedIds ! ...
- spark 源码分析之十二 -- Spark内置RPC机制剖析之八Spark RPC总结
在spark 源码分析之五 -- Spark内置RPC机制剖析之一创建NettyRpcEnv中,剖析了NettyRpcEnv的创建过程. Dispatcher.NettyStreamManager.T ...
- mysql学习(十二)内置函数
常用的内置函数,常用select\ 字符串函数 contat('' , '', .....) //连接字符串 select concat(name, ' age is ', age) from per ...
- python3 第二十九章 - 内置函数之tuple相关
Python元组包含了以下内置函数 序号 方法及描述 实例 1 len(tuple)计算元组元素个数. >>> tuple1 = ('Google', 'Baidu', 'Taoba ...
- python3 第二十六章 - 内置函数之Number相关
数学函数 函数 返回值 ( 描述 ) 实例 abs(x) 返回数字的绝对值,如abs(-10) 返回 10 print(abs(-10)) =======输出:====== 10 ceil(x) 返回 ...
- python简说(十四)内置函数
# sorted 排序# map 循环调用函数的,保存返回值# filter 循环调用函数,如果函数返回false,那么就过滤掉这个值,是指从你传入的这个list里面过虑. def abc(num ...
- 使用 VS2012 开发 IDA GUI 插件 WIN32 SDK 和 内置函数 AskUsingForm_c
1. 执行菜单的File->New->Project… (Ctrl-Shift-N)打开新建工程窗口. 2. 展开左侧的Visual C++项目模板分支,然后选择右侧的Win32 Proj ...
- python学习笔记(十六)内置函数zip、map、filter的使用
1.zip,就是把两个或者多个list,合并到一起,如果想同时循环2个list的时候,就使用zip.示例如下: l1 = ['a','b','c','e','f','g'] l2 = [,,] l3= ...
- 学习python的第十天(内置算法:列表数据类型,元祖数据类型,字典数据类型)
5.8自我总结 1.列表类型内置算法 1.必须掌握 1.按索引取值(正向取值+反向取值),即可存也可以取 #用于取其中一个值 name = ['yang','wen','yi'] ##正方向取wen, ...
- python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)
11.4 JavaScript 11.41 变量 1.声明变量的语法 // 1. 先声明后定义 var name; // 声明变量时无需指定类型,变量name可以接受任意类型 name= " ...
随机推荐
- mac上zsh环境变量如何配置
环境变量配置 在 macOS 上,如果你使用的是 zsh 作为默认的 shell,那么 /bin/zsh 的环境变量通常可以在以下文件中配置: ~/.zshrc ~/.zprofile ~/.zshe ...
- 【python日期和时间处理】time模块基本使用
1. time模块中三种时间格式 时间戳 time模块获取各种精度的时间戳 import time timestamp = time.time() timestamp_s = int(time.tim ...
- BUUCTF---rsa2
题目 N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241 ...
- HashMap-线程不安全的原因
前言 HashMap线程安全的问题,在各大面试中都会被问到,属于常考热点题目.虽然大部分读者都了解它不是线程安全的,但是再深入一些,问它为什么不是线程安全的,仔细说说原理,用图画出一种非线程安全的情况 ...
- 使用Python可视化莫比乌斯带
引言 莫比乌斯带,这个名字或许大家都听过,但你知道它是什么吗?它是一种非常神奇的几何物体,只有一个面和一个边,乍一看,似乎是个不可思议的存在.今天,我们就来用 Python 轻松地可视化莫比乌斯带,一 ...
- 使用Python和SymPy推导斯特林公式
引言 斯特林公式(Stirling's Approximation)是一种用来近似计算阶乘的数学公式.它是数学分析中非常重要的近似公式之一,尤其在概率论.统计学.物理学等领域中广泛应用.本文将使用 P ...
- 🎀文件对比工具--BeyondCompare
简介 Beyond Compare 是一款功能强大的文件和文件夹比较工具,由Scooter Software开发.它可以帮助用户轻松地比较文件和文件夹的差异,并且可以合并变化.同步文件以及备份重要数据 ...
- python实例:导入会员数据后,读取数据文件,检查导入正确性(整列取excel值、合并列、response取值)
场景描述:某系统新上线,老系统的会员数据要导入新系统中,包含手机号,上级信息和会员余额.有1万多条数据,手工对比过于繁琐,用python自动化处理 思路:系统导入数据后,脚本读取文件,先把会员数据取出 ...
- kette介绍-Step之Merge Join
Merge Join介绍 需要配合Sort rows使用,对关联字段进行排序 关联两个step数据,可以是两个不同的数据库表数据,也可以是一张表,一个文件,输出字段为两张表所有字段 注意将小数据集作为 ...
- js判断iOS还是Android
/** * 运行设备引擎, 即iOS, Android还是H5 * 返回值注意大小写 * @return iOS, Android, H5 */ function engineType() { let ...