膝盖、髋、踝都在范围内,这组深蹲为什么还是被扣了分

先设想一个模拟场景。一位健身爱好者,我们假设叫小周,在客厅里把手机靠在书架上,从侧面拍了一组徒手深蹲,一共八次。分析结果出来后,他盯着屏幕发愣:最低点的膝关节角度、髋关节角度、踝关节背屈角度,逐项对照都落在常见的参考区间里,可动作质量分只有中等,其中"稳定性"和"节奏"两项被明显扣分。他的第一反应是系统看错了。

系统没有看错,只是它看的东西比"角度"多。把八次动作逐帧展开,下蹲阶段的速度曲线很不均匀:前半段几乎是自由落体,膝盖在接近最低点时才被迫刹车;最低点几乎没有停留就立刻弹起;起身时髋部先抬高、肩膀滞后,躯干前倾角在中途反而变大了。每一个瞬间的关节角度都"合格",但把它们按时间串起来,这是一套靠惯性完成的动作,而不是靠肌肉控制完成的动作。

这个例子想说明的,正是这篇文章要回答的问题:只看摄像头,能不能判断动作对不对?我的看法是,能判断一部分,而且比很多人想象的更多,但前提是别把"识别姿势"和"理解动作质量"混为一谈。前者是在一帧画面里找到关节的位置,后者是在一段时间里判断这些位置的变化是否合理、是否稳定、是否适合这个人。od体育的AI训练能力,设计思路就是沿着这条路径往后一步:先把姿势稳稳地认出来,再回答动作是否可靠这个更难的问题。关于深蹲本身的细节,可以继续读《深蹲角度正确为什么还是会练错?od体育姿态识别开始分析速度、重心和左右不对称》,那篇专门拆解了速度曲线、重心路径和左右差异,这里不再重复。

摄像头交给算法的,只是一格一格的像素

人看深蹲视频,会直觉地"看见"一个立体的人在下蹲。算法拿到的却是一张张二维图像,每张图像是一个像素矩阵。姿态估计模型要做的事情,是在这个矩阵里为每个关节预测一个位置,并给出一个对应的置信度。OpenPose、HRNet、MediaPipe/BlazePose、RTMPose、ViTPose 这些常见工具,输出的都是二维关键点,也就是图像平面上的横纵坐标。它们并不知道这个人离镜头多远,也不知道大腿是朝着镜头前伸还是朝着镜头后缩。

这带来的第一个后果是视角依赖。侧面拍摄时,膝关节和髋关节的屈曲角度看得最清楚,因为屈伸动作正好发生在图像平面内;但膝盖向内塌陷、双脚外旋这类发生在冠状面的问题,几乎完全看不见。正面拍摄则正好相反,膝内扣一目了然,屈伸幅度却被透视"压扁",从镜头方向看,大腿缩短了,角度估计会明显偏离真实值。所以同一个人、同一组动作,换一个机位,可以得到两份都"合理"却互相矛盾的结论。

第二个后果是遮挡。深蹲时手臂环抱、杠铃横在肩上、宽松的上衣盖住髋部,都会让关键点的位置变得含糊;侧面拍摄时靠近镜头的那条腿会挡住远端的那条腿,左右两侧的膝盖在图像里会重叠成一个点,模型此时输出的往往是"合理猜测",而不是"看到的事实"。画面质量本身也是变量:光线弱时相机会拉长曝光,快速下蹲会出现运动模糊;手机视频常见的帧率是每秒30帧上下,快速下蹲的关键瞬间可能只占几帧。

把这些整理一下,大致可以分成三类:

信息类型摄像头能提供的程度典型例子
可以直接看到 可靠,但受视角与光线影响 侧面机位下的膝、髋屈曲角度,躯干前倾,动作的起止时刻
只能间接推测 依赖模型先验,误差随动作复杂度上升膝盖是否内扣、骨盆是否旋转、重心的大致位置,这些量需要从二维推到三维
基本看不到 需要别的传感器或人工判断 肌肉发力顺序、足底压力分布、着地冲击大小、当事人的疼痛感

这张表的意义在于给评分划边界:第一类可以放心打分;第二类必须带着"不确定"的标记;第三类不应假装给出结论。动作分析产品最容易出问题的地方,恰恰是把第二、三类当成第一类来用。

从二维关键点走到三维动作,中间隔着一层猜测

很多人听到"姿态识别",脑子里浮现的是一个火柴人叠在视频上。火柴人只是可视化结果,它真正的价值在于关键点序列可以进一步换算成关节角度、位移和速度。问题在于,这些换算大多默认关键点是三维的,而单目摄像头拿到的只是二维投影。从二维恢复三维,本质上是一个"一对多"的问题:同一组二维点,可以对应多种三维姿态,模型只能依靠训练数据里学到的人体比例和常见姿势来消除歧义。

