【一步步开发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= " ...
随机推荐
- 使用Python完成设备巡检
在企业网络中,设备巡检是保持网络稳定性和安全性的核心任务.无论是路由器.交换机,还是防火墙和服务器等设备,都需要定期进行巡检,以确保网络设施的正常运行.然而,传统的设备巡检通常是通过手动登录设备.查看 ...
- Qt Creator下使用Qt Console Application打印中文
Qt对中文的支持一直不好,本人研究了其在控制台下显示中文的方法,直接上步骤: 1.首先创建Qt Console Application工程(本人用的是Qt5.10版本),然后点击 菜单栏->编辑 ...
- Redis 是什么?
Redis 的定义? 百度百科: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.K ...
- SQLite 下载与安装
安装 SQLite 官网 就2个文件,下载解压到一起即可 这里不是安装包的形式,下载后是下面这2个文件: 解压到同一目录下即可,如图: "安装"完成后,记得添加系统环境变量,以便命 ...
- 《机器人SLAM导航核心技术与实战》先导课:课程大纲
<机器人SLAM导航核心技术与实战>先导课:课程大纲 视频讲解 [先导课]1.课程大纲-视频讲解 [先导课]1.1.课程大纲-学习思维导图(上)-视频讲解 [先导课]1.2.课程大纲-学习 ...
- gRPC+Proto 实现键盘记录器 —— 深度实战解析
在当今的分布式系统开发领域,RPC(Remote Procedure Call,远程过程调用) 技术犹如一颗璀璨的明星,凭借其强大的透明性和卓越的高性能,在微服务架构中占据着举足轻重的地位.本文将全方 ...
- 使用Python建模量子隧穿
引言 量子隧穿是量子力学中的一个非常有趣且令人神往的现象.在经典物理学中,我们通常认为粒子必须克服一个势垒才能通过它.但是,在量子力学中,粒子有时可以"穿越"一个势垒,即使它的能量 ...
- 🎀隧道代理ip使用
简介 隧道代理(Tunnel Proxy)是一种特殊的代理服务,它的工作方式是在客户端与远程服务器之间建立一条"隧道".这种技术常被用来绕过网络限制或提高网络安全性. 主要功能 I ...
- 垂直模型和AI Workflow是开AGI的历史倒车
提供AI咨询+AI项目陪跑服务,有需要回复1 RL 之父 Rich Sutton在 2019 年的文章<苦涩的教训>中指出: 70 年的 AI 研究历史告诉我们一个最重要的道理:依靠纯粹算 ...
- MySql随笔记基础
XAMPP使用 shell 命令 每个数据库对应 一个子文件夹 mysql 进入mySQL的命令 -uroot userroot 登录用户 -uroot -p password 登录密码 -p123 ...