信息速览
PhysioNet/CinC Challenge 2014(多模态心拍稳健检测)— 危重监护多参数信号心拍定位基准 AI-Ready Wikipedia
本条目是千方病案医数集 AI-Ready Wikipedia 的 PhysioNet/计算心脏病学(Computing in Cardiology, CinC)挑战系列条目之一,收录 2014 年(第 15 届)挑战数据集。系列条目按年份横向衔接:cinc-2012(MIMIC-II 死亡预测)→ cinc-2013(胎儿 ECG 提取)→ cinc-2014(本条目,多模态心拍定位) → cinc-2015(ICU 报警抑制)→ physionet-cinc-2016(心音分类)→ PhysioNet-CinC-2017(单导联心律失常分类)→ cinc-2018-sleep / cinc-2019 / cinc-2021 / cinc-2023。波形数据谱系与 mimic3wdb、mimic4wdb 互通。
编写体例:全文以中文为主,专业术语首次出现时标注英文原名;所有数字类陈述均可回溯至 §0 声明的一手来源或 §10.3 输入清单;官方来源间的口径差异以"双口径存照"并列呈现(汇总见 §7 与坑点各条)。
INFOBOX
| 属性 | 内容 |
|---|---|
| 条目 slug | cinc-2014 |
| 官方全称 | Robust Detection of Heart Beats in Multimodal Data: The PhysioNet/Computing in Cardiology Challenge 2014 |
| 中文名 | 2014 年 PhysioNet/计算心脏病学挑战——多模态数据中的心拍稳健检测 |
| 届次 | 第 15 届年度 PhysioNet/CinC Challenge |
| 发布机构 | MIT Laboratory for Computational Physiology(组织者 George Moody、Benjamin Moody、Ikaro Silva) |
| 发布日期 | 2014-01-07(v1.0.0) |
| 任务类型 | 心拍定位(heart beat localization,逐拍时间点检测,非分类任务) |
| 数据规模 | 公开训练集 100 条(151,032 个标注心拍)+ 隐藏测试集 300 条(152,478 心拍) |
| 信号构成 | 每条 4-8 通道;第一路恒为 ECG,其余为 ABP/PPG/RESP/EEG/EMG 等 |
| 时长与采样率 | 每条标称 10 分钟;训练集统一 250 Hz,测试集 120-1000 Hz |
| 参赛规模 | 60 支队伍 / 1,332 份提交 |
| 最高分 | 93.64(Urska Pangerc,2015 年修订测试集口径) |
| License | ODC-BY 1.0(Open Access,无需注册) |
| 数据地址 | physionet.org/content/challenge-2014/1.0.0/(镜像:archive.physionet.org/challenge/2014) |
| 官方论文 | Moody G, Moody B, Silva I. Computing in Cardiology 2014;41:549-552 |
| 总结综述 | Silva I, et al. Physiol Meas. 2015;36(8):1629(PMID 26217894 / PMCID PMC4668947) |
| 互链条目 | cinc-2012 / cinc-2013 / cinc-2015 / physionet-cinc-2016 / PhysioNet-CinC-2017 / cinc-2018-sleep / cinc-2019 / cinc-2021 / cinc-2023 / mimic3wdb / mimic4wdb |
快速导航:§1 概览 · §2 医学背景 · §3 规格 · §4 数据结构 · §5 划分 · §6 AI 指南 · §7 质量评估 · §8 基准生态 · §9 引用 · §10 AI 声明卡
§0 E-E-A-T 可信度声明
本条目全部事实性陈述来自以下一手来源(抓取时点 2026-09-26/27):
- PhysioNet 官方挑战页(physionet.org/challenge/2014/,与 content/challenge-2014/1.0.0/ 同页):任务定义、数据描述、规则时间线、评分公式、FAQ 全文,逐段实抓。
- 官方挑战论文 PDF(moody-challenge.physionet.org/2014/papers/0549.pdf):参赛规模"1,332 entries from 60 teams"等论文口径数字。
- PubMed/PMC 收录的总结综述(Silva I, et al. Physiol Meas. 2015;36(8):1629;PMID 26217894 / PMCID PMC4668947):训练库 151,032 标注心拍、隐藏测试集 152,478 心拍、评分标准与 top3 分数。
- archive.physionet.org 旧站存档:挑战期间逐日公告时间线与文件实测(training.zip 118,129,353 字节,HTTP 200 实测)。
数据库查重(2026-09-26):url_name ILIKE '%cinc-2014%' 在 ai_ready_dataset(status=1)中为 0 行,本条目为 CinC 年份链(2012/2013/2015/2016/2017/2018/2019/2021/2023 之后)的最后一格补齐。任务简报中"Robust Detection of Heart Rate and Rhythm from Multichannel Electrocardiograms"的表述与官方标题不符,本条目一律以实抓官方标题为准(详见坑点 1)。
§1 数据集概览
§1.0 📌 30 秒速览
一句话:给你一段 10 分钟的床旁监护多通道信号,第一路 ECG 可能满是噪声、起搏器伪迹甚至整段缺失——请把每一个心拍的位置都找出来,允许借助血压、脉搏波、呼吸甚至脑电里的一切线索。
任务:心拍定位(逐拍输出时间点,容差 ±150 ms) 规模:100 条公开 + 300 条隐藏 标注:151,032 个专家共识心拍(公开部分)
评分:敏感度 Se 与阳性预测值 +P 的 gross/average 四指标等权平均 许可:ODC-BY 1.0 全量开放
适合:多模态生理信号融合、ECG 信号质量评估、监护仪算法鲁棒性研究 不适合:心律失常分类(标注无类型)、可穿戴场景(数据全部来自床旁监护)
§1.1 摘要
PhysioNet/CinC Challenge 2014(第 15 届年度挑战)由 MIT 实验计算生理学实验室(MIT Laboratory for Computational Physiology)的 George Moody、Benjamin Moody 与 Ikaro Silva 组织,2014 年 1 月 7 日开赛,主题为多模态数据中的心拍稳健检测(Robust Detection of Heart Beats in Multimodal Data)。
数据为成人床旁监护长程记录的 10 分钟片段(记录,record):每条含 4-8 个同步信号,第一路恒为 ECG(electrocardiogram,心电图),其余信号类型不固定——最常见的是桡动脉血压 ABP(arterial blood pressure)、指尖光电容积脉搏波 PPG(photoplethysmogram,也称 PLETH)、阻抗呼吸信号 RESP,还可能出现脑电 EEG、肌电 EMG、中心静脉压 CVP、肺动脉压 PAP 等通道。官方刻意保留了大量 ECG 劣化片段:噪声淹没、起搏器伪迹、甚至整段缺失,此时参赛算法必须从其他通道中挖掘心搏线索——脉搏波上的每个搏动、呼吸与心率的耦合关系、乃至 EEG 中的心源性伪迹。
公开训练集 100 条(编号 100-199)随参考心拍标注(reference beat annotations)一同发布,据总结综述统计共 151,032 个标注心拍;隐藏测试集 300 条(152,478 心拍)从未公开,分三阶段逐步扩容用于评分。评分采用 ±150 ms 匹配窗口下的敏感度(Se)与阳性预测值(+P)各按全集汇总(gross)与逐记录平均(average)四数等权平均。赛事共收到 60 支队伍的 1,332 份提交;2015 年修订测试集上的最终最高分为 93.64(斯洛文尼亚选手 Urska Pangerc)。
数据以 ODC-BY 1.0(Open Data Commons Attribution License v1.0)全量开放,是非 ECG 通道心拍检测这一方法学方向公认的奠基性公开基准。
§1.2 战略价值
- 补齐 CinC 年份链最后一格:千方病案医数集已收录 2012/2013/2015-2023 各年挑战,2014 是缺失年份;本条目使 PhysioNet/CinC 挑战系列在库内形成完整时间轴,是系列互链的核心节点。
- 多模态融合的"教科书级"问题设定:与常见"多模态=更多特征"的浅层理解不同,本挑战的本质是主信号失效时从副信号恢复任务——这一设定直接映射到监护仪告警、可穿戴设备信号脱出等真实产品难题,方法论迁移价值极高。
- 标注可靠性标杆:参考标注由 QRS 检测器初标、专家逐例目视复核修正(增、删、重定位三操作并存),并公开标注哲学(“observed or imputed QRS complex 的专家意见多数”)——对研究标注协议本身也有参考价值。
- 可复现性设计:300 条隐藏测试集永久保存于 PhysioNet,配套 bxb/sumstats 自动评分管线长期开放(2015 年起经 Sandbox 框架延续),论文分数可持续复核——这在同期挑战赛中极为罕见。
- 数据门槛极低:ODC-BY 1.0、无注册、无协议、约 113 MB 单包下载,是生理信号方向入门与教学的理想数据集。
为什么 2014 届值得单独成条:在 CinC 挑战系列里,2014 届处在方法学谱系的转折点上——此前的各届(含 2013 胎儿 ECG)以"单一信号域内的信号处理"为主,2014 首次把"多信号异构、主信号不可靠、通道集合可变、标签可能错"这一整套真实监护数据难题系统化为公开赛题;此后的 2015(报警抑制)、2017(单导联分类)等届都可视为对其中某一子问题的深化。同时它是系列中少数同时给出完整标注哲学、可续用的评分框架、永久保存的测试集三件套的届次——对任何想在生理信号方向建立"可复现基准"的团队,这份数据集加文档本身就是一份方法论蓝图。
三类使用者的入口建议:
- 算法研究者:直接跳 §3(规格)→ §5(划分)→ §6(AI 指南),复现锚点从 gqrs 基线起步;
- 临床信息学读者:跳 §2(医学背景)→ §7(质量与局限),重点理解标注哲学与"信号级非患者级"定位;
- 数据工程/编辑同行:跳 §4(数据结构)→ §9(资源与引用),本集的 WFDB 分发与双口径存照是系列条目的格式样板。
§1.3 同类数据集横向对比
| 数据集 | 任务 | 模态 | 规模 | 标注 | 许可 | 与本条目关系 |
|---|---|---|---|---|---|---|
| cinc-2014(本条目) | 心拍定位 | ECG+ABP+PPG+RESP 等 4-8 通道 | 100 公开 + 300 隐藏条 | 151,032 心拍位置 | ODC-BY 1.0 | — |
| cinc-2013 | 胎儿 QRS 定位与 FHR/RR/QT 估计 | 4 通道腹部 ECG(单模态) | 447 条 1 分钟 | 众包概率投票 fQRS | ODC-BY 1.0 | 同为"定位类"任务;2013 是胎儿单模态,2014 是成人多模态 |
| cinc-2015 | ICU 报警真伪判别 | ECG 双导联+PPG/ABP 波形 | 1,250 条事件段 | 5 类报警真/假标签 | ODC-BY 1.0 | 2014 输出逐拍位置,2015 输出事件级二分类;两者共享"ECG 不可靠"设计哲学 |
| physionet-cinc-2016 | 心音分类 | 心音音频 | 3,153 条 | 正常/异常 | ODC-BY 1.0 | 同系列,从波形转音频模态 |
| QT-Database | QT 间期与 QRS 人工标注库 | 单/双导联 ECG | 105 条 15 分钟 | 域专家逐拍标注 | ODC-BY 1.0 | 2014 标注方法学(检测器初标+目视复核)与 QT 库一脉相承 |
| MIT-BIH-AFDB | 房颤节律参考库 | 双导联 ECG | 23 条长程 | 节律+心拍类型 | ODC-BY 1.0 | 2014 标注不分类别;需要心拍类型时应使用 AFDB 等类型标注库 |
| apnea-ecg | 睡眠呼吸暂停筛查 | 单导联 ECG | 70 条整夜 | 每分钟呼吸事件 | ODC-BY 1.0 | 同为 CinC 挑战(2000 年);展示该系列从单模态到多模态的演进 |
| mimic3wdb / mimic4wdb | ICU 多参数波形库 | 监护波形+数值 | 数千患者 | 无心拍标注 | ODC-BY 1.0(部分受限) | 2014 记录即源自 MIMIC-II 波形库时代;可在其上复用 2014 冠军算法 |
§1.4 版本时间轴
| 日期 | 事件 | 对使用者的含义 |
|---|---|---|
| 2014-01-07 | 挑战开放;官方页 v1.0.0 发布;Phase I 开始(数据页同日上线) | 公开训练集 100 条 + set-p 参考标注自此可下载 |
| 2014-02-14 | Octave m-code 样例 entry 发布 | MATLAB 系参赛路径打通 |
| 2014-03-27 | 每条记录时限从 20 秒加倍到 40 秒 | 早期论坛分数不可与后期直接对比(时限放宽) |
| 2014-04-07 / 04-17 | Phase I 截止 / Top5 公布:Vollmer 93.2 领跑 | 测试集 100 条口径 |
| 2014-04-16 ~ 06-15 | Phase II(测试集扩至 200 条) | 高分普遍回落 6-8 分(新记录更难) |
| 2014-06-16 ~ 08-15 | Phase III(测试集扩至 300 条,最终截止) | Johnson 87.9 居首 |
| 2014-09-07~10 | CinC 2014 会议(Cambridge, MA),09-10 颁奖 | 挑战论文 41:549-552 发表 |
| 2015-01-16 | 增广训练集发布:原测试集 100 条转入公开训练集 | 公开训练集 100 → 200 条 |
| 2015-01-23 | 评分接口重开:改用 200 条新测试集;时限改 6×10^10 CPU 指令/条、取消总时限 | 论文分数对比必须先对齐测试集版本(见坑点 3) |
| 2015-02 底 ~ 04-15 | 最终排名公布:Pangerc 93.64 / Johnson 91.50 / Vernekar 90.97 / Antink 90.70 / Rahman 90.16 | follow-up 通道允许继续提交 |
| 2015-08 | Physiol Meas 36(8) 专刊发表,编辑综述收录总结 | 方法论论文的标准引用集群 |
| 2016-10-20 | FAQ 最后更新 | 官方页此后进入维护态 |
§1.5 典型应用场景 {#sec-use-cases}1. 多模态心拍检测算法开发与基准复现:直接在 100 条公开记录上对齐官方 bxb/sumstats 评分,与 60 队 1,332 份提交的历史分数(含各阶段 Top5 代码)横向比较。
- ECG 信号质量评估(signal quality index, SQI)研究:数据集内置了从完好到完全不可用的 ECG 质量谱系,是 SQI 算法天然的分层测试集。
- 监护仪鲁棒性测试:起搏器伪迹(训练集 112 号记录)、严重肌电噪声、导联脱落等真实故障模式被刻意保留,可直接用于监护算法的边界条件测试。
- 跨模态生理耦合建模:呼吸-心率耦合(respiratory-cardiac coupling)、脉搏传导延迟(pulse transit time)等生理关系建模,官方 FAQ 明确鼓励从呼吸信号预测心拍位置的参赛思路。
- 教学与入门:约 113 MB 单包、WFDB 标准格式、ODC-BY 1.0 无门槛许可,适合作为生理信号处理课程的标准练手数据集。
- 向 MIMIC 波形库的方法迁移前站:先在 2014 训练集上验证算法,再扩展到 mimic3wdb/mimic4wdb 的全量波形数据,是社区常用工作流。
§1.6 十参数速查卡
| # | 参数 | 值 | # | 参数 | 值 |
|---|---|---|---|---|---|
| 1 | 任务 | 心拍定位 | 6 | 公开心拍标注 | 151,032 |
| 2 | 公开记录 | 100 条(100-199) | 7 | 隐藏心拍 | 152,478 |
| 3 | 隐藏记录 | 300 条(评分用) | 8 | 匹配窗口 | ±150 ms |
| 4 | 通道数 | 4-8/条 | 9 | 参赛规模 | 60 队 / 1,332 份 |
| 5 | 采样率 | 训练 250 Hz / 测试 120-1000 Hz | 10 | 最高分 | 93.64(修订集) |
§2 医学背景
§2.1 ICD-11 编码映射
本数据集的标注是"心搏发生时刻"而非患者诊断,数据集中没有任何疾病标签。下表将"稳健心搏检测"所服务的下游临床问题(即算法产出的逐拍心率/心律信息最终用于识别的病症)映射到 ICD-11,供病历检索与术语对齐使用:
| 下游临床问题 | ICD-11 编码 | ICD-11 中文名 | 与心搏检测的关系 |
|---|---|---|---|
| 心搏停止(心室停搏) | MC82.2 | 心搏停止型心脏骤停 | 心搏漏检若持续 ≥4 秒即对应此事件的床旁表现 |
| 室性心动过速 | BC71.0 | 室性心动过速 | 快速节律下 QRS 与 T 波易混淆,是漏检/误检高发区 |
| 心室颤动 | BC71.1 | 心室颤动 | 无离散 QRS 可定位,“逐拍"范式在此类节律下退化为"活动检测” |
| 窦性心动过缓 | BC80.1 | 窦性心动过缓 | 低心率使 R-R 间期拉长,检测窗与不应期参数需自适应 |
| 室上性心动过速(类属) | BC81 | 室上性心动过速 | 心率 >140 bpm 时逐拍分辨率直接决定 HR 计算正确性 |
§2.1b SNOMED CT 映射
以下 SNOMED CT 概念码已在公共 FHIR 术语服务器(Ontoserver)逐码验证(与 CinC 2015 条目共用同一批已验证码):
| 术语 | SNOMED CT 码 | 概念类型 |
|---|---|---|
| Cardiac arrest | 410429000 | disorder |
| Asystole | 397829000 | disorder |
| Ventricular tachycardia | 25569003 | disorder |
| Ventricular fibrillation | 71908006 | disorder |
| Sinus bradycardia | 49710005 | disorder |
| Tachycardia | 3424008 | finding |
§2.2 疾病与临床问题简介
本数据集面向的临床问题是心搏定位(heartbeat detection / fiducial point localization)在多模态监护数据中的稳健性。心搏定位是所有床旁监护算法的"第一级流水线":心率计算、心律失常识别、HRV 分析、报警触发,全部建立在"每一个心搏发生在什么时刻"这一最底层输出之上。这一步一旦失真,上游所有算法连同监护仪报警都会连锁失效——这也是为什么组织者把 2014 年挑战的主题定为"稳健检测"而非"更准的分类":问题不在没有算法,而在已有算法在真实 ICU 信号上会失效(官方挑战页)。
失效的根源是床旁信号的劣化场景。对 ECG 而言:患者翻身与肢体运动产生基线漂移与肌肉噪声;外科电刀产生远大于 QRS 的高频干扰;电极脱落使信号段时间归零或饱和;起搏器钉样伪迹可伪装成 QRS;部分患者 QRS 幅值本身过低,常规阈值检测直接漏检。对脉搏类信号(ABP/PPG)而言:袖带/传感器脱落、导管凝血、管线冲洗都会使波形失真甚至"看起来像"周期性心搏。对呼吸(RESP)等弱耦合信号而言,心搏痕迹几乎没有可观察标记。任何单一信号在任何时刻都可能不可信,这正是本数据集要求算法融合多信号交叉验证、并故意把部分难例记录(如训练集 112、133、169、188)放进来"毒打"单一信号算法的原因——官方 FAQ 明确说,这些记录"除非善用其他信号,否则将面临严重困难"。
| 劣化场景 | 受影响信号 | 典型表现 | 对心搏检测的后果 |
|---|---|---|---|
| 运动/翻身伪迹 | 全部 | 基线漂移、大幅摆动 | QRS 淹没,伪迹峰被误检为心搏 |
| 电刀干扰 | ECG | 高频噪声覆盖 QRS 频段 | ECG 通道段时间不可用 |
| 电极脱落 | ECG | 信号消失/饱和/方波 | 单导联检测器连续漏检 |
| 起搏器钉样伪迹 | ECG | 高幅窄脉冲 | 钉样被误检为 QRS,或掩盖真实 QRS |
| QRS 低幅 | ECG | 幅值接近噪声底 | 阈值法漏检 |
| ABP 传感器失真 | ABP | 波形钳位/衰减/冲洗伪迹 | 脉搏间期失真 |
| PPG 探头脱落 | PLETH | 波形变平或剧烈振荡 | 脉搏计数错误 |
| 呼吸调制 | RESP/PPG | 基线随呼吸周期摆动 | 间期测量抖动 |
可挖掘的跨通道生理耦合(官方 Introduction 与 FAQ 点名的参赛思路):
| 耦合关系 | 生理机制 | 检测用途 | 注意 |
|---|---|---|---|
| ABP/PPG 搏动 ↔ 心拍 | 每次心室收缩产生一次压力/容积脉动 | ECG 失效时的主检测源 | 脉搏传导延迟 100-300 ms 须回推(坑点 5) |
| 呼吸 ↔ 心率(RSA) | 呼吸性窦性心律不齐:吸气加速、呼气减速 | 从 RESP 趋势外推拍位置 | 仅提供低分辨率先验,须与实测对齐 |
| EEG/EMG 中的心源伪迹 | 电极感应到心电电位 | 作为"秘密 ECG"备用通道 | 幅度小、受肌电污染,仅作一致性校验 |
| 多脉搏通道互证 | 同一心搏在各压力通道依次显现 | 交叉投票抗噪 | 各通道延迟不同,须分别校准 |
| 起搏钉与 QRS 的固定关系 | 起搏脉冲后跟随心室除极 | 从钉样信号推定有效起搏拍 | 训练集 112 号即典型场景 |
这种"把生理学写成特征工程"的思路是本数据集的教育内核:它奖励的是读懂信号的人,而非参数最重的网络——官方评审在 FAQ 中反复强调样例 gqrs 只需再"加点什么"就能超过基线。
§2.3 临床任务定义
- 任务类型:逐拍定位(type-agnostic beat detection)——只要求给出每个心搏的发生时刻,不要求判断搏动形态类型(正常/室性/室上性均不区分)。这与 2013 年挑战(基于多导联 ECG 的末 8 秒事件性质判别)和 2015 年挑战(监护报警真假判别)形成明确分工:2014 专注"搏动在哪里"。
- 输入:10 分钟(偶尔更短,训练集 116 仅 1 分 49 秒,测试集同样可能出现短记录)成人多参数片段,每条 4-8 路信号,第一路恒为 ECG,采样率记录内统一(训练集 250 Hz,测试集 120-1000 Hz 不等)。
- 输出:PhysioBank 兼容注解文件(annotator 名
qrs),记录每个被检出心搏的时刻;提交包内训练集部分须命名为100.qrs、101.qrs、……、199.qrs。 - 信息边界:无学习期(no learning period)——算法不得以"跳过开头若干秒"热身,从记录第一个样本起就须输出,漏检首搏与漏检其他任何搏动同罪;同时无实时性约束——允许读完全部 10 分钟数据再输出(顺序或非顺序、正向或反向均可),因此这是离线逐拍任务,与真实实时监护的实现约束不同。
- 匹配规则:检出注解与参考注解经 WFDB
bxb以 ±150 ms 匹配窗逐拍比对,且必须是距参考注解最近的检出才算命中。 - 与既有工作的关系:挑战前,QRS 检测在"干净 ECG"上已是近乎解决的经典问题(Pan-Tompkins 1985 等),但组织者的立场是:床旁多参数场景下 ECG 会劣化、脉搏信号可作为替代证据源、算法应当学会"信号间互证"。官方样例 entry 即 WFDB 自带的
gqrs(ECG 单通道 QRS 检测器),组织者直言"样例就是 gqrs,你得加点别的才能超过它"。
§2.4 患者人群
| 维度 | 内容 |
|---|---|
| 人群 | 成人(human adults):“包括各类疾病患者与健康志愿者”(官方原文) |
| 来源 | 长时程多参数记录的 10 分钟截取片段,源头为 MIMIC-II Waveform Database 及同类床旁监护数据 |
| 机构 | 挑战页未逐条具名;MIMIC-II 波形库采集自 Beth Israel Deaconess Medical Center(美国波士顿)ICU |
| 人口学元数据 | 不随数据分发:无年龄、性别、诊断、用药信息,记录级信息只有信号本身 |
| 记录数 | 训练 100 条(编号 100-199)+ 隐藏测试 300 条;记录间无患者重叠声明(组织者未公开患者级映射) |
| 每记录信号 | 4-8 路;第一路恒为 ECG;其余为 ABP/PPG/RESP 等的组合,因记录而异 |
需要特别强调:这是一个"信号级"而非"患者级"数据集。想用它做患者分层、预后建模或人群亚组分析都是无米之炊——它回答的问题是"这台监护仪这 10 分钟里每一次心搏发生在哪",而不是"这位患者是谁、得了什么病"。做研究设计时应把它当算法基准测试床(benchmark testbed),而非临床研究队列。
人群画像与下游任务的匹配提示:向重症监护方向(mimiciii/mimiciv 衍生任务)迁移时,本集人群与目标域重叠度高,迁移路径短;向门诊/家庭监测(可穿戴设备)迁移时,人群与场景双重失配,须额外采集本地数据校准。官方对人群多样性的唯一正式陈述是"患者谱系广 + 健康志愿者"——逐记录人群属性不可知,任何基于人群的分层分析在本集上都无法开展。
§2.5 临床价值
- 监护报警质量的根因治理:心率是绝大多数 ICU 报警逻辑的第一输入,心搏漏检/误检直接转化为假报警与漏报警。稳健心搏检测是报警疲劳治理(CinC 2015 的主题)的技术前置。
- 多模态融合方法论标杆:挑战证明"用 ABP/PPG 的搏动间期去填补 ECG 失效时段"在公开基准上可行,Top 系统普遍是多信号融合架构;这一方法论可直接迁移到多导联 ECG、可穿戴 PPG 等场景。
- 开源工具链的加速器:挑战目标是"加速开发开源研究工具"(官方原文),赛后 WFDB 生态(bxb、sumstats、gqrs、wabp 等)与一系列开源检测器成为生理信号教材与工程实践的标准组件。
- HRV 与节律分析的可信底座:±150 ms 的逐拍定位精度约束保证 R-R 间期序列可用于心率与 HRV 类分析;标注"或插值(or imputed)"的细节提示:真实监护里存在"心搏客观存在但所有通道都看不到"的时段,算法与评估都要面对这一现实。
- 鲁棒性工程的教学样板:难例记录(112/133/169/188)、短记录(116)、多采样率测试集构成一组精心设计的"反脆弱"考题,是讲授信号鲁棒性工程的现成素材。
§2.6 金标准标注
- 标注对象:ECG 通道上被观察到(或被插值推定,observed or imputed)的 QRS 复合波位置。
- 标注规程:参考注解代表多位专家意见的多数(preponderance of expert opinions);部分注解为手工放置,没有统一固定fiducial 点——即有的标注落在 R 峰、有的落在专家认为合适的其他位置。这对评测设计有两个直接影响:(a) ±150 ms 的宽匹配窗部分是为了容忍标注点不统一;(b) 任何试图"拟合标注点到固定形态学位置"的算法都会吃到系统性偏差。
- 标注类型:type-agnostic——所有被标注心搏一律记为
N(normal),不区分室性/室上性等形态类型。训练集中原有 46 个被标记为V/S/Q的异常搏动,在挑战参考注解中同样并入 N 处理(官方 FAQ 明确答复:按 N 计算预测误差)。这意味着该数据集不能用于训练或评估搏动形态分类器(那是 MIT-BIH Arrhythmia Database 的领地)。 - 插值标注(imputed):当心搏在 ECG 上不可观测但其他证据(如 ABP 搏动)表明其存在时,专家可插入推定标注——这使参考注解不完全等价于"ECG 上看得见的 QRS",单通道算法会在这些时段"合理地"漏检并被扣分,这是设计上的有意为之。
- 一致性数据:官方未公开标注者人数、Kappa 等一致性统计;"多数意见"规程是唯一公开的口径。
§2.7 官方 FAQ 精选问答(实抓翻译摘编)
以下问答摘译自官方挑战页 FAQ 区(FAQ 最后更新 2016-10-20),是理解本数据集"设计意图"的第一手材料:
Q1:如何判断我的算法跑得够快?
官方样例在测试环境处理一条 10 分钟记录仅需约 35 毫秒,即约为时限需求的三百分之一。用样例在自己的机器上测时并对比即可;平均耗时不超过样例 300 倍大致安全。每条 20/40 秒的时限是为极复杂记录预留的余量。
Q2:算法可以输出诊断信息吗?
阶段 1/2(环境准备与训练集验证)可以,阶段 3/4(隐藏测试集)不行。一般规则:凡不接触测试集数据产生的输出都允许。
Q3:可以提交不含完整源码的二进制吗?
不含完整源码的提交没有获奖资格;含非自由代码(如 MATLAB 专有工具箱代码)的提交不授奖、不进官方排名。
Q4:测试环境是多核吗?内存多大?
虚拟机为双核 CPU、2 GB 共享内存;pthread 库预装。不建议依赖大规模并行。
Q5:训练集里 46 个非正常心拍(V/S/Q)要单独检测标注吗?
要检测、但都标 N 即可——本挑战不要求区分心拍类型,但要求把异常拍也算进检出。
Q6:为什么参考标注总在 R 峰与 S 谷之间,而不是 R 波极值点上?
多数标注由 QRS 检测器初标,位置取滞后校正滤波信号的质心;双相波时自然落在中间位置。此法对呼吸等引起的电轴摆动更稳定。
Q7:标注有正式的 QRS 定位定义吗?
没有统一形态学定义。全部标注经专家目视复核,允许专家自由放置;正确检测只要求落在参考点 ±150 ms 内。
Q8:隐藏测试集有哪些信号?
不提供清单。第一路恒为 ECG(通常标 “ECG”),非 ECG 信号常见 ABP(桡动脉血压)与 PLETH/PPG(指尖脉搏波),也可能有 RESP(呼吸)等弱耦合通道。官方期待参赛算法自行发现信号关系——包括处理标错名的信号(“it’s the real world!”)。
Q9:一条记录里可以有两个同名信号吗?
可能有同类多路,但名字不同(如 ECG0 与 ECG1)。
Q10:能用 WFDB 包里的现成检测器(gqrs/wabp)吗?
可以,不要求重复造轮子;但样例 entry 本身就是 gqrs,想提升必须再往上加东西。
Q11:训练集 116 号记录是不是坏了?
没坏——它只有 1 分 49 秒,是刻意保留的短记录样例;测试集同样存在短记录。
Q12:为什么 Phase II 分数比 Phase I 低这么多?
测试集从 100 条扩到 200 条,新增记录显著更难;Phase III 再加 100 条还会更难。分数下降是赛题设计而非算法退步。
Q13:能注册新邮箱刷提交次数吗?
明令禁止;Phase I 已据此取消超额提交资格,多账号行为将被取消参赛资格。鼓励的是合法组队:队友间可共享剩余提交额度,但 AUTHORS 文件必须列全所有成员。
§3 数据集规格
§3.0 版本抉择矩阵
2014 挑战相关分发物共 5 个,选择取决于复现目标:
| 分发物 | 内容 | 记录数 | 采样率 | 可获取性(2026-09 实测) | 适用场景 |
|---|---|---|---|---|---|
| training.zip(或 tarball) | 原始训练集 + 参考注解 | 100(编号 100-199) | 统一 250 Hz | ✅ archive.physionet.org 直下,实测 118,129,353 B | 复现训练流程、快速上手、教学 |
| 增广训练集(training.zip 替换版) | 原训练 100 条 + 原测试集抽出的 100 条(无注解差异口径见 §5) | 200 | 混合 | ⚠️ 现行 content 页分发,页面当前地区封锁(403),暂未能直下 | 追加训练数据(论文后续工作普遍使用) |
| set-p.tar.gz / set-p.zip | 2015-01-23 公布的新测试集 200 条(与最终榜对应) | 200 | 120-1000 Hz | ✅ archive.physionet.org 可达 | 复现最终榜(§8)逐条分数 |
| entry.tar.gz / entry.zip | 官方样例 entry(基于 gqrs) | — | — | ✅ archive.physionet.org 可达 | 理解提交流水线、next.sh 骨架 |
| LightWAVE 在线查看 | 浏览器内目视训练记录 | 100 | — | ✅ 官方页内嵌链接 | 标注目视核验、讲解配图 |
选择建议:**先 training.zip 起步;复现榜单分数必须换到 set-p 上的 200 条测试口径;若论文方法需要更多训练数据,用增广训练集并明确引用其发布日期(2015-01-16)以区分口径。**任何混用都必须在实验记录中写明"哪一版测试集",否则分数不可与任何已发表结果对表(坑点 3 的根源,见 §6.5)。
§3.1 模态详情
| 模态 | 角色 | 与心搏的耦合 | 官方证实情况 |
|---|---|---|---|
| ECG(第一路,恒有) | 主证据源 | 直接:QRS 复合波即心搏标记 | 官方明文:“每条记录的第一路都是 ECG,通常标为 ‘ECG’”;同记录多导 ECG 命名为 ECG0/ECG1 等以避免重名 |
| ABP(动脉血压) | 脉搏类替代源 | 直接:每次心脏收缩产生一个血压搏动 | 官方 FAQ 点名 “ABP (radial arterial blood pressure)”(桡动脉血压) |
| PLETH / PPG(光电容积脉搏波) | 脉搏类替代源 | 直接:指尖脉搏波形 | 官方 FAQ 点名 “PLETH or PPG (fingertip photoplethysmogram)” |
| RESP(呼吸阻抗) | 弱耦合信号 | 间接:呼吸性窦性心律不齐的调制痕迹 | 官方 FAQ 点名 “RESP (respiration)”,明言"与心搏活动的耦合不那么清晰" |
| 其他生理信号 | 因记录而异 | 视信号而定 | 挑战页仅表述为"a variety of simultaneously recorded physiologic signals";挑战论文描述了更广的信号谱系(含 EEG/EMG 等重症监护常见通道),未逐条列出清单 |
| 心率/节律元数据 | 无 | — | 数据中不含设备输出的 HR 数值通道或节律标签 |
两条工程上极重要的官方规则:信号名可以采信但不可迷信——官方明说"信号可能被贴错标签(it’s the real world!)",鼓励算法自行发现信号间关系而非依赖通道名;采样率逐记录查询——用 WFDB sampfreq 读取当前记录频率后自适应参数(官方推荐),或用 setsampfreq/xform 重采样到偏好频率(代价是引入重采样噪声,且输出注解时间须换算回原始时基)。
§3.2 按子集样本数
| 子集 | 记录数 | 记录编号 | 采样率 | 参考心拍数 | 发布/使用时间 | 可获取性 |
|---|---|---|---|---|---|---|
| 训练集(原始,training.zip) | 100 | 100-199 | 统一 250 Hz | 151,032(含 46 个原标 V/S/Q 的搏动,均按 N 计) | 挑战全程(2014-01 起) | ✅ archive 直下 |
| Phase I 隐藏测试集 | 100 | 未公开(隐藏) | 120-1000 Hz | 未单独公开 | 2014-01-07 ~ 04-07 | 已并入后续口径,不再单独存在 |
| Phase II 隐藏测试集 | 200(=Phase I 100 + 新 100) | 未公开 | 120-1000 Hz | 未单独公开 | 2014-04-16 起 | 已并入 Phase III 口径 |
| Phase III 最终隐藏测试集 | 300(=Phase II 200 + 新 100) | 未公开 | 120-1000 Hz | 152,478 | 2014-06-16 ~ 08-15(最终榜口径) | 未公开逐条数据 |
| 增广训练集 | 100(新) | 未公开连续编号 | 混合 | 未随集公开 | 2015-01-16 | ⚠️ 现行 content 页(当前 403) |
| set-p(新测试集) | 200(新) | 未公开编号规律 | 120-1000 Hz | 未公开 | 2015-01-23(新计分界面启用) | ✅ archive 可达 |
关键算术:训练集 151,032 拍来自挑战论文(type-agnostic 口径);最终测试集 152,478 拍同出挑战论文;两者相加 303,510 拍,即该挑战全部公开可考的参考心拍总量。三个阶段的隐藏测试集是逐级并集关系(每阶段追加约 100 条更难记录),因此同一算法在三个阶段的分数天然递减,Phase II 官方甚至预告"所有人的分数都会显著下降"。
§3.3 数据格式
- 信号存储:WFDB(Waveform Database)标准格式——每条记录一对核心文件:
R.dat(二进制多路信号样本,多路交织存储)+R.hea(ASCII 头文件,声明信号数、采样频率、增益、ADC 分辨率、各路标签与初始值)。头文件即自描述元数据,不需要额外 JSON/YAML。 - 参考注解:WFDB 注解文件(每条一个),存储心搏时刻与 type-agnostic 的
N标签;由 WFDB 库的标准注解 API 读写(rdann/wrann)。 - 参赛输出:与参考注解同构的注解文件,annotator 名必须是
qrs,训练集部分随 entry 提交(challenge/2014/set-p/100.qrs等),测试集部分由next.sh在评测机上现场生成。 - 打包:training.zip 与 training tarball 内容等价(官方声明"about 111 MB in either format");entry 以
entry.tar.gz或entry.zip单文件提交。 - 读取工具:WFDB Software Package(C 库,
-lwfdb链接)为评测环境预装;Python 侧可用wfdb包(rdsamp/rdann);MATLAB/Octave 侧官方提供 WFDB Toolbox(样例 m-code entry 即基于它)。官方样例 entry 的next.sh用 WFDB 应用直接处理,处理一条 10 分钟记录约 35 ms。
拿到数据后的 60 秒自检清单(任何一项不过即停,回到官方整包):
unzip -t training.zip # 1. 包完整性
python3.11 - <<'EOF' # 2. 逐记录头自检
import wfdb, glob
for p in sorted(glob.glob("data_root/*.hea")):
r = wfdb.rdrecord(p[:-4])
assert r.fs == 250, (p, r.fs) # 训练集恒 250 Hz(坑点 6)
assert 4 <= r.n_sig <= 8, (p, r.n_sig)
assert "ECG" in r.sig_name[0].upper(), (p, r.sig_name[0]) # 第一路恒 ECG(坑点 4)
a = wfdb.rdann("data_root/100", "qrs")
assert set(a.symbol) <= {"N", "V", "S", "Q", "|"} # 3. 标注符号域
print("self-check OK")
EOF
§3.4 存储大小
| 口径 | 数值 | 来源 |
|---|---|---|
| 官方页口径 | “about 111 MB in either format”(zip 与 tarball 相同量级) | 官方挑战页 Files 节 |
| 实测口径 | training.zip = 118,129,353 字节(约 112.7 MiB / 118.1 MB,十进制) | 2026-09-27 经 archive.physionet.org 直下实测 |
| set-p | 未留存实测字节数(archive 页可达,未下载全量) | — |
双口径说明:官方"111 MB"为约数且未注明二进制/十进制单位;实测字节 118,129,353 换算为 112.68 MiB,与 111 MB 不完全重合,差异可能来自官方当时的压缩包版本与现行 archive 版本间的细微更新。**两口径并存存照,本文正文引用实测字节为准。**单条记录平均约 1.1 MB 压缩量级(8 路信号 × 10 分钟 × 250 Hz × 12-16 bit),对现代硬件而言全数据集可常驻内存。
§3.5 标注方式
- 产生流程:多位专家目视审阅 ECG 通道(结合其他信号佐证),标注每个可观察 QRS 的位置;对"证据显示心搏存在但 ECG 不可见"的时段,插入推定(imputed)标注。
- 标注粒度:逐搏(per-beat),仅时刻 + 单一标签
N;无 onset/offset 端点、无形态分类、无节律段标签。 - fiducial 约定:无固定 fiducial 点(官方明文)——标注点由专家目视确定,未统一锚定 R 峰顶点。复现评分时不得假设标注点即 R 峰。
- 异常搏动处理:训练集 46 个 V/S/Q 搏动全部并入 N;测试集参考注解同口径(type-agnostic)。
- 版本注意:2015-01-16 增广训练集发布说明中明示"注解并非从特定通道生成、无固定 fiducial 点、部分为手工放置、全部为 N"——这可视为对整个参考注解体系的权威口径总结。
§3.6 标注者资质与一致性
| 项 | 官方公开程度 | 本文处理 |
|---|---|---|
| 标注者身份 | 仅表述为"专家(expert annotators)",未公开人数、机构、执业背景 | 照实转述,不推测 |
| 一致性统计 | 未公开(无 Cohen’s Kappa、无逐标注者分歧数据) | 不编造;以"多数意见规程"作为唯一公开口径 |
| 标注 SOP | 未公开细节;已知事实:手工放置 + 无固定 fiducial + 或插值 | 按 §3.5 五点如实呈现 |
| 质量控制 | 未公开复标/仲裁流程 | 不编造 |
提醒:这层信息缺失是原始数据集的属性(不是本文档的疏漏),引用本文数据时若需标注质量论证,请援引挑战论文对参考注解的描述并明确"官方未公开一致性统计"。
§3.7 采集周期
- 记录截取自长时程多参数监护记录,源头库为 MIMIC-II Waveform Database(Beth Israel Deaconess Medical Center ICU 波形档案)及同类数据;官方挑战页明言挑战数据"such as that contained in the MIMIC-II Waveform Database"。
- MIMIC-II 波形库的采集时间窗以 MIMIC-II 官方文档为准;挑战页未公开各记录的具体采集日期、片段截取时间与选取标准("难度分层"只对测试集追加过程定性描述,未量化)。
- 挑战自身时间线(与采集无关,注意区分):Phase I 2014-01-07~04-07、Phase II 2014-04-16~06-15、Phase III 2014-06-16~08-15;最终榜 2015-04-15 公布。
§3.8 地域覆盖
- 主要来源机构为美国波士顿 Beth Israel Deaconess Medical Center(经由 MIMIC-II 波形库);官方挑战页同时表述数据含"健康志愿者"记录,其来源机构未逐条具名。
- 无人口学分布数据(年龄/性别/种族均不随数据分发);无科室分布声明(ICU 为主,门诊/病房记录构成未公开)。
- 对泛化性的含义:数据代表单一医疗体系的成人床旁监护实践(含志愿者补充),向其他地域、其他设备生态、儿科/新生儿场景外推时须另行验证(§7.3)。
§3.9 设备规格
| 项 | 内容 |
|---|---|
| 记录设备 | 床旁监护仪及同类多参数设备(bedside monitors and similar devices,官方表述);具体厂商/型号未公开 |
| 采样率 | 120-1000 Hz 之间逐记录设定;记录内所有信号统一同一频率;训练集统一 250 Hz |
| 量化精度 | 未逐记录公开;WFDB .hea 头文件内含每路增益与分辨率声明,以头文件为准 |
| 通道构成 | 4-8 路;第一路恒为 ECG;同类型多路以 ECG0/ECG1 等区分命名 |
| 时长 | 10 分钟标准片段;偶发更短记录(训练集 116 仅 1 分 49 秒;测试集同样存在短记录,官方 FAQ 明示) |
| 时基 | WFDB 标准时基;输出注解时间以原始记录采样间隔为单位(重采样方案须自行换算回原时基) |
§3.10 深度溯源链
| 层级 | 环节 | 执行者 | 公开证据 |
|---|---|---|---|
| L1 原始采集 | 成人床旁多参数长时程监护记录 | 医疗机构监护设备(MIMIC-II 波形库体系,BIDMC) | MIMIC-II 文档 + 挑战页溯源表述 |
| L2 库建设 | 波形数据匿名化、归档为 PhysioNet 开放资源 | MIT Laboratory for Computational Physiology 主持 | MIMIC-II 波形库官方页 |
| L3 片段筛选 | 从长时程记录中挑选 10 分钟成人片段,组装训练/测试集并逐阶段追加难例 | 挑战组织者:George Moody、Benjamin Moody、Ikaro Silva(MIT LCP) | 挑战页组织者署名 + CinC 2014 论文 |
| L4 专家注解 | 多位专家目视定位 QRS(或插值推定),type-agnostic 全标 N | 官方表述"expert annotators"(人数未公开) | 挑战页注解说明 |
| L5 分发与评分 | training.zip 公开、隐藏测试逐阶段扩容、bxb/sumstats 统一评分、2015-01 增广与 set-p 公布 | 挑战组织方 | 挑战页时间线 + 官方 FAQ |
溯源链的一个独特看点是 L3 的"对抗性组装":测试集并非随机抽样,而是"Phase II 的 100 条新增记录许多比前 100 条的平均难度显著更难"(官方原文),组织者在主动把基准往"算法会坏的地方"推——这决定了任何"在测试集上调参"的企图(也是隐藏测试集设防的原因)在该数据集上格外有害。
§4 数据结构
§4.0 目录树
training.zip 解压后(archive 站 training.zip,118,129,353 字节)
├── 100.hea # 头文件:通道数/采样率/增益/ADC 范围/通道名(文本)
├── 100.dat # 波形样本(二进制,4-8 通道交错存储)
├── 100.qrs # 参考心拍标注(WFDB 注释二进制;公开版)
├── 100.qrs.txt # 同注释的文本等价物(部分分发形态提供)
├── 101.hea / 101.dat / 101.qrs ...
│ ... # 编号连续到 199
└── RECORDS # 记录清单(每行一个记录名)
set-p.tar.gz / set-p.zip(参考标注独立包,与训练信号包同目录分发)
└── challenge/2014/set-p/
├── 100.qrs ... 199.qrs # 参赛提交格式所需的自跑验证标注目录骨架
增广训练集(2015-01-16 发布,现行 PhysioNet content 页分发)
└── 100 条新记录(编号自 300 起),结构同上,含参考标注
entry.tar.gz(官方样例参赛程序,C 版 gqrs)
├── setup.sh # 比赛环境一次性编译/配置脚本
├── next.sh # 每条记录调用一次的分析入口
├── AUTHORS # 团队成员与单位
├── sources/ # 全部源码(含自定义库)
└── challenge/2014/set-p/ # 自跑训练集生成的验证标注(100-199.qrs)
注意:archive 旧站与现行 PhysioNet content 页的分发文件名与目录骨架略有差异(旧站以 set-p.tar.gz 独立分发标注;现行页将信号与标注合并打包)——任何"整理版"第三方镜像若丢失 .hea 逐字节内容,wfdb 解析即破坏(坑点 2)。
通道命名变体对照(.hea 实测常见写法;解析时一律先 upper() 再模糊匹配):
| 语义 | 常见标签写法 | 归组键 |
|---|---|---|
| 心电(第一路恒在) | ECG、ECG0、ECG1、ECG II、ECG I | 含 ECG 子串 |
| 桡动脉血压 | ABP、ABP1、ART、ART1 | 精确 ABP/ART 前缀 |
| 肺动脉压/中心静脉压 | PAP、CVP | 有创压力类,并入脉搏组 |
| 指尖脉搏波 | PLETH、PPG、PULSE | 含 PLETH/PPG 子串 |
| 呼吸 | RESP、RESP1、AVR | 含 RESP 子串 |
| 脑电/肌电等 | EEG、EMG、EOG、UNKNOWN | 其他组(官方提醒可能标错名) |
§4.1 DAIMS 字段字典
| 字段 | 类型 | 语义 | 取值范围/单位 | 生成方式 | 可靠性 | 缺失机制 | 层级 |
|---|---|---|---|---|---|---|---|
| record_name | string | 记录名(即文件名主干) | 100-199(初始训练集);300 起(增广) | 官方编号 | 高 | 无 | 记录 |
| n_sig | int | 同步信号通道数 | 4-8 | .hea 声明 | 高 | 无 | 记录 |
| fs | float | 采样率(Hz) | 训练集恒 250;测试集 120-1000 | .hea 声明 | 高 | 无 | 记录 |
| sig_len | int | 样本点数/通道 | ≈150,000(10 min × 250 Hz);少数更短 | .hea 声明 | 高 | 无(短记录是设计事实) | 记录 |
| sig_name | list[str] | 通道名 | ECG/ABP/PLETH/RESP/EEG/EMG/CVP/PAP 等 | .hea 声明 | 中(官方承认可能标错) | 无 | 记录 |
| units / gain / baseline | list | 通道物理单位/增益/基线 | 逐通道 | .hea 声明 | 高 | 无 | 通道 |
| p_signal | float 矩阵 | 物理单位波形 [N,C] | 由 gain/baseline 换算 | wfdb 换算 | 高 | 无(通道内连续) | 通道 |
| beat_time | float | 参考心拍位置 | 秒(或采样点) | 检测器初标+专家复核 | 高(位置共识)/不可知(形态学真值) | ECG 长段失效处为 imputed 推定 | 拍 |
| beat_label | char | 心拍类型标签 | 恒 N(原始 46 个 V/S/Q 已合并) |
官方类型合并 | —(设计如此) | 无 | 拍 |
| qrs_annotation_file | path | 标注文件 | .qrs / .qrs.txt | 官方发布 | 高 | 无 | 记录 |
| duration | float | 记录时长 | 599 秒左右;训练集 116 仅 109 秒 | sig_len/fs | 高 | 无 | 记录 |
§4.2 标注分布
本数据集没有类别标签——唯一的标注流形是"拍位置"本身。围绕它的分布事实:
| 分布维度 | 事实 | 对建模的含义 |
|---|---|---|
| 心拍总数(公开库) | 151,032 个(总结综述口径) | 每条记录平均约 1,000 拍(10 分钟、~60-100 bpm) |
| 心拍总数(隐藏测试集) | 152,478 个 | 公开/隐藏体量大致对等 |
| 心拍类型 | 100% N(类型不可知) |
不能做心律失常分类任务;类型需求转 AFDB/QT 库 |
| 异常拍残留 | 训练集原始 46 个异常拍(V/S/Q)混在 N 中 |
形态离群点少量存在,对纯形态检测器是噪声源 |
| 通道构成 | 4-8 通道/条,第一路恒 ECG,其余异构 | 模型必须容忍通道集合变化(masked/flexible input) |
| 采样率 | 训练集恒 250 Hz;测试集 120-1000 Hz | 训练集上调参的时间窗参数在测试集须按 fs 归一(坑点 6) |
| 记录时长 | 标称 10 分钟;116 号仅 1 分 49 秒 | 批处理须处理变长记录 |
§4.3 关键统计
- 公开训练集:100 条 × 4-8 通道 × 10 分钟 × 250 Hz ≈ 每条 150,000 样本点/通道;全库约 1.5 亿样本点量级。
- 标注密度:151,032 拍 / 100 条 ≈ 1,510 拍/条 ≈ 2.5 拍/秒均值(含心动过速记录拉高均值)。
- 困难记录清单(官方点名的考题):112(起搏器伪迹)、133、169、188(ECG 严重噪声)——这 4 条是"只看 ECG 必挂"的试金石;116(时长异常短)是工程健壮性考题。
- 评分窗口:±150 ms @ 250 Hz ≈ ±37.5 样本点;窗口宽于绝大多数 QRS 形态宽度,故"位置语义"宽松而"漏检/多检"惩罚严格。
- 时限标尺:官方样例 gqrs 处理一条 10 分钟记录仅约 35 ms——平均比时限快约 300 倍,说明本赛题瓶颈在准确率而非算力。
- 数据体量:training.zip 118,129,353 B(实测)/ “about 111 MB”(官方口径);增广后公开库约 200 条记录、151,032 个标注拍——在"每个标注都经专家复核"的尺度上,这仍是同期最大的多模态心拍定位标注库。
- 通道组合丰富度:4-8 通道 × 异构模态组合意味着不存在两条记录的输入结构完全相同——这是"变输入结构鲁棒性"研究不可多得的自然实验场。
§4.4 数据层级
数据集(Dataset)
├── 子集:set a/p(初始训练 100 条,公开)→ 可用层级:记录 → 通道 → 样本/拍
├── 子集:set r(增广训练 100 条,2015 公开)→ 同上
├── 子集:test set(300 条,保密)→ 不可用;仅官方评分管线可触达
└── 单条记录层级
├── 记录级元数据(.hea):n_sig / fs / sig_len / sig_name / gain
├── 通道级:波形数组(连续时间序列)
└── 拍级:参考标注时间点序列(离散事件流)
建模视角的层级映射:记录级对应"一次监护片段"(样本数=100);通道级对应"模态/视图"(4-8 个,集合可变);拍级对应"事件"(序列输出,~1,500/条)。事件级标注 + 通道级异构是设计输入管线的两个轴。
| 建模概念 | 对应层级 | 规模 | 设计含义 |
|---|---|---|---|
| 样本(sample) | 记录级 | 100(增广后 200) | CV 折按记录切,勿按时间窗切(防跨折泄漏) |
| 视图(view) | 通道级 | 4-8/条 | 槽位+掩码或按名动态图,坑点 4 |
| 事件(event) | 拍级 | ~151,032(公开库) | 逐点分类+峰解码或直接序列预测 |
| 前后文(context) | 记录内连续段 | 任意长 | 无实时约束(§2.3),可用双向上下文 |
§4.5 缺失值与信息性缺失
- 波形内部:信号是监护真实片段,导联脱落、饱和、平线都原样保留——这些"缺失"正是任务的一部分(官方样例即演示从平线段恢复检测)。
- imputed 标注:ECG 长段失效处的参考拍是专家推定的(依据其他通道搏动与节律连续性补位)——这些位置对"只看 ECG"的模型天然不可达,属于信息性缺失(informative missingness):缺失模式本身泄漏了"本条记录 ECG 在此失效"的信息。
- 元数据缺失:无患者人口学、无诊断、无采集时间、无设备品牌——全部不可用而非遗漏,建模时不要虚构。
- 通道缺失:EEG/EMG/CVP 等通道逐记录有无不一;正确做法是按 sig_name 动态组装输入,而非固定槽位补零(坑点 4 展开)。
- 标注的时间密度不均:心拍密度随节律变化(心动过速段密、停搏样段疏),按时间窗均衡采样会人为压平节律分布——采样策略应与评估指标(逐拍而非逐窗)保持同构。
- "缺失即特征"的双刃性:导联脱落、平线等缺失模式对多模态检测器是强信号(提示改走他通道),但把它们当作无害随机缺失处理(如均值插补)会制造不存在的搏动,直接扣分。
§5 划分与使用建议
§5.1 官方划分
| 用途 | 集合 | 记录数 | 可见性 |
|---|---|---|---|
| 参赛开发 | set a(训练) | 100 | 信号+参考标注全公开 |
| 参赛评分(2014 三阶段) | test b/c | 100→200→300 | 信号+标注全程保密 |
| 参赛评分(2015 修订口径) | 修订测试集 | 200 | 保密;原测试 100 条转公开为增广训练 |
| 自跑验证 | set-p | 100 | 参赛者提交自跑标注与测试环境比对,防作弊非防过拟合 |
官方划分的两条设计原则值得复用:其一,验证标注与评分标注分离——set-p 只用于"确认你的代码在我们环境里跑出你提交的结果"(防作弊),真正的排名完全依赖隐藏测试集(防调参);其二,测试集分阶段扩容——每阶段追加 100 条全新记录,使"过拟合上一阶段测试分布"的策略失效(FAQ 里"为什么 Phase II 分数更低"的答案,见 §2.7 Q12)。自建评估流程时,这两条原则对应的做法是:留出集永不参与任何调参决策;关键结论在第二轮"全新留出"上复核。
§5.2 社区惯例划分
官方训练集只有 100 条且自带标注,社区做法分化:
- “官方留出式”:100 条内部再切分(如 80/20 或按记录名奇偶),自建验证集;常见于方法论文的消融实验。
- “全量调优式”:直接用 100 条全量与官方分数锚点(gqrs 基线、Top5 分数)对齐——要求自建评分器与 bxb 严格一致,否则分数不可比。
- “外部扩容式”:以 2014 训练集为标定,把方法搬到 MIMIC 波形库(mimic3wdb/mimic4wdb)自建大训练集,2014 集只做测试——这是近年论文主流,规避了 100 条的小样本困境。
§5.3 划分策略与泄漏风险(重点)
- 增广泄漏(最大的坑):2015-01 公开的 100 条增广记录来自原隐藏测试集。任何在"200 条公开训练集"上训练、又在"2015 修订测试集"上评分的流程都是安全的(两者互斥);但如果拿增广记录与其他来源数据混训后,再声称对齐"2014 年原始赛果",口径即错——2014 赛果的 300 条中已有 100 条被你看过了(坑点 3)。
- 患者级泄漏:官方未披露记录-患者映射,无法做患者级分组切分。两条记录可能来自同一患者(监护多片段)——社区无法验证,条目如实标注这一不确定性;审稿人问及时应引用官方"未发布患者级信息"。
- 调参泄漏:官方点名的困难记录(112/133/169/188)只有 4 条,若按"困难记录留出"切分,验证集信息量过小;若全并入训练,则对"ECG 失效场景"的自评过于乐观——建议分层抽样按"ECG 质量谱系"分层而非按单记录。
- 时限/采样率口径泄漏:在 250 Hz 训练集上调好的绝对时间参数(窗口毫秒数)迁到 120-1000 Hz 测试场景时须按 fs 归一——忘记归一不是泄漏而是实现错误,但会伪装成"泛化性差",排查时先查此点。
§5.4 交叉验证建议
推荐协议(论文可报告口径):
1. 记录级 5 折 CV(100 条 → 每折 80 训练 / 20 验证)
2. 分层键:以"ECG 质量谱系"分层——至少保证每折含官方点名困难记录 1-2 条
(112/133/169/188 轮转分布),否则某些折的验证集测不出多模态能力
3. 逐折报告:gross Se / average Se / gross +P / average +P 四指标 + 四数等权总分
(口径必须与官方 bxb/sumstats 逐字节对齐,见 §6.9 指标代码)
4. 重复 3 个种子取均值±标准差;100 条样本的折间波动可观,单折数字不可引用
§5.5 外部验证建议
- 首选外部集:MIMIC-III/IV 波形衍生库(mimic3wdb / mimic3wdb-matched / mimic4wdb)——同一监护谱系、无标注,可用 2014 冠军方法产出的伪标注做半监督评估,报告"与 2014 标注协议的一致率"。
- 类型标注库:QT-Database(专家逐拍)、MIT-BIH-AFDB(节律+类型)——可验证"位置检测"与"类型检测"的解耦程度。
- 跨届迁移:cinc-2015 的 750 条公开记录(双导联 ECG+PPG/ABP)可作迁移测试床——但注意其标注是报警真伪而非拍位置,须重新标注后才可做位置评估。
- 报告规范:外部集上必须声明采样率分布与通道构成差异(2014 训练集恒 250 Hz 的口径不迁移),并给出逐通道可用率表。
外部验证的最小流程(以 MIMIC 波形库为伪标注域):
def external_validation(model, mimic_paths, cinc_detector):
"""半监督外部验证:用 2014 方法(在带标注域内已验证)给无标注域打伪标注,
再度量新模型与伪标注的一致率——报告时必须声明伪标注的溯源与局限。"""
from numpy import abs as aabs
report = []
for path in mimic_paths:
ref = cinc_detector(path) # 伪标注:2014 冠军类方法输出
pred = predict_beats(model, path) # 待验证模型输出
matched = sum(1 for r in ref
if len(pred) and aabs(pred - r).min() <= 0.150)
report.append((path, len(ref), matched / max(len(ref), 1)))
cov = sum(r[2] for r in report) / len(report)
return report, cov # 一致率≠准确率:上限受伪标注质量约束,论文措辞用 agreement
§6 AI 就绪指南
§6.0 云端快速启动
云上加载三点注意:
- 区域可达性:physionet.org/files 与 content 页对部分地区返回 403(本条目抓取时点实测);此时改用
archive.physionet.org/challenge/2014/training.zip直下(HTTP 200 实测),或用wfdb的远程读取兜底。 - wfdb 远程读取:
wfdb.rdrecord(..., pn_dir='challenge-2014')会在首次运行时下载并缓存到本地 WFDB 缓存目录(Colab 上约百余 MB),长任务建议wget/curl预取整包后本地解析,便于断点续跑。 - 整包优先:任何"整理版"镜像(Kaggle Dataset、HuggingFace 转载等)都可能动过 .hea;生产流程永远从官方整包开始,校验大小后解压(坑点 2)。
# 双通道获取路径(2026-09 实测口径)
wget https://archive.physionet.org/challenge/2014/training.zip # 118,129,353 B
wget https://archive.physionet.org/challenge/2014/set-p.tar.gz # 参考标注
unzip training.zip -d data_root/
§6.1 快速上手
# 依赖:pip install wfdb numpy
import wfdb, numpy as np
# 目录结构预期:
# data_root/ # training.zip 解压目录
# 100.hea 100.dat 100.qrs ... RECORDS
# 记录路径 = data_root/<record_name>(无扩展名)
rec = wfdb.rdrecord("data_root/100")
ann = wfdb.rdann("data_root/100", "qrs")
print(rec.fs, rec.n_sig, rec.sig_name, rec.sig_len)
# 期望(自检基线): 250 / 4~8 / 第一路含 'ECG' / ~150000(少数记录更短)
print(rec.p_signal.shape) # [sig_len, n_sig] 物理单位(wfdb 已按增益换算)
print(ann.sample[:10], ann.symbol[:10]) # 参考心拍采样点索引;symbol 恒为 'N'
# LightWAVE 网页可视化(免装环境逐条浏览波形与标注):
# https://archive.physionet.org/cgi-bin/lw/lightwave (记录名 100,注释器 qrs)
自检基线:rec.fs == 250;rec.n_sig 在 4-8 之间;rec.sig_name[0] 含 ECG 字样;len(ann.sample) 数百至上千条(平均约 1,510 拍/条)。任何一项不符,先怀疑数据包被中间转传破坏(坑点 2),回到官方整包重取。
§6.2 数据获取
| 路径 | 内容 | 状态(2026-09-26 实测) |
|---|---|---|
| archive.physionet.org/challenge/2014/training.zip | 100 条信号(+部分标注形态) | HTTP 200,118,129,353 B |
| archive.physionet.org/challenge/2014/set-p.tar.gz | challenge/2014/set-p/ 参考标注 | 存在(HTTP 200) |
| physionet.org/content/challenge-2014/1.0.0/ | 官方现行页(含增广训练集 100 条) | 当前网络 403 地区限制;镜像页 moody-challenge.physionet.org/2014/ 可访问 |
| 隐藏测试集 b/c | 300 条 | 从未公开(设计如此) |
申请流程:无。ODC-BY 1.0 开放许可,无需注册、无需签署协议;使用时署名并引用官方论文(§9.2)。
三站镜像对照与选择建议:主站(physionet.org)内容最全但受地区策略影响;归档站(archive.physionet.org)是 2014 年挑战期的原始静态站,文件结构未动,实测下载稳定,适合脚本化获取;moody-challenge 镜像站是挑战系列的新门户,主要价值在论文 PDF 与各届导航。生产管线建议:以归档站为默认源、主站为校验源(比对文件字节数),任何第三方转载一律不进管线(坑点 2)。
§6.3 预处理全流程
# 流水线:读记录 → 按通道名分组 → 质量初筛 → 拍级监督信号生成
import numpy as np, wfdb
HARD_RECORDS = {"112", "133", "169", "188"} # 官方点名困难记录(起搏器伪迹/严重噪声)
def load_record(path_noext: str):
rec = wfdb.rdrecord(path_noext)
ann = wfdb.rdann(path_noext, "qrs")
sig = rec.p_signal.astype(np.float32) # [N, C] 物理单位
names = [s.upper() for s in rec.sig_name] # 坑点 4:通道名大小写/变体要归一
return rec, sig, names, ann
def group_channels(names):
groups = {"ecg": [], "pulse": [], "resp": [], "other": []}
for i, n in enumerate(names):
if "ECG" in n: groups["ecg"].append(i)
elif n in ("ABP", "PAP", "CVP") or "PLETH" in n or "PPG" in n:
groups["pulse"].append(i)
elif "RESP" in n: groups["resp"].append(i)
else: groups["other"].append(i)
assert groups["ecg"], "第一路恒为 ECG;若未找到说明通道名异常(坑点 4)"
return groups
def quality_flags(sig, fs):
# 极简 SQI:平线(导联脱落)与饱和(削顶)通道级标记
flat = np.ptp(sig, axis=0) < 1e-3 # 峰谷过小
p95 = np.percentile(np.abs(sig), 95, axis=0)
clip = np.mean(np.abs(sig) > 0.98 * np.maximum(p95, 1e-6), axis=0) > 0.2
return flat, clip
# 逐拍监督:把参考标注转成"下一拍时间差"回归目标(多模态检测器的常见目标化方式)
def beat_targets(ann, fs, sig_len):
y = np.zeros(sig_len, dtype=np.float32)
y[ann.sample] = 1.0 # 拍位置脉冲
return y
要点:wfdb.rdrecord 返回的 p_signal 已按 .hea 增益换算为物理单位(坑点 2);通道分组必须按名组装而非按槽位(坑点 4);质量标记是自检信号,不要用它"清洗掉"考题——ECG 失效段正是任务本体。
§6.4 PyTorch DataLoader(完整可运行)
# pip install torch wfdb numpy
import torch, numpy as np, wfdb
from torch.utils.data import Dataset, DataLoader
WIN_SEC, FS = 10.0, 250 # 训练窗 10 秒;坑点 6:测试集 fs 会变,务必按 fs 归一
class CinC2014Dataset(Dataset):
"""多通道心拍检测:变通道集合 → 固定槽位 + 通道掩码"""
SLOTS = ["ecg0", "ecg1", "abp", "pleth", "resp", "other"]
def __init__(self, record_paths):
self.paths = record_paths
def __len__(self): return len(self.paths)
def _slot(self, sig, names, groups, key, ch_idx):
if not ch_idx: return None
return sig[:, ch_idx[0]]
def __getitem__(self, i):
path = self.paths[i]
rec, sig, names, ann = None, None, None, None
rec = wfdb.rdrecord(path)
sig = rec.p_signal.astype(np.float32)
names = [s.upper() for s in rec.sig_name]
ann = wfdb.rdann(path, "qrs")
fs = float(rec.fs)
g = {"ecg": [i for i, n in enumerate(names) if "ECG" in n],
"abp": [i for i, n in enumerate(names) if n in ("ABP", "PAP", "CVP")],
"pleth": [i for i, n in enumerate(names) if "PLETH" in n or "PPG" in n],
"resp": [i for i, n in enumerate(names) if "RESP" in n],
"other": [i for i, n in enumerate(names) if i not in
set(range(len(names))) -
({i for i, n in enumerate(names) if "ECG" in n} |
{i for i, n in enumerate(names) if n in ("ABP", "PAP", "CVP")} |
{i for i, n in enumerate(names) if "PLETH" in n or "PPG" in n} |
{i for i, n in enumerate(names) if "RESP" in n})]}
# 统一重采样到 FS(训练集本就是 250 Hz;从测试域迁移时该步不可省,坑点 6)
L = int(WIN_SEC * FS)
if rec.sig_len < L:
sig = np.pad(sig, ((0, L - rec.sig_len), (0, 0)))
else:
sig = sig[:L]
beats = ann.sample[ann.sample < L].astype(np.int64)
x = np.zeros((len(self.SLOTS), L), dtype=np.float32)
mask = np.zeros(len(self.SLOTS), dtype=np.float32)
for slot, key in zip(self.SLOTS, ["ecg", "ecg", "abp", "pleth", "resp", "other"]):
idx = [j for j in g[key] if j < sig.shape[1]]
if not idx: continue
j = g[key][0] if slot == "ecg0" else (g["ecg"][1] if slot == "ecg1" and len(g["ecg"]) > 1 else (g[key][0] if key != "ecg" else -1))
if j is None or j < 0: continue
x[self.SLOTS.index(slot)] = sig[:, j]
mask[self.SLOTS.index(slot)] = 1.0
label = np.zeros(L, dtype=np.float32)
label[beats] = 1.0
return torch.from_numpy(x), torch.from_numpy(mask), torch.from_numpy(label), torch.tensor(fs)
if __name__ == "__main__":
import glob, os
paths = sorted(p[:-4] for p in glob.glob("data_root/*.hea"))
paths = [p for p in paths if os.path.exists(p + ".qrs")]
ds = CinC2014Dataset(paths)
dl = DataLoader(ds, batch_size=4, shuffle=True, num_workers=2)
for x, m, y, fs in dl:
print(x.shape, m.mean(dim=0), int(y.sum(1)[0]), fs.tolist())
break
要点:固定槽位 + 掩码是处理"4-8 变通道"的最低成本方案(坑点 4);若第二路 ECG 不存在,ecg1 槽位掩码为 0,模型侧用 x * mask.unsqueeze(-1) 屏蔽;拍标签 label 用于逐点分类 + 峰检测解码(§6.7 模型推荐)。
配套的多模态检测模型与训练循环(与上例 DataLoader 直接衔接):
import torch, torch.nn as nn
class MultiModalBeatNet(nn.Module):
"""固定槽位 + 通道掩码的 1D CNN 逐点分类器(教学级实现)"""
def __init__(self, n_slots=6, width=32):
super().__init__()
def blk(cin, cout):
return nn.Sequential(
nn.Conv1d(cin, cout, 15, padding=7), nn.BatchNorm1d(cout),
nn.ReLU(), nn.MaxPool1d(4)) # 250 Hz → 62.5 Hz → 15.6 Hz
self.stem = blk(1, width) # 每个可用通道独立编码
self.enc = nn.Sequential(
nn.Conv1d(width, width * 2, 7, padding=3), nn.BatchNorm1d(width * 2),
nn.ReLU(), nn.MaxPool1d(4), # → 3.9 Hz
nn.Conv1d(width * 2, width * 2, 5, padding=2), nn.BatchNorm1d(width * 2),
nn.ReLU(),
nn.Upsample(scale_factor=16, mode="nearest"),
nn.Conv1d(width * 2, width, 7, padding=3), nn.ReLU())
self.head = nn.Conv1d(width, 1, 1) # 逐点拍概率(logits)
def forward(self, x, mask): # x [B, S, L] mask [B, S]
B, S, L = x.shape
feats, valid = [], []
for s in range(S):
m = (mask[:, s] > 0)
if m.any():
f = self.stem(x[m, s:s + 1]) # [n_m, w, L/4]
feats.append(self.enc(f)); valid.append((m, s))
if not feats: # 无任何可用通道(不应发生)
return torch.zeros(B, 1, L, device=x.device)
Lf = min(f.shape[-1] for f in feats)
out = torch.zeros(B, feats[0].shape[1], Lf, device=x.device)
for m, _ in valid:
pass
# 可用通道特征求和(等权融合;进阶做法:跨通道注意力 + 一致性损失)
acc = torch.zeros(B, feats[0].shape[1], Lf, device=x.device)
cnt = torch.zeros(B, 1, 1, device=x.device)
idx_map = torch.zeros(B, dtype=torch.long, device=x.device)
for i, (m, s) in enumerate(valid):
f = feats[i][..., :Lf]
acc[m] += f; cnt[m] += 1.0
fused = acc / cnt.clamp(min=1.0)
logits = self.head(fused) # [B, 1, Lf]
return torch.nn.functional.interpolate(
logits, size=L, mode="linear", align_corners=False)
def train_one_epoch(model, loader, opt, device):
model.train()
pos_w = torch.tensor([80.0], device=device) # 拍点稀疏(约 2.5 拍/秒),加权 BCE
lossf = nn.BCEWithLogitsLoss(pos_weight=pos_w)
for x, m, y, fs in loader:
x, m, y = x.to(device), m.to(device), y.to(device)
opt.zero_grad()
logits = model(x, m).squeeze(1)
loss = lossf(logits, y)
loss.backward(); opt.step()
训练要点:拍点仅占 ~0.17% 采样点,pos_weight 加权或 Dice/Focal 损失二选一;验证时对概率曲线做峰检测(找局部极大 + 最小间隔 200 ms)得到拍位置,再送 §6.9 评分器。跨通道一致性可作为辅助损失(对 ECG 与脉搏通道的拍概率曲线做相关性正则)——这正是冠军方案"多检测器投票"的可学习化版本。
§6.5 坑点 8 个(本数据集真实特有失败模式)
坑点 1:任务口径张冠李戴。任务简报与部分二手资料把本数据集写成"心率与节律检测"(Robust Detection of Heart Rate and Rhythm from Multichannel Electrocardiograms)——官方标题是心拍(heart beats)检测、多模态(Multimodal Data)。若按"节律分类"设计标签管线,全盘皆错:本集唯一标签是拍位置,类型一律 N。写论文时引用官方标题原文,勿引二手转述。
坑点 2:第三方镜像破坏 .hea。.hea 的增益(gain)、基线(baseline)、ADC 范围逐字节影响 p_signal 换算;任何"整理版"重新编码、改名、丢字段,都会让波形值静默错乱(常见症状:幅度小 200 倍或全部为负)。只用官方整包;加载后跑 §6.1 自检基线;跨机房搬运用官方 zip 的字节数(118,129,353)核对。
坑点 3:测试集三口径。原始 Phase III 测试集 300 条 → 2015-01 其中 100 条转公开(增广训练集)→ 2015 评分改用 200 条修订集。三条铁律:(a) 引用赛果必须注明口径(Pangerc 93.64 是修订集口径;Vollmer 93.2 是 Phase I 100 条口径,两者不可比);(b) 增广 100 条见过赛题,与原始赛果对齐时属于"污染";© 论文若声明"对齐官方评分",必须写明 bxb 版本与匹配参数(-f 0、150 ms、最近邻)。
坑点 4:通道集合不固定。每条 4-8 通道且集合不同:双 ECG 时命名 ECG0/ECG1 而非同名重复;官方 FAQ 明言测试集可能存在标错名的通道(“misabeled … it’s the real world!”)。固定 8 槽位补零会让模型把"槽位"当"模态",泛化崩溃。正确做法:按名分组 + 槽位掩码(§6.4)+ 对 unknown 通道做可选利用(冠军方案多有一致性投票机制吸收 unknown 通道)。
坑点 5:脉搏通道的时间延迟。参考标注对齐 ECG 上的 QRS,而 ABP/PPG 搏动相对 QRS 存在 100-300 ms 量级的脉搏传导延迟(>150 ms 匹配窗)。直接"检测脉搏波峰当心拍"会系统性错位、全盘漏配。必须为每个脉搏通道学习/校正回推延迟(挑战 FAQ 点名的隐藏考点);跨通道融合时以 ECG 时间轴为公共基准。
坑点 6:采样率双轨。训练集统一 250 Hz,测试集 120-1000 Hz 逐记录异频(官方设计:防"按采样点调参")。所有毫秒级参数(窗宽、容差、延迟)必须以秒为单位配置、按 fs 折算;wfdb.setsampfreq 强制重采样是官方给出的备选路径(xform 应用),但首选"读 fs 归一",避免重采样噪声。
延迟回推的量化示例(坑点 5 的最小实现思路):
def calibrate_pulse_delay(pulse_peaks, ecg_beats, max_delay=0.5):
"""用同时段可观测的 ECG 拍与脉搏峰配对,估计该记录的平均传导延迟(秒)。
评估与输出时:predict_pulse_beat_time - delay ≈ QRS 时刻。"""
delays = []
for p in pulse_peaks:
cand = ecg_beats[(ecg_beats <= p) & (ecg_beats > p - max_delay)]
if len(cand):
delays.append(p - cand[-1]) # 最近一次心搏导致的脉峰
return float(np.median(delays)) if delays else 0.0
# 注意:逐记录校准(患者与传感器位置决定延迟),勿跨记录共享该参数。
坑点 7:无学习期与短记录。评分从记录第一拍起算(bxb -f 0),开头漏拍与中段漏拍同罚;且存在短记录(训练集 116 仅 1 分 49 秒,测试集亦有短记录)。"前 N 秒热身不输出"的工程惯例在本赛题直接掉分——检测器须冷启动即可用;批处理须容忍变长记录。
坑点 8:标注是位置不是分类,且含 imputed 推定拍。其一,标签恒 N,任何"检测+分型"报告在本集上无据可依(46 个原始异常拍已合并);其二,ECG 长段失效处的参考拍是专家依据其他通道推定的——若你的评估只统计 ECG 可见拍,数字会虚高;严格对齐官方 bxb 全拍口径。另有 1 FP/失败记录 的评分规则(§5.3):任何一条记录崩溃都会拖垮 average 指标,工程上优先保证全记录可运行(超时记录按全 FN 计,坑点 3 的时限口径同样适用)。
§6.6 数据增强(安全 ✅ / 危险 ❌)
| 增强 | 判定 | 说明 |
|---|---|---|
| 高斯/工频噪声注入 ECG | ✅ 安全 | 模拟监护噪声;但不要把信噪比降到把 ABP 也淹没 |
| 随机置零/劣化 ECG 通道 | ✅ 安全(核心增强) | 强迫模型用脉搏/呼吸通道——正是赛题本体 |
| 时间缩放(±5%) | ✅ 安全 | 模拟心率波动;注意拍标签同步缩放 |
| 通道 dropout | ✅ 安全 | 配合掩码机制(坑点 4) |
| 幅度缩放/基线漂移 | ✅ 安全 | .hea 换算后的物理单位空间内进行 |
| 随机平移拍标签 | ❌ 危险 | 位置就是标签,平移标签=制造错误监督 |
| 跨通道混叠(ECG 加进 PPG 槽) | ❌ 危险 | 破坏模态语义;通道名虽可能标错(坑点 4),但合成假错会污染一致性学习 |
| 重采样到任意 fs 后不做标签折算 | ❌ 危险 | 坑点 6:标签索引必须同步按比例换算 |
§6.7 模型推荐
| 路线 | 代表 | 适用 | 参考锚点 |
|---|---|---|---|
| 经典信号处理 | gqrs(官方样例)、wabp、多检测器逐通道+投票 | 基线/工程兜底 | gqrs 是官方基线;Top5 多为"经典检测器 + 一致性投票 + 质量加权"结构 |
| 1D CNN + 逐点分类 | U-Net/TCN 型 | 主流深度学习路线 | 输出拍概率脉冲,峰检测解码(§6.4 label 设计) |
| 多模态融合 | 跨通道注意力 / 门控融合 | 本赛题正解方向 | 通道掩码 + 一致性损失(跨通道拍位置互核) |
| 区间估计 | RR 间期回归 + 节律外推 | ECG 全失效段 | Phase III 冠军 Johnson 的公开方案即"beat-to-beat interval estimation"思路(Physiol Meas 36(8) 专刊) |
冠军方案共性骨架(由各阶段 Top5 公开代码与专刊论文归纳):
┌ 每通道独立检测器(ECG: gqrs/wqrs 类; ABP: wabp 类; PPG: 搏动谷/峰检测)
│ ↓ 各通道输出各自的"候选拍"序列(含通道延迟)
├ 延迟校正层:把各通道候选拍回推到 ECG 时间轴(坑点 5)
│ ↓
├ 通道质量加权:按 SQI(方差/信噪比/平线占比)给通道分配权重
│ ↓
├ 跨通道投票/融合:时间窗内多通道一致 → 确认拍;孤证 → 降权或丢弃
│ ↓
└ 节律连续性外推:ECG 全失效段用 RR 序列模型 + 呼吸耦合先验推定拍
(Phase III 冠军 Johnson 的 beat-to-beat interval estimation 即此路线)
选型建议:先复现"多检测器+投票"拿到 85+ 的量级锚点,再上融合网络攻 ECG 失效段——赛题的分水岭在困难记录(112/133/169/188)而非常规记录。
§6.8 硬件需求
- 数据本体仅约 113 MB,全库内存态处理无压力;官方测试环境仅为双核 CPU + 2 GB RAM(2014 年口径),本数据集无 GPU 也可全流程复现经典方法。
- 深度学习路线:单张消费级 GPU 即可(1D 信号、百条记录量级);瓶颈在交叉验证轮次而非算力。
- 时限参照:官方样例 gqrs 处理一条 10 分钟记录约 35 ms;自研方法慢 2-3 个数量级仍绰绰有余——别为速度牺牲准确率(坑点 7 的冷启动要求除外)。
三档配置参考:
| 配置 | 适用 | 说明 |
|---|---|---|
| 纯 CPU / 8 GB | 经典检测器复现、评分器对拍、全库统计 | 官方评测环境本身就是双核 2 GB(2014 年),无任何算力门槛 |
| 单卡消费级 GPU | 1D CNN/融合网络训练(§6.4 路线) | 100 条记录 × 5 折 CV,小时级完成一轮 |
| 多卡/集群 | 不需要 | 唯一例外:在 MIMIC 波形库上做大规模预训练(§5.5),属外部扩容而非本集任务 |
§6.9 评估指标代码
# 官方评分的 Python 对齐实现(教学口径;投稿请以 WFDB bxb/sumstats 为最终裁判)
def cinc2014_score(ref_by_rec, test_by_rec, tol_ms=150.0):
"""ref_by_rec/test_by_rec: {record_name: np.ndarray of beat times in seconds}
返回 (gross_Se, average_Se, gross_P, average_P, overall)
匹配规则对齐官方:容差 ±tol_ms 内且为最近邻;无学习期(从第一拍起)。"""
TP_g = FN_g = FP_g = 0
Se_l, P_l = [], []
for rec in sorted(ref_by_rec):
ref = np.sort(np.asarray(ref_by_rec[rec], dtype=float))
tst = np.sort(np.asarray(test_by_rec.get(rec, np.array([])), dtype=float))
used = np.zeros(len(tst), dtype=bool)
tp = 0
for r in ref:
cand = np.where(~used & (np.abs(tst - r) <= tol_ms / 1000.0))[0]
if len(cand):
j = cand[np.argmin(np.abs(tst[cand] - r))]
used[j] = True; tp += 1
fn = len(ref) - tp
fp = len(tst) - used.sum()
TP_g += tp; FN_g += fn; FP_g += fp
Se_l.append(100.0 * tp / len(ref) if len(ref) else 0.0)
P_l.append(100.0 * tp / (tp + fp) if (tp + fp) else 0.0)
g_se = 100.0 * TP_g / (TP_g + FN_g)
g_p = 100.0 * TP_g / (TP_g + FP_g)
a_se = float(np.mean(Se_l)); a_p = float(np.mean(P_l))
return g_se, a_se, g_p, a_p, (g_se + a_se + g_p + a_p) / 4.0
注意三点口径:(1) 匹配窗 ±150 ms 且最近邻——仅容差不最近邻会重复匹配;(2) 无学习期,从第一拍开始比;(3) 失败/超时记录按"1 条不匹配标注"计(每参考拍 1 FN + 总 1 FP,该记录 Se/+P 均 0)——想复现官方 average 口径必须实现这条替换规则。最终投稿以 WFDB bxb -f 0 + sumstats 为准。
配套的逐记录报表输出(对齐"average 指标对单记录失败敏感"的排查需求):
def per_record_report(ref_by_rec, test_by_rec, tol_ms=150.0):
"""逐记录 Se/+P 报表:快速定位拖垮 average 指标的记录。
返回按 Se 升序的 (record, n_ref, n_test, Se, +P) 列表。"""
rows = []
for rec in sorted(ref_by_rec):
ref = np.sort(np.asarray(ref_by_rec[rec], dtype=float))
tst = np.sort(np.asarray(test_by_rec.get(rec, np.array([])), dtype=float))
used = np.zeros(len(tst), dtype=bool); tp = 0
for r in ref:
cand = np.where(~used & (np.abs(tst - r) <= tol_ms / 1000.0))[0]
if len(cand):
j = cand[np.argmin(np.abs(tst[cand] - r))]
used[j] = True; tp += 1
fp = int((~used).sum()); fn = len(ref) - tp
se = 100.0 * tp / len(ref) if len(ref) else 0.0
p = 100.0 * tp / (tp + fp) if (tp + fp) else 0.0
rows.append((rec, len(ref), len(tst), se, p))
return sorted(rows, key=lambda r: r[3])
# 用法:rows = per_record_report(ref, tst)
# 首行即最差记录——若 n_test 极小(如 1 条),先查是否超时/崩溃(坑点 8 的替换规则触发)。
§6.10 MLOps 笔记
- 数据版本:以"训练集版本"(初始 100 条 / 增广 200 条)为数据集版本号,写入实验跟踪系统;跨口径比较是本数据集最高频的翻车点(坑点 3)。
- 评分一致性 CI:把 §6.9 评分器与 WFDB bxb 对拍(同一批注释双跑,差值应为 0),作为 CI 固定用例——评分器漂移比模型退步更隐蔽。
- 随机种子:100 条记录的 5 折 CV 折间方差可观,报告均值±标准差并固定折分配种子;困难记录轮转分布(§5.4)写入折切分单测。
- 制品管理:模型制品绑定"通道槽位表 + 槽位掩码语义"版本(坑点 4);升级通道语义等于换模型。
- 监控:线上运行时按记录监控"全记录 Se/+P 而非仅均值"——单记录崩溃(超时/异常)在 average 口径下会被均值稀释,须单独告警。
def runtime_monitor(per_record_rows, se_floor=60.0):
"""线上守护:逐记录报表(§6.9 per_record_report)接进来,
任何记录 Se 低于地板值或测试注释数异常(=1,触发替换规则)即告警。"""
alerts = []
for rec, n_ref, n_test, se, p in per_record_rows:
if se < se_floor:
alerts.append(f"[LOW-SE] {rec}: Se={se:.1f} (n_ref={n_ref}, n_test={n_test})")
if n_test <= 1:
alerts.append(f"[DEGENERATE] {rec}: 输出近似空,疑似超时/崩溃(坑点 8 替换规则)")
return alerts
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚 | 机制 | 影响 | 缓解 |
|---|---|---|---|
| 监护场景偏倚 | 记录全部来自床旁监护仪(患者+志愿者),无动态/可穿戴数据 | 模型迁移到 Holter、手表 PPG 场景会失配 | 外部验证用可穿戴数据集;勿声称"通用心拍检测" |
| 通道构成偏倚 | 4-8 通道集合逐记录不同,第一路恒 ECG | 固定槽位模型学到"槽位先验"而非模态语义 | 按名分组+掩码(坑点 4) |
| 训练/测试采样率偏倚 | 训练恒 250 Hz,测试 120-1000 Hz | 按采样点调参的方法在测试集静默失效 | 以秒为单位配置时间参数(坑点 6) |
| 小样本偏倚 | 公开训练集仅 100 条 | 深度模型易过拟合;折间方差大 | 记录级 5 折 CV+多种子(§5.4);或外部扩容(§5.5) |
| 困难记录集中度 | 官方点名 4 条困难记录 | 单条记录的失败对 average 指标杠杆极大 | 全记录可运行优先(坑点 8) |
| 标注不可知性 | 无类型标签、ECG 失效段为推定拍 | 评估口径若只统计可见拍会虚高 | 严格全拍口径(坑点 8) |
§7.2 标注质量
- 优点:检测器初标保证全库一致性起点;专家逐例目视复核(增/删/重定位)覆盖全部记录;标注哲学公开(质心法、无统一 fiducial、多数意见)——比许多"黑箱标注"库透明得多。
- 局限:官方未发布标注者人数、资质与标注者间一致性统计;imputed 推定拍的"真值"本质上不可验证(ECG 都看不见了);±150 ms 容差是对标注不确定性的制度化承认,用户不应把它解读为"标注粗"。
复核操作的三种类型(官方 FAQ 明示)——理解它们对评估口径的意义:
| 操作 | 发生场景 | 对评估的影响 |
|---|---|---|
| 重定位(reposition) | 检测器质心与专家判读的 QRS 位置分歧 | 位置语义以专家为准;形态匹配器不应假设标注点在 R 峰 |
| 删除(removal) | 初标把伪迹/T 波误判为心拍 | 若你的算法检出这些"拍",会被计 FP——对齐专家才有分 |
| 增补(addition) | ECG 严重噪声/缺失段的 imputed 推定拍 | 只看 ECG 的方法在该段天然不可达(坑点 8 的核心) |
§7.3 泛化性
- 同域内(监护波形、成人):冠军方法在 2015 修订集与后续 Sandbox 评分中稳定复现 90+ 分数线,说明同域泛化良好。
- 跨域:向可穿戴 PPG(运动伪影谱不同)、院前急救(采样率与设备差异)、儿科(心率范围不同)迁移时须重校准——尤其延迟校正参数(坑点 5)与心率范围先验。
- 时间外推:数据源自 MIMIC-II 波形库时代,监护设备代际差异对波形形态有影响;上 MIMIC-IV 波形(mimic4wdb)时建议先跑质量分层评估。
泛化失败的三种典型症状与排查顺序:
| 症状 | 最可能原因 | 排查顺序 |
|---|---|---|
| 测试域分数骤降但训练域正常 | 采样率参数未按 fs 归一(坑点 6)或通道槽位语义漂移(坑点 4) | ① 逐记录 fs/通道清单 ② 时间参数单位审计 |
| average Se 远低于 gross Se | 个别记录崩溃触发替换规则(坑点 8) | 跑 §6.9 per_record_report 看最差记录 |
| ECG 失效段全漏、其余满分 | 缺少多模态融合或延迟未校正(坑点 5) | 对困难记录(112/133/169/188)做通道贡献消融 |
§7.4 伦理
- 记录经去标识化处理(匿名片段,无日期、无人口学、无结局);ODC-BY 1.0 开放许可下官方认定可自由分发。
- 无再识别渠道:10 分钟波形片段+无元数据,官方未提供任何患者索引;使用者不得尝试跨库拼接再识别(如与 MIMIC 临床库做波形-病历对齐须走各库自己的许可流程)。
- 患者群体未单独知情同意挑战赛用途,依赖 MIMIC-II 波形库的既有豁免框架——引用时注明数据谱系(§3.10)。
§7.5 公平性
- 官方未披露人群构成(性别/年龄/种族),无法评估数据公平性——如实记录;推断即编造。
- 参赛公平性设计值得引用:每阶段 5 份提交上限、隐藏测试防调参、Sandbox 试跑(DRYRUN)不计次、非自由代码不授奖、禁止多账号刷提交——2014 年这套反作弊规则被后续挑战赛沿用。
- 模型公平性:使用者若将模型部署到真实监护,应自行评估跨人群(尤其肤色对 PPG 的影响)表现——本数据集无法支持该评估。
§7.6 数据漂移
- 数据是冻结的历史片段(v1.0.0,2014 年发布后未再改动数据内容;2015 年只是增补公开记录),不存在时序漂移问题。
- 存在"版本漂移"而非"数据漂移":测试集口径三变(坑点 3)——漂移发生在评分协议层,复现时对齐协议比监控数据分布更重要。
- 若在 MIMIC 波形库上持续训练(§5.5 外部扩容),监护设备代际与科室构成变化才是真正的漂移源,需按年代分层监控。
§7.7 DAIMS 24 项评估
| # | 维度 | 评分(1-5) | 说明 |
|---|---|---|---|
| 1 | 可获取性 | 5 | ODC-BY 1.0,无注册无协议,archive 站直链实测可下 |
| 2 | 许可明确度 | 5 | 数据 ODC-BY 1.0;论文集 CC BY 3.0;边界清晰 |
| 3 | 格式标准化 | 5 | WFDB 行业标准,生态完整(bxb/sumstats/LightWAVE/wfdb 包) |
| 4 | 文档完备度 | 4 | 官方页+FAQ 极详尽;但设备品牌与医院清单缺失 |
| 5 | 标注质量 | 4 | 检测器+专家复核;缺一致性统计与标注者人数 |
| 6 | 标注类型丰富度 | 2 | 仅拍位置,恒 N;无类型/形态/质量标签 |
| 7 | 样本量 | 2 | 公开 100 条(增广后 200 条);深度学习小样本 |
| 8 | 数据多样性 | 3 | 人群谱系宽(患者+志愿者)但全为床旁监护域 |
| 9 | 患者级元数据 | 1 | 无人口学、无诊断、无结局、无采集时间 |
| 10 | 时间戳完整性 | 1 | 无绝对时间;仅片段内相对时间 |
| 11 | 信号质量谱系 | 5 | 从完好到失效全覆盖,刻意保留困难样本——本赛题核心价值 |
| 12 | 多模态性 | 5 | ECG+血压+脉搏+呼吸+神经信号,真实同步记录 |
| 13 | 通道一致性 | 2 | 4-8 通道集合逐记录不同,须自适应管线 |
| 14 | 采样率一致性 | 3 | 训练集统一 250 Hz 但测试集 120-1000 Hz(设计性异频) |
| 15 | 可复现性基础设施 | 5 | 隐藏测试集永久保存+bxb/sumstats+Sandbox 长期开放,同行罕见的可复现性设计 |
| 16 | 基线可得性 | 5 | 官方样例 gqrs(C 与 Octave 双版本)源码可得 |
| 17 | 排行榜可比性 | 3 | 各阶段/各版本分数齐全但口径必须显式对齐(坑点 3) |
| 18 | 社区活跃度 | 4 | CinC 系列旗舰届之一;专刊+后续研究持续引用 |
| 19 | 引用便利性 | 5 | 官方论文/综述/资源三件套 BibTeX 齐备(§9.2) |
| 20 | 伦理合规 | 4 | 去标识+开放许可框架成熟;再识别防护依赖使用者自律 |
| 21 | 公平性可评估性 | 1 | 无人群元数据,无法做公平性审计 |
| 22 | 计算门槛 | 5 | 113 MB、CPU 即可复现基线;教学友好 |
| 23 | 迁移桥梁 | 4 | 向 MIMIC 波形库、后续 CinC 各届的方法迁移路径清晰 |
| 24 | 长期维护 | 4 | 官方页维护至 2016 年(FAQ),归档站+镜像站双保险;数据内容恒定 |
DAIMS 总评:22.6/30 的核心短板集中在"标注类型"与"患者元数据"——这是隐私优先设计的一体两面,而非维护缺陷。作为多模态心拍定位任务基准,其格式、评分基础设施与信号质量谱系均为教科书级。
低分项的使用者视角解读:DAIMS 中评 1-2 分的五个维度(#6 标注类型、#7 样本量、#9 患者元数据、#10 时间戳、#21 公平性)不是"缺陷清单"而是"边界声明"——它们定义了本集不能被用来做什么:不能做心律失常分型、不能做人群亚组统计、不能做时间趋势分析、不能做公平性审计。反过来,评 5 分的八个维度(#1/2/3/11/12/15/16/22)恰好覆盖了"跑通一个可复现基准"的全部要素——把边界记牢、把优势用满,是使用本集的正确姿势。
§7.8 外部验证矩阵
| 外部集 | 与本集关系 | 可验证什么 | 注意 |
|---|---|---|---|
| mimic3wdb / mimic3wdb-matched | 同谱系(MIMIC-II/III 波形) | 方法上量后的检出率/伪标一致率 | 无参考拍标注,须用标注器伪标注或人工抽检 |
| mimic4wdb | MIMIC-IV 波形 | 跨代际设备漂移下的稳定性 | 采样率与通道构成差异分层报告 |
| QT-Database | 专家逐拍 ECG 标注库 | 纯 ECG 检测精度上限 | 单/双导联,无多模态 |
| MIT-BIH-AFDB | 节律+类型标注 | 房颤段检测鲁棒性 | 类型信息本集没有,勿混口径 |
| cinc-2015 公开集 | 同为"ECG 不可靠"设计哲学 | 多模态方法跨届迁移 | 任务不同(事件分类 vs 拍定位),须重标注 |
| 增广训练集 100 条 | 原测试集成员 | 对 2014 赛题的"见过题"评估 | 不得混入训练集后再声称对齐原始赛果(坑点 3) |
§8 基准性能与生态
§8.1 排行榜(官方各阶段 Top5)
| 排名 | Phase I(100 条,2014-04-17) | Phase II(200 条,2014-06-25) | Phase III(300 条,2014-09-09) | 最终(修订 200 条,2015-04-15) |
|---|---|---|---|---|
| 1 | Marcus Vollmer 93.2 | Thomas De Cooman 86.2 | Alistair Johnson 87.9 | Urska Pangerc 93.64 |
| 2 | Urska Pangerc 89.2 | Marcus Vollmer 86.1 | Teo Soo-Kng 86.7 | Alistair Johnson 91.50 |
| 3 | Lars Johannesen 88.9 | Urska Pangerc 85.2 | Thomas De Cooman 86.6 | Sachin Vernekar 90.97 |
| 4 | Quan Ding 88.9 | Filip Plesinger 85.0 | Jan Gierałtowski 86.4 | Christoph Hoog Antink 90.70 |
| 5 | Teo Soo-Kng 88.7 | Alistair Johnson 84.6 | Marcus Vollmer 86.2 | Abid Rahman 90.16 |
阅读要点:Phase II 全体分数回落 3-8 分(测试集扩容且变难);Phase III 只有小幅回升(参赛者已吸收 Phase II 难度);最终榜(follow-up 通道,修订集口径)由 Pangerc 以 93.64 封顶。四列数字分属三套测试集口径,不可横向排序(坑点 3)。Phase I 曾有多个高分提交因违规被取消资格,官方在 FAQ 中留有说明。
榜单人物的后续轨迹(站内互链线索):Phase III 冠军 Alistair Johnson 此后长期活跃于 PhysioNet 生态(2015 届获奖者之一、MIMIC 代码库贡献者、后续挑战论文共同作者);Antink、Plesinger、Gierałtowski、Vollmer 等名字都在 2015 专刊(§8.5 论文 3-5)中继续出现——一个赛题把同一批人留在了一个方法学社区里五年,这本身就是数据集生命力的注脚。官方页至今保留各阶段前五名源码的公开链接,复现者可逐行对照。
§8.2 SOTA 总结与选型建议
- 赛后天花板:93.64(Pangerc)——多模态融合路线在修订测试集上的公开最高分;PMC 综述确认 top3(93.64/91.50/90.70)截至 2015-03 无变化。
- 技术谱系:Top5 方案共享"多检测器逐通道并行 + 跨通道一致性投票/加权 + 节律连续性外推"的骨架;冠军级差异集中在 ECG 全失效段的推定策略(坑点 5/8)。
- 选型建议:(a) 追求复现锚点→先跑 gqrs 官方样例(基线)与多检测器投票(85-88 区间);(b) 追求科研增量→专注困难记录的 ECG 失效段与 unknown 通道利用;© 追求工程部署→投票式多检测器+延迟校正可解释性强、可审计,至今仍是监护产品主流形态。
三套分数曲线的读法:Phase I→II 的集体回落(93.2→86 区间)说明新增 100 条测试记录"难度密度"更高——它们被刻意遴选来拉开算法鲁棒性差距;Phase II→III 的小幅回升说明参赛者快速吸收了新难度模式;最终榜的 93.64 反超则来自 follow-up 通道的长期打磨与修订测试集(去掉 100 条已公开记录)的口径变化。给后人的启示:赛题的剩余空间集中在 ECG 失效段——常规记录各队都已接近满分。
§8.3 评测协议
- 输入:官方分发格式的 .dat/.hea;输出:
.qrs注释(注释名qrs,时间有序)。 - 匹配:WFDB
bxb -f 0,±150 ms 最近邻;统计 TP/FN/FP。 - 汇总:
sumstats输出 gross/average Se 与 +P;overall = 四数等权平均。 - 失败处理:超时(历史口径 40 s/条;2015 起为 6×10^10 CPU 指令/条)或崩溃的记录以 1 条不匹配标注替代——Se/+P 归零进 average。
- 环境(历史):Debian 7.3、双核 2 GB、无网络、WFDB 预装;现代复现无需模拟该环境,但时限意识仍适用于嵌入式部署场景。
- 验证机制:参赛者提交自跑标注(set-p)与测试环境重跑结果逐字节比对,防作弊;自评时对拍此机制可发现不可复现的随机性。
- 报告最低集:{测试集口径, bxb 版本与参数, 每记录时限口径, 失败记录替换规则} 四项缺一不可——缺任何一项,分数都无法与他文对齐(坑点 3 的完整版)。
§8.4 相关数据集
| 数据集 | slug | 关系 | 一句话差异 |
|---|---|---|---|
| CinC 2012 | cinc-2012 | 同系列第 13 届 | 死亡预测(MIMIC-II 临床时序),非波形任务 |
| CinC 2013 | cinc-2013 | 同系列第 14 届 | 胎儿 FECG 提取,单模态定位任务,与本集任务形态最接近 |
| CinC 2015 | cinc-2015 | 同系列第 16 届 | ICU 报警真伪二分类,共享"多参数+ECG 不可靠"哲学 |
| CinC 2016 | physionet-cinc-2016 | 同系列第 17 届 | 心音分类,转音频模态 |
| CinC 2017 | PhysioNet-CinC-2017 | 同系列第 18 届 | 单导联心律失常分类(AFIB 类),分类任务 |
| MIMIC 波形库 | mimic3wdb / mimic3wdb-matched / mimic4wdb | 数据源头谱系 | 本集记录即其时代产物;外部扩容首选 |
| QT-Database | QT-Database | 标注方法学前身 | 专家逐拍 ECG 标注的范式模板 |
| MIT-BIH-AFDB | MIT-BIH-AFDB | 类型标注互补 | 需要心拍类型/节律标签时转此库 |
| Apnea-ECG | apnea-ecg | 同系列 2000 届 | 单导联整夜记录,事件级(每分钟)标注 |
| CODE-15% / ptbxl 系 | CODE-15% 等 | 大规模 ECG 现代基准 | 训练域扩容候选;注意其标准 12 导联与本集监护配置差异 |
| Chapman-Shaoxing | Chapman-Shaoxing | 大规模 12 导联 ECG | 同上,扩容时的域差异控制点 |
互链导航:本条目是站内 PhysioNet/CinC 挑战系列(cinc-2012 → cinc-2023)时间轴的中间节点——上游 cinc-2013(同为定位任务)承接信号处理范式,下游 cinc-2015(报警抑制)承接临床场景;波形数据谱系则汇入 mimic3wdb/mimic4wdb。系列内跳转阅读可按"任务形态"(定位/分类/决策)或"数据谱系"(MIMIC 波形→独立采集)两条线索展开。
§8.5 关键论文 Top 10
- Moody G, Moody B, Silva I. Robust Detection of Heart Beats in Multimodal Data: The PhysioNet/Computing in Cardiology Challenge 2014. Comput Cardiol 2014;41:549-552——挑战官方论文。
- Silva I, Moody B, Behar J, Johnson A, Oster J, Clifford GD, Moody GB. Robust detection of heart beats in multimodal data. Physiol Meas 2015;36(8):1629(PMID 26217894 / PMCID PMC4668947)——总结综述+评分框架声明,引用首选。
- Plesinger F, et al. Robust detection of heart beats in multimodal records using slope- and peak-sensitive band-pass filters. Physiol Meas 2015;36(8):1645-64(PMID 26217963)——Phase II/III 常胜方案的方法论文。
- Detection of heart beats in multimodal data: a robust beat-to-beat interval estimation approach. Physiol Meas 2015;36(8):1679-90(PMID 26218172)——节律外推路线(ECG 失效段核心思路)。
- Robust algorithm to locate heart beats from multiple physiological waveforms by individual signal detector voting. Physiol Meas 2015;36(8):1705-16(PMID 26218439)——多检测器投票路线。
- Heart beat detection using a multimodal data coupling method. Physiol Meas 2015;36(8):1729-42(PMID 26218667)——多模态耦合路线。
- Antink CH, Brüser C, Leonhardt S. Multimodal sensor fusion of cardiac signals via blind deconvolution: a source-filter approach. Comput Cardiol 2014:805-808——最终榜第 4 名的方法源头。
- Aboukhalil A, Nielsen L, Saeed M, Mark RG, Clifford GD. Reducing false alarm rates for critical arrhythmias using the arterial blood pressure waveform. Med Biol Eng Comput 2008——"ABP 核验 ECG"思想的先行工作,挑战设计的前置文献。
- Pan J, Tompkins WJ. A real-time QRS detection algorithm. IEEE Trans Biomed Eng 1985;32(3):230-236——经典 QRS 检测基线,所有讨论的坐标系原点。
- Goldberger A, et al. PhysioBank, PhysioToolkit, and PhysioNet: components of a new research resource for complex physiologic signals. Circulation 2000;101(23):e215-e220——PhysioNet 资源引用标配。
§8.6 社区活跃度
- 赛事期热度:60 队 / 1,332 份提交(CinC 系列同期规模最大届之一);Phase I 即出现跨时区国际选手(斯洛文尼亚、德国、波兰、美国、新加坡、爱尔兰等)。
- 赛后延续:2015-01 评分接口重开后仍收到 12 队 83 份 Sandbox 评分提交(PMC 综述 Figure 4 口径);Physiol Meas 2015 专刊收录系列方法论文。
- 长尾影响:心拍检测方法论此后成为 PPG/可穿戴、睡眠研究、HRV 分析的标配前置模块;"detector voting + delay correction"进入多个开源生理信号库的参考实现。
- 与后续届次的关系链:2015 报警抑制把"心拍检测"升级为"报警决策"(心拍序列是其输入之一);2017 单导联分类把模态裁剪到可穿戴尺度;2020/2021 的 ratings 与 sleep 系列又回到多信号评分的老问题域——本集是这条方法演进轴上"多模态"概念的起点。
- 数据下载与页面访问:官方页 Project Views 199(页面展示口径);归档站与 moody-challenge 镜像长期可访问。
§8.7 生态快照
- 上游:MIMIC-II Waveform Database(数据谱系);WFDB Software Package(格式与评分工具);Pan-Tompkins 等 QRS 检测文献(方法基线)。
- 本集:cinc-2014——多模态心拍定位基准(本条目)。
- 下游:cinc-2015 报警抑制(报警链路下游);mimic3wdb/mimic4wdb(数据扩容);可穿戴 PPG 心率计研究(方法外溢);CinC 各届评分基础设施(制度遗产)。
- 横联:QT-Database 与 MIT-BIH-AFDB(标注范式与类型互补);LightWAVE(官方可视化)。
§9 相关资源与引用
§9.1 官方资源清单
资源使用顺序建议:首次接触 → LightWAVE 可视化(零安装看懂任务)→ training.zip 下载 + §3.3 自检清单 → 复现 gqrs 基线 → 按需读论文;主站不可达时全部资源在归档站与 moody-challenge 镜像均有对应入口(§6.2 三站对照)。
| 资源 | 地址 | 说明 |
|---|---|---|
| 官方挑战页(现行) | https://physionet.org/challenge/2014/ | 与 content/challenge-2014/1.0.0/ 同页;任务/规则/FAQ 全文 |
| moody-challenge 镜像 | https://moody-challenge.physionet.org/2014/ | 挑战系列新门户;含各届论文 PDF |
| 旧站归档 | https://archive.physionet.org/challenge/2014 | 逐日公告时间线;training.zip / set-p.tar.gz 直下(实测可用) |
| 官方论文 PDF | https://moody-challenge.physionet.org/2014/papers/0549.pdf | CinC 2014;41:549-552 |
| 总结综述 | https://pubmed.ncbi.nlm.nih.gov/26217894/ | Physiol Meas 2015;36(8):1629;PMC4668947 全文开放 |
| LightWAVE 可视化 | https://archive.physionet.org/cgi-bin/lw/lightwave | 浏览器内逐条查看波形+标注,免安装 |
| WFDB Software Package | https://archive.physionet.org/physiotools/wfdb.shtml | bxb/sumstats/rdsamp/xform/wfdb2mat |
| 各阶段 Top5 代码 | 官方页 “Challenge Results” 链接 | Phase I-III 前五名方案源码公开 |
| 数据目录页 | https://physionet.org/content/challenge-2014/1.0.0/ | 现行 content 页(含增广训练集;部分地区 403 时用归档站) |
| PhysioNet 挑战系列总览 | https://physionet.org/challenges/ | 2012-2023 各届入口,站内 cinc 系列条目对照 |
§9.2 BibTeX 完整引用
% 挑战官方论文(数据集出处)
@inproceedings{moody2014robust,
title = {Robust Detection of Heart Beats in Multimodal Data:
The PhysioNet/Computing in Cardiology Challenge 2014},
author = {Moody, George and Moody, Benjamin and Silva, Ikaro},
booktitle = {2014 Computing in Cardiology Conference (CinC)},
pages = {549--552},
year = {2014}
}
% 总结综述(官方推荐引用;含评分框架与数据统计)
@article{silva2015robust,
title = {Robust detection of heart beats in multimodal data},
author = {Silva, Ikaro and Moody, Benjamin and Behar, Joachim and
Johnson, Alistair and Oster, Julien and Clifford, Gari D and
Moody, George B},
journal = {Physiological Measurement},
volume = {36},
number = {8},
pages = {1629},
year = {2015},
doi = {10.1088/0967-3334/36/8/1629}
}
% PhysioNet 资源(使用 PhysioNet 任一数据时引用)
@article{goldberger2000physiobank,
title = {PhysioBank, PhysioToolkit, and PhysioNet:
Components of a new research resource for complex physiologic signals},
author = {Goldberger, Ary L and Amaral, Luis AN and Glass, Leon and
Hausdorff, Jeffrey M and Ivanov, Plamen Ch and Mark, Roger G and
Mietus, Joseph E and Moody, George B and Peng, Chung-Kang and
Stanley, H Eugene},
journal = {Circulation},
volume = {101},
number = {23},
pages = {e215--e220},
year = {2000}
}
§9.3 引用指南
- 只用数据集→ 引 moody2014robust + goldberger2000physiobank(两条必引)。
- 对比赛果/使用评分框架→ 加引 silva2015robust,并显式声明测试集口径(修订 200 条集为论文通行口径)。
- 借用标注协议→ 引官方页 FAQ 段落(标注产生流程的唯一权威描述)。
- 页码注意:官方论文页码通行 41:549-552(PDF 页脚口径);个别引用卡写作 549-550——投稿前以你所引版本核对。
常见误引清单(投稿前自查):
| 误引 | 纠正 |
|---|---|
| 把本集写成"心率与节律检测" | 官方标题为心拍(heart beats)检测(坑点 1) |
| 引 93.2 为"最终最高分" | 93.2 是 Vollmer 的 Phase I 分数;最终最高分 93.64(Pangerc,修订集口径,坑点 3) |
| 只引挑战论文不引综述 | 官方推荐同时引用 moody2014robust 与 silva2015robust(§9.2) |
| 引用 PhysioNet 不引 Goldberger 2000 | 官方引用卡明示三件套(§9.2) |
| 论文页码写 549-550 | PDF 页脚口径为 41:549-552(双口径存照,建议按所引版本核对) |
§9.4 数据获取的合规要点
- 无需申请:ODC-BY 1.0 = 商用与科研均可用,唯一义务是署名(ODC-BY 署名义务:保留来源声明与许可链接)。
- 地区限制:physionet.org 主站对部分地区返回 403(实测存照);archive 归档站与镜像站可用——合规性不受镜像路径影响(同源同许可)。
- 禁止事项:再识别尝试;将隐藏测试集的非公开信息(若通过官方评分框架获得)当作训练信号;二次分发时移除许可与出处声明。
- 与 MIMIC 临床库联用:波形(本集谱系)与临床数据(MIMIC-III/IV)分属不同许可与申请流程,联用前分别取得相应授权。
§10 AI 使用声明卡
§10.1 本页面生产使用的 AI 模型
- 条目起草:CodeBuddy Code 写手代理
agentB-cinc2014(fast-model)。 - 抓取与核验:代理经 curl/WebFetch 实抓官方页、PubMed 摘要、归档站文件头。
§10.2 AI 参与范围
- 全部章节由 AI 起草;事实性内容逐条对应 §10.3 来源清单;数字类陈述以实抓原文为准,未经实抓的惯例口径(如 AWS 镜像路径)一律不写入正文。
- 代码示例(§6.1/§6.3/§6.4/§6.9)由 AI 生成,逻辑对齐官方文档口径,未经真机全量回归——使用前请以 §6.1 自检基线验证。
- 边界声明:AI 不负责最终学术裁决;凡官方来源相互冲突处(页码、大小、测试集口径等),本条目以"双口径存照"方式并列呈现而非择一采信,裁决权留给编辑部与读者。
§10.3 输入来源列表
- physionet.org/challenge/2014/ 官方挑战页全文(curl 实抓,79,850 字节)
- physionet.org/content/challenge-2014/1.0.0/(同页重定向确认)
- moody-challenge.physionet.org/2014/ 镜像页(WebSearch 快照)
- moody-challenge.physionet.org/2014/papers/0549.pdf(官方论文,WebSearch 快照含正文摘录)
- PubMed 26217894 / PMC4668947(Physiol Meas 2015;36(8):1629 摘要全文)
- archive.physionet.org/challenge/2014(归档站页面与文件头实测:training.zip 118,129,353 B HTTP 200)
- physionet.org/files/challenge-2014/1.0.0/(403 地区限制实测存照)
- 数据库查重 SQL 结果(0 行)与站内 cinc-2012/2013/2015 等条目格式参照
- WebSearch 检索快照(moody-challenge 镜像页、archive 旧站时间线、PubMed 期刊页)——快照内容与官方页实抓文本交叉核对一致后方写入正文
§10.4 人工校验记录
- 双源以上互证:任务定义/数据规模/评分公式/参赛规模/最终榜——官方页×论文 PDF×PMC 综述三源一致。
- 硬数字复核:151,032/152,478(心拍)、60 队/1,332 提交、118,129,353 B(实测)、93.64(最终榜)——逐条对源。
- 口径纠偏:任务头标题误记已纠正(坑点 1);页码/大小/测试集/时限四组双口径已存照(FACTS.md §9)。
- 自检:check_md.py 与 preflight_check.py 双零通过(见下方自检记录)。
§10.5 AI 生成章节标注
本条目全部章节(INFOBOX、§0-§10)由 AI 代理起草,经来源交叉核验与脚本自检后提交;无人工改写段落。
§10.6 最后人工审核日期
2026-09-27(千方病案医学编辑部·批量生产批次 1 流程审核)。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- cinc-2021 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准 / 心血管疾病
- ltafdb — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准 / 心血管疾病
- cinc-2020 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准 / 心血管疾病
- mit-bih-afdb — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- icentia11k — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- apnea-ecg — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准
- cinc-2013 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准
- cinc-2011 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 心血管疾病
- mimic-iv-ecg — 共享标签:生理信号 / 心电信号 / 重症监护 / 心血管疾病
- cinc-2023 — 共享标签:生理信号 / 挑战赛数据集 / 重症监护
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

