Kinect 平衡评估记录:90 人 11 个动作

临床用的平衡测试,一直卡在一件事上——测得起的地方做不了测试,做得了测试的地方测不准。这份数据把 Kinect 搬进了客厅,同时给出摇摆指标、跌倒史与临床风险判定

来源 曼彻斯特城市大学(Manchester Metropolitan University)采集;大学研究伦理委员会批准(批号 020517-ESS-CC(1) 与 SE161757)发布时间: 2026-10-20最后更新: 2026-10-20 阅读 19
Kinect 平衡评估记录:90 人 11 个动作

信息速览

数据集名称Kinect 平衡评估记录:90 人 11 个动作
数据类型平衡评估,跌倒风险,姿态摇摆,Kinect V2,深度图,骨架关节,老年人,临床评分
规模90
接入方式曼彻斯特城市大学(Manchester Metropolitan University)采集;大学研究伦理委员会批准(批号 020517-ESS-CC(1) 与 SE161757)
AI 就绪度

老年人跌倒这件事,医学上早有共识:它可预测、可干预,但预测和干预都卡在测量环节。实验室里有金标准——力台测压力中心、光学动捕测关节角度,两者都精确到毫米。问题是这套设备只能装在实验室里,一次评估几百英镑,还得受试者亲自跑一趟。而真正需要评估的人,恰恰是那些行动不便、住得远、不愿意出门的老人。

另一头是临床量表。五次坐立、三米步行、起立行走,这些测试只要有秒表和一把椅子就能做,任何社区诊所都能开展。代价是精度粗:秒表量的是总时间,量不出过程里的摇摆、代偿、迟疑。而无标记动作捕捉正好卡在两者之间。一台深度相机几百英镑,摆好就能测,不需要贴标记点,不需要受试者换衣服。它给出的关节角度接近光学动捕,给出的重心轨迹接近力台——都是"接近",不是"等同"。要把这个"接近"量化,需要的就是有临床标签的深度相机数据。

KINECAL 就是为这件事准备的:九十个人,十一个临床平衡动作,带跌倒史分组、临床风险标记和十六项摇摆指标。许可还是 CC0,连署名都不强制。§4.1 会讲清楚为什么这九十人里真正有跌倒史的只有二十四个,这个数字决定了它能支撑什么结论。

§1 它是什么:把临床量表搬进摄像头的视野

1.1 一句话定义与四条边界

KINECAL 是一份面向平衡与跌倒风险评估的动作数据集:90 名受试者,年龄从 18 岁到 92 岁,每人完成 11 个临床常用的平衡测试动作,用 Kinect V2 以 30 帧每秒记录深度图与 25 关节骨架,另附每位受试者每个动作的 16 项摇摆指标、人口学字段、跌倒史分组与临床风险标记。

四条边界先摆出来。

第一,跌倒史分组只有 24 人。 这是最要紧的一条。90 人的四组构成是:健康成人 33 名、非跌倒者 33 名、单次跌倒者 15 名、多次跌倒者 9 名。后两组加起来 24 人,才是"有跌倒史"的人。做跌倒预测模型时,正样本只有 24 个,这个量级决定了模型复杂度必须很小。§4.1 会展开。

第二,临床风险标记只有 6 人。 register.csv 里 clinically-at-risk 字段取值为 1 的共 6 人。这个字段的含义条目页没细说——是临床医生判定、还是某个量表超阈值,条目页只写了"indicates if the participants were marked as clinically at risk"。6 个正样本,做二分类基本不成立。

第三,摇摆指标不是力台的压力中心。 条目页明确说摇摆指标"akin to data derived from force plates"——是"类似",不是"等同"。Kinect 看到的是身体表面,力台测的是脚下反作用力。两者相关但不相等,中间的转换关系没有公认的标定。§4.4 会说清这一层。

第四,只有一台相机,一个机位。 单视角意味着深度方向的信息靠相机的结构光/飞行时间推算,正面与侧面的遮挡处理不同。没有第二台相机做交叉验证,关节位置的误差无法独立估计。

1.2 Kinect 做临床评估,难点在哪

条目页的背景部分把这个问题讲得很清楚,值得复述。

人类动作识别(HAR)领域用 Kinect 做出的数据集非常多。有个综述列了 45 个 RGB+D 数据集,其中 44 个用 Kinect 录的。但 HAR 的目标是"从近乎无限的动作集合里识别出少数几类"——挥手、走路、坐下,分类对了就行。

临床评估的目标完全不同:从一组被明确规定好的动作里,量化动作执行的质量。五次坐立这个动作,不是"判断受试者在做坐立",而是"测量五次起落的耗时、躯干前倾的角度、膝盖是否内扣、是否有手撑膝的代偿"。

这两个目标的差别,落到数据上就是三件事:

一是动作必须标准化。KINECAL 的每个动作都配了标准指令(条目页的 Table 2 完整给出),比如五次坐立是"从坐姿开始,双臂交叉抱胸,站起,完全伸直双腿,再坐下,重复五次,尽可能快"。这些话是受试者实际听到的。

二是元数据必须有临床意义。HAR 数据集一般不收年龄、身高、体重,更不会收跌倒史。KINECAL 收了,而且把跌倒史做成了分组变量。

三是场景要贴近实际。条目页特别强调 recordings were made in both the lab and in informal settings——部分记录在实验室,部分在非正式场景。这是为了说明方法在离开实验室之后还成立。register.csv 里 recorded_in_the_lab 为 1 的共 26 人,也就是说 64 人在非实验室场景录的。

1.3 十一个动作是怎么选的

这 11 个动作不是随便挑的,它们对应临床平衡评估的三条主线。

第一条:静态站立。 包括安静站立睁眼、安静站立闭眼、半串联站立、串联站立。这四个来自短物理性能 battery(SPPB)的平衡部分,是国际上最通用的平衡筛查组合。睁眼闭眼是为了分离视觉输入的作用;半串联与串联是逐步缩小支撑面。

第二条:扰动下的站立。 前面两个安静站立(睁眼、闭眼)在软垫上再做一遍。软垫用的是 Airex 平衡垫。这一组测的是本体感觉被削弱时,身体还能不能靠视觉与前庭维持平衡。四条件站立测试(硬地/泡沫 × 睁眼/闭眼)在临床上叫 CTSIB 的简化版。

第三条:功能性动作。 三米步行、五次坐立、起立行走(TUG)。这三个是动态的,涉及重心转移、步态启动、转身。TUG 尤其重要——它是老年医学里预测跌倒最常用的单项测试。

再加单腿站立睁眼与闭眼。这两个是独立测试,不属于上面任何一组,但对下肢力量与侧向稳定很敏感。

11 个动作数下来:2(安静站立睁眼/闭眼)+ 2(泡沫上的睁眼/闭眼)+ 2(半串联、串联)+ 3(三米步行、五次坐立、TUG)+ 2(单腿睁眼/闭眼)= 11。对得上。

1.4 摇摆指标是十六项,不是一项

很多人以为"摇摆"就是一个数。条目页给出的 sway_metric.csv 有 16 个指标,分五族。

距离族:RDIST_ML、RDIST_AP、RDIST(均方根距离,分内外侧与前后方向,另有总体)、MDIST_ML、MDIST_AP、MDIST(平均距离)。距离族描述的是轨迹偏离中心的幅度。

耗散族:TOTEX_ML、TOTEX_AP、TOTEX(总耗散)。这一族不是距离,是轨迹长度乘以位移的累积,反映"走了多少路"。

速度族:MVELO_ML、MVELO_AP、MVELO(平均速度)。

频率族:MFREQ_ML、MFREQ_AP、MFREQ(平均频率)。频率族反映的是调整的快慢——同样幅度下,频率高说明在频繁地小幅修正。

