简介: 过去一年,阿里体育技术团队在端智能方面不断探索,特别在运动健康场景下实现了实践落地和业务赋能,这就是AI运动项目。AI运动项目践行运动数字化的理念,为运动人口的上翻提供了重要支撑,迈出了阿里体育端智能运动领域的第一步,为用户带来了更加有趣的新颖玩法。上线以来,项目受到了广泛关注。

作者 | 其声
来源 | 阿里技术公众号

一 背景

过去一年,阿里体育技术团队在端智能方面不断探索,特别地,在运动健康场景下实现了实践落地和业务赋能,这就是AI运动项目。AI运动项目践行运动数字化的理念,为运动人口的上翻提供了重要支撑,迈出了阿里体育端智能运动领域的第一步,为用户带来了更加有趣的新颖玩法。上线以来,项目受到了广泛关注。

2020年因新冠疫情,传统的线下运动受到限制,居家运动逐渐成为新趋势。基于阿里巴巴强大的技术沉淀,阿里体育团队顺应线上运动的迫切需要,开发出基于AI识别的智能运动,为用户提供了简便、好玩的新型居家运动方式。只需一部手机和3-4平米的场地,就可以开展AI运动。运动时,用户打开乐动力APP,将手机固定在场地一侧,适当设置手机角度,根据应用的自动语音提示调整身体与手机距离,直到人体完全位于识别框内,即可开始运动。

二 端智能实践

经过⼀年的探索和完善,从验证DEMO到囊括多种动作、支持能力迁移的AI运动智能平台,阿⾥体育建立了系统化的客户端运动智能体系。端智能运动体系基于阿里深度推理引擎在手机端进行推理,识别⼈体姿态和动作,分析人体姿态、运动轨迹、动作角度等,给出实时反馈并进行动作纠正,通过能力的模块化组合,现已支持十多种运动动作和数十种玩法,实现了运动与AI的有机整合,让用户的线上运动变得上手简单而又充满趣味。

三 技术支持

端智能运动的基本技术思路是运用MNN推理引擎进行推理和姿态识别。即

  • 实时检测图像及视频中的人体轮廓,定位人体14个关键骨骼点,包括头、肩、脚等重点关节部位。
  • 基于这些关键点信息,连点成线、连线形成动作,可以分析人体姿态、动作角度和运动轨迹。
  • 通过动作姿态匹配,检测用户运动动作,实现动作的计时与计数。同时,实时检测分析动作标准化程度,给出状态反馈,纠正用户动作,实现互动,提高交互体验。

传统运动方式下,用户在运动时可以及时得到现场辅助人员(教练员、考官或亲友)的实时提醒和帮助。端智能运动方式下,用户在做动作时只能与手机应用进行交互。交互的能力和识别水平会受到推理模型能力、运动场景复杂度、运动匹配识别算法等一系列因素的影响。在端智能运动能力的探索和落地过程中,会遇到一些新的问题或者难题,如人机方位匹配、骨骼点识别丢点、点误识别、二维失真、用户移动、手机晃动、场景噪声等。这些问题不一一赘述,仅选取几个有代表性的问题进行分享:

  • 动作的有效性判断及关键算法设计,以提高动作匹配精度,这是智能运动能力的基础。
  • 在保证识别效果的前提下,采取有效措施,降低移动终端的资源消耗,以提升用户体验,主要表现是费电和发热。
  • 采取更加灵活的方式,减轻移动端测试的人力和时间消耗,提高开发和测试效率,为团队的交付保障提供有力支撑。

提升识别精度

智能运动带给用户的最直观、最基础的感受就是动作计数准确性。如果动作识别计数不准,用户使用APP的积极性就会打消,参与性就不高。为此,我们要首先解决计数准不准的问题。

