姿态分析:从照片和视频测量姿势与关节角度

姿态分析:从照片和视频测量姿势与关节角度

人如何摆放身体,能透露很多关于任务的信息。从姿势可以看出工位是否合身、一次测试中人动了多少、参与者是前倾还是转身离开。过去要测这些,通常需要动作捕捉服或数小时的人工标注。对许多问题来说,一台摄像头加一个姿态估计模型就够了,前提是你清楚二维估计能说明什么、不能说明什么。

Neutropic 用 pose_estimate 工具从照片和视频估计身体姿态,用 face_expression 估计头部朝向。本文介绍它们计算什么、你会得到什么,以及局限在哪里。截图来自一次新的对话,测量了一张全身照和一张人像照。

可以上传什么

  • 照片。 PNG、JPG、WebP 或 BMP。
  • 视频。 MP4、MOV、WebM、AVI、MKV 或 M4V。应用内预览使用浏览器播放器,想观看视频的话 H.264 MP4 最稳妥;无论哪种格式,分析都在服务器上解码。
text
/analyze 估计 pose_yoga.jpg 中的身体姿态:关节角度、姿势和关键点叠加图,并简要汇总数值。

测量原理

工具运行 MediaPipe PoseLandmarker(lite 模型),找出 33 个身体关键点,从鼻子、耳朵到肩、肘、腕、髋、膝、踝和脚。每个关键点都有可见度分数,低于 0.3 的关键点会被丢弃,而不是猜测。它用其余关键点计算:

  • 八个关节角度(度):左右肘、左右膝、左右髋,以及左右肩外展(上臂与躯干的夹角)。
  • 姿势。 膝和髋都接近伸直(≥ 150°)时为 standing,两者都明显弯曲时为 sitting/squatting,介于两者之间为 bent/transitional,看不到腿时为 unknown。
  • 手臂位置。 根据肩外展判定为 raised、extended sideways 或 down at sides。
  • 躯干倾斜。 从髋部中点到肩部中点连线的倾斜角,单位为度。
  • 朝向。 根据肩宽与躯干长度之比判定为 frontal、oblique 或 sideways/turned。

视频默认按每秒 5 帧采样。除逐帧数值外,还会得到各姿势和手臂位置所占的时间比例、平均关节角度,以及相邻帧之间关键点的平均位移。位移是衡量一个人动了多少的粗略指标。

头部朝向来自面部工具。face_expression 为每个有人脸的帧返回 yaw、pitch 和 roll(度)。这次对话里的人像照分别为 −5.7°、−8.5° 和 −1.5°,也就是脸只稍微偏离镜头。参见面部表情分析。

得到什么

  • 叠加图(*_pose_overlay.png):在第一个检测到人的帧上画出关键点和骨架,一眼就能看出模型是否锁定了正确的身体。
  • 表格(*_pose.csv):每张图像或每个采样帧一行,包含姿势、手臂、躯干倾斜、朝向和八个角度。
  • 汇总数值:出现在对话和报告中,每个数值都能追溯到对应的工具调用。
打开姿态叠加图的新对话:全身照上画出了 33 个关键点和骨架。
打开姿态叠加图的新对话:全身照上画出了 33 个关键点和骨架。
对话摘要直接引用工具给出的数字:站立、双臂自然下垂、正面朝向、躯干倾斜 0.2°,肘 176.4°/177.4°,膝 177.8°/178.1°,髋 168.7°/171.2°。
对话摘要直接引用工具给出的数字:站立、双臂自然下垂、正面朝向、躯干倾斜 0.2°,肘 176.4°/177.4°,膝 177.8°/178.1°,髋 168.7°/171.2°。
只有一行的姿态表:姿势、手臂、躯干倾斜、朝向和各关节角度分列各列。
只有一行的姿态表:姿势、手臂、躯干倾斜、朝向和各关节角度分列各列。

报告整理了同样的数值,句子带有指向 pose_estimate 步骤的 [n] 引用:

报告中的姿态结果:姿势分类、手臂位置、朝向、躯干倾斜和八个关节角度。
报告中的姿态结果:姿势分类、手臂位置、朝向、躯干倾斜和八个关节角度。

如何检验

在内部检查中,上面这张全身照的结果是站立、双臂下垂、正面朝向,与照片一致。早期版本用肩宽的绝对值判断朝向,而整个人都进入画面时这个值总是很小,于是全身照看起来都像侧身。现在改为用肩宽与躯干长度之比来判断。

诚实地失败同样重要。在只拍到人脸的视频上,工具报告了 "no person detected",而没有凭空编出一个身体。摄像头构图有误时,这正是你想要的行为。

研究用途

  • 人因工程与工位研究。 比较不同桌面配置下的坐站时间、躯干前倾和伸手时的肩外展。
  • 动作与活动量。 用关键点平均位移作为各任务阶段活动量的粗略指标,例如比较无聊区块与投入区块中的小动作。
  • 社交与非言语行为。 身体和头部是否朝向对方或屏幕。
  • 康复与运动预研究。 在受控的机位下观察膝或肘的角度,作为使用实验室级系统之前的初步探索。

每位参与者的汇总结果可以像其他表格一样交给统计工具:

text
/stats posture_by_setup.csv 中每位参与者、每种桌面配置(standard、sit-stand)一行,记录坐着的时间比例和平均躯干倾斜。请比较两种配置,检查前提假设,并报告效应量。

坦诚的局限

  • 二维角度。 角度是在摄像头图像平面上测量的,而不是三维的。朝向镜头的肢体看起来更短,角度也会失真。请让摄像头垂直于你关心的平面(膝屈曲从侧面拍,肩外展从正面拍)。
  • 只跟踪一个人。 模型只跟踪单人,多人场景请先裁剪。
  • 粗略的姿势标签。 standing、sitting 等标签来自固定的角度阈值。不要只看标签,也要看叠加图和角度。
  • 可见度。 宽松的衣服、遮挡和不寻常的姿势会降低关键点可见度。可见度低的关键点会被丢弃,所以有些角度可能是缺失而不是错误。
  • 采样。 每秒 5 帧对快速动作来说采样不足。做动作分析时请要求更高的采样率。
  • 不是临床步态分析或动作捕捉系统。 请把数值当作研究测量;如果精度重要,请在一部分样本上与参考设备对照。

这次对话的报告也列出了自身的局限,包括二维投影:

报告的局限说明:关节角度是相机平面上的二维投影,AU 数值是 blendshape 近似。
报告的局限说明:关节角度是相机平面上的二维投影,AU 数值是 blendshape 近似。

拍摄参与者:知情同意与隐私

即使遮住脸,全身视频也能识别个人。首次上传前,Neutropic 会显示 上传研究数据之前 的提示,请你确认已具备处理这些数据所需的权利、同意和审批(例如 IRB 或伦理委员会)。请告诉参与者,他们的动作会被自动分析。测量在 Neutropic 的服务器上运行,上传内容在你删除之前一直保存在私有工作区,不会用于训练(见隐私政策)。尽量共享派生的姿态表格,而不是视频。

延伸阅读