返回列表
action11 分钟阅读

让器械知道你正在练什么

实时动作理解

本文提出智能健身端侧实时动作理解框架:基于连续视频完成训练检测、粗到细两级动作识别,融合人体运动与画面线索,可支持在手机端实时运行,能为训练记录、反馈与教练 Agent 提供感知支撑。

孔辰安冉 / 陈可涵 / 郑一凡 / 张潮 / 林小雅

让器械知道你正在练什么

以阻力训练场景为例:用户握住手柄,器械提供阻力,手机记录画面,屏幕展示课程。研究如何让系统理解训练,需要先回答一个更基本的问题:眼前这个人,现在正在练什么?

答案会影响后续的每一步:不同动作有各自的节奏、发力特点和观察重点,系统先要理解当前动作,才能找到对应的运动周期、确定动作分析该关注哪些身体部位,并把数据组织成训练记录和报告。除了在屏幕上显示动作名称,动作识别还决定了后续能力应沿着哪条路径展开。

这个动作识别的判断,还对实时性有要求。训练结束后再分析视频,可以帮助整理记录,却无法参与当前这一组训练。要在产品中发挥作用,动作理解就得跟上用户的节奏,让反馈在仍然有用的时候到达。

乍看之下,这像是一个简单的视觉分类问题:摄像头既然能看到用户,为什么不直接交给通用视觉语言模型(VLM)识别?真实训练却复杂得多。用户可能先调整附件、试拉、停顿,再进入正式训练;几个动作可能共享几乎相同的主体运动;同一个动作也会因身高、幅度、速度、拍摄角度和遮挡而呈现出不同的样子。同时,整套能力还要在终端上持续运行,不能打断训练,也不能让用户等待结果。

综合上述因素,我们在研究中探索将动作识别组织成一套连续的实时理解过程。视频进入系统后,需要依次确认训练正在发生、理解主要运动、区分动作变体,并及时提供可供反馈使用的稳定结果。每个环节解决不同的问题,共同探索如何把普通视频转化为动作和训练状态信息,为智能健身器械提供支持。

通过这四个环节,我们把连续视频转化为实时结果,供界面反馈、训练记录和后续的Agent分析使用。

动作1
动作1

1. 识别动作之前,先确认训练正在发生

在识别动作的过程中,摄像头捕捉连续画面会包含噪声和无关的活动,实际上真正的训练动作只占其中一段。

以站姿弯举为例,用户走入画面、俯身调整附件、站直、试拉一次,然后完成一组训练,最后放下手柄。这些时刻都有人体、器械和明显的变化,但它们的含义不同。只看单张画面,系统可能把准备动作当成正式训练,也可能把短暂停顿误判为动作结束。训练边界判断错了,影响的不只是动作名称早一秒或晚一秒出现。计次、记录和报告都会继承这个错误:试拉可能被计入正式训练,调整附件的过程也可能被当成动作的一部分。即使类别正确,落在错误时间段上的答案对产品也没什么用。

我们的第一个研究决策,就是把时间变化纳入判断。系统结合前后画面的变化,确认用户何时真正开始训练、动作是否仍在持续,得到一段有开始、有延续、也有变化的训练过程。逐帧标签只有放进这段时间关系中,才有意义。

值得注意的是,可靠地观察动作还有一个容易被忽略的前提:摄像头必须处在可用的位置。在通过手机拍摄训练时,先检查手机拍摄的位置有助于确认系统能否看清需要观察的内容,再尝试识别动作。将拍摄角度和动作识别两者分开,可以避免模型从一开始就在不可靠的视角中进行猜测。

还要注意的是,训练数据也要能充分反映真实训练的相关影响因素。

首先,我们注意到通用生活场景视频数据可以教会模型识别人和运动,却很少覆盖智能健身中的附件、绳索、训练凳和动作命名。因此,我们需要围绕训练动作体系持续采集数据,并借助动捕设备获得与视频同步的人体运动标注。

其次,我们也注意到,如果只采集标准的动作示范,当然会更容易:画面干净、幅度完整、节奏一致,自然容易得到好看的离线结果;但用户第一次尝试动作时,可能幅度偏小、速度变化不定,或在发力时重新调整身体位置。系统如何处理这些不像示范视频的时刻,决定了这项能力能否在真实产品场景中成立。