公开研究对这一点已有比较一致的讨论。2025到2026年,运动科学与生物力学期刊上出现了多篇关于无标记动作捕捉的综述,共识是它让离开实验室、只靠普通摄像头或手机采集成为可能;但同时也指出,单目模型通常在动作复杂度有限的数据集上训练和评估,面对快速、大幅度的竞技动作时精度会下降,而且不少系统最初是为计算机科学问题设计的,和生物力学、运动科学的实际需求并不完全吻合。AthletePose3D 这类新基准,专门收集竞技动作来检验三维姿态估计与运动学验证,也是在补这块短板。研究方向上,把深度学习姿态模型与多种传感器结合起来的"多方法融合",被认为是提升动态场景可用性的重要路径。

对做产品的人来说,这些结论意味着一种务实的取舍。标记点动作捕捉系统仍是实验室里的金标准之一,手机摄像头替代不了它;但训练场景里,人们要的往往是"这一周比上一周稳定了吗"这类相对变化。只要每次拍摄的机位、距离大致一致,模型的系统性偏差会在前后对比里抵消一部分。这也是od体育在设计动作质量评分时,更倾向于给出"和你自己的历史相比"的结论,而不是宣称某个绝对数值。

关键点、序列、评分:一次动作是怎样被打出分数的

回到小周的深蹲。从视频到一份质量报告,中间大致要经过下面几步,每一步都可能出错,也都需要留下可检查的中间结果:

  1. 检测与跟踪。先在每一帧里找到人,并保持同一个人在前后帧里是同一个ID。家里只有小周一个人时这步很简单;一旦镜头里进出了别人,或者他弯腰时头部出画,跟踪就可能断掉。
  2. 关键点估计与平滑。逐帧得到关节位置和置信度,再对时间序列做平滑。平滑是把双刃剑:抖动被压下去了,真实的快速变化也可能被一并磨平,所以平滑强度需要按动作的速度来选。
  3. 按身体尺度归一化。身高和与镜头的距离各不相同,像素位移不能直接比较,要以躯干或大腿长度为尺度换算成相对量。
  4. 动作分段。把一次深蹲切成下降、底部、上升三个阶段,找到每次重复的起止点。分段错了,后面所有的"速度""停顿"都会跟着错。
  5. 特征提取。在每个阶段里算关节角度范围、角速度、躯干倾角随时间的变化、左右两侧的差值、髋部轨迹的横向偏移等。
  6. 分维度评分与整合。不同的特征归入不同的评分维度,再结合每个维度对应的置信度整合成总体结论。

这里最容易被忽略的是最后一步的"分维度"。如果只给一个总分,用户无法知道该改什么;而且一个总分会把互相抵消的问题藏起来。更有用的做法,是把动作质量拆成几个彼此相对独立的维度:活动范围(是否到位)、节奏控制(下降与上升的速度比、底部有没有停顿)、轨迹稳定(髋部和躯干的路径有没有晃动)、左右对称(两侧的角度和时间差)、重复一致性(八次之间的离散程度)。小周的问题就出在节奏控制和轨迹稳定上,活动范围其实是满分。

拆开维度还有一个好处,是可以针对每个维度单独判断"能不能打分"。例如正面机位下,对称性这一项是可信的,但活动范围就不可信;侧面机位下则反过来。系统在输出时应该显式说明每个维度的依据来自哪个机位、哪些帧,而不是把所有维度都装作同样有把握。

同样是"角度合格",为什么重心和速度是另一类信息

关节角度是形状信息,重心和速度是过程信息,二者互不能替代。想象另一位用户,深蹲最低点的膝角、髋角与小周几乎一样,但下降过程匀速、底部停顿约一秒、起身时肩髋同步。如果只比较最低点的角度,这两个人会得到相同的评价;把整条时间序列放在一起看,差别一目了然。所以重点正从"某一帧对不对"转向"这一段动作是否受控"。

视频不够时,传感器和历史训练数据能补什么

摄像头擅长"形",不擅长"力"和"时机"。惯性测量单元(IMU)含加速度计和陀螺仪,通常还带磁力计,采样率往往远高于普通视频帧率,绑在腰间、手腕或脚踝上,可以捕捉冲击、起止时刻这类快速事件。在深蹲里,腰部IMU可以给出下降加速度的变化、底部反弹时的峰值;在跑步里,脚踝附近的IMU对触地时刻比视频可靠得多。它给不出的,是"身体是什么姿态",因为IMU看到的是自己的运动,而不是整个人。