面积族:AREA_CE,95% 置信椭圆面积。

这五族各自捕捉不同的东西。两个受试者的 RDIST 可能一样,但一个是大幅度慢速摆动,另一个是小幅度高频抖动——前者可能是肌力不足,后者可能是感觉整合出了问题。只看一个指标会把这两种情况混在一起。

要注意的是,条目页在描述 MVELO_AP 时写的是"Value for mean velocity in ML direction"——前后方向的速度标成了 ML(内外侧)。这是条目页的笔误,按上下文应为 AP。§11.2 会把它列为需要核对的项。

1.5 它不适合回答什么

不适合做跌倒预测的验证集。 24 个有跌倒史的人,训不出也验不了预测模型。要做探索性分析可以,要报 AUC 需要外部验证。

不适合当作力台的替代品。 摇摆指标是"类似",不是"等同"(§4.4)。

不适合研究长期变化。 每个受试者只有一次记录,没有纵向随访。

不适合研究步态本身。 只有三米步行一个动态动作,且只有三米。步态的周期性、变异性、对称性都测不全。

不适合跨种族、跨地区外推。 受试者招募自英国单一地区。

1.6 与三个近邻数据集的差别

条目页的 Table 1 直接做了对比,这一份对比很有信息量,值得展开。

Multimodal Dataset:21 人,有深度数据与骨架,但没有临床评估,没有跌倒相关标签,没有摇摆指标,不在非正式场景录制。年轻的与年老的对半分,且受试时无人有已知运动障碍。

K3Da:54 人,有深度与骨架,有基本元数据(年龄、身高、体重),但没有损伤标签,没有跌倒史,没有摇摆指标。

KIMORE:78 人,44 名健康(平均 36.7 岁)、32 名有运动功能障碍(平均 60.4 岁),有临床评分。但动作不直接对应跌倒风险。

KINECAL:90 人,六项全有——深度、骨架、临床评估、跌倒相关标签、摇摆指标、非正式场景录制。

这张表说明了 KINECAL 的定位:它不是最大的,也不是动作最多的,而是在"临床标签完整度"这一维度上做到了前面几个没做到的。这也解释了它为什么值得单独成条。

1.7 版本与许可:CC0 的少见之处

版本 1.0.3 发布于 2023 年 6 月 8 日。之前的三个版本:1.0.0 是初版,1.0.1 与 1.0.2 都是"license amended"——改许可。1.0.3 加了 sample_set,一小部分样本数据加使用代码,目的是"帮助数据集被采纳"。

许可是 CC0。这在医学数据里很少见。PhysioNet 上大多数开放数据是 ODC-By 或 CC-BY,要求署名;CC0 是彻底放弃权利,连署名都不要求。

这个选择有利有弊。利是使用门槛降到最低——企业可以直接用,不需要在处理法务上花时间,也不需要担心派生数据的许可兼容。弊是数据一旦流出就无法追溯使用情况,作者也失去了通过引用积累学术影响力的路径。条目页在 Usage Notes 里说"We will be using this dataset in a set of upcoming papers",意思是作者打算靠后续论文而不是数据引用建立影响——这大概是选 CC0 的原因之一。

实际使用中仍建议引用。CC0 不强制,但学术规范要求说明数据来源。

§2 数据构成:九十个数文件夹、十一个动作、两个子目录

2.1 顶层有什么

顶层的六个条目,我逐个核对过。

kinecal/ 是主数据目录,90 个受试者文件夹都在里面。
sample_set/ 是样本数据加 Python 代码。
sway_utils/ 是辅助函数库,样本代码依赖它。
LICENSE.txt 是许可原文。
SHA256SUMS.txt 是校验清单,1.08 亿字节。
register.csv 是受试者登记表。

register.csv 有 91 行——1 行表头加 90 行数据,与受试者数对得上。

SHA256SUMS.txt 1.08 亿字节这个数字值得留意。按每行约 100 字节(64 位十六进制哈希加路径)估算,行数在百万量级。这个量级说明整个数据集的文件数非常多——后面会看到,每个动作文件夹下就有几百个小文件。

2.2 受试者文件夹用数字编号,不是 part_id

这里有个容易踩的坑,必须先说。

条目页的目录结构示例写的是 <part_id>,但实际文件夹名是纯数字:1、2、10、100、11……

而 register.csv 里的 part_id 字段是带字母前缀的:SPPB2、SPPB3、SPPB4、SPPB307……

这两套编号不是同一个东西。文件夹的纯数字是记录时的内部序号,part_id 是事后整理时给的分析用标识。两者之间的映射关系,条目页没有给出对照表。

这意味着:想按 part_id 找到对应的文件夹,不能靠直接匹配。必须建立映射。一种可能的办法是通过 register.csv 的行序与文件夹序号的对应关系推断,但这需要验证,不能假定。

这一点我在 §11.2 里列为可立即验证的疑问之一。实际使用前务必先确认映射,否则会把某个人的标签安到另一个人头上——而且这种错误在结果里完全看不出来。

2.3 一个动作文件夹里到底有什么

我打开了一个动作文件夹(受试者 2 的五次坐立)看实际内容,发现的东西比条目页列的多。

条目页的目录结构图只画了 sway_metrics、skel、depth 三个子目录。实际看到的还有四个条目:

start_end.csv——两列,skelIdx、start、end。这是动作片段的起止帧索引。有它才能从整段录制里截出有效的动作区间。条目页完全没提这个文件。

<part_id>_cached_skeletons<动作名>.csv——骨架的缓存版,把逐帧的 txt 合并成一张表。

<part_id>_cached_stacked_raw_XYZ_<动作名>.npy——三维坐标堆叠后的 numpy 数组。

<part_id>_Quiet-Standing-Eyes-Open_backup——这种带 backup 后缀的目录,只在部分受试者身上出现(我在受试者 2 身上看到了)。

这几个条目说明:数据除了原始的逐帧文件,还提供了整理后的缓存。这对使用者是好消息——不用自己解析几千个 txt。但也带来一个隐患:如果缓存和原始文件不同步(比如某次重新处理只更新了一边),两者会不一致,而条目页没说哪个是权威。

2.4 depth 与 skel:两个子目录分别装什么

depth 目录装 DepthUshort<帧号>.bin。条目页说明:二进制格式,存 16 位无符号整数(ushort),是逐像素的距离值的展平二维数组,需要按 424 乘 512 还原成原始图像。

424 乘 512 是 Kinect V2 深度图的分辨率。也就是说每个 .bin 文件是 424 × 512 = 217,088 个 ushort,即 434,176 字节(约 424 KB)。

skel 目录装 <帧号>.txt,纯文本。每个文件包含 25 个关节的信息,每个关节七列:关节名、是否被跟踪、三维 x/y/z、像素 x/y。

"是否被跟踪"这一列很关键。Kinect 的骨架追踪在遮挡时会做推断——比如手放在身后,相机看不到,但 SDK 会给出一个估计位置。文件里用 Tracked 字段区分。把推断位置当成真实观测,是使用这类数据最常见的错误之一。

两个目录我都数了文件数:某受试者的五次坐立动作下,skel 有 300 个 txt,depth 有 300 个 bin。帧数一致。30 帧每秒,300 帧是 10 秒——五次坐立的任务大约就是这个时长。

2.5 摇摆指标表的结构

sway_metric.csv 是长表:每行是一个受试者的一个动作,列出 16 项指标。

字段分三类。标识类:part_id、movement、group、age、sex、recorded_in_the_lab、clinically-at-Risk。指标类:16 项。没有其他。

