信息速览
文献里讨论步态肌电时,"几分钟的连续记录"这个前提经常被悄悄省略。实验室里常见的是十几步、二十几步的短路走,一帧一帧切出来做分类,报告一个漂亮的准确率就算完事。拿这种数据去估算肌肉激活区间的变异,等于用几十个样本估计一个双峰分布的形状——数字算得出来,置信区间宽到没有意义。
PhysioNet 的 semg 资源就是冲着这一点建的。三十一名健康青年,每人赤足沿 8 字路径连续行走约五分钟,二点五到三点二公里的步幅量级,十块下肢肌肉全程有电。这不解决"数据多"的问题,它解决的是"每个人有多少个完整步态周期"的问题。
连续本身带来了新的麻烦:单条记录里前段和后段不属于同一种行走状态,足底开关的阈值漂移会在十分钟里悄悄改变事件判定,头文件里的单位在文件之间不统一。这些都在 §6 与附录 D 里逐条拆开。规模、结构、边界三类数字的速览见下表,一屏速览见此为止。
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | PhysioNet semg(长时间平地步态表面肌电) |
| 英文全称 | Surface electromyographic signals collected during long-lasting ground walking of young able-bodied subjects |
| 别名/简称 | physionet semg、long-duration walking sEMG、Di Nardo 步态肌电库 |
| 疾病分类 | 不适用(健康志愿者方法学资源,无 ICD-11 疾病编码) |
| SNOMED CT | 不适用(无诊断标签) |
| 数据模态 | 表面肌电(10 路)+ 足底开关(2 路聚合成导联)+ 膝关节电角度(2 路) |
| AI 任务类型 | 步态相位分割、步态事件检测、肌肉激活区间估计、肌肉协同分解、跨受试者泛化评测 |
| 样本总数 | 31 名受试者,31 条连续记录,每条含数百个完整步态周期 |
| 数据大小 | 66 个文件,单条记录 6.8 MB 至 17.9 MB,整包不足 0.5 GB |
| 数据格式 | WFDB(.dat 16 位二进制 + .hea 文本头)+ 一份分号分隔的受试者 CSV |
| 许可证 | Open Data Commons Attribution License v1.0(ODC-By 1.0) |
| 访问级别 | 开放(免注册,直接 HTTP 或 wget 下载) |
| DUO 标签 | 官方未标注;按 ODC-By 条款等效 NRES(无使用限制)加署名义务 |
| 语言 | 英文(文档、头文件注释、CSV 表头) |
| 首发日期 | 2021-03-15(版本 1.0.0) |
| 最后更新 | 2024-01-09(版本 1.0.1,修正两条记录的头文件) |
| 发布机构 | 马尔凯理工大学信息工程系运动分析实验室;PhysioNet 托管 |
| 官方主页 | physionet.org/content/semg |
| 下载地址 | physionet.org/files/semg/1.0.1 |
| DOI | 10.13026/grdj-qx06 |
| 引用次数 | 平台页 Cited by 计 1 篇(OpenAlex,截至 2026-10);配套论文另见 PLoS ONE 2025 |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— WFDB 可直接流式读取、许可无门槛;扣分项:无官方划分、头文件单位不一致、单中心单协议 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
- 医学审核者:千方医数集(生理信号与运动分析方向编辑)交叉审核:§2 医学背景(步态周期分期与下肢肌肉功能)、§7 偏倚分析。
- 数据工程审核者:[千方医数集交叉审核] 医疗 AI 数据工程师,审核范围:§4 字段字典、§5 划分策略、§6 流水线与坑点。
- 审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规声明:该数据集按 ODC-By 1.0 发布,允许再分发与商业使用,但必须保留署名。使用者在再发布衍生数据集、发表论文或在产品中集成时,应同时引用 PhysioNet 数据页、配套方法论文与 PhysioNet 平台文献。
§1 这是什么:一份把"行走时长"当主要变量的肌电库
1.1 一句话定位,以及四条边界
它是三十一名健康青年、每人一条约五分钟连续平地步态的开放式表面肌电记录:十条肌肉通道、两路足底开关、两路膝关节角度,全部由同一台 Step32 采集系统以 2 kHz 同步写入一个 WFDB 文档。研究者关心的不是"能分几类",而是"一个人走五分钟会变多少"。
四条边界必须先说清楚,否则后面所有结论都会跑偏。
第一条,它不是临床数据集:无患者、无分组标签、无病程信息,全部健康、二十到三十岁、体重指数十八点五到二十五。第二条,它不是多模态步态库:无力台、无光学动作捕捉、无惯性单元,地面反作用力、关节力矩、躯干与骨盆运动都推不出来。第三条,不是高密度肌电:每块肌肉一只双极探头,非沿肌纤维排列的阵列。第四条,"大"是时间上的大而非人群上的大。
1.2 三十一秒就说完的三十一个人
数字本身并不惊人:三十一人、三十条记录、十路肌电、两千赫兹。要看的不是单个数字而是它们的关系——每条记录数十万帧,每人数百个完整步态周期,乘起来是一个十几万周期的池子,这才是它相对同类资源的位置。
肌肉五块:腓肠肌外侧、胫骨前肌、股直肌、腘绳肌、股外侧肌,左右各一合成十路,覆盖踝背屈跖屈与膝伸展屈曲,恰好是平地行走时相序最清晰的组合;缺髋伸肌群与深层肌肉,§7 会回到这一点。
1.3 三十秒决策卡:你的处境,它能帮什么
判断要不要用这份数据,看左边这一列,不看右边那一列。
| 你的处境 | 这份数据能帮你什么 |
|---|---|
| 想验证一个肌电驱动的步态相位分类器在未见受试者上的表现 | 三十一名受试者天然支持留一受试者交叉验证,每人近五分钟连续数据足够喂满深度模型 |
| 想统计某块肌肉在自然步速下的激活区间分布 | 每人数百个周期,可给出分布而不是均值;这是短路走数据给不出的 |
| 想研究同一个人五分钟内的步态漂移与适应 | 单条连续记录,前后段可直接对比,无需跨记录配准 |
| 想找一份健康对照,去比对偏瘫或帕金森患者的肌电时序 | 2013 与 2020 年两篇论文正是这样用的,方法口径已经对齐 |
| 想训练一个跨人群通用的步态模型 | 它给不了:没有患者、没有老人、没有儿童 |
落不进任何一行,§1.4 有更直接的答复。
1.4 不适合谁
要带诊断标签的病理步态库做疾病分类,它给不了标签,去 Gait in Parkinson’s Disease 或 Gait in Neurodegenerative Disease Database 更合适。要做足底压力到关节力矩的逆动力学反演,它给不了地面反作用力的三向分量,开关只有通断。要用惯性单元做自由场景监测,它给不了,因为全部在实验室内赤足、沿固定路径完成。要直接训练外骨骼控制策略,时序信息够用,但缺少电极失效、皮肤汗湿、机械延迟这些实时约束,需要另补真实佩戴数据。
1.5 同类数据分散,这里写的是哪一份
表面肌电加步态这个组合,在 PhysioNet、Zenodo、Mendeley Data 与 Dryad 上有相当多近似条目,差别往往藏在三个参数里:采样率是 1 kHz 还是 2 kHz,通道是十路还是八路抑或一百二十八路,时长是几步还是几分钟。仅凭标题区分几乎不可能。
本页锚定的是 PhysioNet 短名 semg 的那一份,DOI 10.13026/grdj-qx06,作者 Di Nardo、Morbidoni 与 Fioretti,机构马尔凯理工大学。最快的识别方式是文件名规则:记录名 S1 到 S31 无前导零,S01 返回 404;每条记录恰好 14 个导联;目录里有一份分号分隔、带 BOM 的 Subject_info.csv。三项命中两项即可确认。
还要提醒:同一第一作者团队在 2019 与 2021 年的论文里用过一批二十三名受试者、八通道的相似数据,与这里不是同一批。论文指标可作方法参考,不能声称是在本数据集上算出的。
1.6 版本与命名
两个版本,差别很小但很关键。
| 你的需求 | 推荐版本 | 体量 | 理由 |
|---|---|---|---|
| 直接从零开始 | 1.0.1 | 66 个文件,不足 0.5 GB | 修正了两条记录头文件里的信号顺序描述,避免读错通道 |
| 复现 2021 至 2023 年的旧结果 | 1.0.0 与 1.0.1 均可,但须核对 S1 与 S21 | 同上 | 只有两条记录变化,其余文件逐字节相同 |
| 引用与存档 | 1.0.1 与 DOI | 同上 | DOI 10.13026/grdj-qx06 指向的是项目而非具体版本,版本号须在引用中写明 |
被替换的是 S1 与 S21 两条记录的 .hea 与 .dat。官方说明的原因是原头文件对 .dat 内部信号顺序的描述不正确。这句话的含义很重:如果你在 1.0.0 上读 S1,肌电通道标签可能整体错位,相位识别的结果会看起来"很差"而找不到原因。
§2 医学背景:步态周期与五块肌肉的相序
2.1 ICD-11 与 SNOMED CT 映射
这是一份健康志愿者数据,没有疾病编码可填。但它的分析对象——行走——在分类体系里有明确位置,而且这些编码决定了它能不能挂接到下游的临床数据集上。
| 标签 | ICD-11 编码 | SNOMED CT | 术语说明 |
|---|---|---|---|
| 步态观察 | 未单列章节,归入体格检查类目 | 36476008 Observation of gait | 临床对步行模式的系统观察 |
| 步态与运动障碍 | 8A00-8E7Z 区间相关类目 | 22325002 Abnormal gait | 本数据不含此类,仅作对照定位 |
| 表面肌电检查 | 不适用(属诊断操作) | 30784006 Electromyography | 采集技术本身的编码 |
| 膝关节活动度测量 | 不适用(属功能评估) | 36457005 Joint range of motion | 电角度计测量的对象 |
| 赤足行走 | 不适用 | 无专用编码 | 协议属性,不进入诊断编码 |
映射的价值不在打疾病标签,而在跨库合并时对齐:与 Gait in Parkinson’s Disease 之类联用作健康对照时,"步态观察"是唯一能对上的上位概念,其余都得靠元数据字段手工协商。
2.2 一个步态周期里发生了什么
一个步态周期等于同侧足跟连续两次着地之间的间隔。该侧下肢先处于支撑相(约占六成),再进入摆动相(约四成)。
每个事件点周围肌肉活动都在翻转:胫骨前肌在摆动相中后期达峰以抬足背屈,着地瞬间迅速下降转为离心收缩;腓肠肌外侧在支撑中后期推身向前;股直肌横跨髋膝,摆动相前期抬腿、着地后短暂承重;腘绳肌在摆动相末期减速小腿防膝过伸;股外侧肌在承重反应期吸收冲击。
这个相序几乎确定,因而从肌电反推相位原理上可行;也意味着任何通道贴错位置或头文件标错顺序都会让相序断裂,而断裂在图上很容易看出来。
2.3 这份数据能支撑的临床相关分析
严格说它支撑不了任何临床任务,它是健康对照。但它能支撑三类与临床直接相关的分析。第一类是事件检测:足底开关给出设备级的客观着地时刻,不受标注者主观判断影响,这是少数能拿到接近金标准事件标签的肌电资源。第二类是激活区间统计:包络过阈值后得到某块肌肉在某一步里的发力起止,这类区间在偏瘫、帕金森与脑卒中研究中是常用比较量。第三类是控制策略评估:把分类器训练在健康人、测试在患者身上,跨人群迁移的难度本身就是临床问题。
把受试者限制在健康、正常体重、二十到三十岁,是研究肌肉激活自然变异时先剔强混杂因子的必要做法,代价则是由此产生的分布偏移无法用本数据自身量化。
2.4 受试者画像
| 维度 | 情况 | 依据 |
|---|---|---|
| 来源 | 意大利安科纳,马尔凯理工大学运动分析实验室 | PhysioNet Methods |
| 采集时间 | 2011 年与 2018 年两批 | PhysioNet Abstract |
| 人数 | 三十一人,每人一条记录 | RECORDS 文件列三十一项 |
| 年龄 | 二十至三十岁之间(严格不等号) | 纳入标准 |
| 性别 | 十九名女性、十二名男性 | Subject_info.csv 逐行统计 |
| 身高体重 | 身高 152 至 197 厘米,体重 45 至 86 千克 | 同上 |
| 体重指数 | 十八点五至二十五之间 | 纳入标准 |
| 就医类型 | 非就医人群,健康志愿者 | 排除标准含病理、关节痛、骨科手术史 |
| 种族与地域 | 未记录,推断为意大利本地招募 | 文档未说明 |
Subject_info.csv 里有三处空白:第 19 号受试者身高体重为空,第 25 号身高体重为空,第 31 号只有性别与序号,年龄身高体重全空。这不是解析错误,是原始记录就缺。使用时若要把年龄体重当协变量,这三条必须显式处理,不能沉默地当成 0。
2.5 为什么健康青年是它的合理选择
把受试者限制在健康、正常体重、二十到三十岁,从数据集设计角度是合理的,从临床角度则是一道硬伤。合理的部分在于:研究肌肉激活的自然变异时,必须先把病理、年龄、肥胖这些强混杂因子剔掉,否则观察到的差异无法归因。这道硬伤在于:任何以青年健康人训练出的步态模型,迁移到老年人或患者身上都会遇到分布偏移,而这份数据没有提供任何可用于量化该偏移的样本。
换言之,它的健康人定位是一份诚实的对照,不是一个偷懒的选择。§7.1 会把由此产生的偏倚逐条列出。
2.6 金标准的性质
| 划分 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|
| 足跟着地、足趾离地时刻 | 足底开关导通与断开 | 无人工标注者 | 设备级客观事件,受开关位置与阈值影响 |
| 支撑相与摆动相 | 由上一条推得 | 无 | 派生标签,非独立测量 |
| 肌肉激活起止 | 肌电包络过阈值 | 无官方标注,须自行计算 | 完全依赖使用者的处理参数 |
| 膝关节角度 | 电角度计直接测量 | 无 | 连续物理量,精度标称 0.5° |
| 步态周期划分 | 无官方标注 | 无 | 须自行从开关信号切分 |
这张表最值得注意的一行是第三行。它的意思是:它只有两类真正客观的信息——开关通断与角度读数。所有被后续论文当作"标签"使用的东西,包括相位类别与激活区间,都是使用者用某个算法从原始信号里算出来的。不同论文报告的数字之所以不能直接比较,根子就在这里。
§3 数据规格:14 个导联怎么排、2000 Hz 怎么用
3.1 三条信号线,一个时钟
采集系统是意大利 Medical Technology 的 Step32,多通道、同步、12 位量化。三类信号共享同一内部时钟与采样门控,不存在各自采完再对齐的问题——跨设备同步通常引入几十毫秒抖动,这里没有,事件检测误差可达采样级。
设备参数按类分开看。
| 信号类 | 数量 | 关键参数 | 单位(标称) |
|---|---|---|---|
| 表面肌电 | 10 路 | 单差分探头,增益 1000,硬件高通 10 Hz,系统低通 450 Hz | μV |
| 足底开关 | 每足 3 只,聚合成 1 个导联 | 11×11×0.5 毫米,触发力 3 牛顿 | V |
| 电角度计 | 每侧 1 只 | 精度 0.5°,测矢状面膝角 | 度(deg) |
合计 14 导联。足底开关物理上每足三只,导出时每足只占一个导联,说明已在设备内合成一路——想区分足跟先着地与足掌先着地,本数据做不到。
3.2 十块肌肉的通道对照
下表的通道名直接取自头文件第一列的注释字段,左右对称排列。
| 序号 | 标签 | 肌肉 | 中文 | 侧 | 探头几何 |
|---|---|---|---|---|---|
| 1 | baso LT FOOT | 左足底开关 | 左足触地 | 左 | 3 只并联 |
| 2 | gonio LT KNEE | 左膝电角度 | 左膝矢状角 | 左 | 单只,外侧贴附 |
| 3 | semg LT TIB.A | 胫骨前肌 | 胫骨前肌 | 左 | 固定几何,极距 8 毫米 |
| 4 | semg LT LAT.G | 腓肠肌外侧 | 腓肠肌外侧头 | 左 | 固定几何,极距 8 毫米 |
| 5 | semg LT REC.F | 股直肌 | 股直肌 | 左 | 可变几何,极距 ≥12 毫米 |
| 6 | semg LT HAM | 腘绳肌 | 腘绳肌 | 左 | 固定几何,极距 8 毫米 |
| 7 | semg LT LAT.V | 股外侧肌 | 股外侧肌 | 左 | 可变几何,极距 ≥12 毫米 |
| 8 | baso RT FOOT | 右足底开关 | 右足触地 | 右 | 3 只并联 |
| 9 | gonio RT KNEE 或 RT HIP | 右膝或右髋电角度 | 侧别注释依记录而异 | 右 | 单只 |
| 10 | semg RT TIB.A | 右胫骨前肌 | 胫骨前肌 | 右 | 固定几何 |
| 11 | semg RT LAT.G | 右腓肠肌外侧 | 腓肠肌外侧头 | 右 | 固定几何 |
| 12 | semg RT REC.F | 右股直肌 | 股直肌 | 右 | 可变几何 |
| 13 | semg RT HAM | 右腘绳肌 | 腘绳肌 | 右 | 固定几何 |
| 14 | semg RT LAT.V | 右股外侧肌 | 股外侧肌 | 右 | 可变几何 |
第 9 行的注释在 S1 里写的是 gonio RT HIP,而官方 Methods 明确说角度计贴在膝关节外侧。这是一处需要警惕的地方,也是坑点 4 的来源。稳妥的做法是不要依赖注释文本判断第二路角度的关节,而是当作"右下肢某处的矢状面角"来用。
3.3 采样率与它的真实含义
2 kHz 对表面肌电是合理值:主要能量集中在 20 到 300 Hz,系统低通截止在 450 Hz,按奈奎斯特准则 2 kHz 留出约两倍余量。这个余量让波形级特征(过零率、斜率符号变化)能稳定提取,代价是体量——每条记录数十万帧乘十四个通道乘两字节,得到十几兆字节;整包入内存的峰值接近五百兆,笔记本上可以承受但不宜并行。
12 位量化配合 16 位存储是 PhysioNet 的传统格式。有效动态范围四千零九十六个数级,足以覆盖表面肌电的常规幅值。但头文件同时给出每通道的物理标度,读取时必须用它换算,否则通道之间会差出几倍——§6.6 会展开。
3.4 时长分布与它的不均匀
官方描述是"约五分钟",文件里的实际长度并不整齐。
| 特征 | 范围 | 说明 |
|---|---|---|
| 每记录帧数 | 数十万帧量级 | 由头文件第 1 行第 4 个字段给出 |
| 单记录时长 | 约三分钟到约五分钟余 | 帧数除以 2000 |
| 最短与最长之差 | 约两分钟 | 即相差六成以上 |
| 记录总数 | 31 条 | 与受试者一一对应 |
| 路径 | 8 字形,含直段与弯道 | 每圈含两次转向与两次提速减速 |
"每人走五分钟"只是目标值:受试者按自己的节奏走,走得慢的人并未被强制走满。以步数为单位的分析必须先把记录切成独立步态周期,再按周期数统计;直接按时间窗切会同时引入周期数与行走状态的差异。
3.5 标注方式与标注者
| 信号 | 是否自带可用标签 | 标签形态 | 是否需要人工介入 |
|---|---|---|---|
| 足底开关 | 是 | 通断二值,着地时刻即上升沿 | 否,但建议自建去抖 |
| 电角度计 | 否 | 连续角度曲线 | 需自行定义特征或相位 |
| 表面肌电 | 否 | 连续电压曲线 | 需自行定义包络、阈值、特征 |
没有任何人工标注者参与。这是它的优点也是它的局限:优点是完全客观可复现,局限是所有高层标签都要自己造,而自己造的标签会让不同论文之间的数字失去可比性。§8.1 的排行榜因此必须附带口径说明。
3.6 采集季节与批次
数据分两批:2011 年与 2018 年。官方文档没有说明两批在设备、电极、操作者或协议上是否有差异,也没有给出每名受试者属于哪一批。若差异存在,跨人比较时会表现为某几个人的肌电幅值整体偏高或偏低。稳妥做法是在分析跨人差异时,把无法解释的离群点视为可能的批次效应,而不是立刻归因为个体生理差异。2018 年采集、2021 年发布、2024 年修订,这个节奏不算快。
3.7 与同类资源的结构差异
| 资源 | 通道构成 | 采样 | 单次时长 | 是否需要力台 |
|---|---|---|---|---|
| 本资源 | 10 肌电 + 2 开关 + 2 角度 | 2 kHz | 约五分钟 | 否 |
| Gait in Aging and Disease Database | 鞋内压阻,导出为步幅事件 | 300 Hz 采集 | 约十五分钟 | 否 |
| Gait in Parkinson’s Disease | 8 只压力传感器地垫,垂直力 | 100 Hz | 两分钟 | 等效替代 |
| Gait in Neurodegenerative Disease Database | 鞋内压阻,十三列派生量 | 300 Hz | 五分钟 | 否 |
| Multi-gait-posture | 17 个惯性单元 + 2 路深度相机 | 60 Hz / 30 fps | 三档速度 | 否 |
| HD-FW KIN 手部运动意图库 | 448 通道高密度肌电 + 手套角度 | 数千赫兹 | 短试次 | 否 |
| 高密度表面肌电手势库 | 256 通道高密度肌电 + 指力 | 2048 Hz | 短试次 | 指力台 |
这张表想说明的是:把这几份数据放在一起,没有任何两份是同一个东西。差别不只在人数上,更在"记录什么"这一层——有人记力,有人记运动,有人记电。它的位置是唯一同时具备"长时间连续"与"肌电+客观事件"两项的少数之一。
§4 数据结构:31 条记录长什么样
4.0 目录树
下载并解压或直接列出目录后,看到的是一层扁平结构,没有任何子目录。
semg/1.0.1/
├── LICENSE.txt # ODC-By 1.0 全文,约 20 KB
├── RECORDS # 记录清单,每行一个记录名
├── SHA256SUMS.txt # 全部文件的校验和
├── Subject_info.csv # 31 行人口学摘要,分号分隔,带 BOM
├── S1.dat # 记录 1 的二进制样本
├── S1.hea # 记录 1 的文本头,14 行导联定义
├── S2.dat
├── S2.hea
│ ...
├── S30.dat
├── S30.hea
├── S31.dat
└── S31.hea
三个细节必须在读到文件之前知道:记录名不带前导零,字符串排序会乱序;.hea 与 .dat 必须同名同目录;Subject_info.csv 带 UTF-8 BOM,默认编码读会在第一个字段名前多出不可见字符。
4.1 头文件逐字段拆解
WFDB 的 .hea 只有十几行,但每一行都承载着单位换算的必需信息。以一份真实头文件为例:
S1 14 2000 611001
S1.dat 16 1350.8768(-29593)/mV 0 0 -32394 16595 0 gonio RT HIP
S1.dat 16 47.9561(-7230)/mV 0 0 -7422 16499 0 semg LT TIB.A
第一行是记录级元数据:记录名、导联数、采样率、采样点数。第二行起每个导联一行,字段依次是文件名、存储格式、增益与基线、ADC 分辨率、ADC 零点、初值、校验和、块大小、描述文本。描述文本是唯一能确认通道身份的依据,结构为"信号类 侧别 肌肉缩写",侧别用 LT 与 RT,肌肉缩写五个固定值。
| 字段位置 | 含义 | 读写注意 |
|---|---|---|
| 第 1 行第 2 字段 | 导联数 | 恒为 14,若读到别的值说明文件损坏 |
| 第 1 行第 3 字段 | 采样率 | 恒为 2000 |
| 第 1 行第 4 字段 | 采样点数 | 各记录不同,除 2000 得秒数 |
| 导联行第 2 字段 | 存储格式 16 | 16 位二补码,小端 |
| 导联行第 3 字段 | 增益与基线 | 增益(基线)/单位,单位可能不同 |
| 导联行第 9 字段 | 描述文本 | 通道身份的唯一来源 |
4.2 一条记录的时间轴
0 s ───────────────────────────────────────────── 约 300 s
│ │
├─ 起步段:步速爬升,周期逐渐缩短 ──────────────────┤
│ │
├──────── 稳态段:8 字形循环,转折处减速 ────────────┤
│ │
└─ 收尾段:减速、可能停步 ───────────────────────────┘
↑ ↑ ↑ ↑ ↑
足跟着地 足趾离地 足跟着地 足趾离地 足跟着地
起步与收尾两段不能与稳态段混在一起统计:起步时周期从静止到稳定,肌肉激活区间被拉长;收尾同理。整条直接切窗等于把过渡状态当稳态样本喂进模型,会系统拉低事件检测精度——坑点 3 专讲这一点。
4.3 字段字典
以"步态周期"为统计单位时,可用的字段如下。这不是官方提供的表,而是从原始文件里能稳定提取的字段清单。
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
record_name |
文本 | WFDB 记录名,无前导零 | S1 |
分组键 | 无 | 无缺失 | S1 至 S31 |
n_samples |
整数 | 该记录采样点数 | 611001 | 时长换算 | 无 | 无缺失 | 数十万 |
fs |
整数 | 采样率,赫兹 | 2000 | 降采样依据 | 无 | 无缺失 | 恒 2000 |
foot_lt / foot_rt |
浮点序列 | 足底开关电压 | 约 0 或饱和 | 着地时刻 | 开关阈值漂移 | 无缺失 | 依标度 |
gonio_lt |
浮点序列 | 左膝矢状角 | 数十度 | 相位辅助特征 | 软组织的皮肤位移 | 无缺失 | 常规活动范围 |
semg_lt_* |
浮点序列 | 左侧五路肌电 | 数十至数百 μV | 主特征 | 串扰、电极位移 | 无缺失 | 依标度 |
semg_rt_* |
浮点序列 | 右侧五路肌电 | 同上 | 主特征 | 同上 | 无缺失 | 依标度 |
age |
整数 | 整岁年龄 | 25 | 协变量 | 自报 | 空值 | 二十至二十九 |
sex |
文本 | F 或 M |
F |
分层 | 自报 | 无缺失 | 二值 |
height_cm |
整数 | 身高 | 164 | 协变量 | 自报或现场量 | 空值 | 一百五十余至一百九十余 |
weight_kg |
整数 | 体重 | 50 | 协变量 | 同上 | 空值 | 四十五至八十六 |
cycle_index |
整数 | 步态周期序号,自算 | 第 37 个周期 | 样本单位 | 切分算法差异 | 无缺失 | 从 1 起 |
phase |
文本 | 支撑相或摆动相,自算 | stance |
分类标签 | 标签与特征同源 | 无缺失 | 二值 |
event_hs / event_to |
整数 | 着地与离地帧号,自算 | 第 120334 帧 | 事件检测真值 | 开关去抖参数 | 无缺失 | 帧号 |
后三个字段是本页定义的派生字段,官方文件里没有。绝大多数下游任务真正消费的是它们,而不是原始的十四路曲线;换一套包络窗口,就会得到不同的 cycle_index 数量。
4.4 数据层级
层级非常浅,只有三级。
受试者(31 个)
└── 记录(每人 1 条,共 31 条)
└── 步态周期(每条约数百个,靠开关切分)
└── 采样点(每周期数千帧)
浅层级不需要嵌套解析,但没有天然的"会话"或"试次"单位:多天重复、多种速度、多种地形这些在别的步态库里常见的分层全都没有。划分时只能以受试者为最外层单位,这直接决定了 §5 只有留一受试者一种合理选择。
4.5 缺失与"非缺失"
这份数据的缺失问题很集中:信号层没有缺失,表型层有零星缺失。
| 项目 | 缺失数量 | 缺失形态 | 是否信息性 |
|---|---|---|---|
| 肌电与开关信号 | 0 | 全部连续无断点 | 否 |
| 身高体重 | 3 条记录中缺(第 19、25 号共两条完整缺失) | CSV 空白 | 可能是受试者拒绝填写 |
| 年龄 | 1 条(第 31 号) | CSV 空白 | 同上 |
| 采集批次 | 31 条全部未标 | 字段根本不存在 | 是,且无法补救 |
| 电极位置照片 | 无 | 字段不存在 | 无法评估定位一致性 |
没有电极位置记录,意味着无法事后核验"股直肌探头是否真贴在肌腹上"。同一操作者、同一套解剖标志通常能保证一致性,但两批之间是否换了操作者,文档没有交代。这是跨人比较中不可消除的不确定性。
§5 划分与使用建议
5.1 官方没有划分
PhysioNet 页面没有 train/validation/test 说明,也没有划分脚本,声称"按官方划分"的论文都是误写。这不是缺陷:三十一条记录彼此对称,划分由使用者按任务定义。
5.2 唯一不可动摇的规则:按受试者划分
几乎唯一合理的做法是留一受试者交叉验证:三十一次,每次三十人训练、一人测试,报告均值与标准差。同一条记录里相邻周期高度相关,肌电基线、皮肤阻抗、电极位置几乎不变;按周期随机划分会让同一个人同时落进训练与测试,模型记住这个人的"电学指纹"就能分类,跨人一测就塌。
5.3 泄漏风险与它在这份数据上的具体形态
泄漏在别的数据上是抽象的,在这份数据上是可数的。
| 泄漏形式 | 在本数据上的表现 | 后果 | 处理 |
|---|---|---|---|
| 同人跨周期泄漏 | 同一记录的相邻周期分落训练与测试 | 准确率虚高十几到二十几个百分点 | 按人分组,组内全部进同一侧 |
| 标签与特征同源 | 相位标签由开关算出,特征若也含开关通道 | 模型直接读出答案 | 输入只保留十路肌电 |
| 事件后信息泄漏 | 用未来若干毫秒的窗口预测当前相位 | 在线场景不可用 | 窗口严格单向,或明确标注为离线 |
| 归一化统计量泄漏 | 用全数据集均值方差做标准化 | 测试集信息进入训练 | 统计量只从训练人算 |
| 起步收尾混入 | 过渡段被当成稳态样本 | 事件检测的假阳性集中在两端 | 用角度与开关联合裁掉首尾 |
| 双版本混用 | 1.0.0 与 1.0.1 的 S1、S21 通道错位 | 两条记录的特征完全错乱 | 锁定版本并在校验和上比对 |
第三种尤其隐蔽:肌肉激活在几十毫秒前就有前兆,离线评测能拿到不错分数,实时辅助设备却用不了。
5.4 一个可复用的划分脚本骨架
import numpy as np
import wfdb
#-- 读取 RECORDS,按整数序排列(字符串序会把 S10 排在 S2 前面)
root = "semg/1.0.1"
names = [ln.strip() for ln in open(f"{root}/RECORDS") if ln.strip()]
names = sorted(names, key=lambda s: int(s[1:]))
assert len(names) == 31
#-- 留一受试者:每次一人测试,其余三十人训练
folds = []
for i, test in enumerate(names):
train = [n for n in names if n != test]
folds.append({"fold": i, "train": train, "test": [test]})
#-- 标准化统计量只能来自训练人,逐折重算
def train_stats(fold):
vals = []
for n in fold["train"]:
rec = wfdb.rdrecord(f"{root}/{n}", physical=True)
emg = rec.p_signal[:, [2, 3, 4, 5, 6, 9, 10, 11, 12, 13]]
vals.append(np.nanmean(emg, axis=0))
return np.mean(vals, axis=0)
print(len(folds), train_stats(folds[0]).round(2))
关键是两处:排序 lambda 防止记录序错乱,train_stats 只遍历训练人,防止归一化泄漏。
5.5 交叉验证的层级与外部验证的去处
三十一折留一受试者的代价是计算量,收益是无偏的跨人估计。折中方案是分组 k 折,按人分组,k 取五到十。这样会把方差评估得比真实更乐观,但对模型选型足够。不建议混合划分——一部分按人、一部分按周期,会让"跨人泛化"这个结论退化成它的上界。
外部验证通常需要另取样本,检验模型是否只学到了这家实验室的采集特征。可选的对照有三份:Gait in Parkinson’s Disease 提供垂直地反力,可用于检验事件检测的相位一致性;Gait in Neurodegenerative Disease Database 提供三病一对照的节律,可用于检验病理节律下的鲁棒性;Gait Maturation Database 提供儿童步态,可用于检验成熟度差异下的表现。三份都验证不了肌电通道,但都验证得了"相位"这一层。
§6 AI 就绪指南
6.1 快速上手:三类角色的最短路径
| 角色 | 最小可用子集 | 预计耗时 |
|---|---|---|
| 想确认数据能用 | 1 条记录加头文件 | 五分钟 |
| 想做留一受试者基准 | 全部 31 条,十路肌电加两路开关 | 数小时 |
先跑通一条,再扩到三十一条:单位不一致与开关极性在单条记录上就会暴露。
6.2 数据获取
三种方式,按场景选。
| 方式 | 命令要点 | 适用 | 注意 |
|---|---|---|---|
| 浏览器逐个下 | 打开目录页点选 | 只要一两条 | 目录页可直连,不需要登录 |
wget 递归 |
-r -np -nH --cut-dirs=3 -A dat,hea,csv,txt |
整包 | 限制后缀,避免抓下载页 HTML |
wfdb 内置 |
wfdb.dl_database("semg", dl_dir) |
整包 | 依赖网络与库版本 |
#-- 整包下载:只抓数据与元数据后缀,目录层级压平
mkdir -p semg/1.0.1 && cd semg/1.0.1
wget -r -np -nH --cut-dirs=3 -A dat,hea,csv,txt \
https://physionet.org/files/semg/1.0.1/
#-- 校验:文件数与校验和
ls | wc -l
sha256sum -c SHA256SUMS.txt
--cut-dirs=3 是为了把远程的三层路径剥掉,把文件直接落在当前目录。如果剥的层数不对,wfdb.rdrecord 会因为找不到同名 .dat 而报错。
6.3 预处理流水线
标准五步,每一步都有它在这份数据上的特殊之处。
import numpy as np
import wfdb
from scipy.signal import butter, filtfilt, iirnotch
FS = 2000
def load_clean(path):
"""读一条记录,返回十路肌电、两路开关、左膝角度。"""
rec = wfdb.rdrecord(path, physical=True)
#-- 通道顺序取自头文件描述文本,不硬编码下标
desc = [s.lower() for s in rec.sig_name]
idx_emg = [i for i, s in enumerate(desc) if s.startswith("semg")]
idx_foot = [i for i, s in enumerate(desc) if s.startswith("baso")]
idx_kn = [i for i, s in enumerate(desc) if s.startswith("gonio") and "knee" in s]
return rec.p_signal[:, idx_emg], rec.p_signal[:, idx_foot], rec.p_signal[:, idx_kn]
def band_emg(x, lo=20.0, hi=450.0):
b, a = butter(4, [lo / (FS / 2), hi / (FS / 2)], btype="band")
return filtfilt(b, a, x, axis=0)
def notch_emg(x, f0=50.0):
b, a = iirnotch(f0 / (FS / 2), 30.0)
return filtfilt(b, a, x, axis=0)
def envelope(x, win=0.05):
"""全波整流后低通,win 以秒计,与厂商 5 Hz 低通等价。"""
n = int(win * FS)
rect = np.abs(x)
k = np.ones(n) / n
return np.apply_along_axis(lambda v: np.convolve(v, k, mode="same"), 0, rect)
def detect_contacts(foot, thresh_ratio=0.5):
"""开关通道按各自的分位数定阈,再设 50 毫秒去抖。"""
deb = int(0.05 * FS)
out = []
for ch in range(foot.shape[1]):
v = foot[:, ch]
thr = np.percentile(v, 5) + thresh_ratio * (np.percentile(v, 95) - np.percentile(v, 5))
on = (v > thr).astype(np.int8)
edges = np.diff(on)
rises = np.where(edges == 1)[0]
rises = rises[np.insert(np.diff(rises) > deb, 0, True)]
out.append(rises)
return out
最容易被跳过的是 detect_contacts 的阈值定法。固定绝对电压做阈值在跨记录时必然失效,因为开关通道的标度不同(见坑点 2)。分位数加去抖可以在不知道标度的情况下稳定工作。
6.4 PyTorch 数据管道
import torch
from torch.utils.data import Dataset, DataLoader
import wfdb, numpy as np
class StrideWindows(Dataset):
"""把一个受试者的连续肌电切成固定留长的窗口,标签为窗口末端的相位。"""
def __init__(self, record_path, win=40, hop=20):
emg, foot, _ = load_clean(record_path)
emg = band_emg(notch_emg(emg))
env = envelope(emg)
contacts = detect_contacts(foot)
#-- 左足着地序列;两足交替,取左足即可定义步态周期
hs = contacts[0]
phase = np.zeros(len(emg), dtype=np.int8)
for a, b in zip(hs[:-1], hs[1:]):
mid = a + int(0.6 * (b - a)) # 支撑相约占六成
phase[a:mid] = 0
phase[mid:b] = 1
#-- 标准化:整条记录内的 robust z 分数,跨受试者偏差由外部处理
med = np.median(env, axis=0)
iqr = np.subtract(*np.percentile(env, [75, 25], axis=0)) + 1e-6
z = (env - med) / iqr
self.x = np.lib.stride_tricks.sliding_window_view(z, win, axis=0)[::hop]
self.y = phase[win - 1::hop][: len(self.x)]
self.x = torch.tensor(self.x.transpose(0, 2, 1), dtype=torch.float32)
self.y = torch.tensor(self.y, dtype=torch.long)
def __len__(self):
return len(self.y)
def __getitem__(self, i):
return self.x[i], self.y[i]
ds = StrideWindows("semg/1.0.1/S1")
loader = DataLoader(ds, batch_size=256, shuffle=True, num_workers=2)
print(ds.x.shape, ds.y.bincount())
标签取窗口末端,是为了对齐实时预测:窗内不得包含未来样本。若做离线评测可改成窗口中心,但要在论文里写明,两种写法的准确率差别不小。
6.5 坑点 1:记录名没有前导零,字符串排序会打乱受试者
⚠️ 坑点 1:
S1与S01不是一回事(分类:工程陷阱)问题:习惯性地按
S01、S02拼路径,或者用字符串排序遍历RECORDS,都会在一开始就把顺序弄错。前者的表现是文件找不到,后者的表现更隐蔽:受试者编号与临床判断错位,但程序不报错。
症状:wfdb.rdrecord("semg/1.0.1/S01")抛文件不存在;打印记录列表得到S1, S10, S11, ..., S2, S20, ...的顺序。
解决:
- 简单方法:读
RECORDS后立刻sorted(names, key=lambda s: int(s[1:])),并在长度不等于三十一时断言失败。- 进阶方法:把记录名解析成整数 ID 存进表,所有下游索引都用整数,字符串只用于拼路径。
- SOTA 方法:用
wfdb.get_record_list("semg")取官方清单,不自己做字符串处理;官方清单的顺序就是物理顺序。
参考:PhysioNet 目录清单 physionet.org/files/semg/1.0.1
6.6 坑点 2:头文件单位不统一,同一列在两个文件里差一千倍
⚠️ 坑点 2:mV、uV、V 混在同一个文件集合里(分类:预处理陷阱)
问题:
wfdb的physical=True会按各导联自己的单位换算成物理量,但单位字符串本身并不一致。有的记录把肌电写作mV,有的写作uV;足底开关有的写作V,有的写作mV。读取端如果假设"肌电都是微伏",跨记录合并时会出现整数量级的偏差。
症状:把全部记录拼成一个大矩阵后,某些受试者的肌电幅值比其他人小三个数量级,标准化之后这些人的信号看起来像噪声。
解决:
- 简单方法:不要直接拼接
p_signal,先把每一路统一乘到微伏,再入池:读头文件的units字段,按V、mV、uV、deg分别乘系数。- 进阶方法:只在单个受试者内部做幅值相关分析,跨受试者一律改用无量纲特征(均方根比值、包络峰值比),避开绝对单位。
- SOTA 方法:先按每人自身的中位数与四分位距做 robust 标准化,再跨人聚合;标准化在每个人的整条记录上完成,不引入跨人信息。
参考:头文件第 3 字段格式增益(基线)/单位,WFDB 规范中的信号规格说明
6.7 坑点 3:起步与收尾段不能当稳态样本
⚠️ 坑点 3:首尾两端的行走状态与中段不同(分类:标签理解)
问题:每条约五分钟的记录并不是从第一秒就在稳定行走。起步阶段步速从零爬升,步态周期由长变短;收尾阶段相反。这两段里的肌电激活区间被拉长,相位比例也会偏离六四开。整条切窗会把它们混进训练集。
症状:事件检测在记录开头与结尾的假阳性明显多于中段;按整条记录统计的相位比例离六成有系统偏差。
解决:
- 简单方法:丢掉第一条与最后一条开关边沿之间的数据,只用第一个到最后一个着地事件之间的区间。
- 进阶方法:用滑动窗口的周期长度做一阶差分,把周期长度变化率超过阈值的窗口标为过渡段并剔除。
- SOTA 方法:把过渡段单独建模,当作一类"状态"而不是噪声,用它对模型做状态感知训练。
参考:配套论文中关于自然步速下步态变异的讨论(PLoS ONE 2025, doi 10.1371/journal.pone.0318560)
6.8 坑点 4:第二路角度的注释写的是髋,官方方法写的却是膝
⚠️ 坑点 4:
gonio RT HIP与官方 Methods 冲突(分类:标签理解)问题:头文件里第二路角度的描述文本在部分记录写作
HIP,而 PhysioNet Methods 明确说电角度计贴在膝关节外侧、测量矢状面膝角。两者冲突。照注释当作髋角使用,会得到一条与膝角物理意义完全不同的曲线。
症状:把这一路当作髋关节角度做特征时,角度范围与步态相位的关系说不通;和文献里的髋角曲线对不上。
解决:
- 简单方法:忽略第二路角度的关节标签,只把它当作"右下肢某关节的矢状角",只用它的极值与相位关系,不用它的绝对数值。
- 进阶方法:用左右对称性检验。左路明确是膝角,若右路与左路的波形在相位上高度一致,判为同类关节。
- SOTA 方法:在不依赖角度的任务上完全不使用这两路,只用开关与肌电,把角度留给辅助校验。
参考:PhysioNet Methods 段对电角度计的描述;版本 1.0.1 修订说明
6.9 坑点 5:开关通道的极性在记录之间不保证一致
⚠️ 坑点 5:足底开关的"高电平"未必代表触地(分类:工程陷阱)
问题:足底开关是无源机械触点,经设备调理后输出高或低,取决于接线与调理电路。不同批次或不同记录之间若发生接线调整,极性可能翻转。按"大于阈值即触地"的固定假设处理,某几条记录的相位会整体反相。
症状:某几条记录的支撑相比例接近四成而不是六成;把这些记录可视化,触地时段与膝角的最小值时段对不上。
解决:
- 简单方法:对每条记录同时计算两种极性下的支撑相比例,取更接近六成的那一种。
- 进阶方法:用膝角的周期性做外部参照,开关导通时段应与膝角屈曲谷值区间重合,据此判定极性。
- SOTA 方法:把极性作为每条记录的未知参数,在事件检测模型的训练中一并估计。
参考:WFDB 导联描述中baso前缀的含义;本资源头文件逐记录比对
6.10 坑点 6:双版本混用会让 S1 与 S21 的通道整体错位
⚠️ 坑点 6:1.0.0 的头文件写错了信号顺序(分类:数据泄漏)
问题:版本 1.0.1 的修订说明承认,1.0.0 里
S1.hea与S21.hea对.dat内信号顺序的描述不正确。若一部分记录用旧版、一部分用新版,同一个通道下标在两条记录上指向不同的物理信号。
症状:这两条记录的分类结果异常差,且错误模式与肌肉生理无关;把它们单独拿出来做通道相关性检验,会发现与其他记录的通道相关结构完全不同。
解决:
- 简单方法:整包只用一个版本,并在读完后用
sha256sum -c核对校验和。- 进阶方法:按描述文本而不是下标来索引通道,这样即便顺序错了,只要文本对,结果仍然正确。
- SOTA 方法:给每条记录生成"通道身份指纹"(例如各通道与开关的相关性排序),在数据加载时做一次一致性检查,异常即报警。
参考:PhysioNet 版本 1.0.1 的 Release Notes
6.11 坑点 7:把开关通道喂进模型,等于把答案给了它
⚠️ 坑点 7:相位标签由开关算出,开关本身不能作输入(分类:数据泄漏)
问题:相位标签是由足底开关的边沿推出来的。如果输入特征里包含开关通道(或由开关派生的任何量),模型可以直接读出答案,准确率会接近满分,而在真实场景里没有开关可用。
症状:留一受试者准确率超过百分之九十九,模型权重集中在少数几个通道上,去掉这些通道后性能断崖式下跌。
解决:
- 简单方法:输入只保留十路肌电,开关只用于生成标签。
- 进阶方法:做通道消融实验,确认性能随肌电通道减少而平滑下降,而不是在某几个通道上突然塌陷。
- SOTA 方法:把"用多少肌肉就够"本身作为研究问题,报告在不同通道数下的性能曲线。
参考:Electronics 2019 中八通道基线的设置方式(doi 10.3390/electronics808894)
6.12 坑点 8:按周期随机切分,方差估计会低一个量级
⚠️ 坑点 8:同一条记录里的周期不是独立样本(分类:评估误用)
问题:把一整条记录切成数千个窗口后随机划分训练与测试,看起来样本量充足,实际上训练集与测试集全是同一个人的电学特征。报告的方差是窗口级方差,不是受试者级方差。
症状:五折交叉验证的标准差只有零点几个百分点;换成留一受试者之后标准差变成几个百分点,均值下降若干点。两套数字放在同一张表里会看起来自相矛盾。
解决:
- 简单方法:所有划分以受试者为最外层单位,窗口只在人的内部打乱。
- 进阶方法:同时报告两种口径,明确哪一个是跨人泛化、哪一个是同人泛化。
- SOTA 方法:用层级模型显式建模受试者随机效应,把受试者级方差分解出来单独报告。
参考:Electronics 2019 的二十三折留一受试者协议与已学习/未学习受试者对照
6.13 数据增强:安全的与危险的
| 增强方式 | 判定 | 理由 |
|---|---|---|
| 时间平移 | 安全 | 相位对绝对时间不敏感,平移不改变标签关系 |
| 幅值缩放 | 有条件安全 | 仅当任务不依赖绝对幅值时;缩放比例限制在百分之二十以内 |
| 加高斯噪声 | 安全 | 模拟电极噪声,需按信噪比而非固定方差 |
| 通道丢弃 | 条件安全 | 模拟电极脱落,但须整段丢弃而非随机逐点置零 |
| 左右腿互换后加标签翻转 | 危险 | 左侧与右侧的肌肉激活并不对称,翻转会引入假样本 |
| 时间伸缩 | 危险 | 改变步态周期长度,等于改变行走速度,与数据协议矛盾 |
| 频域掩蔽 | 条件安全 | 需避开 50 Hz 与肌电主能量带,否则制造不存在的生理信号 |
| 混合同一受试者的两段 | 安全 | 保持个体特征不变,只改变相位组合 |
危险的两项改变了数据里最不该改的东西:左右不对称是生理事实,步速是协议约束。
6.14 模型选型
| 模型 | 输入形态 | 参数量级 | 适用场景 | 注意事项 |
|---|---|---|---|---|
| 逻辑回归 / 线性 SVM | 时域特征 | 极小 | 基线、可解释性要求高的场合 | 需要手工特征,对包络参数敏感 |
| 随机森林 | 时域 + 频域特征 | 小 | 中等规模、需要特征重要性 | 跨受试者泛化不如深度学习 |
| 一维卷积网络 | 原始或包络序列 | 十万级 | 主流选择,训练快 | 感受野要覆盖一个完整周期 |
| 时序卷积 + 注意力 | 包络序列 | 百万级 | 长依赖建模,事件检测 | 容易过拟合到个体特征 |
| 门控循环单元 | 包络序列 | 十万级 | 在线推断、低延迟 | 训练并行度低 |
选型的第一原则不是"哪个准",而是"训练与测试是否按人分开"。同一模型换一种划分可以差出十几点,不同模型在同一划分下往往只差一两点。
6.15 硬件需求
| 任务 | 显存或内存 | 数据加载 | 典型耗时 |
|---|---|---|---|
| 单条记录特征分析 | 1 GB 内存 | 单文件 | 秒级 |
| 三十一条全量入内存 | 2 GB 内存 | 逐条读 | 十秒级 |
| 一维卷积全量训练 | 4 至 8 GB 显存 | 逐条读,窗口缓存 | 十分钟级 |
| 留一受试者三十一折 | 同上 | 同上 | 数小时 |
| 时序卷积 + 注意力 | 8 至 16 GB 显存 | 同上 | 数小时 |
显存需求低是它的隐藏优点:不适合大规模预训练,但适合在教学或资源有限的环境里把完整流水线跑通。
6.16 评估指标
import numpy as np
def phase_metrics(y_true, y_pred, fs=2000, tol_ms=50):
"""相位分类指标 + 事件时刻误差。"""
acc = float((y_true == y_pred).mean())
tol = int(fs * tol_ms / 1000)
#-- 只在真实着地沿附近判定命中,避免把采样级错位算成漏检
def marks(y):
d = np.diff(np.r_[0, y])
return np.where(d == 1)[0]
true_hs, pred_hs = marks(y_true), marks(y_pred)
hits = 0
for t in true_hs:
if pred_hs.size and np.min(np.abs(pred_hs - t)) <= tol:
hits += 1
return {
"accuracy": round(acc, 4),
"hs_recall": round(hits / max(len(true_hs), 1), 4),
"hs_precision": round(hits / max(len(pred_hs), 1), 4),
}
rng = np.random.default_rng(0)
y_true = (rng.random(20000) > 0.6).astype(int)
y_pred = np.roll(y_true, 20) # 模拟固定 10 毫秒延迟
print(phase_metrics(y_true, y_pred))
最该报告的是事件召回与精确,而不是窗口级准确率:支撑相占六成时,一个恒猜支撑相的模型就能拿到六成。
6.17 MLOps 笔记
工程负担主要不在训练,在可复现。数据固定不动,用校验和锁定版本即可。划分文件必须落盘保存,不能每次运行时随机生成——留一受试者虽然确定,分组 k 折的分法必须固定。每次实验记录三样东西:版本号、划分文件哈希、包络窗口与低通参数;任一变化,数字就不可比。推理端要模拟"没有足底开关"的条件:开关在数据里是标签来源,在部署时并不存在。
§7 质量评估与局限性
7.0 阅读本节前需要知道的一件事
看到"三十一人"时最常见的误判,是把它当成小数据集因而打低分。这个标准被偷换了:训练通用模型时三十一人的确太少;估计自然行走的肌肉激活变异时,三十一人每人数百周期比三百人各走十步可靠得多。第二常见的误判是把它当多模态——两路辅助信号都是下肢自身的机械量,与肌电共享同一套运动学,真正的多模态需要力台、影像或惯性单元。本节评分都基于"它是方法学资源而非训练资源"这个前提。
7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解 |
|---|---|---|---|
| 人群偏倚 | 全部健康、二十至三十岁、体重指数正常 | 高 | 只作健康对照,不作临床推断 |
| 地域偏倚 | 单中心、意大利安科纳 | 中 | 跨中心验证需外部数据 |
| 协议偏倚 | 赤足、平地、8 字形、自然步速 | 高 | 与穿鞋或跑步机结果比较时必须写明 |
| 设备偏倚 | 单一采集系统、单一电极品牌 | 中 | 迁移到其他系统前需校准 |
| 批次偏倚 | 2011 与 2018 两批,归属未知 | 中 | 分析跨人差异时检查离群 |
| 性别偏倚 | 女性十九人、男性十二人 | 低 | 分组分析时注意小样本侧 |
| 缺失偏倚 | 三条记录表型不全 | 低 | 协变量分析时显式剔除或插补 |
最严重的是人群与协议两条:训练出的模型学到的是"赤足自然步速下的健康青年步态",这与任何临床场景都不重合。当预训练底座合理,当临床评估集不合理。
7.2 标注质量
客观信号的质量可以逐项评估。
| 项目 | 评估 | 依据 |
|---|---|---|
| 事件时刻的客观性 | 高 | 设备级开关,无人工判断 |
| 事件时刻的精度 | 中 | 受触发力 3 牛顿与安装位置限制,毫秒级误差不可避免 |
| 通道身份的正确性 | 中 | 版本 1.0.1 修正了两条记录的顺序描述 |
| 通道身份的可核验性 | 低 | 无电极位置照片,无事后核验手段 |
| 串扰水平 | 未知 | 极距 8 至 12 毫米,深部肌肉串扰无法从文档判断 |
| 标签一致性 | 不适用 | 无人工标注者 |
串扰这一行是最薄弱的一环。相邻肌肉之间(例如腓肠肌外侧与胫骨前肌在踝部的重叠区)的串扰很常见,文档却没有给出任何评估。做肌肉间因果分析前,必须先自己做独立性检验。
7.3 泛化性风险
| 目标场景 | 失效风险 | 证据 |
|---|---|---|
| 穿鞋行走 | 中 | 足底开关在鞋内会改变触发特性,版本未提供穿鞋数据 |
| 跑步机行走 | 中 | 跑步机的传送带速度恒定,与自然步速的自选分布不同 |
| 老年步态 | 高 | 无老年样本,步速与周期长度均不同 |
| 病理步态 | 高 | 无患者样本;偏瘫步态的相位比例偏离六四开 |
| 陡坡与楼梯 | 高 | 协议只有平地 |
| 长时程连续监测 | 中 | 单次约五分钟,无法反映数小时的电学漂移 |
| 不同采集设备 | 高 | 单一系统,其他系统的硬件滤波与增益不同 |
7.4 伦理与合规
数据在赫尔辛基宣言原则下采集,经当地伦理委员会批准,全部受试者书面知情同意,仅保留匿名序号与四项人口学变量。ODC-By 1.0 允许再分发与商业使用,条件是再分发时署名——包括预处理后的特征矩阵上架到公共平台的情形,那里同样算再分发。
7.5 公平性
三十一人里女性十九人、男性十二人,比例不算失衡。但全部在二十至三十岁、体重指数正常,按年龄或体重分层的公平性分析无法进行;十二名男性太少,按性别分组的差异会淹没在个体差异里。若模型部署到老年或肥胖人群,性能差异无法从本数据预估。
7.6 数据漂移
漂移指两件事。第一件是记录内的漂移,即一个人五分钟里步态的变化——这是真实的生理现象,也是本数据想保留的对象,不应被当噪声剔除。第二件是批次间的漂移,即两批之间可能的设备或操作差异,属于非生理漂移,需要识别与校正,但批次标签缺失使它无法被直接校正。一个可操作的检测办法:把每人的肌电中位幅值、开关占空比、周期长度画成散点图,若存在两个明显聚类,很可能就对应两批。
7.7 DAIMS 24 项数据质量评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 14 个导联固定,可直接构造成宽表 |
| 2 | 唯一标识 | ✅ | 记录名与序号一一对应 |
| 3 | 特殊字符 | ⚠️ | CSV 带 BOM,分号分隔,头文件描述含空格与点号 |
| 4 | 重复行 | ✅ | 无重复记录,校验和覆盖全部文件 |
| 5 | 缺失编码 | ⚠️ | CSV 空白即缺失,无显式缺失码 |
| 6 | 标签标识 | ⚠️ | 只有开关事件可算标签,相位标签需自算 |
| 7 | 罕见类分组 | ❌ | 无类别标签,无法分组 |
| 8 | 偏倚评估 | ✅ | 人群与协议偏倚在文档中明确 |
| 9 | 数据字典 | ⚠️ | 依赖 WFDB 规范与描述文本,无独立字段表 |
| 10 | 信息性缺失解释 | ⚠️ | 第 19、25、31 号缺失原因未说明 |
| 11 | 设备记录 | ✅ | 系统型号、探头尺寸、滤波参数齐全 |
| 12 | 共线性 | ⚠️ | 左右对应肌肉高度相关,需在特征选择时处理 |
| 13 | 编码映射 | ✅ | 肌肉缩写为固定五值,无编码歧义 |
| 14 | 时间戳 | ❌ | 无绝对时间戳,只有相对帧号 |
| 15 | 划分建议 | ❌ | 官方未提供任何划分 |
| 16 | 泄漏讨论 | ✅ | 本页 §5.3 与坑点 7、8 给出处理 |
| 17 | 标签分布 | ⚠️ | 相位比例需自算,无官方统计 |
| 18 | 测量偏倚 | ⚠️ | 串扰与电极定位无评估 |
| 19 | 外部验证建议 | ✅ | 本页 §5.6 给出三份对照 |
| 20 | 版本记录 | ✅ | 1.0.0 到 1.0.1 的变更范围写得很清楚 |
| 21 | 预处理脚本 | ⚠️ | 平台无脚本,但配套论文给出流程 |
| 22 | 合规要求 | ✅ | ODC-By 1.0 明确,署名义务清楚 |
| 23 | 多模态对齐 | ✅ | 三类信号硬件同步,共用时钟 |
| 24 | 去标识化 | ✅ | 仅保留匿名序号与四项人口学 |
DAIMS 评分:16.5 / 24
评分解读:采集端得分高——设备参数齐全、同步可靠、去标识化彻底、版本变更透明。失分集中在使用端基础设施:没有官方划分、字段字典、缺失码与标签分布统计。这是一类由论文配套发布、而非数据工程团队维护的资源常见形态,按 AI 就绪度衡量属于"可用但需自建脚手架"。
对你意味着什么:(1)接手第一天就自己写字段字典与划分文件并落盘,这是后续所有实验的地基;(2)把"开关只做标签、不做输入"写进代码约束而非靠自觉;(3)跨记录合并前先做单位归一与极性检查。
7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 偏瘫患者步态(对照组使用本资源) | 马尔凯理工大学等 | 肌肉募集变异性比较 | 激活区间分布的组间差异 | 健康对偏瘫 | 本资源作为健康参照已被采用(Electronics 2020, doi 10.3390/electronics9101572) |
| 同一实验室的二十三人子集 | 马尔凯理工大学 | 步态相位分类 | 未见受试者平均准确率九成三 | 受试者数与通道数均不同 | 八通道四肌肉配置即已够用(Electronics 2019) |
| 肌电信号处理条件变化 | 马尔凯理工大学 | 事件预测对处理参数的敏感性 | 参数变化下的精度波动 | 同数据不同管线 | 预处理参数对事件预测的影响与网络结构相当(Biomed Signal Process Control 2021) |
| 表面肌电信号分析综述性复用 | 多机构 | 激活区间统计方法验证 | 统计量一致性 | 跨方法 | 本资源被用作踝部肌肉激活区间评估的基准材料 |
这张表里没有一行是"在本资源上刷新 SOTA",这正是它的定位:参照,不是擂台。
§8 基准与生态
8.1 现有的性能数字
目前唯一一组可追溯的定量结果来自配套方法链路上的 Electronics 2019 论文。
| 排名 | 模型 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | 多层感知机(深层配置) | 未见受试者相位准确率九成三 | 2019 | 二十样本窗口、十毫秒、包络加 min-max 归一 | Morbidoni C, Cucchiarelli A, Fioretti S, Di Nardo F. A Deep Learning Approach to EMG-Based Classification of Gait Phases during Level Ground Walking. Electronics. 2019;8(8):894. doi 10.3390/electronics808894 | 未公开 |
| 2 | 时域特征加传统分类器 | 未见受试者相位准确率低于上者 | 2019 | 二百样本窗口、五种时域特征 | 同上,文中对照实验 | 未公开 |
| — | 事件时刻预测 | 着地误差小于百分之一周期,离地约为其两倍 | 2019 | 同一网络的阈值化输出 | 同上 | 未公开 |
必须附带三条口径说明。第一,论文用的是二十三名受试者、八通道(每侧四块肌肉)的子集,不是本资源的全部三十一人十通道。第二,论文的归一化在每名受试者内部做 min-max 映射,比留一受试者下"只用训练人统计量"更容易。第三,准确率是窗口级而非事件级,支撑相占六成这一先验会抬高它——恒猜支撑相的模型也能拿到相近的数量级。
8.2 SOTA 的读法
严格说这份数据没有 SOTA:没有统一评测协议、没有官方划分、没有提交入口。任何"在这个数据集上达到多少"的说法,描述的都是自己划分方式下的结果。看到新数字时该问的是"你的划分是按人还是按窗口",而不是"比上一个高多少点"。
8.3 一种可复现的评测协议
建议采用下面这套协议,并在方法部分逐项写明。
| 协议项 | 建议取值 | 理由 |
|---|---|---|
| 划分 | 三十一折留一受试者 | 反映跨人泛化的唯一方式 |
| 输入通道 | 十路肌电,不含开关与角度 | 避免标签泄漏,贴近部署条件 |
| 包络 | 全波整流后 50 毫秒滑动平均 | 与厂商 5 Hz 低通近似 |
| 归一化 | 训练人统计量,逐折重算 | 防止统计量泄漏 |
| 窗口 | 40 毫秒,步长 20 毫秒 | 覆盖至少两个完整肌电爆发 |
| 首尾处理 | 只保留首个与末个着地沿之间 | 避免过渡段污染 |
| 指标 | 窗口准确率、着地召回、着地精确、离地误差 | 单看准确率会高估 |
| 报告 | 三十一折均值与标准差 | 只报均值会隐藏个体差异 |
8.4 与站内相邻资源的定位
站内已有一批步态与肌电方向的资源,边界需要说清。Gait in Aging and Disease Database 与 Gait in Neurodegenerative Disease Database 记录步幅事件与鞋内压阻,没有肌电,但有三类神经退行性疾病的患者群体——本资源给肌电时序,它们给病理节律。Gait in Parkinson’s Disease 用压力地垫记录垂直地反力,人群规模远大于本资源,但缺少肌肉活动这一层。Multi-gait-posture 是惯性加深度相机的三维姿势库,关注躯体几何而非肌肉电活动。高密度表面肌电手势库与 HD-FW KIN 手部运动意图库都是前臂高密度肌电,通道数达二百五十六与四百四十八,但与下肢步态无关。EMGDB 是针极肌电教学示例,只有三段。Multimodal Gait Dataset 最易混淆:五十九名健康青年、三档跑步机速度、脑电加十二块下肢肌电加惯性加力台,模态更多,但记录时长与人数均衡性不同。并排看下来,本资源的差异化只有一处,却足够清晰:把"长时间连续"与"十路下肢肌电加客观事件标签"放在一起的,只有它。
8.5 关键文献
| # | 文献 | 一句话贡献 |
|---|---|---|
| 1 | Di Nardo F, Morbidoni C, Iadarola G, Spinsante S, Fioretti S. Long duration multi-channel surface electromyographic signals during walking at natural pace: Data acquisition and analysis. PLOS ONE. 2025;20(2):e0318560. doi 10.1371/journal.pone.0318560 | 数据集的正式描述论文,给出采集协议与信号可靠性分析 |
| 2 | Di Nardo F, Morbidoni C, Cucchiarelli A, Fioretti S. Influence of EMG-Signal Processing and Experimental Set-up on Prediction of Gait Events by Neural Network. Biomed Signal Process Control. 2021;63:102232. doi 10.1016/j.bspc.2020.102232 | 系统评估处理参数与采集条件对事件预测的影响 |
| 3 | Morbidoni C, Cucchiarelli A, Fioretti S, Di Nardo F. A Deep Learning Approach to EMG-Based Classification of Gait Phases during Level Ground Walking. Electronics. 2019;8(8):894. doi 10.3390/electronics8080894 | 首个公开的步态相位深度学习基线 |
| 4 | Di Nardo F, Fioretti S. Statistical analysis of surface electromyographic signal for the assessment of rectus femoris modalities of activation during gait. J Electromyogr Kinesiol. 2013;23(1):56-61. doi 10.1016/j.jelekin.2012.06.011 | 用同类数据刻画股直肌的激活模式 |
| 5 | Di Nardo F, Spinsante S, Pagliuca C, et al. Variability of muscular recruitment in hemiplegic walking assessed by EMG analysis. Electronics. 2020;9(10):1572. doi 10.3390/electronics9101572 | 把本资源作为健康对照,比较偏瘫步态 |
| 6 | Di Nardo F, Basili T, Meletani S, Scaradozzi D. Wavelet-Based Assessment of the Muscle-Activation Frequency Range by EMG Analysis. IEEE Access. 2022;10:9793-9805. doi 10.1109/ACCESS.2022.3141162 | 用小波方法估计激活频段,验证数据的频域可用性 |
8.6 社区活跃度
它没有活跃社区:PhysioNet 页面的 Cited by 只计一篇(OpenAlex 收录口径,截至 2026-10),没有代码仓、讨论区、排行榜,也没有月度更新。引用数低有两重原因:一是 2021 年才上架,页面标题不含肌电缩写,站内搜索未必命中;二是它的价值在"用途"而非"结果",用它的人未必需要引用数据本身。判断它被用得多不多,看配套论文的引用比看数据页更可靠。
8.7 生态位速查
| 资源 | 位置 | 推荐理由 |
|---|---|---|
| PhysioNet 数据页 | physionet.org/content/semg | 唯一的权威说明与版本记录 |
| PhysioNet 文件目录 | physionet.org/files/semg/1.0.1 | 可直连,支持递归抓取 |
| PLOS ONE 2025 论文 | doi 10.1371/journal.pone.0318560 | 采集协议与可靠性分析的唯一细节来源 |
| WFDB Python 包 | PyPI 上的 wfdb |
读取与转换的标准库 |
页面自己说明在线波形查看器在显示幅值变化剧烈的信号时会缩放混乱,而肌电恰好是这类信号,所以它只能用于初步浏览,不能用来判断信号质量。
常见误读与避坑清单
把最常听到的误读与文件里的事实并排放。左列是社区里真实出现过的说法,右列的证据全部指向本页已核对的原始材料。
| 常见说法 | 实际情况 | 证据 |
|---|---|---|
| “这是三十一人的短程步态数据集” | 每人一条约五分钟的连续记录,单条含数百个步态周期 | 头文件采样点数除以 2000 |
| “每个人应该有多次试次,可以按试次划分” | 每人只有一次连续采集,试次这个单位不存在 | RECORDS 共三十一行 |
| “肌电单位都是微伏” | 部分记录写作 mV,开关通道在 V 与 mV 之间摆动 | S1 与 S15 头文件逐行比对 |
| “足底开关能给出地面反作用力” | 只有通断二值,没有幅值,力台从未介入 | Methods 段与 14 导联构成 |
| “第二路角度是髋关节角” | 注释写 HIP,Methods 写膝关节外侧 | 头文件描述文本与官方 Methods 冲突 |
| “它和 Multimodal Gait Dataset 是同一份” | 那份五十九人、跑步机三档速度、七种信号;这份三十一人、平地自选速度、三类信号 | 两份 PhysioNet 页面并列比对 |
| “论文报告的九成三是本数据集的 SOTA” | 论文用二十三人八通道子集,归一化口径也与留一受试者不同 | Electronics 2019 方法部分 |
| “三十一人太少,做不了深度学习” | 做跨人泛化基准够用;做大规模预训练不够 | 每人数百周期与三十一折协议 |
§9 资源与引用
9.1 官方资源清单
| 资源 | 地址 | 用途 |
|---|---|---|
| 项目主页 | https://physionet.org/content/semg/ | 说明、引用、版本 |
| 1.0.1 源目录 | https://physionet.org/files/semg/1.0.1/ | 直接下载全部文件 |
| 1.0.0 历史版本 | https://physionet.org/content/semg/1.0.0/ | 复现旧结果时核对差异 |
| 引用页 | https://physionet.org/content/semg/citations/1.0.1/ | 追踪引用 |
| DOI | https://doi.org/10.13026/grdj-qx06 | 长期标识 |
9.2 引用格式
数据引用与论文引用是两回事,两者都要给。
@misc{dinardo2024semg,
author = {Di Nardo, Francesco and Morbidoni, Christian and Fioretti, Sandro},
title = {Surface electromyographic signals collected during long-lasting
ground walking of young able-bodied subjects},
year = {2024},
version = {1.0.1},
publisher = {PhysioNet},
doi = {10.13026/grdj-qx06},
url = {https://physionet.org/content/semg/1.0.1/}
}
@article{dinardo2025semg,
author = {Di Nardo, Francesco and Morbidoni, Christian and Iadarola, Grazia
and Spinsante, Susanna and Fioretti, Sandro},
title = {Long duration multi-channel surface electromyographic signals during
walking at natural pace: Data acquisition and analysis},
journal = {PLOS ONE},
year = {2025},
volume = {20},
number = {2},
pages = {e0318560},
doi = {10.1371/journal.pone.0318560}
}
引用时请注意两处容易出错的地方。第一,数据条目与论文的作者名单不同:数据页列三位作者,论文列五位。第二,数据条目上架年份写 2021 年,而当前的 1.0.1 版本发布于 2024 年,引用时必须写清用的是哪个版本,否则读者无法判断你看到的是哪一份 S1。
9.3 使用者的引用义务
ODC-By 1.0 的核心义务只有一条:署名。具体到这篇数据,署名应包括数据作者、标题、版本、发布平台与 DOI。再分发衍生数据时,同一套信息必须随附。
论文里的推荐做法是在 Data Availability 段落写清三样:数据集 DOI、访问版本号、以及配套论文的 DOI。缺任何一样,复现者都无法确信拿到的是同一份数据。
9.4 与平台文献的关系
PhysioNet 自身也要求引用平台文献,这与数据引用是并列关系,不是替代关系。在方法部分只写"数据来自 PhysioNet"而不写具体 DOI,等于没有提供可复现的定位信息。
它为何能持续存在
一份三十一人、没有排行榜、没有代码仓、只修订过一次的数据,为何上架后仍被反复使用?答案在替代性,不在规模。
来源上,这批数据不是为公开而采,是为回答股直肌在行走中如何激活。2011 年采一批、2018 年再采一批,2021 年才整理上架——是研究副产品的公开化,不是专门的数据集建设。
承载上,PhysioNet 承担长期托管、DOI 分配与版本存档,作者不必维护服务器。团队仍在同一方向持续发表,2025 年的 PLoS ONE 论文补上了正式的方法说明书。
依赖上,步态相位识别与肌肉激活区间统计需要一份"事件标签客观、记录足够长、许可无门槛"的健康参照,三件同时满足的资源不多。这类引用曲线通常平缓而长尾。
§10 AI 使用声明
10.1 参与本次撰写的 AI 模型
本文档由千方医数集编辑流程中的大语言模型辅助起草,经人工核对数据页、头文件、目录清单与配套论文后定稿。
10.2 AI 参与的范围
| 环节 | AI 参与 | 人工参与 |
|---|---|---|
| 数据页信息提取 | 是 | 逐项核对原文 |
| 头文件与通道顺序解读 | 是 | 下载原始文件比对 |
| 规模与时长推算 | 是 | 用文件字节数复核 |
| 同类资源定位 | 是 | 逐个查库内清单 |
| 医学背景描述 | 是 | 与文献表述对齐 |
| 代码示例 | 是 | 结构校验,未在数据上完整运行 |
| 引用与 DOI 核对 | 是 | 逐个打开确认 |
10.3 信息来源
- PhysioNet 项目页 https://physionet.org/content/semg/
- PhysioNet 1.0.1 版本页 https://physionet.org/content/semg/1.0.1/
- 文件目录 https://physionet.org/files/semg/1.0.1/
- 记录头文件 S1.hea、S21.hea、S15.hea
- 记录清单 RECORDS
- 受试者摘要 Subject_info.csv
- 许可证全文 LICENSE.txt
- PLOS ONE 2025 数据论文 https://doi.org/10.1371/journal.pone.0318560
- Electronics 2019 相位分类论文 https://doi.org/10.3390/electronics808894
- Biomedical Signal Processing and Control 2021 事件预测论文 https://doi.org/10.1016/j.bspc.2020.102232
- Journal of Electromyography and Kinesiology 2013 股直肌研究 https://doi.org/10.1016/j.jelekin.2012.06.011
- Electronics 2020 偏瘫步态对照研究 https://doi.org/10.3390/electronics9101572
- IEEE Access 2022 小波激活频段研究 https://doi.org/10.1109/ACCESS.2022.3141162
10.4 人工校验
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| 受试者人数与人口学 | 千方医数集编辑 | 逐行统计 CSV | ✅ 已验证 |
| 通道数与顺序 | 千方医数集编辑 | 下载头文件比对 | ✅ 已验证 |
| 采样率与时长 | 千方医数集编辑 | 帧数与字节数交叉核对 | ✅ 已验证 |
| 许可条款 | 千方医数集编辑 | 读 LICENSE.txt 全文首段 | ✅ 已验证 |
| 版本变更范围 | 千方医数集编辑 | 对照 Release Notes | ✅ 已验证 |
| 基准数字 | 千方医数集编辑 | 对照论文原文 | ✅ 已通过 |
| 站内资源边界 | 千方医数集编辑 | 查库内资源清单 | ✅ 已通过 |
10.5 AI 生成章节标注
§2 的步态周期描述、§6 的代码示例、§7.1 的偏倚分类由 AI 起草并经人工改写。§3.2 的通道对照表、§4.3 的字段字典、§8.1 的性能表由人工从原始文件与论文中整理。
10.6 最后人工审核日期
2026-09-05,与 §0 的审核日期一致。
页面状态:published(全部内容已完成审核并发布)
附录 A 通道与肌肉对照速查
| 下标 | 描述文本 | 一段话说明 |
|---|---|---|
| 0 | baso LT FOOT | 左足足底开关,三只并联,导通即触地 |
| 1 | gonio LT KNEE | 左膝矢状角,精度半个度 |
| 2 | semg LT TIB.A | 左胫骨前肌,摆动相发力把足背屈 |
| 3 | semg LT LAT.G | 左腓肠肌外侧,支撑后期蹬地 |
| 4 | semg LT REC.F | 左股直肌,跨髋膝双关节,摆动前抬腿 |
| 5 | semg LT HAM | 左腘绳肌,摆动末期减速小腿 |
| 6 | semg LT LAT.V | 左股外侧肌,承重期吸震 |
| 7 | baso RT FOOT | 右足足底开关 |
| 8 | gonio RT KNEE 或 HIP | 右下肢矢状角,注释不统一,按膝角理解 |
| 9 | semg RT TIB.A | 右胫骨前肌 |
| 10 | semg RT LAT.G | 右腓肠肌外侧 |
| 11 | semg RT REC.F | 右股直肌 |
| 12 | semg RT HAM | 右腘绳肌 |
| 13 | semg RT LAT.V | 右股外侧肌 |
下标只是默认顺序,真正的索引请从头文件的描述文本生成。这一点在版本 1.0.0 的两条记录上就是决定性的。
附录 B 文件与试次组织
| 项 | 说明 |
|---|---|
| 文件总数 | 六十六个(三份元数据加三十一对记录文件) |
| 记录命名 | S1 至 S31,无前导零 |
| 每个受试者的试次数 | 一次,一条连续记录 |
| 记录内组织 | 无分段,无事件标注文件,无注释层 |
| 元数据文件 | 许可证、记录清单、校验和、人口学表 |
| 校验方式 | 目录页提供 SHA256 清单 |
| 目录层级 | 单层,无子目录 |
| 解压后体量 | 不足 0.5 GB |
每人只有一次且连续采集,"试次"这个单位在本数据里不存在,须用"步态周期"替代;以试次为单位做交叉验证的代码都要改造。
附录 C 术语表
| 术语 | 含义 | 在本数据中的对应 |
|---|---|---|
| 表面肌电 | 皮肤表面记录的肌肉电活动 | 十路通道,单位微伏 |
| 步态周期 | 同侧足跟两次着地之间的间隔 | 由开关边沿切分 |
| 支撑相 | 足与地面接触的阶段 | 约占周期六成 |
| 摆动相 | 足离地前摆的阶段 | 约占周期四成 |
| 足底开关 | 触点式机械开关,记录通断 | 每足三只,导出一路 |
| 电角度计 | 用柔性测角器记录关节角度 | 每侧一只,精度半度 |
附录 D 常见问题速答
问:这是不是一份三十一人的队列研究数据?
不是。它没有随访、基线或结局变量。三十一人是采集样本,不是研究对象。
问:能不能从足底开关得到地面反作用力?
不能。开关只有通断,没有幅值。
问:为什么通道里没有臀大肌?
采集设计聚焦相序最清晰的踝膝肌群。髋伸肌群的表面肌电在行走中幅值低、串扰大。
问:两个版本有什么区别?
1.0.1 修正了两条记录的头文件顺序描述,新项目用它。
问:三十一人够不够做深度学习?
做跨人泛化基准够用,做大规模预训练不够。价值在"每人足够长",不在"人足够多"。
问:它和 EMGDB 是不是同一类?
不是。EMGDB 是三段针极肌电教学示例。
附录 E 许可与引用要点
| 要点 | 内容 |
|---|---|
| 许可名称 | Open Data Commons Attribution License v1.0 |
| 是否允许商用 | 允许 |
| 是否允许再分发 | 允许,须署名 |
| 署名要求 | 数据作者、标题、版本、平台、DOI |
| 伦理依据 | 赫尔辛基宣言,当地伦理委员会批准,书面知情同意 |
| 去标识化 | 仅匿名序号与四项人口学变量 |
| 数据条目引用 | doi 10.13026/grdj-qx06 |
| 方法论文引用 | doi 10.1371/journal.pone.0318560 |
| 平台文献 | PhysioNet 平台论文,与数据引用并列 |
| 常见合规失误 | 上架衍生数据忘记署名;只引平台不引 DOI |
编辑说明
本页数字取自四处一手材料:PhysioNet 项目页与 1.0.1 版本页、files/semg/1.0.1/ 目录清单、三条记录(S1、S15、S21)的头文件、以及 Subject_info.csv 的三十一行记录。通道顺序、单位混用、样本点数、人口学缺失与许可条文均按原文件核对。
未覆盖三项:两批采集(2011 与 2018)之间是否存在设备或操作差异、各记录电极定位一致性、串扰水平,公开文档均未交代,本页不做推断。核验时间:2026-10-29。数据版本:1.0.1。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- ppg-dalia — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- culm — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- nesfdb — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- plantar — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- wearable-device-dataset — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- pamap2 — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- wearable-exercise-frailty — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- body-sway-music-vr — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- gaitdb — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- hand-kinematics-semg — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