因此,我们更关心数据能否覆盖真实变化,而不是让每条样本都显得完美。这些数据帮助模型应对帧率抖动和不标准的动作。模型由此学习一个动作在现实中可能怎样发生,而不只是记住理想示范的样子。

2. 理解动作的主干,不是记住一张标准照片就能做到的

确认训练正在发生之后,接下来要判断的,就是用户在做什么动作。然而,健身动作之间的区别并不总像走、跑、跳那样明显,它们经常共享同一套主体运动。站姿杠铃弯举、双边握把弯举、双头绳锤式弯举和正握弯举,都可能表现为手臂反复屈伸。反过来,同一种站姿弯举,也会因幅度、节奏、身体代偿和拍摄角度出现很大差异。

这就是动作识别的主要难点:不同动作可能看起来太像,不同用户做同一个动作又可能不太像。

动作识别需要同时应对动作之间的相似性、同一动作内部的差异、变化的拍摄条件,以及不清晰的训练时间边界。

动作2
动作2

面对这些差异,系统应该依据什么来识别动作?只看身体轨迹,系统可能漏掉握法、附件和器械位置;只看画面外观,又容易受到服装、背景、光线和遮挡的干扰。因此,我们的第二个研究决策,是使用互补的信息源:一类描述身体怎样随时间运动,另一类保留用户与器械、附件和环境之间的关系。

这种互补在信息不完整时尤其有用,因为两类信息不总是同样清晰。身体局部被遮挡时,连续运动仍可能说明动作主干;而当动作轨迹十分接近时,器械和握法又可能提供关键区别。也就是说,系统需要根据当前能观察到的线索,让两类信息互相补充,不能指望其中任何一种独自解决全部问题。

不过,结合两类信息,并不意味着画面中的所有细节都应影响判断,哪些信息更值得相信,仍然需要区分。衣服颜色、墙面和光线可能每次训练都不同,不应轻易改变动作结论;相比之下,身体与器械之间持续存在的运动关系,则更接近动作本身。因此,系统需要利用画面中的丰富信息,同时避免根据偶然出现的背景特征走捷径。区分稳定证据和偶然线索,比记住更多标准照片更重要。

基于这些较稳定的证据,身体运动和画面信息可以共同帮助系统先确定一个相对可靠的范围:用户主要在推、拉、蹲,还是进行某一类弯举?有了这个语境,后续判断就能沿着更明确的方向展开,不必再与所有动作逐一比较。

3. 面对高度相似的动作,先缩小问题范围

在明确了主体运动之后,下一步就是区分同一类运动中的具体动作。为此,研究采用的动作体系分为大类和小类两级:数十个大类由姿态与运动模式定义,再按器械和具体做法细分为小类。

这其中,更难的是区分类别之间的细微差别。许多小类之间只有握法、附件或出绳位置的变化,动作类型就可能改变。用户动作不够标准时,原本清楚的边界也会变得模糊。如果不区分这些判断的层次,让轻量系统一次从所有小类中作答,就意味着把不同难度、不同证据要求的问题放在一起处理,需要同时理解主体运动、识别器械细节,并应对真实用户的动作偏差。类别越细,相似选项越容易干扰这次判断。

例如,双手短暂被身体遮挡时,系统可能已经能确认用户正在做站姿弯举,却还没有足够信息判断握法。此时强行给出完整名称,并不比保留可靠的粗分类大类判断更好。动作理解需要知道当前证据能支持多具体的答案。

基于这一点,我们的第三个研究决策,是让判断由粗到细展开。系统先确定较稳定的动作家族,再检查这个范围内能区分小类的细节。对于少数更依赖器械和语义信息的动作,系统可以在受控范围内引入更强的视觉理解能力,避免让它在整个动作体系中自由猜测。

之所以这样分层,是因为大类和小类对应着不同的证据需求。大类更依赖持续的运动结构,适合承担实时主判断;小类更关注握法、附件和做法,可以在已有动作语境中进一步确认。因此,先建立语境,再理解细节,能减少相似动作之间的干扰,也让更强的语义能力用在需要它的地方。

除了帮助区分相似动作,这种分层也提示了一种可行的交互思路:细节暂时不清楚时,主判断仍然可以工作。随着证据积累,系统逐步将稳定的大类细化为具体动作。这种渐进判断也符合一组训练随时间展开的过程。系统先确认站姿弯举这一动作家族,再根据更细的信息识别具体变体。