手表和胸带提供的心率,属于另一类信息:它说的是内部负荷,而不是动作本身。手表心率多是光学测量,在手腕大幅摆动时会受到干扰,胸带通常更稳定。心率无法告诉你膝盖有没有内扣,但可以提示"这一组做完之后,你的心率恢复得比上周慢",这对判断疲劳导致动作走形有帮助。传感器融合的要点是,不同传感器在不同的时间尺度、不同的噪声条件下各有所长,不能简单平均:视频决定姿态,IMU 决定时刻,心率决定负荷背景,冲突时按各自的可信区域来取舍。

第三类信息是历史训练数据,它对动作质量判断的影响常被低估。所谓"标准动作",其实并不存在统一的模板:股骨长、躯干短的人,深蹲时躯干前倾角必然更大;踝关节活动度受限的人,脚跟很容易离地。用一个通用的角度区间去衡量所有人,会把很多正常的个体差异当成错误。合理的做法,是随着记录的积累,为每个人建立自己的稳定区间,然后在这个区间里看波动,而不是拿别人的模板来审判。冷启动阶段,历史很少,系统只能使用宽松的通用范围,并明确告诉用户"记录较少,结论仅供参考"。

该拒绝打分的时候,就不要打分

评价一个动作分析系统好不好,一个被低估的标准是:它知不知道自己什么时候看不清。姿态估计模型对每个关键点都有置信度,但这个数字不能直接拿来当作"评分可靠性"。关键点置信度高,只说明模型对这个位置很有把握,并不保证这个位置在三维里是对的;相反,一个明明被遮住的点,模型有时也会输出很高的置信度,因为它"学过"这里通常有个膝盖。所以,判断能不能打分,需要综合几类信号:关键点置信度、时间上的连续性、左右两侧比例是否符合人体常识、画面质量、相邻帧之间的抖动幅度。

下面这些情形,应该让系统主动降级甚至拒绝输出:

  • 全身没有完整入镜,或者最低点时脚部出画,涉及踝关节的指标不应给出;
  • 光线很暗或强逆光,关键点大面积抖动,速度、加速度类的指标不可靠;
  • 镜头里同时有多人,跟踪ID发生了切换,两个人的数据可能被拼成一条轨迹;
  • 拍摄机位在一组动作中被移动,前后几次重复不能直接比较;
  • 用户穿着极宽松的衣物或使用了遮住髋部的器械,髋、膝关键点只能靠猜。

拒绝打分不等于什么都不说。更有用的输出是"这次的哪几个维度可信、哪几个不可信、原因是什么、怎样重拍就能改善"。用户看到的是一份诚实的报告,而不是一个看似精确却经不起推敲的分数。强行给分会把不确定性悄悄转嫁给用户,长期下来,人会对所有分数都失去信任。

还有一类情形,即使画面完美,也必须由人来判断。用户提到动作时有疼痛、麻木、关节卡顿,那不是一个动作质量分能处理的问题,应当建议其暂停练习并咨询医生或有资质的康复专业人员;青少年处于生长发育阶段,动作评判不应套用成人的区间,最好有教练或家长在场;竞技运动员的技术定型,则需要教练结合比赛表现来取舍,视频分析只能是其中一份证据。AI适合做的是"每次都认真看、不会累、能和自己的历史比",不适合做的是替代有经验的人对一个具体的人做最终判断。

隐私也算边界的一部分:训练视频里有人脸、居家环境和身体形态,能在本机完成的分析尽量留在本机,需要保存时优先存关键点和统计摘要,而不是原始视频。

下一次拿起手机之前

把上面的内容压缩成几个具体的习惯:第一,拍摄前先想清楚这次要看什么问题,屈伸类选侧面,对称与内扣类选正面,都关心就分两次拍;第二,读报告时先看"可信度说明",再看分数,凡是标注低置信度的维度,先当作线索,不当作结论;第三,比较自己和自己,不比较自己和某个模板。

关于拍摄本身有大量细节会直接影响分析质量,比如镜头离得多远、放多高、衣服什么颜色、光从哪边来,这些问题在《od体育App如何用手机摄像头完成一次动作分析?从机位到光线的实用指南》里有逐项清单,值得在第一次正式拍摄前看一遍。多花两分钟摆好机位,往往比换一个更强的模型更能提升结果的可靠性。

回头看小周的那组深蹲。系统最有价值的地方,不是告诉他"你被扣了分",而是指出扣分的具体位置:下降太快、底部没停、起身时髋先动。他接下来可以做的很简单:用三秒下、一秒停、再起身的节奏做几组,重新拍一次,看这两个维度的变化。如果这次拍摄他同时提到膝盖前侧有些不适,那么优先级就该换成:先停下来,找专业的人看一看。视频可以看出很多,但不是全部,知道这个差别,是使用任何动作分析工具的起点。