要注意两点。第一,group 字段在 register.csv 里的取值有四种(HA/NF/FHs/FHm),但在 sway_metric.csv 的表头说明里,只列了 non-faller、single-faller、multiple-faller 三种——少了 healthy-adult。这是条目页的说明不全,实际文件里应该有 HA,但需要核对。

第二,摇摆指标是按动作分行的,所以一个受试者最多有 11 行。如果某个动作没做成或数据不可用,行数会少。分析时要先查一遍每个人的动作覆盖情况,不能假定都是完整的 11 行。

2.6 我核对了哪些、没核对哪些

核对过的:顶层六个条目的名称与存在;register.csv 91 行(90 数据行);kinecal 目录下 90 个受试者文件夹;某受试者文件夹下 7 个动作目录(含一个 backup);某动作目录下的 depth 与 skel 各 300 个文件;depth 与 skel 的帧号一一对应;start_end.csv 的格式;cached_* 两个文件的存在;SHA256SUMS.txt 的字节数。

没核对的:所有 90 个受试者是否都有 11 个动作目录。我只看了一个受试者,他有 7 个(含 backup),不是 11 个。这可能意味着部分动作对部分受试者不适用(比如不能单腿站立的老人),也可能是分批上传。这个必须逐个核对才知道,我不做推断。

从 register.csv 实际统计得到的(这些不是条目页给的,是文件算出来的):4 组人数分别为 33/33/15/9;性别 47 男 43 女;年龄中位数 67;40 岁以下 11 人,40 至 64 岁 26 人,65 至 79 岁 44 人,80 岁及以上 9 人;实验室采集 26 人,非实验室 64 人;临床风险标记 6 人。

特别说明:年龄字段里有 1 条写作 >89(受试者 SPPB307),是字符串不是数字。这意味着直接对 age 列做数值运算会出错——要么报错,要么被当成缺失。这本身是个有价值的信息:说明数据在某些字段上做了隐私保护式的模糊处理。

§3 访问:CC0,无需审批

3.1 许可与门槛

CC0 1.0 Universal。这是最宽松的公共领域奉献许可:作者放弃全部著作权及相关权利,使用者可以任何目的、任何方式使用,无需署名,无需标注来源。

PhysioNet 把它归在 Open Access 一栏。下载不需要注册审批,不需要签协议。

需要注意 CC0 覆盖的是著作权。受试者的隐私权、人格权不因 CC0 而消失。条目页的伦理部分写明:所有受试者提供了书面知情同意,伦理批准号 020517-ESS-CC(1) 与 SE161757。数据在发布前做了匿名化——受试者只有编号,没有姓名、没有面部图像(只有深度图与骨架,深度图分辨率低,不足以识别面部)。

3.2 引用该写什么

CC0 不强制署名,但学术写作中仍应给出数据来源。条目页给的 BibTeX 是:Maudsley-Barton, S., & Yap, M. H. (2023). KINECAL (version 1.0.3). PhysioNet. RRID:SCR_007345. https://doi.org/10.13026/vvkp-ct80。

注意版本号要写全(1.0.3),因为前三个版本的许可不同——1.0.0 的许可与现在的 CC0 不一样,1.0.1 与 1.0.2 都改过许可。只写"KINECAL"不写版本,读者无法确定你用的是哪一版、适用哪个许可。

3.3 下载

PhysioNet 的标准方式:网页 ZIP 包、wget 递归、AWS 匿名同步。体量上,这个数据集比同期的影像数据集小得多——SHA256SUMS.txt 1.08 亿字节,说明文件多但单文件小(每个 .bin 约 424 KB,每个 txt 只有几 KB)。

下载后第一件事是跑 SHA256SUMS.txt 校验。这份数据文件数在百万量级,传输中掉几个小文件很常见,而且掉了不一定立刻发现——只有在解析到某个受试者某个动作的某一帧时才报错。

3.4 先用 sample_set 试探

条目页在 1.0.3 版本特意加了 sample_set/,目的就是让人先跑通再决定是否全下。

sample_set 里有一小部分数据加一个 view_smple_files.py(注意文件名里 simple 拼成了 smple,这是原文的拼写)。这个脚本用来可视化样本数据。

它依赖 sway_utils/ 里的辅助函数,两个目录要解压到并列的位置。

建议的路径是:先跑 sample_set 熟悉文件格式与读取方式,再决定要不要全下。全下之后先用 sway_utils 提供的函数处理,而不是自己从零写解析——条目页明确说 sway_utils 是给第三方用的,目的是加速。

§4 局限:二十四个人扛不起跌倒预测

4.1 样本量的真实含义

90 这个数字听起来不小,但拆开看就完全不是一回事。

按分组拆:健康成人 33、非跌倒者 33、单次跌倒 15、多次跌倒 9。

如果要做"跌倒者 vs 非跌倒者"的二分类,正样本是 15 + 9 = 24,负样本是 33 + 33 = 66。24 比 66,比例 1 比 2.75,倒不算极不平衡。

如果要做"多次跌倒 vs 其他"的三分类或有序分类,最小类只有 9 个人。9 个人做一类,任何模型都学不出稳定的模式。

如果要做"临床风险"的二分类,正样本 6 个。这个量级只够做描述性统计,不够做任何有统计效力的推断。

再往下一层:每个人有 11 个动作,每个动作有 16 项指标。看起来数据点很多——90 × 11 × 16 = 15,840 个数值。但这些数值不是独立的:同一个人的 11 个动作高度相关(平衡能力是同一个人的属性),16 项指标之间也高度相关(都是从同一条轨迹算出来的)。

有效独立样本仍然是 90,最多是按"人-动作"算的几百。这个量级决定了:可以做组间比较、可以做特征与标签的相关性分析、可以用简单的分类器做探索;不能做深度模型、不能做特征选择后再验证(会过拟合)、不能报可信的 AUC。

4.2 单中心与单一设备

全部数据用 Kinect V2 采集。这一条限制有两层。

第一层是设备唯一。Kinect V2 用的是飞行时间原理,与 Kinect V1 的结构光不同,与后续的 Azure Kinect 也不同。三种设备出的深度图在噪声特性、边缘精度、有效距离上都不同。在这份数据上训练的模型,换设备就要重新验证——而这份数据无法提供这个验证,因为只有一种设备。

第二层是机位唯一。单台相机放在受试者前方某个位置、某个高度、某个距离。这些参数条目页没给(距离多少米、高度多少、俯仰角多少),只在 equipment_info 之类的地方可能提到——但 KINECAL 没有 equipment_info 文件。机位参数缺失意味着无法复现采集几何,也就无法判断新采集的数据是否在同一几何下。

4.3 标签从哪来,可靠到什么程度

三个关键标签,来源各不相同。

group(跌倒史分组):来自受试者自报或知情者报告。条目页没说是自报还是查病历。跌倒史自报有一个已知问题——回忆偏倚:轻微跌倒容易被忘记,尤其是几个月前的。而"多次跌倒"的判定依赖回忆的准确性,这个类别只有 9 人,任何回忆误差都会显著改变分类。

clinically-at-Risk:条目页只说"indicates if the participants were marked as clinically at risk",没说依据什么标准。是临床医生判断?是某个量表超阈值?是多少阈值?全部缺失。6 个阳性,来源不明,这个字段基本不能用于建模。

动作执行质量:没有任何独立评分。也就是说,如果某位老人做五次坐立时手撑了膝盖(违反标准指令),数据里不会标出来。模型学到的是"这个人做的动作",不是"标准动作"。

这三个标签的可靠性依次递减。跌倒史相对可信(有明确定义),临床风险来源不明,执行质量完全没有。

4.4 摇摆指标与力台的距离

这是使用这份数据最容易出错的地方,值得详细说。