智能运动计数的基本原理是,把一个完整动作分解成若干个小步骤,然后对每个步骤触发识别和判断,全部步骤遍历后,对整个动作进行有效性确认。如果有效,计数加1;反之就重复上述过程。简言之,智能运动识别与计数是一个状态机。将一个运动动作离散化,抽象成N个状态机,{s(0),s(1),s(2),...,s(n-1)},状态机按照一定的顺序依次进行检测,全部检测到意味用户完成了该动作,对计数加1;若某个状态未被检测到,触发对应反馈信息,重置状态机进入新的循环。每一个状态机对应着一定的触发条件,通过实时骨骼点坐标与状态的循环匹配性检测,获取一个动作匹配结果。

不难看出,动作识别精度与动作匹配算法紧密相关,算法匹配效果好,识别精度就越高。为提高动作识别精度,可以选取影响匹配算法的因素作为切入点和突破口,骨骼点、状态机、匹配等。相应的解决办法为:

  • 提高骨骼点稳定性,确保状态匹配结果精度。
  • 选择骨骼点稳定、易识别、具有代表性的动作作为状态机。
  • 帧率要能够覆盖一个动作的所有状态机。

下面将举例进行说明。

骨骼点识别准确度对动作匹配有着重要影响。如下图所示:测试对象左手臂骨骼点识别出现错误。如果径直进行匹配,显然会得到错误的结果。针对这种情况,应当利用好用户的历史动作信息,在动作匹配算法上对动作匹配进行纠正。

还有一种情况,用户已经完成某种动作的全部动作,如下图中的开合跳,由于采样帧率低,无法捕获和识别全部开合跳运动过程中的全部姿态,造成某个状态匹配不成功,最终导致开合跳动作匹配错误。对于低帧率问题,可从模型和输入源两个方面着手。对于模型来说,在不影响动作识别精度情况下,采用精简模型,减少推理耗时。对不同的终端设备,采用不同分辨率的输入源,降低原始数据处理操作耗时。

降低性能消耗

受物理条件影响,手机端算力和存储空间有限。此外,深度学习推理本身包含大量的运算,资源消耗大。如果直接在端上进行深度学习推理,再考虑上手机端自身业务(如摄像头、录制视频、动画效果)的资源消耗,CPU和内存开销就显著增长,直观表现是手机发热明显,电量消耗很快。智能运动在端智能上落地时,要特别考虑降低性能消耗,这对于提升用户体验来说至关重要。

降低整体性能消耗,要追根溯源,从降低单帧消耗处着手。单帧处理可以划分为三个阶段:分别是推理前、推理和推理后。

这三个阶段分别起着不同的作用。推理前阶段主要完成格式转换,将摄像头获取的流数据转换为推理需要的数据格式,如YUV格式、RGBA格式。推理阶段主要完成计算输出骨骼点坐标。对输入的帧数据,经过推理引擎,执行一系列算法,输出推理结果,如姿态识别是将输入图片的RGBA数据转换成骨骼点坐标数据。推理后阶段主要完成展示,进行渲染操作和业务相关操作,如UI展示、动画效果展示。

相应地,可对上述三个阶段分别进行优化。其中,推理过程中的优化由阿里深度推理引擎MNN负责,这里不作讨论。对于推理前阶段的数据转换,应减少不必要的中间转换环节,直接将摄像头流数据转换成为需要的格式。如推理使用RGBA裸数据,就直接将摄像头流数据转换为RGBA格式。对于推理后阶段,应根据承载的平台选择合适的渲染方案,降低渲染消耗。对于iOS平台,可直接采用Metal进行渲染提效。

提高测试效率

AI智能运动是阿里体育团队在体育数字化上的一次大胆尝试。在应用开发特别是测试环节中,投入相当的人力、设备及时间,不断完善应用功能、优化应用性能、提升用户体验。此外,AI运动识别的效果测试受环境因素的影响较大,如光线、背景、距离、人物在摄像头中的成像大小等。这就对测试方式提出了考验。

以传统测试方案为例:一般是真人、实地、实时动作,测试人员手动记录结果再事后分析,如下图所示。

