信息速览

NinaPro — 表面肌电手势识别与假肢控制基准 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | NinaPro |
| 英文全称 | Non-Invasive Adaptive Prosthetics Benchmark Database |
| 别名/简称 | NinaPro DB1–DB10、Ninaweb、NinaPro Benchmark、MeganePro(DB10) |
| 疾病分类 | 上肢后天性缺失/截肢(ICD-11:QF00 肢体后天性缺失;对应 ICD-10-CM Z89.2 腕以上上肢缺失) |
| SNOMED CT | 449669007 Absence of upper limb / 161621004 History of upper limb amputation / 710110008 Phantom pain(详见 §2.2) |
| 数据模态 | 表面肌电(sEMG)、手部运动学(数据手套)、三轴加速度计、力信号(DB2)、眼动(DB6/DB10)、行为与临床评估(DB10) |
| AI 任务类型 | 手势/动作分类、手指自由度回归、力模式估计、跨会话鲁棒性、域适应、多模态融合、眼手协调解码 |
| 样本总数 | 10 个子库合计约 264 人次受试者(官网口径:超过 180 次数据采集,含健康人与经桡骨截肢者) |
| 数据大小 | 官方未统一公布总量;单练习衍生子集约 1.2 GB(Zenodo 10.5281/zenodo.15801272),完整子库经 Dryad/Zenodo/Harvard Dataverse 按文件下载 |
| 数据格式 | MATLAB .mat(每文件含 emg/acc/glove/stimulus/restimulus/repetition 等变量) |
| 许可证 | 各子库不同:DB4 为 CC BY-ND 4.0;DB1/DB2 经 Dryad 开放获取;顶层论文 CC BY 4.0;官方统一要求引用对应论文 |
| 访问级别 | 开放(Dryad/Zenodo/Harvard Dataverse 直接下载,无需注册审批) |
| 语言 | 英文(文档、标签说明与论文) |
| 首发日期 | 2014-12-23(DB1,Scientific Data 论文发表) |
| 最后更新 | 2020-02(DB10 MeganePro 论文发表于 Scientific Data;截至 2026-09 官网未新增子库) |
| 发布机构 | NinaPro 项目组(HES-SO Valais / Idiap / 帕多瓦大学医院 / 罗马大学),瑞士 SNSF Sinergia #132700、#160837 资助 |
| 官方主页 | https://ninapro.hevs.ch/ |
| 下载地址 | DB1/DB2:https://datadryad.org/resource/doi:10.5061/dryad.1k84r ;DB4:https://zenodo.org/records/1000138 ;各子库说明页:https://ninapro.hevs.ch/instructions/ |
| DOI | 10.1038/sdata.2014.53(顶层论文);各子库另有独立 Zenodo/Dryad DOI |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 文档与生态成熟、多子库可直接下载;扣分项:无官方划分文件、.mat 需自行转换、stimulus/restimulus 双标签需正确理解 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核:[千方病案医学编辑部] 交叉审核:§2 医学背景(ICD-11 QF00 与 SNOMED CT 编码映射、上肢缺失流行病学)、§7 偏倚分析(健康人-截肢者跨人群泛化、幻肢相关伦理)。
数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。NinaPro 各子库托管于 Dryad、Zenodo 与 Harvard Dataverse,许可条款以各子库页面为准,官方要求在成果中引用对应的开放获取论文。本页面的标签映射说明仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? NinaPro(Non-Invasive Adaptive Prosthetics,非侵入式自适应假肢)是一系列公开的表面肌电(sEMG)多模态数据库,由瑞士与意大利的研究团队在瑞士国家科学基金会资助下建设(官网)。它模拟的是"戴在手臂上的肌肉电信号采集器"如何读出你想做什么动作:从 12 个基本手指动作,到 23 个抓握日常物品的功能动作,再到 9 种用力模式,最细到截肢者用残肢完成的真实控制任务。全系列含 DB1–DB10 十个子库、超过 180 次数据采集(官网)。
为什么重要? 在 NinaPro 出现之前,肌电手势识别研究大多使用几十个受试者、不到 10 类动作的小型私有数据,论文之间无法公平比较。NinaPro 把设备规格、动作清单、标签文件全部公开,并配套发表在 Scientific Data 等开放期刊上的说明论文(Atzori et al. 2014),使全球团队可以在同一批数据上反复对比,成为该领域事实上的"公共考场"——2018 年以来几乎所有深度学习肌电解码论文都会报告 NinaPro 成绩。
我能用它做什么? 你可以:训练从传统机器学习到 CNN/Transformer 的手势分类器(单库最多 52 类);用 DB8 做手指关节角度回归;用 DB6 研究跨天会话的模型鲁棒性;用 DB3/DB7/DB10 的截肢者数据研究跨人群泛化;或用 DB10(MeganePro)把眼动、行为与临床数据和肌电信号对齐做多模态融合。数据全部免费下载,唯一义务是引用对应论文。
§1.1 技术摘要
NinaPro 系列由 HES-SO Valais(瑞士锡永/锡耶雷)、Idiap 研究所与帕多瓦大学医院等机构联合采集,顶层方法论发表于 Scientific Data(Atzori et al. 2014, DOI 10.1038/sdata.2014.53)。采集协议高度统一:受试者观看笔记本电脑屏幕上的动作示范影片并同步模仿,每个动作重复持续 5 秒、随后 3 秒休息,每个动作重复 6 次;sEMG 通道数 10–16 不等,设备横跨 Otto Bock MyoBock、Delsys Trigno、Cometa 与 Thalmic Myo 臂环(官网规格表)。数据以 MATLAB .mat 文件发布,每个文件内含 emg、acc、glove、stimulus、restimulus、repetition 等变量,其中 stimulus 是屏幕提示的原始标签,restimulus 是事后人工校正时长的精细标签(官方说明)。十个子库在采样率(100–2,000 Hz)、人群(健康人/截肢者)、任务(分类/回归/重复性)上互补,构成一个从入门基准到前沿多模态研究的完整阶梯。
§1.2 战略价值
维度一:方法论公共基线。 NinaPro 把"动作清单(52 类)+ 设备型号 + 标签协议 + 开放论文"四件套捆绑公开,让肌电手势识别从"每家一个私有数据集"走向可复现比较。综述显示,深度模型在 40–52 类任务上的精度普遍落在 80–95% 区间,这些数字之所以能横向排列,正是因为 NinaPro 提供了共同标尺(MDFF-LVNet 综述, ScienceDirect)。对新入场的团队而言,这意味着可以用极低成本完成从 SVM 基线到 SOTA 复现的完整训练闭环。
维度二:健康人到截肢者的研究阶梯。 DB1/DB2/DB4/DB5 提供健康人高一致性数据,DB3 提供 11 名经桡骨截肢者数据,DB7/DB8 各含 2 名截肢者,DB10 则同时覆盖 30 名健康人、15 名截肢者并附带行为与临床评估(DB10 说明页)。这一梯度让"健康人预训练 → 少量截肢者数据微调"的域适应研究成为可能,也把幻肢、残肢神经认知等临床问题第一次纳入了机器学习数据集的视野。
维度三:从实验室到穿戴设备的降级路径。 系列刻意覆盖了"研究级—商用级—消费级"三档传感器:Otto Bock(假肢同款电极)、Delsys Trigno/Cometa(研究级无线有源电极)到 Thalmic Myo 臂环(消费级干电极,DB5),以及眼动眼镜(DB6/DB10)。这使得"实验室精度 → 可穿戴精度"的衰减可以被在同系列内量化,为产品化决策提供了少见的连续证据链(官网规格表)。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注 | 与 NinaPro 的差异化 |
|---|---|---|---|---|
| NinaPro(DB1–DB10) | 10 个子库,超过 180 次采集,单库最多 52 类动作 | sEMG 10–16 通道 + 运动学/惯性/力/眼动 | stimulus + restimulus 双标签,6 次重复 | 系列化、健康人+截肢者、跨设备跨采样率、生态最成熟 |
| CapgMyo DB-a | 8 类手势,高密度 sEMG | 高密度电极阵列 | 手势标签 | 聚焦高密度空间分辨率,规模小于 NinaPro(综述) |
| csl-hDEMG | 27 类手指手势 | 高密度 sEMG | 手势标签 | 手指级细粒度任务,无截肢者数据(综述) |
| BioPatRec DB2 | 26 类动作 | sEMG + 运动学 | 手势标签 | 开源采集软件配套,社区规模较小(综述) |
§1.4 版本时间轴
| 时间 | 里程碑 |
|---|---|
| 2014-12 | DB1/DB2/DB3 随顶层论文发表于 Scientific Data(DOI 10.1038/sdata.2014.53),DB1/DB2 托管 Dryad(DOI 10.5061/dryad.1k84r)(PubMed) |
| 2014 | DB2 配套论文 Gijsberts et al. 发表于 PLOS ONE,确立 restimulus 重标注流程 |
| 2017 | DB3/DB4 随 Pizzolato et al. 六种采集设备对比论文发表于 PLOS ONE;DB4 上线 Zenodo(10.5281/zenodo.1000138) |
| 2017 | DB6 随 Palermo et al. 抓握识别重复性研究发表于 IEEE ICORR;DB7 随 Krasoulis et al. 发表于 J NeuroEng Rehabil |
| 2019 | DB8 随 Krasoulis et al. 发表于 Frontiers in Neuroscience |
| 2020 | DB9 随 Jarque-Bou 大规模运动学数据库论文发表于 Scientific Data;DB10(MeganePro)随 Cognolato et al.(Sci Data 7:43)与 Saetta et al.(Sci Data 7:60)发表(DB10 说明页) |
| 2020–2026 | 系列稳定为 10 个子库;官网持续作为统一入口(官网) |
§1.5 典型应用场景
- 肌电假肢手控制算法研发:在 DB1/DB2 上训练 52 类动作分类器,以 200 ms 滑窗在线输出控制指令,这是 NinaPro 最经典的用法(Hu et al. 2018 生态)。
- 深度学习信号解码研究:原始 sEMG 直接输入 CNN/CRNN/Transformer,DB1 已成为新架构的标配试金石(HVPN 2021)。
- 跨会话/跨天鲁棒性研究:DB6 每天 2 次、连续 5 天共 100 次采集的设计专为会话间漂移与域适应而生(Palermo et al. 2017)。
- 截肢者临床转化研究:DB3/DB7/DB8/DB10 的截肢者数据支持残肌控制、幻肢相关分析与小样本微调策略研究(DB10 说明页)。
- 多模态眼手协调研究:DB10 同步采集肌电、惯性、注视与行为临床数据,面向"看哪就抓哪"的智能假肢(Cognolato et al. 2020)。
- 教学与课程实验:单文件(数十 MB 级)即可跑通"加载→滤波→切窗→分类"全流程,适合作为生物医学信号处理课程的实操数据集(社区示例仓库)。
§2 医学背景
§2.1 ICD-11 编码映射
NinaPro 是方法学数据集而非疾病专病队列,但其截肢者子库(DB3/DB7/DB8/DB10)直接服务于上肢缺失人群的功能重建。下表给出核心概念的编码映射(编码经检索核实,2026-09-13)。
| 标签/概念 | ICD-11 | SNOMED CT | 术语说明 |
|---|---|---|---|
| 肢体后天性缺失(上肢,腕以上) | QF00(Acquired absence of limb,含 acquired absence of arm above wrist) | 449669007(Absence of upper limb) | NinaPro 截肢受试者均为经桡骨水平缺失(ICD-11 QF00、BioPortal SNOMED) |
| 上肢截肢史 | QF00(涵盖创伤后/术后肢体缺失) | 161621004(History of upper limb amputation) | 截肢者入组筛查的核心既往史概念(BioPortal SNOMED) |
| 上肢截肢(操作) | QF00 编码缺失状态;操作概念见 SNOMED | 81723002(Amputation of upper limb) | 造成 QF00 状态的手术操作(BioPortal SNOMED) |
| 幻肢痛 | ICD-11 MMS 实体 Phantom limb syndrome with pain | 710110008(Phantom pain)/ 711058008(Phantom pain following amputation of upper limb) | DB10 行为与临床模块的相关分析对象(BioPortal SNOMED) |
§2.2 疾病简介与流行病学
上肢后天性缺失多由外伤、肿瘤或血管性疾病导致的截肢引起,患者丧失手部抓握与精细操作能力,日常生活依赖假肢重建。ICD-10-CM 将其归入 Z89(后天性肢体缺失,如 Z89.2 腕以上上肢缺失),ICD-11 MMS 以 QF00 收录(ICD-11 QF00、ICD-10-CM Z89.209)。NinaPro 各说明论文对截肢受试者的描述统一使用"transradial amputees(经桡骨截肢者)"这一人群限定(官网)。
截肢后神经系统与心理层面的典型伴随问题是幻肢痛:ICD-11 MMS 对 Phantom limb syndrome with pain 的官方描述指出,幻肢痛发生于高达 80% 的截肢个体,疼痛性质可呈刺痛、搏动、灼烧或痉挛,常难治且受躯体、情绪与心理因素诱发加重(ICD-11 MMS 实体描述, BioPortal)。这正是 DB10 将行为、临床与神经认知数据纳入采集的原因之一(Saetta et al. 2020)。
从康复工程视角看,肌电假肢的现实困境是 NinaPro 立项的直接动因:顶层论文明确指出,现有肌电假肢控制能力有限、控制方式不自然、使用者需要长时间训练,而文献中前景良好的算法结果与真实生活需求之间仍有明显差距(Atzori et al. 2014 摘要)。缩小这一差距的关键,是让控制算法在"自然执行的动作"上训练——这正是 NinaPro 采用屏幕影片引导、覆盖 52 类自然动作而非孤立肌肉收缩任务的原因。
§2.3 临床任务定义
- 动作意图解码(分类):从 10–16 通道 sEMG 中实时判断患者想执行的动作用哪一类(DB1 最多 52 类),对应假肢的"开关+模式切换"控制范式,是筛查/诊断类比之外的"康复工程任务"。
- 手指自由度回归(回归):DB8 以 16 通道 sEMG 连续回归手指关节状态,对应比例控制假肢,控制自由度更高、更自然(官网)。
- 力模式估计:DB2 在抓握练习中同步记录 6 通道力信号,支持"握多紧"的力分级控制研究(官方说明)。
- 会话稳定性评估(重复性):DB6 用 5 天×每天 2 次的重复采集量化"今天训练的模型明天还能不能用",属于假肢落地前的稳定性验证任务(Palermo et al. 2017)。
- 眼手协调与临床评估:DB10 同步注视轨迹、行为测试与临床访谈,任务从"解码动作"扩展到"理解截肢者的感知-运动与神经认知状态"(Cognolato et al. 2020)。
- 设备与协议基准化(元任务):DB3/DB4 配套论文用同一批协议比较六种 EMG 采集设备,使"采集设备选型"本身成为可量化的工程任务(Pizzolato et al. 2017)。
§2.4 受试者人群构成
| 子库 | 人群构成 | 采集地点 | 备注 |
|---|---|---|---|
| DB1 | 27 名健康人 | 瑞士(HES-SO Valais) | 右手采集,Otto Bock 设备(官网) |
| DB2 | 40 名健康人 | 瑞士 | 12 通道 Trigno + 力 + 手套(官网) |
| DB3 | 11 名经桡骨截肢者 | 瑞士/意大利 | 同 DB2 设备(官网) |
| DB4/DB5 | 各 10 名健康人 | 瑞士 | Cometa / 双 Myo 臂环(官网) |
| DB6 | 10 名健康人 | 瑞士 | 5 天重复采集,含眼动(官网) |
| DB7/DB8 | 各 20/10 名健康人 + 2 名截肢者 | 瑞士 | Trigno 12/16 通道(官网) |
| DB9 | 77 名受试者 | — | 大规模运动学分析(官网) |
| DB10 | 30 名健康人 + 15 名截肢者 | 意大利(帕多瓦)+ 瑞士 | 另有临床对照组 29 人见 Saetta et al.(DB10 说明页) |
§2.5 临床价值
对临床与康复工程而言,NinaPro 的价值在于把"实验室里的肌电分类"推进到"可被重复验证的工程标准"。其一,它让假肢控制算法在进入人体试验前先经受公开基准检验,降低临床试错成本;其二,截肢者子库提供了真实残肌信号与残肢运动学,使"健康人模型→患者模型"的迁移研究有据可依;其三,DB10 的行为与临床数据让研究者能够把模型性能差异与幻肢痛、神经认知状态等临床变量关联起来,为个体化假肢适配提供数据基础(DB10 说明页)。
对临床信息学而言,NinaPro 还提供了一个"编码-数据"贯通的范例:其截肢者子库可以直接挂接到 ICD-11 QF00(肢体后天性缺失)与 SNOMED CT 上肢截肢/幻肢痛概念(见 §2.1),使康复工程数据能进入以术语体系组织的临床数据生态——这在罕见功能重建数据集里并不多见。
§2.6 金标准对照
| 维度 | NinaPro 的做法 | 说明 |
|---|---|---|
| 任务划分 | 练习 A/B/C/D 分段:12 基本手指动作 / 8 等长等张构型+9 腕部动作 / 23 抓握功能动作 / 9 力模式 | 屏幕影片引导,动作选自手部分类学与机器人文献(Atzori et al. 2014) |
| 标注方式 | stimulus(屏幕提示自动记录)+ restimulus(人工事后校正时长) | restimulus 更贴近真实动作起止,是分类金标准(官方说明) |
| 标注者 | 采集团队(生物工程/物理治疗背景研究者) | 采集协议由 Atzori、Mittaz Hager、Esig 等共同制定(Atzori et al. 2014) |
| 重复结构 | 每动作 6 次重复,每次 5 秒 + 3 秒休息 | 重复编号既用于数据组织,也是社区标准划分依据(OpenAIRE DB4) |
§3 数据集规格
§3.0 版本抉择矩阵
NinaPro 是"一个系列、十个子库",选错子库是新手第一坑。按需求选择:
| 你的需求 | 推荐子库 | 设备/采样率 | 理由 |
|---|---|---|---|
| 52 类大动作集入门基准 | DB1 | 10 通道 Otto Bock,100 Hz | 体量最小、文献最多,结果可直接对标(官网) |
| 高采样率 + 多模态分类 | DB2 | 12 通道 Trigno,2,000 Hz,含力与手套 | 信号质量与模态最全(官网) |
| 截肢者分类研究 | DB3(11 人)或 DB10(15 人) | Trigno,2,000 Hz / 1,926 Hz | DB3 是最纯粹的截肢者分类库(官网) |
| 设备对比/低成本可穿戴 | DB4 / DB5 | Cometa 12 通道 / 双 Myo 臂环 16 电极 | DB5 面向消费级设备(官网) |
| 跨天会话鲁棒性 | DB6 | 14 通道 Trigno + 眼动 | 每天 2 次×5 天的重复性设计(Palermo et al. 2017) |
| 手指连续回归(比例控制) | DB8 | 16 通道 Trigno | 专门的 finger regression 任务(官网) |
| 大规模运动学分析 | DB9 | 77 名受试者 | 运动学为主,适合动作学/生物力学(官网) |
| 眼手协调 + 行为临床多模态 | DB10(MeganePro) | Trigno 12 通道 + Tobii 眼动 + 行为临床 | 多模态最丰富,Harvard Dataverse 托管(DB10 说明页) |
§3.1 模态详情
- 表面肌电(sEMG):核心模态。DB1 使用 10 通道 Otto Bock MyoBock(输出约 100 Hz);DB2/DB3/DB7 使用 12 通道 Delsys Trigno(2,000 Hz);DB4 使用 12 通道 Cometa 无线有源电极(2,000 Hz);DB5 使用 2 只 Thalmic Myo 臂环共 16 个干电极(200 Hz);DB6 使用 14 通道 Trigno;DB8 使用 16 通道 Trigno;DB10 使用 12 通道 Trigno(1,926 Hz)(官网、Bioengineering 规格表)。
- 电极布局细节(DB2 系 Trigno 库):1–8 号电极在前臂桡肱关节高度等距环绕;9–10 号位于指浅屈肌/指伸肌活动点;11–12 号位于肱二头肌/肱三头肌活动点;acc 变量按 12 电极×3 轴共 36 列与 emg 同文件对齐(官方说明)。
- 手部运动学:DB1 配 Cyberglove 数据手套(22 传感器);DB2 同样含 22 列 glove 信号;DB8 为手指回归提供运动学真值(官方说明)。
- 惯性(加速度计):Trigno/Myo/Cometa 电极内置三轴加速度计,DB2 的 acc 变量含 36 列(12 电极×3 轴)(官方说明)。
- 力:DB2 独有,第三练习记录 6 通道力信号,forcecal 变量给出各通道最小/最大标定值(官方说明)。
- 眼动:DB6 与 DB10 配戴含场景相机的眼动追踪眼镜,DB10 使用 Tobii Pro Glasses 2(官网、DB10 说明页)。
- 行为与临床:DB10/MDSInfo 含临床访谈与神经认知测试(DB10 说明页)。
§3.2 子库与样本数
| 子库 | 目标 | 受试者数 | 动作数 | EMG 设备 | 模态 |
|---|---|---|---|---|---|
| DB1 | 分类/回归 | 27 | 52 | 10 通道 Otto Bock | sEMG + 运动学 |
| DB2 | 分类/回归 | 40 | 49 | 12 通道 Delsys Trigno | sEMG + 运动学 + 惯性 + 力 |
| DB3 | 分类/回归 | 11(截肢) | 49 | 12 通道 Delsys Trigno | sEMG + 惯性 |
| DB4 | 分类/回归 | 10 | 52 | 12 通道 Cometa | sEMG + 运动学 |
| DB5 | 分类/回归 | 10 | 52 | 2×Myo 臂环(16 电极) | sEMG + 惯性 |
| DB6 | 重复性(2 次/天×5 天) | 10 | 7 | 14 通道 Delsys Trigno | sEMG + 惯性 + 眼动 |
| DB7 | 分类/回归 | 20 健康人 + 2 截肢 | 6 | 12 通道 Delsys Trigno | sEMG + 惯性 |
| DB8 | 手指回归 | 10 健康人 + 2 截肢 | 9 | 16 通道 Delsys Trigno | sEMG + 运动学 |
| DB9 | 大规模运动学 | 77 | 40 | sEMG | sEMG + 运动学 |
| DB10 | 眼手协调/分类 | 30 健康人 + 15 截肢 | 10 | 12 通道 Delsys Trigno | sEMG + 惯性 + 眼动 + 行为 + 临床 |
来源:官网规格表(2026-09-13 检索)。十库受试者人数相加约 264 人次,存在跨库重复参与;官网口径为"超过 180 次数据采集"。
§3.3 数据格式
| 要素 | 规格 |
|---|---|
| 文件容器 | MATLAB .mat 文件,命名 S{被试编号}_A{采集场次}_E{练习编号}.mat(如 S1_A1_E1.mat) |
| 核心变量 | emg(N×通道数)、acc(N×3×电极数)、glove(DB1/DB2,22 传感器)、force(DB2,6 通道)、forcecal(2×6 标定值) |
| 标签变量 | stimulus、restimulus(N×1)、repetition、rerepetition(N×1) |
| 标签取值 | 0 = 静息(rest);正整数为动作编号,跨练习分段编号 |
| 读取方式 | MATLAB load;Python scipy.io.loadmat(v7.3 格式需 h5py/mat73) |
§3.4 存储大小
官方未公布全系列统一总量。已核实的参考锚点:DB1"练习 A"单一练习的学术衍生子集即为 1.2 GB 的 zip 包(Zenodo 10.5281/zenodo.15801272);DB1/DB2 完整数据在 Dryad 按文件下载(Dryad DOI 10.5061/dryad.1k84r)。建议按 §3.0 矩阵只下载目标子库,预留 10–100 GB 磁盘空间。
- 按需下载策略:Dryad/Zenodo 均支持按文件下载,先下载 1–2 个被试的 .mat 验证管线,再批量拉取。
- 转换后体积:float32 npz 转换通常小于原始 .mat;含 acc/glove 的库(DB2)约为纯 emg 库的 4–5 倍(列数 12→12+36+22)。
- DB10 注意:MDS1/MDS2/MDS4/MDSInfo 是四个独立 Dataverse 数据集,含眼动与临床表格,体积与结构均不同于 .mat 系列,需按其页面说明分别处理(DB10 说明页)。
§3.5 标注方式
- 自动记录 + 人工精修的双轨制:
stimulus由采集软件在播放示范影片时自动写入;restimulus由研究团队在采集后逐段校正动作起止时长(relabelling),与真实动作更对齐(官方说明)。 - 重复编号双轨:
repetition对应 stimulus 的重复计数,rerepetition对应 restimulus,二者用于把连续记录切成试验段。 - 静息标签:0 表示静息段,穿插在每个动作重复之间(3 秒休息),是天然的负类。
- 人工质控:动作时长校正属人工环节,覆盖全部子库;这是 NinaPro 标签质量的核心保障,也是"stimulus/restimulus 必须分清"的根源(详见坑点 1)。
§3.6 标注者资质与一致性
采集协议由项目核心成员制定:Manfredo Atzori 制定采集协议并执行采集,Anne-Gabrielle Mittaz Hager 与 Simone Elsig 参与协议制定、受试者招募与采集,Arjan Gijsberts 与 Claudio Castellini 编写采集软件(Atzori et al. 2014 作者贡献)。官方论文未发布标注者间一致性系数;restimulus 的人工校正流程见 Gijsberts et al. 2014 的 relabelling 描述(官方说明)。
§3.7 采集周期
系列自 2014 年(DB1–DB3 论文发表)延续至 2020 年(DB9/DB10 论文发表),此后官网未新增子库(截至 2026-09)。单子库内部:DB1–DB5/DB7 为单场次连续采集(受试者完成全部练习);DB6 为纵向设计——每天 2 次采集、连续 5 天、共 100 次采集(Palermo et al. 2017)。
| 子库 | 场次结构 | 单场次内容 |
|---|---|---|
| DB1 | 每被试 1 个采集场次(A1) | 练习 E1–E3 各一个 .mat 文件,每动作重复 10 次(官网口径 52 类动作) |
| DB2–DB5 | 每被试 1 个采集场次(A1) | 练习 E1–E3(DB2 另有力练习),每动作重复 6 次 |
| DB6 | 每被试 10 个采集场次(5 天×2 次/天) | 每场次 7 类抓握×12 次重复 |
| DB7/DB8 | 每被试 1 个采集场次 | 精简动作集(6/9 类) |
| DB9/DB10 | 按论文各自协议 | 运动学/多模态采集,见对应说明页 |
来源:官网规格表(DB1 每动作 10 次重复见其说明页口径)、Palermo et al. 2017。
§3.8 地域覆盖
数据采集于瑞士瓦莱州(HES-SO Valais,Sierre/Leukerbad)与意大利帕多瓦大学医院(DB10 截肢者临床部分由帕多瓦团队完成)(Atzori et al. 2015 机构信息、DB10 说明页)。受试者均为当地招募志愿者,不构成全球代表性。
§3.9 设备规格
| 设备 | 使用子库 | 通道数 | 采样率 | 特点 |
|---|---|---|---|---|
| Otto Bock MyoBock 13E200 | DB1 | 10 | 约 100 Hz | 商用假肢同款电极,8 个等距环绕前臂 + 2 个屈/伸肌活动点 |
| Delsys Trigno | DB2/DB3/DB7/DB8/DB10 | 12–16 | 2,000 Hz(DB10 为 1,926 Hz) | 无线有源电极,内置三轴加速度计 |
| Cometa Wave Plus | DB4 | 12 | 2,000 Hz | 无线有源单差分电极 |
| Thalmic Myo 臂环 | DB5 | 2×8(16 电极) | 200 Hz | 消费级干电极,面向可穿戴场景 |
来源:官网规格表、Bioengineering 规格表、OpenAIRE DB4 记录。DB2 电极布局:1–8 号电极在前臂桡肱关节高度等距环绕,9–10 号位于指浅屈肌/指伸肌活动点,11–12 号位于肱二头肌/肱三头肌活动点(官方说明)。
§3.10 深度溯源链
- 资助:瑞士国家科学基金会(SNSF)Sinergia 项目 #132700 NinaPro 与 #160837 MeganePro(官网)。
- 顶层论文:Atzori M, et al. Scientific Data 1:140053(2014),DOI 10.1038/sdata.2014.53,PMID 25977804,PMCID PMC4421935(PubMed)。
- 数据托管链:DB1/DB2 → Dryad(DOI 10.5061/dryad.1k84r);DB4 → Zenodo(10.5281/zenodo.1000138);DB5/DB6/DB7 → Zenodo(record 583331/1420651/574717);DB10 → Harvard Dataverse(MDS1/MDS2/MDS4/MDSInfo)(DB10 说明页、OpenAIRE)。
- 许可锚点:顶层论文 CC BY 4.0,其元数据以 CC0 发布(论文版权声明);DB4 Zenodo 记录标注 CC BY-ND(OpenAIRE);第三方衍生上传明确"原始数据不允许再分发、仅供学术用途"(Zenodo 10.5281/zenodo.15801272)。
§4 数据结构
§4.0 目录树
以 DB1 为例,解压后目录结构预览(DB2–DB7 结构同理,文件数随子库不同):
ninapro-DB1/
├── S1_A1_E1.mat # 被试 1,采集场次 1,练习 1(12 个基本手指动作)
├── S1_A1_E2.mat # 被试 1,练习 2(等长/等张构型 + 腕部动作)
├── S1_A1_E3.mat # 被试 1,练习 3(抓握与功能动作)
├── S2_A1_E1.mat
├── ...
├── S27_A1_E3.mat # 被试 27,练习 3
└──(每个 .mat 内含变量:emg / acc / glove / stimulus / restimulus / repetition / rerepetition)
每个 .mat 文件是一次连续记录:内部按时间顺序存放整个练习的所有动作重复与穿插的静息段,stimulus/restimulus/repetition 三个 N×1 向量与 emg 逐采样点对齐——不需要额外的事件文件。
§4.1 DAIMS 字段字典
以 DB2 为例(模态最全),8 列字段字典:
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| emg | float 矩阵 | sEMG 信号,N×12;列 1–8 前臂环绕,9–10 指浅屈肌/指伸肌,11–12 肱二/三头肌 | [-0.012, 0.031, …] | 分类/回归主输入 | 电极位移、工频干扰 | 无缺失(连续记录) | 约 ±5 mV 内 |
| acc | float 矩阵 | 三轴加速度计,N×36(12 电极×3 轴),148 Hz 原始采样后统一上采样 | [0.01, 0.98, 0.02, …] | 惯性辅助分类 | 上采样插值误差 | 无缺失 | 约 ±3 g |
| glove | float 矩阵 | Cyberglove 22 传感器未标定信号,与关节角度成正比 | [123, 45, …] | 运动学真值/回归标签 | 传感器漂移 | 无缺失 | 传感器原始量程 |
| stimulus | int 向量 | 屏幕提示的动作编号(原始标签) | 23 | 弱参考标签 | 含提示延迟与过渡段 | 0 = 静息 | 0–50(编号不连续) |
| restimulus | int 向量 | 人工校正时长的动作编号(金标准标签) | 23 | 分类主标签 | 人工校正残余误差 | 0 = 静息 | 0–50(编号不连续) |
| repetition | int 向量 | stimulus 对应的重复编号 | 4 | 切分试验段/划分数据 | — | 0 = 静息 | 0–6(DB1 至 10) |
| rerepetition | int 向量 | restimulus 对应的重复编号 | 4 | 标准划分依据 | — | 0 = 静息 | 0–6(DB1 至 10) |
| force | float 矩阵 | 6 通道力信号(仅第三练习) | [1.2, 0.4, …] | 力分级/回归 | 传感器非线性 | 非力练习中缺省 | 标定后物理量 |
| forcecal | float 矩阵 | 2×6 力标定值(每通道最小/最大) | [[0.1…],[8.9…]] | 力信号物理量化 | — | 无 | 设备量程 |
| subject | int | 被试编号(文件名亦含) | 17 | 跨被试划分/LOSOCV | — | 无 | 1–40(随子库) |
| exercise | int | 练习编号(文件名 E 字段) | 3 | 分练习建模 | — | 无 | 1–3(DB1) |
来源:官方 DB2 说明(社区整理版)、官网说明页。其余子库变量为此字典的子集(如 DB3/DB5 无 glove/force)。
各子库变量存在差异,跨库加载前先按下表核对(基于官方说明与设备规格):
| 变量 | DB1 | DB2 | DB3 | DB4 | DB5 | DB6 | DB7 | DB8 | DB10 |
|---|---|---|---|---|---|---|---|---|---|
| emg | ✅(10ch) | ✅(12ch) | ✅(12ch) | ✅(12ch) | ✅(16ch) | ✅(14ch) | ✅(12ch) | ✅(16ch) | ✅(12ch) |
| acc | ✅ | ✅(36 列) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| glove | ✅(22 传感器) | ✅(22 传感器) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅(运动学) | ❌ |
| force/forcecal | ❌ | ✅(仅练习 3) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| stimulus/restimulus 系列 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
§4.2 标签分布
- 练习内动作构成(DB1–DB5 系列,源自顶层论文图 2):练习 A = 12 个基本手指动作;练习 B = 8 个等长/等张手部构型 + 9 个基本腕部动作;练习 C = 23 个抓握与功能动作(展示日常实物);练习 D = 9 个力模式(DB2 特有)(Atzori et al. 2014)。
- 活跃/静息比例:每个动作重复 5 秒 + 3 秒静息,活跃段约占 62.5%,其余为静息;标签 0(静息)样本量天然偏大,直接训练会造成类别不平衡(OpenAIRE DB4 协议)。
- 标签数记法差异:官网规格表记 DB1=52、DB2=49、DB3=49、DB4=52、DB5=52 个动作;部分论文按"含静息的标签总数"记为 50–53。合并多库或复现论文时必须显式建立标签映射(官网、Bioengineering 规格表)。
各子库标签量一览(官网口径):
| 子库 | 动作数 | 每动作重复数 | 标签特点 |
|---|---|---|---|
| DB1 | 52 | 10 | A+B/C 三练习,编号跨练习分段 |
| DB2/DB3 | 49 | 6 | 含力模式练习(DB2),编号不连续需检查 |
| DB4/DB5 | 52 | 6 | 与 DB1 动作清单同源,设备不同 |
| DB6 | 7 | 12(2 次/天×5 天) | 小动作集,会话标签丰富 |
| DB7 | 6 | 6 | 精简抓握集,含 2 名截肢者 |
| DB8 | 9 | 6 | 手指回归任务的离散动作子集 |
| DB9 | 40 | 按论文协议 | 运动学为主 |
| DB10 | 10 | 按论文协议 | 眼手协调场景的动作子集 |
来源:官网规格表。DB1 的 10 次重复对应其 10 个重复编号;其余分类库为 6 次重复(HVPN 表 1)。
§4.3 关键统计
| 统计项 | 数值 | 来源 |
|---|---|---|
| 子库数量 | 10(DB1–DB10) | 官网 |
| 数据采集总次数 | 超过 180 次 | 官网 |
| 受试者人次(各库相加) | 约 264 人次(含跨库重复) | 由官网各库人数求和 |
| 单库最大动作类别 | 52(DB1/DB4/DB5) | 官网 |
| 截肢者覆盖 | DB3(11 人)、DB7(2 人)、DB8(2 人)、DB10(15 人) | 官网 |
| 采样率跨度 | 100–2,000 Hz | Bioengineering 规格表 |
| DB6 采集次数 | 100 次(10 人×2 次/天×5 天) | Palermo et al. 2017 |
| DB10 眼动设备 | Tobii Pro Glasses 2(100 Hz 注视采样) | 官网/检索记录 |
| 最大子库(受试者数) | DB9(77 人) | 官网 |
| 纯截肢者分类库 | DB3(11 名经桡骨截肢者) | 官网 |
| DB10 临床对照 | Saetta et al.:15 名截肢者 + 29 名对照 | DB10 说明页 |
§4.4 数据层级
系列(DB1–DB10)
└── 子库(如 DB2)
└── 受试者(S1–S40)
└── 采集场次(A1,DB6 为 A1–A10)
└── 练习文件(E1–E3,.mat)
└── 试验段(restimulus/rerepetition 切分,每动作 6 次)
└── 采样点(emg/acc/glove 逐行,200–2,000 Hz)
层级意义:几乎所有"被试间泄漏"事故都发生在"受试者"这一层——同一受试者的窗口被同时放进训练集与测试集(详见坑点 3)。
§4.5 缺失值与信息性缺失
- 信号本体无缺失:sEMG/acc/glove 为连续记录,不设缺失占位符;中断以整段文件为单位管理。
- 模态级缺省:
force仅在 DB2 的第三练习存在,其余练习与其他子库无此变量——这不是数据损坏,而是协议设计(官方说明)。forcecal的两行值(最小/最大)用于把原始力读数线性映射为物理量,缺省时力通道不可量化。 - 标签 0 的双重语义:
stimulus=0/restimulus=0既是"静息类",也充当无动作段的占位编码;构造非静息分类任务时必须先剔除 0 类窗口。 - 编号不连续:部分子库动作编号存在非连续段(练习间留号),
np.unique(restimulus)检查是标准第一步(详见坑点 4)。
§5 数据划分与使用建议
§5.1 官方划分
NinaPro 不随数据发布官方 train/test 划分文件。官方论文在验证部分报告了机器学习基线,但划分协议由各论文自行描述(Atzori et al. 2014)。
§5.2 社区惯例划分
社区事实标准是按重复编号划分(rep1–rep6 属于同一动作的 6 次重复,天然互斥),主流设定如下(HVPN 表 1、Bioengineering 规格表):
| 子库 | 训练用重复 | 测试用重复 |
|---|---|---|
| DB1 | 1, 3, 4, 6, 7, 8, 9 | 2, 5, 10 |
| DB2–DB5、DB7 | 1, 3, 4, 6 | 2, 5 |
| DB6 | 1, 3, 5, 7, 9 | 2, 4, 6, 8, 10 |
(DB1 的 10 次重复对应其 10 个文件/场次结构;DB6 的 10 次对应 10 个采集场次。)跨被试评估则用 LOSOCV(Leave-One-Subject-Out Cross-Validation):轮流留出一名受试者做测试。
§5.3 划分策略建议与泄漏风险
- 首则:同一重复的窗口绝不能同时出现在训练与测试集。滑窗预处理后随机打散再划分,会让时间上相邻、高度重叠的窗口分属两侧,造成严重泄漏、精度虚高(详见坑点 2)。
- 次则:报告口径必须写明被试内(intrasubject)还是跨被试(LOSOCV)。两者差距可达 3–6 个百分点(如 DB1:88.4% vs 84.9%),混用即误报(HVPN 2021)。
- 跨库训练:先统一重采样到同一采样率、再显式映射标签(DB1↔DB2 动作编号不同),最后在文档中记录映射表。
- 力任务隔离:DB2 的力信号只在第三练习存在,力估计模型只能用练习 3 的数据训练与评估,勿与分类任务混池。
- 眼动模态对齐:DB6/DB10 的眼动采样率与 sEMG 不同,联合建模前需按官方说明页核对各模态时间对齐方式。
§5.4 交叉验证建议
- 被试内评估:按 §5.2 重复划分,5 次重复训练、1–3 次重复测试,可做重复级 5 折交叉验证。
- 跨被试评估:LOSOCV(DB1 有 27 折,DB2 有 40 折);小样本截肢者库(DB3,11 人)建议留一法逐人报告再取宏平均。
- 会话鲁棒性(DB6):用前几天场次训练、后几天测试,模拟真实部署的时间外推——例如以场次 1,3,5,7,9 训练、2,4,6,8,10 测试(社区口径)。
- 折数与稳定性:LOSOCV 折数等于被试数,报告时附宏平均与最差被试两项,避免均值掩盖个别用户失效。
§5.5 外部验证建议
在 NinaPro 训练的模型若面向真实假肢,应在外部人群/设备上验证:优先用另一子库(如 DB2 训练 → DB3 截肢者测试,需注意域偏移),或用同领域公开库(如高密度 sEMG 数据集)验证跨设备泛化,并报告性能衰减幅度。
§6 AI 就绪指南
§6.0 云端快速启动
DB1/DB2 位于 Dryad,DB3–DB8 位于 Zenodo,均提供 HTTPS 直链,可在 Colab/Kaggle 直接用 wget/Zenodo API 拉取。DB10 在 Harvard Dataverse,需按数据集页面逐文件下载。建议先拉取单个受试者的文件(约数十 MB)跑通管线,再扩展到全库。
Colab 场景的最小命令序列(以 DB4 单记录为例):
# 1. 查看 Zenodo 记录的文件清单(确认文件名与大小)
curl -s "https://zenodo.org/api/records/1000138" | python3 -c \
"import json,sys; [print(f['key'], f['size']) for f in json.load(sys.stdin)['files']]"
# 2. 按清单下载目标文件后解压到 data/ninapro-DB4/
# 3. 跳转 §6.1 跑通加载示例
Dryad 的 DB1/DB2 同理:在记录页(doi:10.5061/dryad.1k84r)按文件清单逐个下载,或用 Dryad API v2 遍历数据集文件列表。
§6.1 快速上手
代码前的目录约定:
data_root指向解压后的子库目录,例如data_root = "data/ninapro-DB1/",目录内直接平铺S1_A1_E1.mat ... S27_A1_E3.mat;若你从 Dryad 下载的是嵌套 zip,请先解压到该层级。最小可用子集:S1_A1_E1.mat一个文件即可跑通加载与切窗。
# 最小加载示例:读取 NinaPro .mat 文件并理解五个核心变量
import scipy.io as sio
import numpy as np
data_root = "data/ninapro-DB1/" # 解压后的子库目录
mat = sio.loadmat(data_root + "S1_A1_E1.mat")
emg = mat["emg"] # (N, 10) sEMG,DB1 约 100 Hz
restimulus = mat["restimulus"].ravel() # (N,) 金标准动作标签,0=静息
rerepetition = mat["rerepetition"].ravel() # (N,) 重复编号,0=静息
print("采样点数 N =", emg.shape[0]) # 单练习约数百万采样点
print("动作类别:", np.unique(restimulus)) # 检查编号是否连续(坑点 4)
print("重复编号:", np.unique(rerepetition)) # DB1 单练习内 1–10
# 每个试验段 = restimulus 与 rerepetition 联合确定的一个连续片段
label_change = np.flatnonzero(np.diff(restimulus) != 0)
print("试验段边界数:", len(label_change))
§6.2 数据获取
| 子库 | 托管平台 | 入口 | 许可/要求 |
|---|---|---|---|
| DB1/DB2 | Dryad | doi:10.5061/dryad.1k84r | 开放下载,引用论文 |
| DB3 | 官网说明页指定的 Zenodo 记录 | 官网 DB3 说明 | 开放下载,引用论文 |
| DB4 | Zenodo | zenodo.org/records/1000138 | CC BY-ND 4.0 |
| DB5 | Zenodo | zenodo.org/record/583331 | 开放下载,引用论文 |
| DB6 | Zenodo | zenodo.org/record/1420651 | 开放下载,引用 ICORR 2017 |
| DB7 | Zenodo | zenodo.org/record/574717 | 开放下载,引用 JNER 2017 |
| DB10(MDS1/MDS2/MDS4/MDSInfo) | Harvard Dataverse | DB10 说明页 | 开放下载,引用两篇 Sci Data 论文 |
用 Zenodo API 批量下载(以 DB4 为例,文件列表由 API 返回,无需手工抄链接):
import json, urllib.request
record_id = "1000138" # Zenodo 记录号,换子库只改这里
meta = json.load(urllib.request.urlopen(
f"https://zenodo.org/api/records/{record_id}"))
for f in meta["files"]:
print(f["key"], f["size"]) # 先看清单再决定下载哪些
urllib.request.urlretrieve(f["links"]["self"], f["key"])
§6.3 预处理全流程
流程:读取 .mat → 带通滤波去漂移与高频噪声 → 工频陷波 → 按 restimulus 切 200 ms 窗 → 标准化 → 保存 npz。
import numpy as np
from scipy.signal import butter, sosfiltfilt, iirnotch, sosfilt
FS = 100.0 # DB1 的 Otto Bock 输出约 100 Hz;DB2/DB3/DB7 用 2000,DB5 用 200
def bandpass(emg, fs, lo=20, hi=450, order=4):
"""sEMG 有效频段约 20–450 Hz;低于 20 Hz 去运动伪迹,450 以上去高频噪声。"""
sos = butter(order, [lo, hi], btype="bandpass", fs=fs, output="sos")
return sosfiltfilt(sos, emg, axis=0)
def notch_powerline(emg, fs, f0=50.0, Q=30.0):
"""欧洲电网 50 Hz 工频陷波(美国设备改 60 Hz)。"""
b, a = iirnotch(f0, Q, fs)
from scipy.signal import filtfilt
return filtfilt(b, a, emg, axis=0)
def make_windows(emg, labels, reps, win_s=0.2, stride_s=0.1, fs=FS):
"""按 restimulus 切窗:窗长 200 ms、步长 100 ms(社区最常用设定)。
关键:窗口只落在同一 (restimulus, rerepetition) 段内,绝不跨段。"""
win, stride = int(win_s * fs), int(stride_s * fs)
X, y, rep = [], [], []
for start in range(0, len(labels) - win, stride):
seg_lab = labels[start:start + win]
seg_rep = reps[start:start + win]
if np.all(seg_lab == seg_lab[0]) and seg_lab[0] != 0 \
and np.all(seg_rep == seg_rep[0]):
X.append(emg[start:start + win].T) # (通道, 时间)
y.append(seg_lab[0])
rep.append(seg_rep[0])
return np.asarray(X, dtype=np.float32), np.asarray(y), np.asarray(rep)
mat = sio.loadmat("data/ninapro-DB1/S1_A1_E1.mat")
emg = notch_powerline(bandpass(mat["emg"].astype(np.float64), FS), FS)
X, y, rep = make_windows(emg, mat["restimulus"].ravel(),
mat["rerepetition"].ravel())
# 按重复划分(社区标准,DB1:train 1,3,4,6,7,8,9 / test 2,5,10)
train_reps = {1, 3, 4, 6, 7, 8, 9}
tr, te = np.isin(rep, list(train_reps)), ~np.isin(rep, list(train_reps))
mu, sd = X[tr].mean(axis=(0, 2), keepdims=True), X[tr].std(axis=(0, 2), keepdims=True) + 1e-8
X = (X - mu) / sd # 仅用训练集统计量标准化
np.savez("db1_s1_e1_windows.npz", X=X, y=y, rep=rep)
要点:标准化统计量只来自训练重复;换子库时只需改 FS 与通道布局假设(见坑点 5)。
传统基线(TD 时域特征 + 线性分类器)在工程上仍是重要参照,30 行内即可实现:
def td_features(win):
"""6 个经典时域特征:MAV / RMS / WL / ZC / SSC / 方差。
输入 (通道, 时间),输出 (通道*6,)——LDA/SVM 的标准输入。"""
mav = np.abs(win).mean(axis=-1)
rms = np.sqrt((win ** 2).mean(axis=-1))
wl = np.abs(np.diff(win, axis=-1)).sum(axis=-1)
zc = (np.diff(np.sign(win), axis=-1) != 0).sum(axis=-1)
ssc = (np.diff(np.sign(np.diff(win, axis=-1)), axis=-1) != 0).sum(axis=-1)
var = win.var(axis=-1)
return np.concatenate([mav, rms, wl, zc, ssc, var])
X_feat = np.stack([td_features(x) for x in X]) # 逐窗特征
from sklearn.svm import SVC
clf = SVC(kernel="rbf", C=10, gamma="scale").fit(X_feat[tr], y[tr])
print("SVM 被试内精度:", clf.score(X_feat[te], y[te])) # DB1 上预期低于 70%
综述口径下,此类传统方法在 DB1(52 类)通常低于 70%,可作为深度管线的"下界校验"(综述)。
§6.4 PyTorch DataLoader
import torch
from torch.utils.data import Dataset, DataLoader
class NinaProWindows(Dataset):
"""读取 §6.3 产出的 npz 窗口库;支持跨文件多被试合并。"""
def __init__(self, npz_paths):
X, y, rep = [], [], []
for p in npz_paths:
d = np.load(p)
X.append(d["X"]); y.append(d["y"]); rep.append(d["rep"])
self.X = torch.from_numpy(np.concatenate(X)) # (M, 通道, 时间)
self.y = torch.from_numpy(np.concatenate(y)).long()
self.rep = np.concatenate(rep)
def __len__(self):
return len(self.y)
def __getitem__(self, i):
return self.X[i], self.y[i]
def split_by_repetition(ds, train_reps):
mask = np.isin(ds.rep, list(train_reps))
idx_tr, idx_te = np.flatnonzero(mask), np.flatnonzero(~mask)
return [idx_tr, idx_te]
ds = NinaProWindows(["db1_s1_e1_windows.npz", "db1_s2_e1_windows.npz"])
tr_idx, te_idx = split_by_repetition(ds, {1, 3, 4, 6, 7, 8, 9})
train_loader = DataLoader(torch.utils.data.Subset(ds, tr_idx),
batch_size=64, shuffle=True, num_workers=2)
test_loader = DataLoader(torch.utils.data.Subset(ds, te_idx),
batch_size=256, shuffle=False)
for Xb, yb in train_loader:
print(Xb.shape, yb.shape) # (64, 10, 20) -> CNN 输入 (通道=10, 时间=20 @100Hz/200ms)
break
§6.5 坑点
以下 8 个坑点均来自 NinaPro 官方说明、社区代码库与文献中的真实失败模式。
⚠️ 坑点 1:stimulus 与 restimulus 用错,切窗全歪(分类:标签理解)
问题:
stimulus是屏幕视觉提示的原始标签,含提示延迟与过渡段;restimulus是团队事后人工校正时长的金标准标签。误用 stimulus 做监督,会把"还没动/已经停了"的样本标成动作类。
症状:训练/验证精度正常,但把窗口画回时间轴时发现大量"动作窗"落在静息上;模型上线后输出迟滞、边界抖动。
解决:
- 简单方法:全局把标签源替换为
restimulus(与rerepetition配套),一行改动。- 进阶方法:切窗时同时校验段长——
restimulus段应接近 5 秒,明显偏短/偏长的段先剔除再训练:seg_len_ok = lambda seg: 0.6 * FS * 5 <= len(seg) <= 1.4 * FS * 5
- SOTA 方法:直接用 restimulus + 依 rerepetition 做试验级建模,并在论文中声明标签源与窗长,保证可复现(官方说明)。
参考:NinaPro DB2 官方字段说明(社区整理版)、标签体系解析(CSDN)
⚠️ 坑点 2:滑窗后随机划分,同一重复的窗口互相泄漏(分类:数据泄漏)
问题:预处理阶段把所有窗口堆进一个大数组后
random_split,同一动作重复内相邻(甚至重叠的)窗口会同时出现在训练与测试集,模型只需"记住"局部波形即可拿高分。
症状:精度高得离谱(如 52 类轻松 95%+),换成 LOSOCV 后断崖下跌几十个百分点。
解决:
⚠️ 坑点 3:被试内与跨被试精度混报(分类:评估误用)
问题:intrasubject(同一被试训练+测试)与 LOSOCV(留一被试)评估的是不同科学问题(“模型能否服务新会话” vs “能否服务新用户”),混在一张表里比较会误导选型。
症状:审稿人/主管质疑"为什么你的 88% 和别人的 84% 不可比";复现结果对不上。
解决:
- 简单方法:在所有结果表头显式标注评估口径(intrasubject / LOSOCV)与窗长。
- 进阶方法:同时报告两条基线(如 HVPN 的 88.4% 被试内 / 84.9% LOSOCV),给出被试间下降幅度作为泛化指标。
- SOTA 方法:补充按被试分层报告的宏平均与最差被试(worst-subject)精度,暴露对个别用户的失效(HVPN 2021)。
参考:HVPN, Comput Intell Neurosci 2021
⚠️ 坑点 4:标签 0、不连续编号与跨库映射错位(分类:标签理解)
问题:0 是静息不是手势;各子库动作编号不保证连续;不同论文对"标签总数"记法不一(官网 49/52 个动作 vs 部分论文 50–53 个含静息标签)。跨库合并或复现时直接按
num_classes = max(label)+1建分类头会引入幽灵类。
症状:混淆矩阵出现从未出现的行列;跨库预训练后 fine-tune 精度异常低;一维输出层与实际类数不符。
解决:
- 简单方法:加载后先
np.unique(restimulus),显式剔除 0 并以有序列表重建类索引映射。- 进阶方法:建立"子库 → 动作编号 → 语义名"的映射字典,作为配置文件随代码版本管理;跨库合并时只保留交集动作。
- SOTA 方法:以官网规格表动作数(DB1=52、DB2=49 等)为真值源,任何标签总数与官网不符时以官网为准并记录差异(官网)。
参考:官网规格表、Bioengineering 规格表对照
⚠️ 坑点 5:跨子库混合训练忽略采样率与电极布局差异(分类:预处理陷阱)
问题:DB1 约 100 Hz、DB2/DB3/DB7 2,000 Hz、DB5 200 Hz、DB10 1,926 Hz;通道数 10–16 且电极位置不同。直接把不同子库的窗口堆成一个张量,时间轴语义与通道语义都错位。
症状:混合训练不收敛或精度显著低于单库;同一个网络在 DB1 与 DB2 上最优窗长差一个数量级。
解决:
⚠️ 坑点 6:滤波与切窗的边界伪影污染训练数据(分类:预处理陷阱)
问题:对整条记录带通滤波后再切窗,窗边缘的滤波器暂态与 50 Hz 工频残余会在部分窗口中表现为"假放电";反之,先切窗再逐窗滤波则每窗引入两端暂态。
症状:训练集里少量窗口幅值异常大;loss 出现尖峰;可视化时窗口首尾出现上下冲。
解决:
- 简单方法:对整段记录用零相移滤波(
sosfiltfilt),切窗时避开段首尾各 50 ms。- 进阶方法:切窗后丢弃窗内幅值超过稳健阈值(如 MAD 的 8 倍)的窗口,并记录剔除比例。
- SOTA 方法:以窗为中心做镜像补边(reflect padding)后再滤波,或在谱域(STFT)建模以规避时域暂态(社区实践)。
参考:NinaPro 预处理实践(CSDN)
⚠️ 坑点 7:健康人模型直接上截肢者,域偏移被低估(分类:偏倚陷阱)
问题:健康人(DB1/DB2/DB4/DB5)的肌电形态与经桡骨截肢者(DB3/DB7/DB8/DB10)差异巨大——残肌布局、信号幅值、可用动作均不同;且截肢者库很小(DB3 仅 11 人)。
症状:DB2 上 82% 的模型迁移到 DB3 后精度掉到 65% 量级;个别截肢被试精度远低于均值。
解决:
⚠️ 坑点 8:.mat 文件读取与内存工程的隐性成本(分类:工程陷阱)
问题:单个 .mat 含数百万采样点,
scipy.io.loadmat全量载入多文件即可耗尽内存;若文件是 MATLAB v7.3(HDF5)格式,loadmat直接报错;force/forcecal只在 DB2 部分文件存在,统一遍历脚本会在缺变量处崩溃。
症状:MemoryError、KeyError: 'force'、“Unknown mat file type, version …”;多进程 DataLoader 内存翻倍。
解决:
- 简单方法:加载后立即只保留
emg/restimulus/rerepetition三个变量并转 float32 存 npz;读取前用whosmat探测变量清单。- 进阶方法:对 v7.3 文件改用
h5py/mat73;多被试训练用惰性读取(按试验段索引寻址),DataLoadernum_workers配合共享内存。- SOTA 方法:一次性把全库转换为分片 npz/parquet(按被试-练习分片 + 清单文件记录哈希),训练管线只读转换后的格式(官方变量结构)。
参考:NinaPro 预处理工程实践(CSDN)
§6.6 数据增强
| 增强 | 是否安全 | 说明 |
|---|---|---|
| 高斯噪声注入(按通道 SNR 定标) | ✅ | 模拟电极噪声,幅度不超过信号 MAD 的 5–10% |
| 时间轴随机裁剪/窗内平移 | ✅ | 等效于滑窗起点抖动,不改变标签语义 |
| 通道 Dropout(随机置零 1–2 个通道) | ✅ | 提升电极故障鲁棒性,模拟坏通道 |
| 幅度缩放(0.8–1.2 倍逐通道) | ✅ | 模拟个体间增益差异 |
| 时间反转 | ❌ | 破坏肌肉激活的生理时序(收缩-放松不可逆) |
| 跨被试窗口混洗 | ❌ | 等效于把测试被试的信息泄入训练(坑点 2 变体) |
| 随机频段抹除(SpecAugment 式) | ⚠️ | 可用但需避开 20–50 Hz 关键运动单元频段,并做消融验证 |
§6.7 模型推荐
| 模型 | 输入 | 适用子库 | 参考精度 | 适用阶段 |
|---|---|---|---|---|
| TD 特征 + LDA/SVM | 200 ms 窗的时域特征集 | DB1–DB5 | DB1 上通常低于 70%(综述) | 基线/嵌入式 |
| CNN(原始窗输入) | (通道, 时间) 原始窗 | DB1 | 52 类约 77.8%(社区 CNN 报告) | 深度学习入门 |
| CNN-RNN(Hu et al.) | 200 ms 原始窗 | DB1/DB2 | 87.0% / 82.2%(PLOS ONE DOI 10.1371/journal.pone.0206049) | 主力模型 |
| 多视图 CNN(HVPN) | 按电极布局分视图 | DB1–DB5 | 被试内 88.4%(DB1)/ LOSOCV 84.9%(Wiley) | 冲 SOTA |
| CFF-RCNN | 原始窗 | DB1/DB2/DB4 | 88.87% / 99.51% / 99.29%(PLOS ONE) | 冲 SOTA |
注意:CFF-RCNN 在 DB2/DB4 上的 99%+ 与其他文献口径差异极大,复现时先核对其实际使用的类别数与评估协议再下结论(PubMed)。
§6.8 硬件需求
| 任务规模 | 建议配置 | 说明 |
|---|---|---|
| 单被试单练习(SVM/特征法) | 普通 CPU(4 核)+ 8 GB 内存 | 特征提取为主,无 GPU 依赖 |
| 单库全被试 CNN(DB1) | 1×消费级 GPU(8–12 GB 显存)+ 32 GB 内存 | 窗口库约数十万窗 |
| 多库混合/LOSOCV 扫描 | 1×数据中心 GPU(24 GB+)+ 64 GB 内存 | 27–40 折交叉验证耗时主导 |
| DB10 多模态(含眼动对齐) | 24 GB+ GPU + 大容量 NVMe | 多文件对齐后体积显著增大 |
§6.9 评估指标代码
import numpy as np
from sklearn.metrics import accuracy_score, f1_score, confusion_matrix
def evaluate_protocol(y_true, y_pred, rep, mode="intrasubject"):
"""按社区口径评估:intrasubject 直接算;LOSOCV 需按被试分组后宏平均。
返回:总体精度、宏 F1、(mode=worst 时)最差重复精度。"""
acc = accuracy_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred, average="macro")
out = {"accuracy": acc, "macro_f1": f1}
if mode == "worst":
per_rep = {r: accuracy_score(np.asarray(y_true)[np.asarray(rep) == r],
np.asarray(y_pred)[np.asarray(rep) == r])
for r in np.unique(rep)}
out["worst_rep_acc"] = min(per_rep.values())
return out
def losocv_scores(y_true, y_pred, subject_ids):
"""跨被试:逐被试精度后取宏平均(等权),避免大被试淹没小被试。"""
per_subj = [accuracy_score(np.asarray(y_true)[np.asarray(subject_ids) == s],
np.asarray(y_pred)[np.asarray(subject_ids) == s])
for s in np.unique(subject_ids)]
return float(np.mean(per_subj)), float(np.min(per_subj))
cm = confusion_matrix(y_true, y_pred, normalize="true") # 归一化混淆矩阵查易混动作对
§6.10 MLOps 笔记
- 数据版本化:以"子库 + 受试者清单 + 划分配置(重复集合)"三元组为版本键;窗口库 npz 记录源文件 md5,保证"数据指纹 → 实验结果"可追溯。
- 标签映射入配置:把"子库 → 动作编号 → 语义名"的映射作为代码仓库内的注册表文件,任何跨库实验先过映射审查(坑点 4 的工程化)。
- 评估口径入实验名:实验命名强制包含
{db}-{protocol}-{win}(如db1-losocv-200ms),杜绝口径混淆(坑点 3 的工程化)。 - 训练-测试隔离断言:在训练脚本启动时断言
set(train_reps) & set(test_reps) == set(),以及跨被试模式下被试集合不相交。 - 许可元数据随工件分发:导出的衍生数据/模型卡中附带所用子库、论文引用条目与许可链接(DB4 为 CC BY-ND,注意传染到衍生分布的限制)。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 人群偏倚 | 健康人数量远多于截肢者(DB3 仅 11 人),截肢者仅出现在 4/10 个子库 | 高 | 分层评估;健康人预训练+截肢者微调(官网) |
| 侧别偏倚 | 采集以右手为主(协议要求右手重复动作) | 中 | 声明侧别;左手应用需自行验证(OpenAIRE DB4) |
| 情境偏倚 | 实验室环境模仿屏幕影片,非日常生活连续佩戴 | 中 | 补充真实场景数据;DB6 会话设计部分缓解(Atzori et al. 2014) |
| 设备偏倚 | 跨子库设备/采样率不同,跨库结论易被设备差异混淆 | 中 | 同设备家族内比较;显式建模设备域 |
| 静息类不平衡 | 标签 0 样本量天然偏大(每 5 秒动作配 3 秒静息) | 低 | 非静息任务先剔除 0 类;类加权 |
§7.2 标注质量
- 双轨标签:restimulus 经人工时长校正,是分类金标准;但其精度依赖人工校正质量,官方未发布标注者间一致性系数(官方说明)。
- 可验证性:每个试验段时长应接近 5 秒(协议规定),段长异常可作为标签质控信号自行检测。
- 跨库记法差异:动作总数存在 49–53 的记法差异,属"口径"而非"错误",但必须在实验文档中固定口径(官网)。
- 重标注方法论:restimulus 的校正流程(relabelling procedure)在 DB2 配套论文(Gijsberts et al. 2014)中有系统描述,引用标签时建议一并引用该方法论来源,便于读者理解 stimulus 与 restimulus 的差异从何而来。
- 静息段语义:0 类既覆盖"指令间的 3 秒休息",也覆盖练习切换间隙,两段生理状态不同;精细研究可按段长区分处理。
§7.3 泛化性
| 目标场景 | 失效风险 | 证据 |
|---|---|---|
| 新被试(跨用户部署) | 中-高:LOSOCV 比被试内低 3–6 个百分点 | DB1:88.4% → 84.9%(HVPN 2021) |
| 健康人 → 截肢者 | 高:跨人群域偏移显著 | DB2 82.0% vs DB3 65.6%(LOSOCV,同协议)(HVPN 2021) |
| 跨会话/跨天 | 中:会话间漂移导致精度下降 | DB6 专为该问题设计,5 天×2 次(Palermo et al. 2017) |
| 跨设备 | 高:100–2,000 Hz、不同电极布局 | 各库设备规格差异(Bioengineering 规格表) |
| 跨任务范式 | 中:分类模型不能直接用于 DB8 的连续回归 | 任务定义不同(官网) |
§7.4 伦理
- 所有受试者签署知情同意后参与采集;数据以匿名编号(S1–S77)发布,不含姓名、面部影像或直接标识符(Atzori et al. 2014)。
- DB10 涉及截肢者的行为、临床与神经认知评估,其分析见 Saetta et al. 2020(15 名截肢者与 29 名对照);使用临床模块时应遵守其 Dataverse 页面的使用条款(DB10 说明页)。
- 项目受瑞士 SNSF Sinergia #132700、#160837 资助,作者声明无竞争性经济利益(PubMed)。
- 二次分发约束:官方官网仅提供说明与下载入口,第三方再分发原始数据受托管平台许可约束(已有衍生上传明确注明"原始数据不允许再分发、仅供学术用途",Zenodo 10.5281/zenodo.15801272);在你自己的平台上发布衍生数据前,先核对对应子库的许可条款。
§7.5 公平性
- 截肢者样本占比低(264 人次中约 30 人次),模型在该人群上的精度方差更大;发布前应在最差被试层面报告性能(官网)。
- 数据来自瑞士/意大利志愿者,肤色、年龄、职业结构未做全球代表性设计;跨地域部署需外部验证。
- 右手为主的协议对左利手用户构成潜在不公平;文献中未见系统性左利手子集。
- 截肢者子库内部个体差异(残端长度、残肌可用电极位)大于健康人库;对截肢者小类人群的报告应附逐被试精度而非仅均值。
§7.6 数据漂移
- 设备代际漂移:DB2(Trigno)与 DB4(Cometa)虽同为 12 通道 2,000 Hz,但电极物理特性不同,跨库精度下降部分来自设备而非人群。
- 会话漂移:DB6 的 5 天设计直接量化了会话间漂移,是天然的"漂移基准"(Palermo et al. 2017)。
- 时间外推:系列最后一批数据为 DB10(2020 年发布),此后无新增;用 NinaPro 训练的模型面向新硬件部署时,应以 2020 年后采集的自有数据做增量验证。
- 个体内生理漂移:皮肤阻抗、出汗、电极压紧程度在单场次内也会缓变;DB6 的日间重复显示该类漂移足以影响分类稳定性,建议部署系统保留在线校准环节。
§7.7 DAIMS 数据集评估清单
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 每个 .mat 为自包含宽表,变量逐采样点对齐 |
| 2 | 唯一标识 | ✅ | 文件名 S/A/E 三元组 + 被试编号全局唯一 |
| 3 | 特殊字符 | ✅ | 变量名为 ASCII;文件名仅字母数字下划线 |
| 4 | 重复行 | ✅ | 无跨文件重复记录;重复编号为设计维度 |
| 5 | 缺失编码 | ✅ | 信号无缺失;模态级缺省(force)有明确协议语义 |
| 6 | 标签标识 | ⚠️ | stimulus/restimulus 双标签并存,需正确选择;跨库编号不连续 |
| 7 | 罕见类分组 | ✅ | 小类目(如单类动作)有重复编号可分组评估 |
| 8 | 偏倚评估 | ✅ | 人群/侧别/情境偏倚在官网论文与 §7.1 明确 |
| 9 | 数据字典 | ✅ | 官网各子库说明页逐变量定义 |
| 10 | 信息性缺失解释 | ✅ | 模态缺省(force/眼动)源自协议设计,非数据损坏 |
| 11 | 设备记录 | ✅ | 设备型号、通道布局、采样率均有官方文档 |
| 12 | 共线性 | ✅ | acc/glove 与 emg 生理相关但用途互补,无冗余列级共线 |
| 13 | 编码映射 | ⚠️ | 跨子库动作编号体系不同,官方未提供统一映射表 |
| 14 | 时间戳处理 | ✅ | 无墙钟时间戳依赖;以采样点索引为时间轴 |
| 15 | 划分建议 | ⚠️ | 官方无划分文件,社区重复划分惯例需自行实现 |
| 16 | 泄漏讨论 | ✅ | 重复划分协议在社区文献中充分讨论 |
| 17 | 标签分布 | ✅ | 活跃/静息比例与动作构成可从协议直接推算 |
| 18 | 测量偏倚 | ✅ | 设备差异与电极位移在论文 limitations 讨论 |
| 19 | 外部验证建议 | ✅ | 跨库/跨人群验证路径明确(§5.5/§7.8) |
| 20 | 版本记录 | ✅ | 各子库随论文首发,发布年份清晰可查 |
| 21 | 预处理脚本 | ⚠️ | 官方未提供 Python 预处理脚本,需社区/自行实现 |
| 22 | 合规要求 | ✅ | 开放下载,唯一义务为引用对应论文 |
| 23 | 多模态对齐 | ✅ | 各模态逐采样点对齐于同一时间轴 |
| 24 | 去标识化 | ✅ | 匿名编号发布,无直接标识符与面部影像 |
DAIMS 评分:22.5 / 24
评分解读:NinaPro 在"结构自包含、协议透明、设备文档、去标识化"等 22 项上达到或超出同类开放数据集水准——这得益于十篇配套开放论文构成的超强文档层。三个 ⚠️ 全部落在"工程衔接"而非"数据质量":双标签体系要求使用者具备领域理解(坑点 1),跨库编号无官方映射(坑点 4),且官方不发放划分与预处理脚本(坑点 2/5 的根源)。
对你意味着什么:如果你只跑单库(尤其 DB1/DB2),NinaPro 接近"下载即用"——按 §6.3 的 30 行预处理即可开始训练,质量风险集中在标签源选择与划分协议两处,照抄 §5.2/§6.5 即可规避。如果你要做跨库/跨人群研究,三个 ⚠️ 都会变成实际工程量:先建标签映射注册表、统一重采样、再写 LOSOCV 脚手架;这些一次性投入之后,NinaPro 是肌电领域复现成本最低的高质量基准。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| DB3 截肢者(同协议 LOSOCV) | NinaPro 团队 | 49 类动作分类 | 65.6%(HVPN 2021) | 较 DB2 的 82.0% 下降 16.4 个百分点 | 截肢者跨人群泛化是最主要失效面 |
| DB4 Cometa 设备(同协议 LOSOCV) | NinaPro 团队 | 52 类动作分类 | 70.2%(HVPN 2021) | 较 DB1 的 84.9% 下降 14.7 个百分点 | 设备与人群双重差异叠加 |
| DB5 Myo 臂环(同协议 LOSOCV) | NinaPro 团队 | 52 类动作分类 | 88.9%(HVPN 2021) | 与 DB1 的 84.9% 同量级 | 消费级干电极在 200 Hz 下仍可支撑分类 |
§8 基准性能与生态
§8.1 排行榜
以下为文献报告的 NinaPro 代表性成绩。这些数字不可直接比较:窗长(100–200 ms)、评估口径(被试内/LOSOCV)、类别数(部分论文剔除静息或合并类)与输入表示(原始波形/时域特征)各不相同。
| 排名 | 模型 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | CFF-RCNN | DB1 88.87%(52 类) | 2022 | 级联特征融合 + 循环卷积网络 | Wei et al., 2022, PLOS ONE. DOI 10.1371/journal.pone.0262810 | 未公开 |
| 2 | HVPN | DB1 被试内 88.4% / LOSOCV 84.9%(200 ms) | 2021 | 按电极布局分层视图池化 | Wei et al., 2021, Computational Intelligence and Neuroscience. DOI 10.1155/2021/6591035 | 未公开 |
| 3 | CNN-RNN | DB1 87.0% / DB2 82.2%(200 ms) | 2018 | CNN 空间特征 + RNN 时序建模 | Hu et al., 2018, PLOS ONE. DOI 10.1371/journal.pone.0206049 | 未公开 |
| 4 | 多流 CNN | DB1 85.0%(52 类) | 2025 | 按电极布局分块学习后融合 | 转引自 MDFF-LVNet 论文相关工作部分, Biomedical Signal Processing and Control. PII S174680942501941X | 未公开 |
注:CFF-RCNN 同文报告的 DB2 99.51% / DB4 99.29% 与社区其他工作口径差异极大,列入前请核对其类别数与划分设定(PubMed)。传统 SVM 在 DB1(52 类)通常低于 70%,脉冲神经网络(SNN)曾报告 74% 并以超低功耗为卖点(均转引自综述)。
§8.2 SOTA 总结与选型建议
- 快速复现:从 CNN-RNN(Hu et al. 2018)开始——结构简单、数字居中(87.0%)、论文细节完整,是校验自家管线的最佳标尺。
- 追求精度:HVPN 与 CFF-RCNN 代表当前被试内口径的高水位(88–89%);它们共同的工程要点是"尊重电极空间布局"(视图划分/分块卷积)。
- 面向部署:以 LOSOCV 数字为决策依据(84.9% 量级),并接受跨被试损失;嵌入式场景考虑 TD 特征 + 线性分类器或 SNN。
- 面向截肢者应用:不引用健康人库数字做宣传口径;以 DB3/DB10 的截肢者评估为准,并接受 65–70% 量级的现实(HVPN 2021)。
- 口径纪律:任何报告必须同时写明子库、窗长、评估口径、是否含静息类——NinaPro 上超过一半的"精度之争"源于口径不一致。
§8.3 评测协议
社区标准协议要点(HVPN 表 1、Bioengineering 规格表):
- 标签源:restimulus;剔除静息类(0)或单独报告含静息结果。
- 切窗:200 ms 窗、100–150 ms 步长(被试内);部分工作用 150 ms 窗。
- 被试内划分:DB1 用重复 {1,3,4,6,7,8,9} 训练、{2,5,10} 测试;DB2–DB5/DB7 用 {1,3,4,6} 训练、{2,5} 测试。
- 跨被试:LOSOCV 宏平均。
- 指标:逐窗精度为主,辅以宏 F1;假肢场景补充实时性与延迟报告。
§8.4 相关数据集
| 数据集 | 关系 | 适用场景 |
|---|---|---|
| CapgMyo(DB-a 等) | 高密度 sEMG 手势库(8 类) | 空间分辨率研究(综述) |
| csl-hDEMG | 27 类手指高密度 sEMG | 手指级细粒度解码(综述) |
| BioPatRec | 26 类动作 + 开源采集软件 | 端到端原型开发(综述) |
| NinaPro DB6 | 系列内重复性子库 | 会话漂移与域适应(Palermo et al. 2017) |
| NinaPro DB8 | 系列内手指回归子库 | 比例控制/连续解码研究(官网) |
| NinaPro DB10 | 系列内多模态子库 | 眼手协调与临床关联研究(DB10 说明页) |
§8.5 关键论文 Top 9
- Atzori M, Gijsberts A, Castellini C, Caputo B, Mittaz Hager A-G, Elsig S, Giatsidis G, Bassetto F, Müller H. Electromyography data for non-invasive naturally-controlled robotic hand prostheses. Scientific Data 1:140053, 2014. DOI 10.1038/sdata.2014.53 —— 系列顶层论文,定义 DB1–DB3 与采集协议。
- Gijsberts A, Atzori M, Castellini C, Müller H, Caputo B. Moving toward real-time solutions for hand movement classification. PLOS ONE, 2014. DOI 10.1371/journal.pone.0105954 —— DB2 配套论文,确立 restimulus 重标注流程与实时分类基线。
- Pizzolato S, Tagliapietra L, Cognolato M, Reggiani M, Müller H, Atzori M. Comparison of six electromyography acquisition setups on hand movement classification tasks. PLOS ONE, 2017. DOI 10.1371/journal.pone.0168132 —— DB3/DB4 配套论文,六种设备横向对比。
- Palermo F, Cognolato M, Gijsberts A, Müller H, Caputo B, Atzori M. Repeatability of grasp recognition for robotic hand prosthesis control based on sEMG data. IEEE ICORR, pp. 1154–1159, 2017 —— DB6 配套论文,量化抓握识别跨会话重复性。
- Krasoulis A, Kyranou I, Erden MS, Nazarpour K, Vijayakumar S. Improved prosthetic hand control with concurrent use of myoelectric and inertial measurements. J NeuroEngineering and Rehabilitation, 2017 —— DB7 配套论文,肌电+惯性融合控制。
- Krasoulis A, Vijayakumar S, Nazarpour K. Effect of user practice on prosthetic finger control with an intuitive myoelectric decoder. Frontiers in Neuroscience, 2019 —— DB8 配套论文,手指回归与用户学习效应。
- Jarque-Bou NJ. A large calibrated database of hand movements and grasps kinematics. Scientific Data, 2020 —— DB9 配套论文,大规模校准运动学。
- Cognolato M, Gijsberts A, Gregori V, Saetta G, et al. Gaze, visual, myoelectric, and inertial data of grasps for intelligent prosthetics. Scientific Data 7:43, 2020. DOI 10.1038/s41597-020-0381-7 —— DB10(MeganePro)多模态主论文。
- Saetta G, Cognolato M, Atzori M, et al. Gaze, behavioral, and clinical data for phantom limbs after hand amputation from 15 amputees and 29 controls. Scientific Data 7:60, 2020 —— DB10 临床与行为模块论文。
(论文 1–9 均为开放获取;来源:官网 Publications、DB10 说明页、awesome-emg-data 清单)
§8.6 社区活跃度
- 学术侧:2018–2025 年持续有新架构在 DB1/DB2/DB5 上发表,综述(2025)仍以 NinaPro 为主要评测场(ScienceDirect 综述)。
- 工程侧:GitHub 上存在大量以 NinaPro 为基准的教学与复现仓库(如 DB2 端到端管线)与数据集索引(awesome-emg-data)。
- 中文社区:CSDN 等平台有系统性的预处理避坑文章,覆盖 stimulus/restimulus、滤波与标签映射(示例)。
- 官方维护:官网持续可用并集中发布说明页与论文链接;系列自 2020 年后无新增子库(截至 2026-09)。
- 托管平台侧:DB1/DB2(Dryad)、DB3–DB8(Zenodo)、DB10(Harvard Dataverse)均为成熟长期托管服务,链接失效风险低;Zenodo 记录自带 DOI 版本锚点,适合作为论文引用目标。
§8.7 生态快照
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| NinaPro 官网 | 官方入口 | https://ninapro.hevs.ch/ | 十个子库规格表与论文导航的唯一权威来源 |
| 各子库说明页 | 官方文档 | https://ninapro.hevs.ch/instructions/ | 逐变量定义、采集协议与引用要求 |
| Dryad DB1/DB2 | 数据托管 | https://datadryad.org/resource/doi:10.5061/dryad.1k84r | 最经典两库的直接下载 |
| Zenodo DB4 | 数据托管 | https://zenodo.org/records/1000138 | CC BY-ND 许可明示 |
| Harvard Dataverse(DB10) | 数据托管 | https://ninapro.hevs.ch/instructions/DB10.html | MDS1/MDS2/MDS4/MDSInfo 四个数据集入口 |
| awesome-emg-data | 社区索引 | https://github.com/x-labs-xyz/awesome-emg-data | EMG 数据集-论文对照清单 |
| DB2 端到端示例仓库 | 社区代码 | https://github.com/sumachinta/emg-gesture-classification-ninapro | 变量结构与管线参考实现 |
§9 相关资源与引用
§9.1 官方资源
- 官网与规格表:ninapro.hevs.ch —— 十个子库的一站式入口。
- 子库说明页:ninapro.hevs.ch/instructions/ —— 逐库变量定义、采集协议、许可与引用要求(如 DB10)。
- 顶层论文:Atzori et al. 2014, Scientific Data(PubMed 全文) —— CC BY 4.0 开放获取。
- 资助项目页:SNSF Sinergia #132700 NinaPro(Idiap 项目页)/ #160837 MeganePro(见官网页脚)。
- 官网扩展栏目:官网导航中的 Publications(论文汇编)、Code(相关代码入口)与 ProHand 栏目可作为追踪团队后续工作的起点。
§9.2 社区资源
- awesome-emg-data(GitHub):EMG 数据集与论文对照索引,NinaPro 各库论文映射完整。
- DB2 端到端管线仓库(GitHub):.mat 变量结构与经典+深度双管线参考实现。
- NinaPro 预处理避坑文章(CSDN):中文社区的标签与滤波实战笔记。
§9.3 BibTeX 完整引用
@article{atzori2014electromyography,
author = {Atzori, Manfredo and Gijsberts, Arjan and Castellini, Claudio and Caputo, Barbara and Mittaz Hager, Anne-Gabrielle and Elsig, Simone and Giatsidis, Giorgio and Bassetto, Franco and M{\"u}ller, Henning},
title = {Electromyography data for non-invasive naturally-controlled robotic hand prostheses},
journal = {Scientific Data},
volume = {1},
pages = {140053},
year = {2014},
doi = {10.1038/sdata.2014.53}
}
@article{gijsberts2014moving,
author = {Gijsberts, Arjan and Atzori, Manfredo and Castellini, Claudio and M{\"u}ller, Henning and Caputo, Barbara},
title = {Moving toward real-time solutions for hand movement classification},
journal = {PLOS ONE},
year = {2014},
doi = {10.1371/journal.pone.0105954}
}
@article{pizzolato2017comparison,
author = {Pizzolato, Stefano and Tagliapietra, Luca and Cognolato, Matteo and Reggiani, Monica and M{\"u}ller, Henning and Atzori, Manfredo},
title = {Comparison of six electromyography acquisition setups on hand movement classification tasks},
journal = {PLOS ONE},
year = {2017},
doi = {10.1371/journal.pone.0168132}
}
@inproceedings{palermo2017repeatability,
author = {Palermo, Francesca and Cognolato, Matteo and Gijsberts, Arjan and M{\"u}ller, Henning and Caputo, Barbara and Atzori, Manfredo},
title = {Repeatability of grasp recognition for robotic hand prosthesis control based on sEMG data},
booktitle = {IEEE International Conference on Rehabilitation Robotics (ICORR)},
pages = {1154--1159},
year = {2017}
}
@article{krasoulis2017improved,
author = {Krasoulis, Agamemnon and Kyranou, Ioannis and Erden, Mustafa Suphi and Nazarpour, Kianoush and Vijayakumar, Sethu},
title = {Improved prosthetic hand control with concurrent use of myoelectric and inertial measurements},
journal = {Journal of NeuroEngineering and Rehabilitation},
year = {2017}
}
@article{krasoulis2019effect,
author = {Krasoulis, Agamemnon and Vijayakumar, Sethu and Nazarpour, Kianoush},
title = {Effect of user practice on prosthetic finger control with an intuitive myoelectric decoder},
journal = {Frontiers in Neuroscience},
year = {2019}
}
@article{jarquebou2020large,
author = {Jarque-Bou, N{\'e}stor J.},
title = {A large calibrated database of hand movements and grasps kinematics},
journal = {Scientific Data},
year = {2020}
}
@article{cognolato2020gaze,
author = {Cognolato, Matteo and Gijsberts, Arjan and Gregori, Valentina and Saetta, Gianluca and Giacomino, Katia and Mittaz Hager, Anne-Gabrielle and Gigli, Andrea and Faccio, Diego and Tiengo, Cesare and Bassetto, Franco and Caputo, Barbara and Brugger, Peter and Atzori, Manfredo and M{\"u}ller, Henning},
title = {Gaze, visual, myoelectric, and inertial data of grasps for intelligent prosthetics},
journal = {Scientific Data},
volume = {7},
pages = {43},
year = {2020}
}
@article{saetta2020gaze,
author = {Saetta, Gianluca and Cognolato, Matteo and Atzori, Manfredo and Faccio, Diego and Giacomino, Katia and Mittaz Hager, Anne-Gabrielle and Tiengo, Cesare and Bassetto, Franco and M{\"u}ller, Henning and Brugger, Peter},
title = {Gaze, behavioral, and clinical data for phantom limbs after hand amputation from 15 amputees and 29 controls},
journal = {Scientific Data},
volume = {7},
pages = {60},
year = {2020}
}
§9.4 引用指南
- 使用任一子库,引用该子库配套论文(§8.5 对应关系);使用系列整体或官网规格,引用 Atzori et al. 2014。
- 使用 DB10 时需同时引用 Cognolato et al. 2020 与 Saetta et al. 2020(官网明确要求)。
- 涉及 restimulus 重标注方法的讨论,引用 Gijsberts et al. 2014。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 模型 | 版本 | 用途 |
|---|---|---|
| 大语言模型(事实检索与撰写辅助) | 2026-09 可用版本 | 检索核实、条目撰写、代码草拟 |
| 代码生成模型 | 2026-09 可用版本 | §6 预处理与 DataLoader 代码草拟 |
§10.2 AI 参与范围
本条目由 AI 辅助完成检索、综合与撰写;全部规模数字、协议细节、编码映射与基准数字均要求可溯源至 §10.3 所列来源,禁止无出处数字。结构、口径与坑点框架由千方病案医数集写作宪法规定。
§10.3 输入来源列表
- Atzori M, et al. Electromyography data for non-invasive naturally-controlled robotic hand prostheses. Scientific Data 1:140053, 2014. DOI 10.1038/sdata.2014.53(https://pubmed.gov/25977804/)
- NinaPro 官网与十子库规格表(https://ninapro.hevs.ch/)
- DB10 MeganePro 官方说明页(https://ninapro.hevs.ch/instructions/DB10.html)
- Gijsberts A, et al. Moving toward real-time solutions for hand movement classification. PLOS ONE, 2014. DOI 10.1371/journal.pone.0105954
- Pizzolato S, et al. Comparison of six electromyography acquisition setups. PLOS ONE, 2017. DOI 10.1371/journal.pone.0168132(OpenAIRE 记录 https://explore.openaire.eu/search/result?pid=10.5281/zenodo.1000138)
- Palermo F, et al. Repeatability of grasp recognition… IEEE ICORR, 2017(https://francescapalermo.github.io/dataset/ninaprodb6)
- Krasoulis A, et al. Improved prosthetic hand control… J NeuroEng Rehabil, 2017;Effect of user practice… Frontiers in Neuroscience, 2019(awesome-emg-data 映射)
- Jarque-Bou NJ. A large calibrated database of hand movements and grasps kinematics. Scientific Data, 2020
- Cognolato M, et al. Gaze, visual, myoelectric, and inertial data of grasps… Scientific Data 7:43, 2020;Saetta G, et al. … Scientific Data 7:60, 2020
- Hu et al., 2018, PLOS ONE. DOI 10.1371/journal.pone.0206049(CNN-RNN 基准)
- Wei et al., 2021, Computational Intelligence and Neuroscience. DOI 10.1155/2021/6591035(HVPN 基准与划分协议表)
- Wei et al., 2022, PLOS ONE. DOI 10.1371/journal.pone.0262810(CFF-RCNN 基准)
- MDFF-LVNet 综述性工作, Biomedical Signal Processing and Control, PII S174680942501941X(SOTA 汇总与同类数据集对比)
- Bioengineering 10(9):1101 规格表(PMC10525369,各库采样率与划分设定)
- Dryad 记录 doi:10.5061/dryad.1k84r(DB1/DB2 托管)
- Zenodo 记录 10.5281/zenodo.1000138(DB4,CC BY-ND)、10.5281/zenodo.15801272(DB1 衍生子集,1.2 GB)
- ICD-11 QF00(https://www.icd11-code.com/qf00)与 ICD-10-CM Z89.2/Z89.209(https://autoicdapi.com/icd10/Z89.209)
- SNOMED CT 概念 449669007 / 161621004 / 710110008 / 711058008 / 81723002(BioPortal SNOMEDCT)
- ICD-11 MMS Phantom limb syndrome with pain 实体描述(BioPortal CIM-11)
- 社区仓库与文章:github.com/sumachinta/emg-gesture-classification-ninapro;github.com/x-labs-xyz/awesome-emg-data;CSDN 预处理避坑文章
§10.4 人工校验
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §1 概览与子库规格表 | 千方病案医学编辑部 | 逐行对照官网规格表与 FACTS 核验 | ✅ 已通过/已验证 |
| §2 医学背景与编码映射 | 千方病案医学编辑部 | ICD-11/SNOMED 编码逐一检索核实 | ✅ 已通过/已验证 |
| §3–§5 规格与划分协议 | 数据工程师 | 对照官方说明页与 HVPN 协议表 | ✅ 已通过/已验证 |
| §6 代码与 8 坑点 | 数据工程师 | 代码逻辑走查;坑点溯源官方文档与社区实录 | ✅ 已通过/已验证 |
| §7–§8 质量评估与排行榜 | 数据工程师 | 基准数字逐一回溯 DOI | ✅ 已通过/已验证 |
| §9–§10 引用与声明卡 | 千方病案医学编辑部 | BibTeX 与来源列表核对 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
全部章节(§0–§10、INFOBOX、frontmatter、§C JSON-LD)由 AI 辅助生成,经 §10.4 所列人工逐模块核验后发布。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- eegmmidb — 共享标签:生理信号 / 神经科学 / 步态与运动 / 脑机接口
- ua-speech — 共享标签:生理信号 / 神经科学 / 步态与运动
- bci-competition-iv-2a — 共享标签:生理信号 / 神经科学 / 脑机接口
- ppg-dalia — 共享标签:生理信号 / 步态与运动
- torgo — 共享标签:生理信号 / 步态与运动
- pc-gita — 共享标签:生理信号 / 神经科学
- OpenNeuro — 共享标签:生理信号 / 神经科学
- pamap2 — 共享标签:生理信号 / 步态与运动
- mhealth — 共享标签:生理信号 / 步态与运动
- TUH EEG-Corpus — 共享标签:生理信号 / 神经科学
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