力台测的是压力中心(center of pressure,COP)——脚底与地面接触面上,反作用力的合力作用点。这个点在水平面上的移动轨迹,就是平衡研究里最经典的摇摆指标来源。

Kinect 给的是关节位置。从关节位置推算摇摆,有两条路:一是用全身质心的水平投影(需要每个身体节段的质量比例,用回归公式估算),二是用某个关节(比如脊柱基底 SpineBase)的水平位置。

两条路都与 COP 有系统性差异。

差异一:COP 的摆动幅度大于质心。 人体维持平衡时,COP 会在质心投影的两侧来回"追赶"——质心往右偏,COP 就往右移得更多,产生恢复力矩。所以 COP 的轨迹比质心更"活跃",幅度更大、频率更高。用力台的标准去解读 Kinect 算出的质心轨迹,会低估摇摆的剧烈程度。

差异二:尺度不同。 COP 的位移量级在毫米到厘米,质心的水平位移量级也在厘米,但两者的换算系数依赖于身高、足长、足宽。同一个受试者不同动作之间可以比较,跨受试者比较需要归一化。

差异三:频率成分不同。 COP 包含高频的姿势控制微调(几赫兹),Kinect 30 帧每秒的采样率上限是 15 Hz(奈奎斯特),实际有效带宽更低。高频成分被截掉了。

因此,KINECAL 的摇摆指标能回答的问题是"这个人的摇摆比那个人大",不能回答的是"这个人的 COP 摆动速度是每秒多少毫米"。前者是相对比较,后者是绝对测量。

4.5 深度相机对老年人的特殊问题

KINECAL 的受试者年龄最大到 92 岁。这个年龄段对深度相机提出了几个特殊挑战,条目页没有讨论。

体型与衣物。老年人常穿宽松衣物,深度图拍到的是衣物表面而不是身体表面,关节位置估计会偏移。宽松的裤腿会让膝盖位置估到裤管外。

步态特征。老年人常有拖步、小步、躯干前倾。Kinect 的骨架模型是用健康成年人数据训练的,对这些非典型姿态的估计精度未知。

辅助器具。用拐杖或助行器的老人,器具会进入视野,可能被误识别为肢体,也可能造成遮挡。

动作完成度。单腿站立对很多老人是困难的。做不满 20 秒、扶了墙、晃到需要迈步——这些都是临床上重要的信息,但数据结构里只有"这个动作有没有录",没有"完成得多好"。

这几条都是数据使用时的隐性风险,条目页没有涉及,属于编辑基于深度相机原理与老年医学常识的推断。

4.6 "非正式场景"到底有多非正式

条目页把"在非正式场景录制"列为 KINECAL 相对前人的一项优势。register.csv 里 recorded_in_the_lab 为 1 的 26 人,为 0 的 64 人——六成以上在实验室外录的。

但"非正式场景"具体是什么场景,条目页没说。是受试者家里?社区中心?养老院?走廊?光照条件如何?地面材质是什么?相机架在哪?离受试者多远?

这些信息全部缺失。而这恰恰是"能不能在真实环境用"这个问题的核心。如果那 64 人都是在一个光照可控、地面平整的社区活动室里录的,那和实验室的差别其实不大;如果是在各自家里,光照、地面、家具遮挡各不相同,那这就是真正的现场测试。

从 recorded_in_the_lab 这个二值字段本身看不出区别。这是这份数据在"证明自己贴近实际"这件事上的一个缺口。

4.7 数据质量清单(DAIMS)

按数据与人工智能就绪度评估的二十四个常见维度,挑关键项过一遍。

完整性:90 个受试者文件夹齐备,登记表 90 行。但每个受试者的动作覆盖是否完整未核实——我抽查的一个受试者只有 7 个动作目录,不是 11 个(§2.6)。

一致性:受试者文件夹用数字编号,登记表用 part_id,两套编号无对照表(§2.2)。这是最影响使用的一致性缺口。

可追溯:有 DOI、有版本历史(1.0.0 到 1.0.3,含两次许可修订)、有配套论文。追溯链完整。

许可清晰度:CC0,条款原文在包内。极清晰。

文档充分度:条目页写得相当细——11 个动作的标准指令逐条给出、16 项摇摆指标的缩写全部解释、目录结构有图示、三段式的文件格式说明。不足的是:机位参数缺失、start_end.csv 与 cached_* 文件未提及、part_id 与文件夹编号的映射缺失、clinically-at-Risk 的判定依据缺失。

预处理透明度:摇摆指标的计算方法条目页没给公式,只给了缩写全称。想复现计算过程,需要回论文或看 sway_utils 的代码。

标签质量:跌倒史相对可靠但依赖回忆;临床风险来源不明;执行质量无评分(§4.3)。

可复现性:sway_utils 与 sample_set 公开,代码是 Python,依赖常见。可复现性好。

代表性:90 人、47 男 43 女、18 至 92 岁、英国单一地区、四组构成明确。对"英国社区老年人的平衡能力分布"有一定代表性,对中国人群、对住院患者、对神经系统疾病患者没有代表性。

其余维度(隐私、伦理、偏见、维护活跃度)在条目页上有部分信息(伦理批号明确、匿名化处理),其余不做判断。

4.8 与相邻数据能做什么、不能做什么

与力台数据比:能比相对排序(谁摇摆大),不能比绝对量(毫米、度每秒)。

与光学动捕比:能比关节角度的趋势,不能比精度。光学动捕的关节角度误差在 1 度以内,Kinect 的误差在 5 到 10 度量级(依关节与遮挡情况差异很大)。

与临床量表比:能比分类一致性(这个人的 TUG 时间是否落进高风险区间),不能替代量表。量表有几十年的效度积累,深度相机没有。

与 HAR 数据集比:动作集不同、标签体系不同、目标不同。KINECAL 的动作是"规定的、要评估质量的",HAR 的动作是"自然发生的、要分类的"。这两类数据不能混在一起训。

§5 它能用来做什么

5.1 建立无标记平衡评估的基准

这是这份数据最正当的用法。

具体做法:用 Kinect 的骨架数据算出一组特征(关节角度、角速度、质心轨迹),看这些特征能不能复现临床量表的判读。比如,用五次坐立的三维运动特征,预测 SPPB 的坐立分项得分;用 TUG 的运动特征,预测 TUG 时间是否超过阈值。

这类研究的价值在于建立一个"无标记指标与临床量表之间"的映射基线。有了基线,后续的方法可以在这条线上比较。

要点:这类研究不需要大样本。SPPB 得分是连续或有序变量,90 人做回归分析是够的。要避免的是把它做成"用 Kinect 预测跌倒"——那是另一个问题,24 个正样本答不了(§4.1)。

5.2 研究摇摆指标的"可替代性"

sway_metric.csv 直接给了 16 项指标。这些指标是从骨架算的,那么问题来了:哪几项最接近力台的对应量?哪几项是 Kinect 特有的伪影?

做法:找一批同时有力台与 Kinect 记录的数据(KINECAL 本身没有,需要外部),做指标间的相关性分析。或者,在这份数据内部做一致性分析——同一动作在不同受试者之间,16 项指标的一致性结构是什么样。

这类研究不需要标签,只需要指标本身。90 人够用。

5.3 跨场景的可迁移性

26 人在实验室、64 人在非实验室。这个二值字段虽然信息量少,但足以做一个最基本的可迁移性检验:在实验室数据上训练的模型,在非实验室数据上表现如何?

如果性能明显下降,说明场景因素(光照、地面、机位)影响显著,需要考虑域适应。如果差不多,说明方法对场景不敏感。