不难想象,AI智能运动所运行的手机有着不同的品牌、型号、系统版本和性能参数,AI智能运动的用户可能处于不同的使用环境,若采用传统的测试方式,对不同因素进行测试覆盖,对测试人员、测试时间提出了很大的挑战,测试的一致性与精度也难以保证。具体原因如下:

  • 人工成本较高:一次测试需多名同学配合,耗时耗力。
  • 测试环境较单一:无法应对线上复杂多样的环境。
  • 测试结果量化难。无法对模型的精度、算法的效率、动动匹配准确度、精度提升度、性能消耗等量化评估。
  • 问题定位难。事后分析排查,无法复现定位线上客诉问题。

传统的测试方法难以为继,为克服上述困难,阿里体育技术团队开发了一套AI运动自动测试工具,专门用于解决AI智能项目测试难题,实现了线上问题的快捷定位与回归,并对模型算法精度实现量化评估。

自动测试工具的解决思路是:批量解析视频集,模拟真实场景,获取骨骼点数据,进行业务结果测试,自动生成测试报告。具体技术方案如下图所示:

采用新的测试工具后,显著地降低了人工成本、提高了测试效率。具体测试效果如下:

需要注意的是,测试工具的效果与测试样本的数量相关,样本越丰富,测试精度越好。

四 业务结果

阿里体育智能运动现已支持数十种运动动作,开发出丰富的AI训练课程,同时通过运动能力的模块化组合,支持未来不断拓展新的动作。

自AI智能运动诞生以来,乐动力APP陆续上线了直臂开合跳、俯卧撑等上肢动作,臀桥、深蹲等下肢动作以及跳绳、开合跳等全身动作等多种运动形式,使得用户可以不受时间和场地限制,随时随地和朋友一起参与到AI运动,提升了APP的用户吸引力和趣味性。此外,AI训练课程创新引进明星资源,推进全年52周每周7天不间断的“明星陪练”课,以明星带动用户养成运动习惯、快乐运动、爱上运动。阿里体育团队也将不断地根据用户需要打造更多的运动玩法,丰富产品功能,形成阿里体育端智能的独特业务品牌和创新产品特色。

原文链接

本文为阿里云原创内容,未经允许不得转载。

AI运动:阿里体育端智能最佳实践的更多相关文章

  1. 移动端布局最佳实践(viewport+rem)

    通过前几天写的两篇博客(浅谈移动端三大viewport和移动端em和rem区别),我们现在来总结一下如何实现一个最佳方案. 之前在第二篇博客中提到过我们可以使用媒体查询来针对不同设备及做适配,如下图 ...

  2. 【活动】美团技术沙龙第49期:AI在外卖场景中的最佳实践

    美团技术沙龙第49期开始啦! 本次沙龙,美团外卖技术部专家会深入介绍AI在对话系统.图像处理.个性化推荐.智能营销等方向在外卖业务中的实践,希望与业界技术同学一起交流学习. 无论你从事智能搜索,或是算 ...

  3. JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践

    任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层, ...

  4. 2018亚太CDN峰会开幕, 阿里云王海华解读云+端+AI的短视频最佳实践

    4月11-12日,2018亚太CDN峰会在北京隆重召开,在11日下午的短视频论坛中,阿里云高级技术专家王海华进行了<短视频最佳实践:云+端+AI>的主题演讲,分享了短视频的生命周期关键点和 ...

  5. EventBridge助力阿里云视觉智能开放平台AI智能存储实践

    本文作者:李建,阿里巴巴达摩院技术专家. 01 视觉智能开放平台(VIAPI)业务场景介绍 阿里云视觉智能开放平台(简称 VIAPI),是基于之前很多技术实践经验积累的 AI 能力的沉淀平台.目前整个 ...

  6. 腾讯云AI应用产品总监王磊:AI 在传统产业的最佳实践

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广州召开,广东省各级政府机构领导.海 ...

  7. 阿里云RDS for SQL Server使用的一些最佳实践

    了解RDS的概念 这也是第一条,也是最重要的一条,在使用某项产品和服务之前,首先要了解该产品或服务的功能与限制,就像你买一个冰箱或洗衣机,通常也只有在阅读完说明书之后才能利用起来它们的所以功能,以及使 ...

  8. [转] 阿里研究员谷朴:API 设计最佳实践的思考

    API是软件系统的核心,而软件系统的复杂度Complexity是大规模软件系统能否成功最重要的因素.但复杂度Complexity并非某一个单独的问题能完全败坏的,而是在系统设计尤其是API设计层面很多 ...

  9. Knative 应用在阿里云容器服务上的最佳实践

    作者|元毅 阿里云智能事业群高级开发工程师 相信通过前面几个章节的内容,大家对 Knative 有了初步的体感,那么在云原生时代如何在云上玩转 Knative?本篇内容就给你带来了 Knative 应 ...

  10. 探索云数据库最佳实践 阿里云开发者大会数据库专场邀你一起Code up!

    盛夏.魔都.科技 三者在一起有什么惊喜? 7月24日,阿里云峰会·上海——开发者大会将在上海世博中心盛大启程,与未来世界的开发者们分享数据库.云原生.开源大数据等领域的技术干货,共同探讨前沿科技趋势, ...