动作3
动作3

4. 让结果及时到达,也保持稳定

分层判断解决了动作如何逐步识别的问题,但要让识别结果参与正在进行的训练,还需要及时把结果送达。训练结束很久以后才出现的动作名称,可能仍是正确标签,却已经无法发挥实时产品能力的作用。

要满足这一实时要求,就需要把观察到反馈的整个过程一起考虑。用手机摄像头观察训练时,手机也可以成为动作理解的实时入口。研究需要解决的问题,是让观察、理解、结果稳定和可能的界面响应在整个训练过程中持续配合。与此同时,手机还要处理视频、交互和其他任务,可用算力、内存和温度都会变化,用户也不会为等待模型而保持一个标准姿势。

不过,单次计算快,不保证系统就是实时的。如果输入画面不断积压,模型可能准确识别出几秒前的动作,却没跟上用户已经停止或切换动作的变化。训练过程中,迟到的正确结果可能和错误结果一样令人困惑。因此,我们既衡量计算速度,也关注结果是否反映用户当前的状态。

针对这种结果滞后的问题,我们的第四个研究决策,是围绕及时性和稳定性设计整条链路。面对连续输入,系统优先处理用户当前的状态;而在跟上当前动作的同时,还需要应对短暂波动:系统通过平滑连续信息,保持结论稳定,避免单次噪声触发动作切换。预期的体验是:界面尽量不在相似名称之间反复跳动,也不在动作变化后继续描述上一段训练。

要同时做到及时和稳定,就需要在敏感和保守之间取舍。系统过于敏感,名称会随着遮挡和姿态变化反复波动;过于保守,又会在用户切换动作后更新太慢。因此,可用的实时体验需要响应真实变化,同时避免把每次短暂干扰都当成新的结论。

除了平衡判断的更新速度与稳定性,还需要安排不同任务的处理顺序。在研究链路中,我们将实时主判断与更细的语义增强分开:核心动作信息在手机端持续产生,不依赖一次网络往返;需要更多语义信息的细分类可以随后补充,但不能阻塞正在进行的交互。这样便明确了准确性、稳定性与及时性之间的优先关系。

通过这些链路层面的安排,我们的研究希望将手机捕捉到的连续画面,转化为结构化的动作和训练状态数据信息。如果这些结果用于反馈,模型应该能够实时运行并且随着用户训练过程输出信息,而不要求用户为了配合算法的识别而改变训练节奏。

5. 从识别动作到理解整段训练

回到整段训练来看,前面四个环节连接起来,形成了一条理解训练的研究思路:判断一组训练何时开始、主要进行什么运动、可能对应哪种具体变体,以及这个判断在多长时间内仍然有效。由此可见,给视频贴上标签,只是这些能力最直观的结果。

从研究测试结果看,在覆盖近百个动作小类的手机端全链路测试中,iOS 与 Android 的实时识别准确率均超过 90%。为了理解这个数字与实际训练的关系,可以把它放到一节训练中看:一小时通常包含 4 至 5 个动作,按整体准确率粗略换算,平均每次训练的误判不到 0.5 次。这个估算提示了一种可能:用户在使用我们动作识别进行训练时,整个过程可以更连贯,减少每次切换动作都需要停下来操作的次数。我们追求的就是这种连续体验:结果需要正确、稳定,并在训练过程中及时出结果。

在连续识别的基础上,动作信息还可以支持更深入的分析。动作识别回答用户正在做什么,为后续的动作分析和纠正提供共同基础:知道当前动作,系统才能选择对应的运动周期逻辑、关注相关的身体变化、组织训练记录,并为报告保留正确的上下文。

实时动作信息为计次、动作反馈、训练记录、报告及后续的教练Agent链路分析提供上下文。

动作4
动作4

在这些下游能力中,教练 Agent 尤其依赖对当前训练的持续理解。当它从回答问题走向全程参与训练时,就需要一个可靠的感知起点:除了知道用户过去练过什么,还需要理解此刻的动作、训练是否持续,以及下一条反馈是否还来得及起作用。实时动作理解是这类能力的基础之一。也因此,动作识别为训练过程的持续分析提供了一条路径:从看见人在运动,到理解用户正在做哪个动作。这是为多模态智能AI健身奠基的起点。

让器械知道你正在练什么 | Speediance