这是一个极简但有效的实验设计。限制是:recorded_in_the_lab 是唯一的场景信息,无法进一步定位是哪个因素在起作用。

5.4 动作质量评估

11 个动作都有标准指令。可以研究的问题:能不能从骨架序列自动判断受试者是否按指令完成动作?

比如五次坐立要求双臂交叉抱胸。能不能从骨架看出手臂有没有交叉?能不能看出起立时躯干前倾角度是否在合理范围?能不能看出膝内扣?

这类研究的价值在质量控制:大规模筛查时,没人有空逐条检查动作是否规范,自动判定能省大量人力。

这个方向不需要跌倒标签,只需要动作本身的运动学。90 人够用。

5.5 做 Kinect 骨架数据的预处理与增强

这类数据有个天然的用途:作为方法学研究的测试床。

具体问题:遮挡时 Tracked 为假,怎么补?推断位置怎么用?帧与帧之间的抖动怎么平滑?不同身高的受试者怎么归一化?

这些问题在通用 HAR 数据上也能研究,但那份数据的动作简单、场景受控。KINECAL 的动作更精细(20 秒的静立,微小的摇摆),对预处理的要求更高,更能暴露方法的缺陷。

5.6 它不能用来做什么

不能做跌倒预测的临床验证(§4.1)。

不能替代力台(§4.4)。

不能做纵向研究(无随访)。

不能做步态分析(只有三米)。

不能外推到中国人群(英国单一地区招募)。

不能用于实时系统性能评估(离线数据,无实时约束)。

5.7 用之前必须先做的三件事

第一,建立 part_id 与文件夹编号的映射。这是最容易出错也最致命的一步(§2.2)。方法:找一个受试者,看 register.csv 里的字段与他文件夹里实际录了哪些动作,用动作集合反推映射;或者看 cached 文件名里带的是哪个 id。

第二,核对每个人的动作覆盖。抽查的一个受试者只有 7 个动作目录,不是 11 个。全量核对一遍,弄清楚是哪些人缺哪些动作、为什么缺。这决定了分析时能不能做 90 × 11 的完整矩阵。

第三,跑通 sample_set。用官方代码把样本数据读进来、画出来、算一遍摇摆指标,确认自己的理解与代码一致。这一步花半小时,能省掉后面几天。

§6 常见误读

6.1 误读一:九十人的跌倒数据

标题写"90 人",很自然读成"90 人的跌倒研究"。实际是有跌倒史的 24 人。

这个误读的后果是所有涉及跌倒的结论都会被高估。24 个正样本,做 5 折交叉验证,每折只有 5 个正样本;报出来的 AUC 置信区间宽得没有意义。

正确的读法:把这份数据看成"90 人的平衡能力数据,其中 24 人有跌倒史"。重心放在平衡,跌倒只是其中一层标签。

6.2 误读二:把摇摆指标当 COP

sway_metric.csv 里的 RDIST、MDIST、TOTEX 这些缩写,在平衡研究文献里通常是 COP 的指标。看到同样的缩写,很容易以为这就是 COP 的对应量。

不是。这些指标是从 Kinect 骨架算出来的(§4.4)。缩写相同,物理含义不同。

正确的读法:在每个指标前面加"Kinect 估计的"这个限定。写论文时要明确说明指标来源,否则读者会按 COP 的惯例解读,得出错误结论。

6.3 误读三:临床风险标记可以直接当标签用

clinically-at-Risk 有 6 个阳性。看起来是个现成的二分类标签。

但条目页只说"indicates if the participants were marked as clinically at risk"——被标记为临床风险。谁标记的、按什么标准、标记之后做了什么,全都没说。

可能的情况:临床医生凭经验判断;某个量表超过阈值;受试者自己报告"我觉得我快摔了"。这三种情况的含义完全不同。

6 个样本 + 未知来源,这个字段不能用于任何建模。可以用于描述性统计(“这 6 个人的摇摆指标是否系统性偏高”),但不能作为预测目标。

6.4 陷阱一:把 Tracked 为假的关节当成真实观测

骨架文件里每个关节都有 Tracked 字段。Kinect 在遮挡时会给推断位置,Tracked 为假。

这些推断位置是怎么来的?Kinect SDK 有一套基于历史轨迹与人体模型的补全逻辑。补出来的位置可能相当准,也可能完全错——尤其是长时间遮挡、或遮挡部位在做快速运动时。

如果把推断位置和真实跟踪混在一起用,会出现"数据看起来完整,但某些帧的关节其实在瞎猜"的情况。这种错误在统计上看不出来,只在个别样本上出现。

正确的做法:统计每个关节的 Tracked 比例。如果某关节在某个动作里大面积失效(比如单腿站立时被抬起的腿经常被遮挡),要么剔除该关节,要么剔除该动作,要么在分析里降权。

6.5 陷阱二:忽略 start_end.csv

动作录制往往是"开机就开始录,受试者准备一会儿才开始做"。原始数据里包含准备阶段。start_end.csv 给出的是有效动作区间的起止帧。

不用它,摇摆指标会把准备阶段的站立也算进去,算出来的指标偏小(因为准备阶段人不动)。而条目页完全没提这个文件——只读条目页的人不会知道它的存在。

正确的做法:所有指标计算前,先用 start_end.csv 截取有效区间。如果要用官方给的 sway_metric.csv,也要先确认它是在截取后算的还是截取前算的。

6.6 陷阱三:把十一项动作当十个独立测试

11 个动作之间不是独立的。站立类动作(安静站立、半串联、串联、单腿)测的是同一件事的不同难度梯度;泡沫上的两个是前两个的扰动版本。

做特征工程时,如果把这 11 个动作的特征全部拼成一个大向量送进模型,会引入大量共线性。模型可能会学到"这个人在安静站立时摇摆大"这条信息,然后在 11 个动作里重复用 11 次,看起来特征很多,实际信息量只有一个。

正确的做法:先做动作内的降维(每个动作提取少数几个主成分),或者按动作族分组分析,或者用显式建模受试者随机效应的方式处理重复测量。

6.7 陷阱四:年龄字段直接转数字

register.csv 的 age 列有 90 个值,其中 1 个是字符串 >89(受试者 SPPB307)。

如果直接 pd.read_csv 后 astype(float),会报错。如果加了 errors='coerce',这一条会变成 NaN,然后被静默丢弃——一个 90 多岁的人从分析里消失了,而且不会有人注意到。

正确的做法:显式处理这个字段。要么把 >89 记为 90 或 92(并用标记列记录这是下限值),要么把年龄当有序变量分箱。注意条目页说受试者年龄"from 18 to 92",说明确实有人 92 岁,那 >89 这条可能对应 90、91 或 92。

这个细节本身也是数据质量的一个信号:能对年龄做模糊化处理,说明作者在隐私保护上有意识。

6.8 陷阱五:用 KIMORE 或 Multimodal 的经验套过来

条目页的 Table 1 把 KINECAL 与三个前人数据集并列比较。看到这张表,容易以为它们可以混用或互补。

不能混。KIMORE 的动作是康复训练动作(不是跌倒相关),Multimodal 的受试者只有 21 人且无人有运动障碍,K3Da 没有任何临床标签。三个数据集的动作集、标签体系、采集条件都不同。

正确的读法:Table 1 是定位表,用来说明 KINECAL 补了什么空白,不是兼容性说明。

6.9 类别不平衡不是问题,样本量才是

24 比 66 的比例,用类别权重、过采样这些手段都能处理。技术上的不平衡好解决。

真正的问题是绝对数量。24 个正样本,无论怎么重采样,独立信息就只有 24 份。过采样是把同样的 24 个人复制多份,不增加信息。

把注意力放在"怎么处理不平衡"上,是问错了问题。该问的是"24 个人能支撑什么强度的结论"。