随机推荐

  1. String内存模型和Java常用方法

    一.String内存模型 1.直接赋值创建string对象内存原理: StringTable(串池):字符串常量池,用来存储字符串,只能是在直接赋值中使用才会存在串池当中(JDK7前串池是在方法区里面 ...

  2. python面向对象编程(封装、隐藏)

    一 封装 1.封装介绍封装是面向对象三大特性最核心的一个特性封装<----->整合2.将封装的属性进行隐藏操作1).如何隐藏:在属性名前加__前缀,就会实现一个对外隐藏属性效果该隐藏需要注 ...

  3. 记录--vue 拉伸指令

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在我们项目开发中,经常会有布局拉伸的需求,接下来 让我们一步步用 vue指令 实现这个需求 动手开发 在线体验 codesandbo ...

  4. vue三种插槽

    1. 作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于 父组件 ===> 子组件 . 2. 分类:默认插槽.具名插槽.作用域插槽 3. 使用方式: a.默认插 ...

  5. 二.安装ifconfig命令

    二.安装ifconfig命令 1.ifconfig命令是设置或显示网络接口的程序,可以显示出我们机器的网卡信息,可是有些时候最小化安装CentOS等Linux发行版的时候会默认不安装ifconfig等 ...

  6. 七月练习:杀完NOIP全集

    注:标记☆的是我未理解透彻的,标记★的是已经理解完的重点. 7.31:所有题目已经上传! 7.1 CF581A Vasya the Hipster 水.随便找规律.(CF 乱入) P1199 [NOI ...

  7. 【已解决】mybatis注解@Param失效,无法获取到值(org.apache.ibatis.binding.BindingException: Parameter 'policy' not found. Available parameters are [arg1, arg0, param1, param2])

    案发现场: 传递的参数是一个实体类 PolicyDictionary 此时我无法拿到数据: 解决思路一(不推荐) 删去@Param注解,使用mybatis默认的参数顺序: 不使用@param注解传递多 ...

  8. Azkaban 2.5 Documentation

    Overview Azkaban was implemented at LinkedIn to solve the problem of Hadoop job dependencies. We had ...

  9. WPF实现树形表格控件(TreeListView)

    前言 本文将探讨如何利用WPF框架实现树形表格控件,该控件不仅能够有效地展示复杂的层级数据,还能够提供丰富的个性化定制选项.我们将介绍如何使用WPF提供的控件.模板.布局.数据绑定等技术来构建这样一个 ...

  10. #二分图匹配#UVA1194 Machine Schedule

    题目 有两台机器 \(A,B\) 分别有 \(n,m\) 种模式. 现在有 \(k\) 个任务.对于每个任务 \(i\) ,给定两个整数 \(a_i\) 和 \(b_i\)​, 表示如果该任务在 \( ...