【一步步开发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对象可以获取更新内置运动的检测规则、动作样本、个性参数,以进行深度的优化定制。

四、微调优化示例代码

javascript 复制代码
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);
}

五、微调优化的局限性

对内置运动分析器微调优化,只适合对标准动作进行适当的增减、放宽或收紧,如果动作变化太大,微调优化可能无法满足,比如花式跳绳,无法直接通过现有内置的跳绳微调优化适配。

当然,若微调优化无法满足应用场景需求,也无需担心,插件还支持自定义扩展新的运动项目,我们将在后续章节中介绍,敬请期待...

相关推荐
moxiaoran57536 小时前
uni-app学习笔记二十三--交互反馈showToast用法
笔记·学习·uni-app
Angindem14 小时前
从零搭建uniapp项目
前端·vue.js·uni-app
Bug从此不上门19 小时前
【无标题】
前端·javascript·uni-app·vue
耶啵奶膘1 天前
uniapp+vue2解构赋值和直接赋值的优缺点
uni-app
疯狂的沙粒1 天前
uni-app 项目支持 vue 3.0 详解及版本升级方案?
前端·vue.js·uni-app
Jiaberrr1 天前
uniapp Vue2 获取电量的独家方法:绕过官方插件限制
前端·javascript·uni-app·plus·电量
^Rocky1 天前
uniapp 对接腾讯云IM群公告功能
uni-app·腾讯云
段旭涛1 天前
uniapp 设置手机不息屏
前端·uni-app
疯狂的沙粒1 天前
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
前端·uni-app·html