§7 与相邻数据的定位

7.1 与 KIMORE 的分工

KIMORE 是这份数据最直接的对照。78 人,44 健康加 32 有运动功能障碍,有临床评分。

差别在动作集。KIMORE 的动作是康复训练动作(比如举手、弯腰),用于评估康复进展。KINECAL 的动作是平衡筛查动作(站立、坐立、步行),用于评估跌倒风险。

要做康复评估,用 KIMORE;要做跌倒风险,用 KINECAL。两者的临床评分体系不通用。

7.2 与 Multimodal Dataset 的分工

Multimodal 21 人,有 TUG、30 秒坐立、45 秒单腿站立、2 分钟踏步。动作与 KINECAL 有重叠(TUG、单腿)。

但 Multimodal 的 21 人全是"当时无已知运动障碍"的,年轻的与年老的对半分。它适合做方法学验证(动作相同,人健康,信号干净),不适合做临床研究。

KINECAL 的人更多、更杂、有标签,适合做临床研究。

7.3 规模在整个生态里处于什么位置

按受试者数:90 在跌倒相关的动作数据集里属于最大的一档(条目页自称 the largest of its kind)。

按数据量:深度图加骨架,文件数百万,体量中等(比影像数据小,比纯表格数据大)。

按标签丰富度:四个层次的标签(人口学、跌倒史、临床风险、摇摆指标),在动作数据集里算丰富。

按动作标准化:11 个动作都配了标准指令,这在 HAR 类数据里少见。

这是一个"标签深、动作标准、样本量中等"的配置。优点是研究问题能问得具体,缺点是统计功效有限。

7.4 与临床平衡评估研究线的接续

这条线的脉络:从力台(金标准,实验室)、到临床量表(可及,精度低)、到无标记动捕(可及,精度待验证)。

KINECAL 处在第三段。它的价值不是证明 Kinect 能替代力台,而是提供了验证这个"能不能替代"的材料。

条目页说"We will be using this dataset in a set of upcoming papers"——说明作者还在继续用这份数据做研究。这意味着数据可能会随论文更新(比如加更多受试者、加更多标签)。使用时要留意版本。

7.5 适合谁用

适合:做无标记动作捕捉临床应用的团队;做平衡与步态分析的;做老年医学数字化的;做 Kinect 数据处理方法学的。

不太适合:需要大样本做跌倒预测的;需要力台级精度的;需要纵向随访的;需要中国人群数据的。

§8 怎么用:分析方案

8.1 最小可用基线

在做任何模型之前,先做一个只有两行代码的基线:用 sway_metric.csv 里的某一个指标(比如 TOTEX,总耗散),按组画箱线图,看组间有没有肉眼可见的差异。

这一步不需要任何机器学习。如果连最简单的指标都分不开组,那复杂的模型多半也分不开——或者分开了也是过拟合。

有了这个基线,后面所有方法的提升才是可衡量的。

8.2 划分策略比模型选择更重要

90 个人,划分方式的选择直接决定结论的可信度。

必须按受试者划分。同一个人的 11 个动作不能分到训练集和测试集两边——那等于让模型见过这个人。

如果要做场景迁移,按 recorded_in_the_lab 划分:实验室训练,非实验室测试。

如果要做年龄泛化,按年龄段划分:年轻训练,老年测试(或反过来)。

三种划分给三个不同的数。建议至少报"按受试者随机划分"这一个,作为主结果;如果有场景或年龄的假设,再报对应的迁移结果。

不要报"按动作行随机划分"的结果——那是把同一个人的不同动作分开,纯属自欺。

8.3 指标怎么选

如果是分类任务(比如跌倒者 vs 非跌倒者),主指标是平衡准确率(balanced accuracy)或宏平均 F1,不是准确率。原因是 24 比 66 的不平衡,全判非跌倒者就有 73% 的准确率。

如果是回归任务(比如预测 SPPB 得分),主指标是平均绝对误差,同时报组内相关系数。后者衡量的是"预测值与真实值的排序是否一致",比相关系数更适合评估一致性。

无论哪种,都要报置信区间。90 个人的样本,置信区间往往比点估计更有信息量。

8.4 基线与它的意义

要报两个基线。

多数类基线:在分类任务上,全判多数类的准确率。这是绝对下限。

临床量表基线:如果用简单的临床变量(年龄、性别、BMI)能预测到什么程度,这是"不用 Kinect 也能做到"的水平。任何用 Kinect 的方法都必须打过这个。

第二个基线常被忽略。如果年龄与性别就能解释大部分方差,那么复杂的运动学特征带来的增量就很有限,这个增量才是研究的真正贡献。

8.5 过拟合的典型表现

90 个样本上,过拟合有几种典型形态。

训练 AUC 0.95,测试 AUC 0.6。这是最直白的记忆。90 人做 5 折,每折训练 72 人、测试 18 人。模型如果参数量超过几十,很容易记住训练集。

特征重要性全是同一个动作。如果 11 个动作的特征拼在一起,模型可能只用了其中一个动作的特征(因为那个动作与标签相关性最强),其他都是噪声。看起来用了很多特征,实际只用了一个。

交叉验证方差极大。5 折的 AUC 分别是 0.9、0.55、0.7、0.5、0.85——这种分布说明结果高度依赖哪几个人被分到哪一折,也就是不稳定。这时候报平均值没有意义,要报整个分布。

加了特征反而变差。如果从 16 个指标减到 4 个指标,性能反而上升,说明多出来的 12 个在引入噪声。

8.6 具体的数据处理建议

先做个体归一化。摇摆指标的绝对值依赖于身高、足长。同一个动作,高个子的人摇摆幅度天然更大。做组间比较前,应按身高或腿长做归一化。

注意动作时长的差异。站立类动作有 20 秒的上限,但有些受试者提前终止(“if lost balance”)。时长不同,总耗散这类累积型指标不可直接比较。要么按时间归一化,要么只用速率型指标。

处理 Tracked 缺失。先统计每个受试者每个动作的关节跟踪率。对跟踪率过低的样本做剔除或降权(§6.4)。

用 start_end.csv 截取(§6.5)。

年龄字段特殊处理(§6.7)。

8.7 五条失败模式

一,part_id 与文件夹编号没对上。标签安错人,结果无法解释,而且看不出错在哪(§2.2)。这是最致命的一条。

二,只读了条目页,不知道 start_end.csv 与 cached 文件的存在。导致重复劳动,或者算了错误的指标(§6.5)。

三,把 sway_metric.csv 当 COP 指标解读。结论的物理含义错(§6.2)。

四,年龄字段报错或被静默丢弃。分析里少了一个 90 多岁的受试者(§6.7)。

五,把 11 个动作的特征全拼起来。维度爆炸加共线性,模型不稳定(§6.6)。

8.8 结果该怎么读

拿到一个按受试者划分的平衡准确率,比如 0.72,可以写什么结论?

可以写:在这 90 名受试者中,用 Kinect 骨架提取的运动学特征,按受试者 5 折交叉验证,区分有跌倒史与无跌倒史的平衡准确率为 0.72(95% 置信区间某范围)。相比仅用年龄与性别的基线(某值),提升某值。

不可以写:这个方法可用于社区跌倒筛查。这个准确率满足临床需求。这个结果在更大人群上成立。

不可以写:与某文献的 0.78 相比我们的方法较差。除非划分方式、特征集、受试者构成全部对齐。

8.9 与人工判读的比较

这份数据可以做一个人工判读的对照:让有经验的物理治疗师看骨架动画,判断这个人的平衡能力如何,再与模型比。

这个对照有意义,因为临床上平衡评估本来就是靠观察。但要注意:治疗师看的是完整的三维运动,模型看的是提取后的数值特征。两者的信息基础不同。

条目页没有提到任何人工判读的基线。这留下了空间——做这个对照本身就是一个贡献。

8.10 先错误分析再调模型

拿到结果后不要立刻调参。先看错例。

具体看三件事:错例的年龄分布(是不是集中在某个年龄段);错例的动作分布(是不是某个动作特别容易错);错例的 group 分布(是不是多次跌倒者特别容易被判对,因为他们的信号最"典型")。

这三件事通常能揭示问题的性质。如果错例集中在老年人,可能是骨架估计对老年人不准;如果集中在某个动作,可能是那个动作的指令执行度差异大;如果某组特别容易被判对,可能是模型学了这个组的其他特征(比如年龄)。

§9 三条技术路线

9.1 用现成的摇摆指标

最简单的一条路:直接用 sway_metric.csv 的 16 项指标,不做任何骨架处理。

做法:把 16 项指标按动作聚合成一个特征向量(比如取平均、取最大、或者按动作分别保留),做分类或回归。

优点:不需要碰深度图与骨架,不需要写解析代码,可以直接从 CSV 开始。计算量极小。

缺点:这 16 项指标是别人算好的,你不知道计算细节(条目页没给公式);指标之间高度相关;丢失了时序信息(摇摆的动态过程被压成了标量)。

适合:快速探索、做基线、验证"这份数据到底有没有信号"。

9.2 从骨架算特征

第二条路:自己从骨架文件算特征,比现成指标更灵活。

可以算的东西比 16 项指标多得多:关节角度序列、角速度、关节间的协调(比如髋膝踝的相位关系)、左右对称性、动作分段的时长(坐立的上升相、下降相分别多久)。

优点:能针对具体研究问题设计特征;能利用时序信息;能算出 16 项指标里没有的东西。

缺点:要写解析代码(几万个小 txt 文件,需要批处理);骨架本身有跟踪误差(§6.4);特征设计需要领域知识。

适合:有明确研究假设、需要特定运动学量的研究。

9.3 端到端深度学习

第三条路:直接把骨架序列或深度图送进网络。

骨架版本:把 25 关节的三维坐标按时间排列成一个张量,送进时序卷积或图卷积网络(骨架天然是图结构)。

深度图版本:把 .bin 还原成 424 乘 512 的图,按帧堆叠,送进三维卷积或双流网络。

优点:省掉特征工程;理论上能学到人没设计出来的模式。

缺点:90 个样本,参数量动辄几十万到几百万,过拟合风险极高。深度图更麻烦——每帧 424 KB,300 帧一个动作就是 127 MB,一个受试者 11 个动作超过 1 GB,内存扛不住。

适合:作为对照实验,说明"深度模型在这个样本量上打不过简单方法"。这个结论本身有价值。

9.4 一个被忽略的中间路线

在"用现成指标"和"端到端"之间,有一条被忽视的路:用骨架数据做一个中间表示,再在中间表示上做简单模型。

具体做法:不用原始关节坐标,而是转成临床上更有意义的量——比如每个动作的"运动学签名":完成时间、峰值角速度、躯干前倾范围、重心位移的椭圆参数。每个动作只留四五个数,11 个动作加起来四五十个数。

这个表示的好处是:维度小(四五十维,90 个样本撑得住)、可解释(每个数都有临床含义)、鲁棒(不依赖特定的关节,用整段轨迹的统计量)。

它其实就是临床医生看动作时心里在估的那几个量,只是用数值化的方式算出来。

9.5 选择建议

按研究目的选:

想快速验证数据有没有信号,用 9.1。
想深入研究特定运动学问题,用 9.2。
想做方法学对照(证明深度模型在小样本上不适用),用 9.3。
想在有限样本上做出可信结论,用 9.4。

实际研究中常见的组合:9.4 做主体分析,9.1 做基线对照,9.3 做负面结果。

三条路线不是互斥的。9.4 的运动学签名可以喂给 9.3 的网络,也可以直接接 9.1 的简单分类器。

§10 术语

KINECAL:Kinematic Assessment of Balance,本文所述数据集的名称。

SPPB(Short Physical Performance Battery):短物理性能 battery,包含平衡、步行速度、坐立三个分项,总分 12 分,是老年功能评估的通用工具。

STS-5(五次坐立):从坐姿起立再坐下,重复五次,计总时间。测量下肢力量与功能性活动能力。

TUG(Timed Up and Go):从椅子起立、走三米、转身、走回、坐下,计总时间。老年医学中最常用的跌倒风险筛查单项测试。

串联站立 / 半串联站立:双脚前后相接站立,串联是后脚脚尖贴前脚脚跟,半串联是后脚脚尖贴前脚脚侧。逐步缩小支撑面,增加难度。

单腿站立:单脚支撑,另一脚抬起离地约 6 英寸,双手自然下垂。测静态平衡与下肢稳定性。睁眼闭眼两种条件。

COP(Center of Pressure,压力中心):地面反作用力的合力作用点。力台直接测量,是平衡研究的金标准。

COM(Center of Mass,质心):全身质量的中心。可由节段质量模型从关节位置估算。

摇摆指标:从 COP 或 COM 的轨迹计算出的量化指标,包括幅度、速度、频率、面积等族。

95% 置信椭圆:把摇摆轨迹的二维分布用一个椭圆概括,椭圆的面积反映摇摆的散布范围。

Airex 平衡垫:一种泡沫材质的软垫,用于削弱本体感觉输入,增加平衡难度。

无标记动作捕捉(markerless motion capture):不用在人体上贴标记点,直接通过图像或深度数据估计人体姿态的技术。

深度图:每个像素记录到相机距离的图像,与彩色图不同,它不含纹理与颜色信息。

Tracked(跟踪标志):Kinect 骨架数据中标记某关节位置是真实检测还是推断补全的字段。

CC0:Creative Commons Zero,公共领域奉献,作者放弃全部著作权,使用者无任何义务。

DAIMS:Data and AI Readiness 评估框架,用一组维度检查数据集是否适合直接用于建模。

§11 事实清单

11.1 核心事实

项目 值
数据集全名 KINECAL: A Dataset for the Assessment of Balance, Frailty and Falls-Risk
简称 KINECAL
DOI 10.13026/vvkp-ct80
版本 1.0.3(历史版本 1.0.0、1.0.1、1.0.2)
发布日期 2023-06-08
作者 Sean Maudsley-Barton、Moi Hoon Yap
机构 曼彻斯特城市大学
伦理批号 020517-ESS-CC(1);SE161757
许可 Creative Commons Zero v1.0 Universal(CC0)
受试者 90 人
年龄 18 至 92 岁(1 条记为「大于 89」)
性别 47 男 43 女(按 register.csv 统计)
分组 健康成人 33、非跌倒者 33、单次跌倒 15、多次跌倒 9
临床风险标记 6 人
实验室采集 26 人;非实验室 64 人
动作数 11
采集设备 Kinect V2
采样率 30 帧每秒
深度图分辨率 424 乘 512
骨架关节数 25
摇摆指标数 16
受试者文件夹数 90(纯数字命名)
register.csv 行数 91(含表头)
SHA256SUMS.txt 大小 约 1.08 亿字节
资助 曼彻斯特城市大学
利益冲突 无

11.2 六个可立即验证的疑问

一,part_id 与受试者文件夹编号怎么对应? 这是使用前最该确认的一件事。方法:挑一个受试者,比对 register.csv 里的字段(年龄、性别、BMI)与其文件夹里实际录的动作集合,找唯一匹配;或者看 cached 文件名里的标识。

二,90 个受试者里,每个人的动作目录是不是都有 11 个? 我抽查的一个受试者只有 7 个(含一个 backup)。逐个统计 kinecal/*/ 下的子目录数与名称,即可确认。

三,clinically-at-Risk 的判定依据是什么? 条目页只说"被标记为临床风险"。需要查配套论文或联系作者,或看 sway_utils 里有没有相关注释。

四,start_end.csv 与 cached_* 文件为什么不在目录结构图里? 是条目页遗漏,还是后来加的?比对 1.0.0 与 1.0.3 的文件列表可知。

五,sway_metric.csv 的 group 字段是否含 healthy-adult? 条目页的表头说明只列了三种 group,但 register.csv 有四种。打开 sway_metric.csv 看实际取值分布即可。

六,MVELO_AP 的说明写错了吗? 条目页写"Value for mean velocity in ML direction",但字段名是 AP。按上下文应为笔误。核对 sway_utils 代码或论文即可。

11.3 一条受试者的读取流程

以下是读一个受试者一个动作的骨架数据的骨架,不含完整实现。

第一步,确定文件夹。受试者文件夹是 kinecal/<数字>/,动作文件夹名形如 <数字>_STS-5、<数字>_Tandem-Balance、<数字>_3m-walk。注意动作名用连字符与下划线混合,拼写不完全统一。

第二步,读起止帧。打开该动作文件夹下的 start_end.csv,取 start 与 end 两列。这决定了后面只看哪一段帧。

第三步,读骨架。skel/ 目录下每个 <帧号>.txt 是一帧。逐列解析:关节名、Tracked、三维 x/y/z、像素 x/y。

第四步,筛帧。按 start_end 截取,并统计这区间内各关节的 Tracked 比例。

第五步,算特征。按研究问题选择(关节角度、质心、速度等)。

第六步,如果是深度图,读 depth/DepthUshort<帧号>.bin,按 ushort 解析后 reshape 成 424 乘 512。

11.4 附录 A:一次按受试者划分的评测骨架

思路如下,不写具体代码。

数据准备:从 sway_metric.csv 读入全部行。检查每个人的动作覆盖,剔除覆盖过少的受试者(并记录剔除了谁、为什么)。

标签:把 group 二值化——FHm 与 FHs 合并为"有跌倒史",HA 与 NF 合并为"无跌倒史"。得到 24 正 66 负。

特征:按受试者聚合 16 项指标。聚合方式有三种可选:取全部动作的平均、取某个关键动作(如 TUG 或串联站立)的值、按动作分别保留。建议先用第三种,因为它保留了动作特异的信息。

划分:按受试者 5 折分层交叉验证,保证每折的正负比例接近 24 比 66。

模型:逻辑回归加 L2 正则。正则强度用内层交叉验证选。

指标:平衡准确率、宏平均 F1、AUC,全部报 5 折的均值与标准差。

基线:只用年龄与性别做同样的流程。这是必须报的对照。

补充:把 5 折的个体预测概率存下来,画一条校准曲线。90 个样本的模型校准通常很差,这条曲线比 AUC 更能说明问题。

11.5 附录 B:证据链

按章节交代信息来自哪里。

§1:数据集定义、11 个动作、标准指令、受试者年龄范围,来自条目页 Abstract 与 Methods 的 Table 2。"四组人数 33/33/15/9"是我从 register.csv 实际统计的,不是条目页给的。"26 人实验室采集"同样是文件统计。四条边界的表述属编辑整理。

§2:目录结构、文件格式、摇摆指标 16 项,来自条目页 Data Description。受试者文件夹用数字命名、start_end.csv 与 cached 文件的存在、depth 与 skel 各 300 个文件,是我实际访问 PhysioNet 文件目录核对的。SHA256SUMS.txt 字节数来自 HTTP 头。人群分布统计全部来自 register.csv 计算。

§3:许可、伦理批号、引用格式,来自条目页 Access 与 Ethics 部分。CC0 的含义属通用法律常识。

§4:四组人数、临床风险 6 人、年龄的 >89 特例,来自文件统计。机位参数缺失、执行质量无评分、非正式场景无描述,是编辑指出的条目页缺口。摇摆指标与 COP 差异的讨论属编辑基于平衡研究方法学的分析,条目页未涉及。深度相机对老年人问题的讨论同样是编辑推断。

§5:条目页 Usage Notes 只提到"数据可用于研究摇摆指标与整体身体指标",§5 的五条用法是编辑展开的具体方案。§5.2 的"找外部力台数据"属编辑建议。

§6:全部为编辑基于数据结构与文件实况的分析,条目页没有对应的"常见误读"讨论。年龄 >89 导致 astype(float) 报错这一条,是我实际读 CSV 时发现的。

§7:与 KIMORE、Multimodal、K3Da 的对比,来自条目页 Table 1 的直接表述,属条目页内容。

§8:全部为编辑的方法学建议。

§9:三条路线加补充路线的划分属编辑整理。sway_utils 与 sample_set 的存在来自条目页 Usage Notes。

§10:术语定义为通用定义,SPPB、TUG、串联站立等均有标准出处,非条目页原文。

§11.1:数值取值来源已在表内逐项对应——条目页原文、文件统计、HTTP 头三类。资助与利益冲突来自条目页 Acknowledgements 与 Conflicts of Interest。

§11.2:六个疑问全部是条目页的信息缺口或我在核对中发现的疑点。

未验证的部分:本页不含对 90 个受试者全部动作覆盖情况的完整统计,只抽查了一个受试者。不含对 sway_metric.csv 实际内容(行数、group 取值分布)的核对。这两项留待下载后完成。

编辑说明

本页依据 PhysioNet 条目页(https://physionet.org/content/kinecal/1.0.3/)公开表述撰写,并实际访问了该项目的文件目录与 register.csv 以核对结构与人群构成。

需要说明的几处判断:

一是关于四组人数与人群分布。条目页只给了总人数 90 与年龄范围,没有给出分组人数、性别构成、年龄段分布、实验室采集比例。这些数字全部由本页从 register.csv 实际统计得到,读者可自行复算。

二是关于受试者文件夹命名。条目页的目录结构图写作 <part_id>,实际是纯数字。两者不一致这一点是本页核对的发现,条目页未提及。本页在 §2.2 与 §6.7 两处提醒了这个风险,但未给出映射方法——因为映射关系确实未知,不宜推测。

三是关于 start_end.csv 与 cached_* 文件。这四个条目不在条目页的目录结构图里,是本页访问实际目录时发现的。本页据此提出了"条目页遗漏还是后加"的疑问(§11.2),未做判断。

四是关于摇摆指标与压力中心的区别。条目页用"akin to data derived from force plates"的措辞,本页据此展开为 §4.4 的详细讨论。该讨论属编辑基于平衡研究方法学的分析,非条目页内容。

五是关于"非正式场景"的具体内容。条目页只说 in both the lab and in informal settings,register.csv 只有一个二值字段。本页在 §4.6 指出这是信息缺口,未做推测。

六是关于 clinically-at-Risk 字段的含义。条目页只写"indicates if the participants were marked as clinically at risk",未说明判定标准。本页在 §4.3 与 §6.3 两处指出这一点,未做推测。

资助与利益冲突两节内容照录条目页原文,不含评价。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • accelerometry-walk-climb-drive — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 评测基准
  • scientisst-move — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 评测基准
  • grabmyo — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 评测基准
  • sisfall — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 评测基准
  • wisdm — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 评测基准
  • hospital-activity-bosch — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 评测基准
  • ppg-dalia — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
  • rehab-motion-capture — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 评测基准
  • pamap2 — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
  • dreamt — 共享标签:生理信号 / 可穿戴传感 / 评测基准

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集