信息速览

CPSC 2018-2021 — 中国生理信号挑战赛心电数据集系列 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | CPSC 2018-2021(China Physiological Signal Challenge 系列) |
| 英文全称 | China Physiological Signal Challenge Series, 2018-2021 |
| 别名/简称 | CPSC、中国生理信号挑战赛、CPSC 2018 / CPSC 2019 / CPSC 2020 / CPSC 2021 |
| 疾病分类 | 心律失常与心脏传导障碍(ICD-11:BC81.3 心房颤动 / BC63.0 一度房室传导阻滞 / BC63.3 右束支传导阻滞 / BC63.4 左束支传导阻滞 / BC7 与 BC8 块 早搏类;ST 段改变为心电图形态学发现) |
| SNOMED CT | 164889003 Atrial fibrillation / 270492004 First degree AV block / 59118001 RBBB / 164909002 LBBB / 284470004 PAC / 164884008 PVC / 429622005 ST depression / 164931005 ST elevation / 426783006 Normal sinus rhythm(详见 §2.2) |
| 数据模态 | 时序(生理信号:12 导联静息 ECG / 单导联动态 ECG / 24h 长程单导 ECG / 双导联 Holter 片段) |
| AI 任务类型 | 心律失常多标签分类、QRS 波群检测、心率估计、早搏事件定位、阵发性房颤事件端点检测、节律分类 |
| 样本总数 | CPSC 2018:6,877 条 12 导联 ECG(另 2,954 条隐藏测试)/ CPSC 2019:2,000 条单导联 ECG(另 3,232 条隐藏测试)/ CPSC 2020:10 名患者 24h 长程 ECG / CPSC 2021:1,436 条双导联片段(105 名受试者) |
| 数据大小 | CPSC 2021 约 2 GB(WFDB 镜像);其余各届训练集为数十至数百 MB 级压缩包 |
| 数据格式 | MATLAB .mat + CSV(2018/2019/2020)/ WFDB .dat/.hea/.atr(2021)/ CinC 2020 重打包 WFDB |
| 许可证 | CC BY 4.0(公开训练集;各届以官方页面标注为准) |
| 访问级别 | 开放(官网 / PhysioNet / 镜像直接下载;竞赛隐藏测试集永不公开) |
| DUO 标签 | GRU, PUB |
| 语言 | 英文(标注与官方文档) |
| 首发日期 | 2018(CPSC 2018,ICBEB 2018,中国南京) |
| 最后更新 | 2021-06-21(CPSC 2021 PhysioNet v1.0.0) |
| 发布机构 | 中国生理信号挑战赛组委会(东南大学仪器科学与工程学院 刘澄玉团队;ICBEB 系列会议;国际顾问 Gari D. Clifford) |
| 官方主页 | http://2018.icbeb.org/Challenge.html(首届)/ http://icbeb2021.pastconf.com/CPSC2021(第四届) |
| 下载地址 | 各届官网 Training Set / https://physionet.org/content/cpsc2021/1.0.0/ |
| DOI | 10.13026/ksya-qw89(CPSC 2021 PhysioNet)/ 10.1166/jmihi.2018.2442(CPSC 2018 数据论文) |
| 引用次数 | CPSC 2018 数据论文 828+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 公开训练集即下即用、标注规范、生态工具齐全;扣分项:隐藏测试集永不公开、CPSC 2018 无患者级 ID、四届格式不一 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、心律失常临床任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(四届信号格式与标注文件结构)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与中国生理信号挑战赛组委会、东南大学、ICBEB 组委会、PhysioNet 无任何商业利益关联。本页面不销售 CPSC 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。CPSC 各届公开数据以 CC BY 4.0 或官方页面标注的开放条款发布,发表论文时必须按各届官网要求引用对应的数据描述论文(见 §9)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
CPSC(中国生理信号挑战赛) 是东南大学刘澄玉团队牵头、依托 ICBEB 系列国际会议于 2018-2021 年连续举办四届的心电 AI 公开赛事,其官方数据集涵盖:CPSC 2018 的 6,877 条 12 导联心电图(11 家医院,9 类心律失常分类)、CPSC 2019 的 2,000 条噪声单导联心电(QRS 检测与心率估计)、CPSC 2020 的 10 名患者 24 小时长程动态心电(早搏搜寻)、CPSC 2021 的 1,436 条双导联动态心电片段(105 名受试者,阵发性房颤事件检测)。
它是中国第一个系统性开放的心电 AI 竞赛与数据系列,填补了中文世界大规模标注 ECG 公开数据的空白。CPSC 2018 的全部 6,877 条波形后来被 PhysioNet/Computing in Cardiology 2020 与 2021 全球挑战赛原样收录,使中国采集的心电数据成为全球 12 导联 ECG 分类基准的一部分;其数据论文被引用超过 800 次(Google Scholar,截至 2026-09),是中文世界影响力最大的心电公开数据集系列。
你可以用它来:训练一个 12 导联心律失常多标签分类模型、在低信噪比动态心电上打磨 QRS 检测与房颤事件定位算法、做跨数据集的泛化性研究(配合 PTB-XL、Georgia、CinC 数据集)、或者作为心电 AI 课程的教学实训数据。
§1.1 摘要
CPSC 系列由四届赛事的官方训练数据构成,任务粒度逐届递进、场景逐届贴近真实穿戴监测。CPSC 2018(首届,ICBEB 2018 南京)提供 6,877 条 12 导联 ECG(男 3,699 / 女 3,178,500 Hz,6-60 s,实测最长 144 s),覆盖正常节律与 8 类心律失常/形态异常,其中 476 条为 2-3 个标签的多标签记录;隐藏测试集 2,954 条永不公开。CPSC 2019(ICBEB 2019 首尔)转向噪声环境下的单导联 QRS 检测与心率估计,公开 2,000 条 10 s 记录(另有 3,232 条隐藏测试)。CPSC 2020(ICBEB 2020 苏州)给出 10 名心律失常患者的 24 小时长程单导联 ECG(400 Hz),任务是搜寻室性早搏(PVC)与室上性早搏(SPB)。CPSC 2021(ICBEB 2021;PhysioNet v1.0.0,2021-06-21)提供 1,436 条取自 12 导联 Holter 或 3 导联穿戴设备的 I、II 导联片段(200 Hz,105 名受试者),任务是阵发性房颤(PAF)事件的节律分类与起止点定位。四届数据均以"公开训练集 + 永久隐藏测试集"的竞赛模式发布,公开部分以 CC BY 4.0 等开放条款免费获取。
§1.2 战略价值分析
范式开创维度:CPSC 2018 之前,中国的心电 AI 研究几乎完全依赖 MIT-BIH 等欧美上世纪的小型数据库——48 条记录、360 Hz、单/双导联,与临床主流的 12 导联、高采样率设备严重脱节。CPSC 首次以中国 11 家医院的真实临床心电构建了大规模、医师标注、竞赛驱动的开放数据范式,并通过"永久隐藏测试集 + 统一评分函数 + 开源参赛代码"的设计,把国内心电 AI 从"各报各的准确率"推进到可比基准时代。这套模式此后被国内大量医学 AI 赛事沿用。
任务演进维度:四届赛事构成了一条精心设计的研究进阶链——2018 年解决"整条记录是什么病"(记录级分类),2019 年解决"每个 QRS 在哪里"(波形级定位),2020 年解决"24 小时里哪几次搏动异常"(事件级搜寻),2021 年解决"房颤从哪一跳开始、到哪一跳结束"(事件端点级检测)。粒度逐届变细、数据场景从静息 12 导联走向穿戴式长程动态心电,恰好复刻了心电 AI 从实验室走向院外监测的产业路径。对方法学研究者,这条链提供了天然的多任务课程学习路径。
生态合流维度:CPSC 2018 的全部 6,877 条波形连同 3,453 条未使用数据(CPSC-Extra)被 PhysioNet/CinC 2020 与 2021 全球挑战赛原样收录,与 PTB-XL、Georgia 等欧美数据源并列,使中国采集数据成为全球 12 导联 ECG 分类研究的标准组件;围绕系列数据生长出 torch_ecg(DeepPSP)等统一加载工具与 ECGBench 等再基准化工作。一句提醒随之而来:在 CinC 2020/2021 上训练的模型再回测 CPSC 2018 属于数据泄漏(详见 §6.5 坑点 3)。
§1.3 横向对比
| 数据集 | 记录数 | 模态 | 任务 | 核心差异化 |
|---|---|---|---|---|
| CPSC 系列(2018-2021) | 6,877 + 2,000 + 10 + 1,436 | 12 导联 / 单导 / 双导 ECG,200-500 Hz | 分类 → 检测 → 事件定位 | 四届递进任务链;中国多中心临床来源;竞赛基准 |
| MIT-BIH Arrhythmia | 48 | 双导联 30 min,360 Hz | 搏动分类 | 1980 年代经典起点,规模极小 |
| CinC 2017(AF) | 12,186 | 单导联 9-60 s,300 Hz | AF 四分类 | 穿戴短程单导 AF 筛查 |
| PTB-XL | 21,837 | 12 导联 10 s,500 Hz | 71 条 SCP-ECG 语句多标签 | 德国单中心;标注体系最完整 |
| PhysioNet/CinC 2020 | 43,101 公开(66,361 来源) | 12 导联多源(含 CPSC 全部) | 27 类诊断 | 多国多源;含 CPSC 2018 字节级波形 |
CPSC 系列的不可替代性在于三点:中国临床人群的多中心来源(与欧美数据源互补)、四届递进的任务粒度链(同一社区从分类玩到事件端点)、以及被 CinC 全球赛原样吸收后形成的"中国数据—全球基准"双向通道。
§1.4 版本演进时间轴
| 时间 | 事件 |
|---|---|
| 2018-09 | CPSC 2018 数据论文发表(Liu FF, Liu CY et al., J Med Imaging Health Inform 8(7):1368-1373, DOI: 10.1166/jmihi.2018.2442) |
| 2018-11 | 首届 CPSC(CPSC 2018)于 ICBEB 2018(中国南京)举办:12 导联 ECG 9 类心律失常分类;冠军 F1=0.837(台湾中央研究院团队) |
| 2019-10 | CPSC 2019 于 ICBEB 2019(韩国首尔,10 月 22-25 日)举办:噪声单导联 QRS 检测与心率估计;冠军 QRSacc 0.9214(上海理工大学团队) |
| 2019-12 | CPSC 2019 数据论文发表(Gao HX, Liu CY et al., J Med Imaging Health Inform 9(9):1853-1858, DOI: 10.1166/jmihi.2019.2800) |
| 2020-02 | PhysioNet/CinC Challenge 2020 开赛,CPSC 2018 全部 6,877 条 + CPSC-Extra 3,453 条被原样收录为官方数据源 |
| 2020-11 | CPSC 2020 于 ICBEB 2020(中国苏州,11 月 15-18 日)举办:24h 长程心电早搏搜寻 |
| 2020-12 | CPSC 2020 数据论文发表(Cai ZP, Liu CY et al., J Med Imaging Health Inform 10(11):2663-2667) |
| 2021-06-21 | CPSC 2021 数据集登陆 PhysioNet(v1.0.0, DOI: 10.13026/ksya-qw89):动态心电阵发性房颤事件检测 |
| 2021-09 | PhysioNet/CinC 2021(“Will Two Do?”)继续使用 CPSC 数据,评估导联数缩减对分类的影响 |
| 2021-11 | CPSC 2021 于 ICBEB 2021 举办;冠军 usstmed 团队平均得分 3.2275 |
§1.5 典型 AI 应用场景
- 12 导联心律失常辅助诊断:在 CPSC 2018 上训练 9 类多标签分类器,是中国人群 ECG 智能判读产品最常见的研发起点。
- 穿戴设备房颤早筛:用 CPSC 2021 的双导联动态心电训练 PAF 事件检测器,直接对应智能手表/贴片式心电的临床场景。
- 低信噪比信号处理算法打磨:CPSC 2019 的噪声单导联数据是检验 QRS 检测器鲁棒性的标准试金石(含 13 条极端尖峰记录)。
- 长程监测负荷量化:CPSC 2020 的 24 小时记录支持早搏负荷(premature beat burden)统计与事件搜寻算法开发。
- 跨数据集泛化与公平性研究:与 PTB-XL(德国)、Georgia(美国)、CinC 系列组成多国对照,评估模型的跨人群、跨设备迁移能力。
§2 医学背景
§2.1 ICD-11 疾病分类锚定
CPSC 系列围绕心律失常与心脏传导障碍展开。CPSC 2018 的 9 个类别到 ICD-11 的映射如下:
| CPSC 2018 类别(编码) | 中文名称 | ICD-11 对应 | 说明 |
|---|---|---|---|
| Normal(1) | 正常窦性心律 | —(非疾病) | 健康对照 |
| AF(2) | 心房颤动 | BC81.3 心房颤动(阵发性 BC81.30 / 持续性 BC81.31) | 最常见的心律失常 |
| I-AVB(3) | 一度房室传导阻滞 | BC63.0 一度房室传导阻滞 | PR 间期 >0.20 s |
| LBBB(4) | 左束支传导阻滞 | BC63.4 左束支传导阻滞 | 宽 QRS 形态 |
| RBBB(5) | 右束支传导阻滞 | BC63.3 右束支传导阻滞 | V1 导联 rSR’ 形态 |
| PAC(6) | 房性早搏 | BC8 块 室上性心律失常(房性早搏) | 房性期前收缩 |
| PVC(7) | 室性早搏 | BC7 块 室性心律失常(室性早搏) | 室性期前收缩 |
| STD(8) | ST 段压低 | 心电图形态学发现(无独立疾病编码;临床提示心肌缺血) | 缺血性改变 |
| STE(9) | ST 段抬高 | 心电图形态学发现(无独立疾病编码;临床提示急性心肌损伤/梗死 BA41 相关) | 损伤性改变 |
CPSC 2019-2021 的任务锚定同一疾病谱:QRS 检测是所有心电分析的前置步骤;CPSC 2020 的 PVC/SPB 对应 ICD-11 BC7/BC8 块的早搏类疾病;CPSC 2021 的阵发性房颤精确对应 BC81.30 阵发性心房颤动。
§2.2 SNOMED CT 映射
以下 SNOMED CT 编码与 PhysioNet/CinC 2020 官方重打包时使用的诊断编码一致:
| 数据集标签 | ICD-11 | SNOMED CT | SNOMED CT 术语 |
|---|---|---|---|
| Normal | — | 426783006 | Normal sinus rhythm (finding) |
| AF | BC81.3 | 164889003 | Atrial fibrillation (disorder) |
| I-AVB | BC63.0 | 270492004 | First degree atrioventricular block (disorder) |
| LBBB | BC63.4 | 164909002 | Left bundle branch block (disorder) |
| RBBB | BC63.3 | 59118001 | Right bundle branch block (disorder) |
| PAC | BC8 块 | 284470004 | Premature atrial contraction (finding) |
| PVC | BC7 块 | 164884008 | Premature ventricular contraction (finding) |
| STD | 形态学发现 | 429622005 | ST segment depression (finding) |
| STE | 形态学发现 | 164931005 | ST segment elevation (finding) |
§2.3 疾病简介
心律失常是最常见的心血管疾病类别,其中心房颤动(AF)影响全球约 3,350 万人,显著增加卒中与心力衰竭风险(JMIR Formative Research, 2024)。阵发性房颤(PAF)发作短暂、无症状比例高,常规门诊心电图极易漏检,是隐源性卒中背后最常见的隐匿病因——这正是 CPSC 2021 选择"动态心电中定位 PAF 事件"作为赛题的临床动因(CPSC 2021 PhysioNet 页 Background)。早搏(PAC/PVC)在普通人群中极为常见,高频次早搏负荷与心肌病、心衰风险相关,需要 24 小时动态监测量化(CPSC 2020 赛题)。束支传导阻滞、房室传导阻滞与 ST 段改变则是 12 导联静息心电图日常判读的核心内容(CPSC 2018 赛题)。心血管疾病长期居中国城乡居民死因首位,心电图的自动、准确判读对基层筛查与院外监测都具有直接的公共卫生价值。
§2.4 临床任务定义
| AI 任务 | 临床定义 | 对应届次 | 操作化定义 |
|---|---|---|---|
| 心律失常诊断分类 | 静息 12 导联 ECG 的节律/形态判读 | CPSC 2018 | 9 类多标签分类,任一标签命中即算正确 |
| QRS 波群检测 | 心电波形关键基准点定位(心率与节律分析前置) | CPSC 2019 | 单导联 10 s 噪声记录的 R 峰位置检测 + 心率估计 |
| 早搏事件搜寻 | 24h 动态监测中室上性/室性早搏的检出与计数 | CPSC 2020 | 长程单导记录中逐搏定位 PVC/SPB |
| 房颤事件检测 | PAF 的发作识别与起止点定位 | CPSC 2021 | 节律三分类(N/AFf/AFp)+ 每个 AF 事件 onset/offset(±2 搏动容差) |
| 早搏负荷评估 | 单位时间早搏次数占心搏总数比例 | CPSC 2020 | 24h 记录内 PVC/SPB 计数 |
| 心率估计 | 单位时间心室率 | CPSC 2019 | 10 s 记录的平均心率(HRacc 评分) |
§2.5 患者人群特征
| 届次 | 来源与规模 | 性别/年龄 | 备注 |
|---|---|---|---|
| CPSC 2018 | 中国 11 家医院;6,877 条公开 + 2,954 条隐藏测试 | 男 3,699 / 女 3,178;年龄随记录提供(汇总分布未公布) | 记录级发布,无患者级 ID;住院/门诊构成未披露 |
| CPSC 2019 | 心血管疾病(CVD)患者;2,000 条公开 + 3,232 条隐藏测试 | 未公布 | 采集自多种设备、多种噪声场景 |
| CPSC 2020 | 10 名心律失常患者(部分合并房颤);每人约 23-26 h | 未公布 | 每条 7-14 万次搏动 |
| CPSC 2021 | 105 名受试者:49 名 AF 患者(含 23 名 PAF)+ 56 名非 AF 受试者 | 未公布 | 12 导联 Holter 或 3 导联穿戴设备;测试集含不同设备来源子集 |
§2.6 金标准/参考标准
| 届次 | 标注内容 | 标注方式 | 金标准性质 |
|---|---|---|---|
| CPSC 2018 | 9 类诊断标签(First/Second/Third label) | 临床医师标注;多数记录 1 个标签,476 条 2-3 个标签 | 记录级医师判读;竞赛方提示存在个别可争议标签 |
| CPSC 2019 | 逐搏 R 峰参考位置 | 参考标注文件(.mat)+ Pan-Tompkins 基线算法对照 | 标注以参考文件形式发布;官方评分函数存在已知 bug(见 §6.5 坑点 4) |
| CPSC 2020 | 逐搏 PVC/SPB 位置与类型 | 医师标注早搏搏动;正常搏动不提供标注 | 单类别阳性标注;需自建 QRS 检测管线补全正常搏动 |
| CPSC 2021 | 搏动标注(R 峰+类型)、节律标注(变化点+类型)、全局节律诊断 | 按 PhysioBank 标准格式(.hea comments + .atr) | 三层次 WFDB 标准标注;AFIB 与 AFL 评分时并为一类;AF 事件 ≥5 搏动 |
脱敏规则:各届数据发布前由组委会完成去标识化——不含姓名、日期、医院标识与自由文本;CPSC 2018 仅随记录提供性别与年龄;CPSC 2021 以匿名 subject/record 编号组织。
§3 数据集规格
§3.0 版本抉择矩阵
四届 CPSC 不是新旧替换关系,而是任务与场景完全不同的四个数据集。30 秒选型:
| 你的需求 | 推荐届次 | 规模 | 理由 |
|---|---|---|---|
| 12 导联心律失常分类(对标论文最多) | CPSC 2018 | 6,877 条 | 9 类多标签、11 家医院、500 Hz;中文社区复现文献的第一选择 |
| 大规模 12 导联预训练 / 多国泛化评估 | PhysioNet/CinC 2020(含 CPSC) | 43,101 条公开 | CPSC 全部波形 + PTB-XL + Georgia 等多源;WFDB 统一格式 |
| QRS 检测 / 心率估计(噪声场景) | CPSC 2019 | 2,000 条 | 专为低信噪比动态心电设计,含极端尖峰样本 |
| 24h 长程早搏负荷研究 | CPSC 2020 | 10 名患者 | 罕见的长程连续标注资源;逐搏 PVC/SPB 标签 |
| 穿戴设备房颤事件检测( onset/offset ) | CPSC 2021 | 1,436 条 / 105 受试者 | 唯一带 AF 事件端点标注的公开中文来源动态心电 |
| 课程教学 / 快速原型 | CPSC 2018(WFDB 重打包版) | 6,877 条 | CinC 2020 发布的 WFDB 版免 .mat 解析,配合 wfdb-python 最顺手 |
一句话结论:做分类选 2018,做 QRS 选 2019,做长程早搏选 2020,做房颤事件端点选 2021;要做大规模预训练或多国对比,直接用收录了 CPSC 的 CinC 2020/2021 合集。
§3.1 模态详细说明
CPSC 系列包含四种心电信号形态:
- 标准 12 导联静息 ECG(CPSC 2018):I、II、III、aVR、aVL、aVF、V1-V6 共 12 导联,500 Hz,单条 6-144 s(官方口径 6-60 s,ECGBench 对头文件重算实测最长 144 s、中位 12 s、共 1,650 种不同长度、仅 2,416 条为 10 s)。临床上对应门诊/住院常规心电图。
- 噪声单导联动态 ECG(CPSC 2019):单导联、500 Hz、固定 10 s,来自 CVD 患者的动态/穿戴采集,刻意纳入低信噪比与异常节律片段,考验 QRS 检测的鲁棒性。
- 24 小时长程单导联 ECG(CPSC 2020):400 Hz,每人约 23-26 h 连续记录,对应 Holter 监测场景;数据量为系列中时间跨度最大。
- 双导联动态 ECG 片段(CPSC 2021):从 12 导联 Holter 或 3 导联穿戴设备长程记录中抽取的 I、II 导联片段,200 Hz,变长;对应穿戴式房颤监测场景。
§3.2 样本量拆分
CPSC 2018(按 First label 口径,官方 Table 1)
| 类别 | 编码 | 记录数 | 占比 |
|---|---|---|---|
| Normal | 1 | 918 | 13.3% |
| AF | 2 | 1,098 | 16.0% |
| I-AVB | 3 | 704 | 10.2% |
| LBBB | 4 | 207 | 3.0% |
| RBBB | 5 | 1,695 | 24.6% |
| PAC | 6 | 556 | 8.1% |
| PVC | 7 | 672 | 9.8% |
| STD | 8 | 825 | 12.0% |
| STE | 9 | 202 | 2.9% |
| 合计 | — | 6,877 | 100% |
注:按 any-label 口径(多标签全计)合计 7,359 个"类-记录对"(AF 1,221 / RBBB 1,857 / STD 869 / I-AVB 722 / PVC 700 / PAC 616 / LBBB 236 / STE 220 / Normal 918;ECGBench 对 6,877 个头文件重算)。隐藏测试集 2,954 条。
CPSC 2019:公开训练 2,000 条(单导联 10 s);隐藏测试 3,232 条(合计 5,232 条,Cai & Hu 2020 口径)。
CPSC 2020:10 名患者 24h 记录;每条 70,000-140,000 次搏动;PVC 每条 0-19,000 次,PAC 每条最多约 9,000 次;隐藏测试集结构相同。
CPSC 2021:训练集 I 共 730 条(54 名受试者:12 AF 含 5 PAF + 42 非 AF);训练集 II 共 706 条(51 名受试者:37 AF 含 18 PAF + 14 非 AF);合计 1,436 条、105 名受试者;隐藏测试集含不同设备来源子集。
§3.3 数据格式详情
| 届次 | 信号文件 | 标注文件 | 说明 |
|---|---|---|---|
| CPSC 2018 | MATLAB .mat(每条含 12 导数据 + 性别 + 年龄) | REFERENCE.csv(Recording, First_label, Second_label, Third_label) | 训练集分 3 个子包下载;另有 CinC 2020 发布的 WFDB 重打包版 |
| CPSC 2019 | MATLAB .mat(单导数据) | 对应 QRS 标注 .mat(R 峰采样点,uint16) | 官方提供 Pan-Tompkins 基线代码 |
| CPSC 2020 | MATLAB v4 .mat(24h 单导) | PVC/SPB 标注(位置+类型) | 注意 v4 格式的读取兼容性(见 §6.5 坑点 8) |
| CPSC 2021 | WFDB .dat(双导)+ .hea(头文件,comments 含全局节律诊断) | .atr(PhysioBank 搏动+节律标注) | 唯一采用 WFDB 标准的一届 |
§3.4 存储大小
| 届次 | 大小 | 备注 |
|---|---|---|
| CPSC 2018 | 数百 MB 级(3 个训练子包) | .mat 压缩包,以官网实际文件为准 |
| CPSC 2019 | 数十 MB 级 | 2,000 × 10 s 单导 |
| CPSC 2020 | 数百 MB 级 | 10 × 24h @400 Hz,MATLAB v4 |
| CPSC 2021 | 约 2 GB(Zenodo 镜像 6879233 记录) | PhysioNet 原版为 WFDB 压缩包 |
§3.5 标注方式
四届均为医师级人工标注,但标注粒度不同:CPSC 2018 为记录级诊断标签(First/Second/Third label 区分主次);CPSC 2019 为逐搏 R 峰参考位置;CPSC 2020 为逐搏早搏位置与类型(正常搏动不标);CPSC 2021 为三层标注——搏动标注、节律变化标注、全局节律诊断,并按 PhysioBank 标准符号存储。CPSC 2021 明确规定:单个 AF 事件须含不少于 5 次搏动,房颤(AFIB)与房扑(AFL)在评分时视为同一类。
§3.6 标注者资质
标注由组委会组织临床医师/心电专业人员完成(各届官方页面未公布标注者人数与一致性统计)。CPSC 2018 数据论文(Liu et al., 2018)说明标签经专业医师判读;PhysioNet/CinC 2020 在重打包时提示"部分数据存在错误或存在争议的标签",并建议使用者自行处理——这是使用该系列数据时应知悉的标注质量背景(见 §7.2)。
§3.7 数据采集时间范围
各届未公开原始心电的具体采集年份;赛事数据发布时间为 2018-2021 年。CPSC 2021 明确测试集包含与训练集不同设备来源的子集,提示训练与测试采集时段/设备存在系统差异。
§3.8 地理覆盖
全部数据采自中国。CPSC 2018 明确来自 11 家医院(机构名单未公开);其余各届来源机构未逐一披露。中国人群来源是其与 MIT-BIH、PTB-XL 等欧美数据集互补的核心价值,同时也构成跨地域泛化的主要限制(见 §7.3)。
§3.9 采集设备规格
| 届次 | 设备 | 采样率 | 导联 |
|---|---|---|---|
| CPSC 2018 | 11 家医院的临床 12 导联心电设备(型号未披露) | 500 Hz | 标准 12 导联 |
| CPSC 2019 | 多种来源设备(含动态/穿戴式),官方称"multiple sources, a variety of instrumentation" | 500 Hz(统一重采样呈现) | 单导联 |
| CPSC 2020 | 长程动态单导联记录设备(Holter 类) | 400 Hz | 单导联 |
| CPSC 2021 | 12 导联 Holter 或 3 导联穿戴式心电监测设备;测试集至少一个子集来自不同设备系统 | 200 Hz(抽取片段) | I、II 导联 |
§3.10 深度溯源链
| 环节 | 主体/方法 | 关键转换 |
|---|---|---|
| 1. 临床/穿戴采集 | 中国 11 家医院 12 导联设备(2018);多源动态设备(2019);Holter 类长程设备(2020);12 导 Holter / 3 导穿戴设备(2021) | 真实诊疗与监测场景产生原始心电 |
| 2. 脱敏与清洗 | 组委会统一去标识化、格式归一(统一采样率呈现)、医师标注 | 移除身份信息;形成记录-标签对 |
| 3. 赛事发布 | ICBEB 官网分届发布训练集;测试集封存 | "公开训练 + 隐藏测试"竞赛机制确立 |
| 4. 学术固化 | JMIHI 数据论文(2018/2019/2020)与 PhysioNet 托管(2021, DOI: 10.13026/ksya-qw89) | 数据获得 DOI 与版本号,进入可引用体系 |
| 5. 全球再分发 | CPSC 2018 全部波形 + CPSC-Extra 进入 PhysioNet/CinC 2020 & 2021(WFDB 重打包、SNOMED CT 诊断编码);Zenodo/Kaggle 镜像 | 格式从 .mat 扩展为 WFDB;标签映射至 SNOMED CT |
| 6. 工具链接入 | torch_ecg(DeepPSP)统一加载器、ECGBench 再基准化 | 加载、评分、坑点修复的工程化沉淀 |
§4 数据结构详解
§4.0 目录结构预览
CPSC 2018(官网三个训练子包合并后):
cpsc2018/
├── A0001.mat # 12 导联 ECG(含性别、年龄),500 Hz
├── A0002.mat
├── ...
├── A6877.mat
└── REFERENCE.csv # 标签:Recording, First_label, Second_label, Third_label
CPSC 2019:
cpsc2019/
├── data_00001.mat # 单导联 ECG,10 s,500 Hz
├── data_00001R.mat # 对应 QRS 参考标注(R 峰采样点)
├── ...
├── data_02000.mat
├── data_02000R.mat
└── Pan_Tompkins.m # 官方基线算法
CPSC 2020(TrainingSet.zip):
cpsc2020/
├── data_1.mat # 24h 单导联 ECG,400 Hz,MATLAB v4
├── data_1_ref.mat # PVC/SPB 标注(位置+类型)
├── ...
├── data_10.mat
└── data_10_ref.mat
CPSC 2021(PhysioNet v1.0.0):
cpsc2021/
├── training_I/
│ ├── data_0_1.dat # I、II 导联信号,200 Hz
│ ├── data_0_1.hea # 头文件(comments 含全局节律诊断 N/AFf/AFp)
│ ├── data_0_1.atr # PhysioBank 搏动 + 节律标注
│ └── ... # 共 730 条
├── training_II/
│ └── ... # 共 706 条
├── REVISED_RECORDS # 已修订记录清单
└── LICENSE / SHA256SUMS
§4.1 DAIMS 标准化字段描述表
CPSC 2018:.mat 结构体 + REFERENCE.csv
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| data(.mat 内) | FLOAT 矩阵 12×N | 12 导联信号(I, II, III, aVR, aVL, aVF, V1-V6) | 12×6000(10 s) | 模型输入 | 基线漂移、工频干扰、导联噪声 | 无 | mV,长度 6-144 s |
| sex(.mat 内) | 文本/编码 | 患者性别 | “Male” | 协变量/公平性分析 | 个别缺失 | 缺失即无该键 | Male / Female |
| age(.mat 内) | INTEGER | 患者年龄 | 65 | 协变量 | 个别缺失或异常值 | 缺失即无该键 | 岁 |
| Recording(REFERENCE.csv) | TEXT | 记录号 | “A0001” | 主键 | 无 | 不允许缺失 | A0001-A6877 |
| First_label | INTEGER | 第一诊断标签 | 5 | 主标签 | 个别争议标签 | 不允许缺失 | 1-9 |
| Second_label | INTEGER | 第二诊断标签 | 2 | 多标签学习 | — | 单标签记录为空 | 1-9 或空 |
| Third_label | INTEGER | 第三诊断标签 | — | 多标签学习(仅 6 条) | — | 绝大多数为空 | 1-9 或空 |
CPSC 2021:WFDB 头文件与标注
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| .dat 双通道信号 | FLOAT × 2 | I、II 导联片段 | 2×N @200 Hz | 模型输入 | 穿戴噪声、运动伪差 | 无 | mV,变长 |
| .hea comments: Dx | TEXT | 全局节律诊断 | “Atrial fibrillation” | 节律三分类标签 | AFIB/AFL 评分并类 | 不允许缺失 | N / AFf / AFp |
| .atr sample | INTEGER | 搏动采样点位置 | 1024 | 事件定位 | ±0.15 s 插入偏移(见坑点 6) | 无 | 采样点索引 |
| .atr symbol / aux_note | TEXT | 搏动类型与节律变化标志 | “N” / “(AFIB” | 逐搏标签、AF 事件起止 | 节律标志插在 R 峰前/后 0.15 s | 无 | PhysioBank 符号集 |
CPSC 2020:标注文件
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| PVC 位置与类型 | INTEGER | 室早搏动采样点 | — | 事件检测标签 | 仅标阳性 | 正常搏动无标注(结构化缺失) | 采样点索引 |
| SPB 位置与类型 | INTEGER | 室上早搏动采样点 | — | 事件检测标签 | 仅标阳性 | 正常搏动无标注(结构化缺失) | 采样点索引 |
§4.2 标签分布统计
| 届次 | 标签口径 | 关键分布 |
|---|---|---|
| CPSC 2018 | First label | RBBB 1,695(24.6%,最多)vs STE 202(2.9%,最少);LBBB 207(3.0%)vs RBBB 相差约 8 倍 |
| CPSC 2018 | any-label | 7,359 个类-记录对;476 条多标签记录中 AF+RBBB 组合最多(172 条),其次 RBBB+PAC(55 条)、RBBB+PVC(51 条) |
| CPSC 2019 | 任务型 | 无类别标签;R 峰密度随节律变化;含异常节律与强噪声片段 |
| CPSC 2020 | 逐搏 | 每条 PVC 0-19,000 次、PAC 最多约 9,000 次;早搏占总搏动比例患者间差异极大 |
| CPSC 2021 | 记录级 + 事件级 | 105 名受试者:49 AF(23 PAF)/ 56 非 AF;同一受试者可同时有 N、AFp、AFf 三类记录 |
§4.3 关键字段描述性统计
- CPSC 2018 记录时长:6-144 s,中位 12 s;仅 2,416 条为 10 s;共 1,650 种不同长度(ECGBench 对 6,877 个头文件重算,截至 2026-09)。
- CPSC 2018 早搏类(PAC/PVC)记录系统性偏长——时长本身携带类别信息,建模时须警惕(见 §6.5 坑点 1)。
- CPSC 2019 固定 10 s;13 条记录含 >20 mV 单点尖峰(实测峰值约 32.7 mV)。
- CPSC 2020 每条 23-26 h,约 7-14 万次搏动。
- CPSC 2021 AF 事件定义 ≥5 次搏动;节律变化标注插在对应 R 峰前(onset)或后(offset)0.15 s。
§4.4 数据层级关系
CPSC 系列(四届并列)
├─ CPSC 2018:记录(A0001-A6877)→ 1-3 个诊断标签(无患者级 ID)
├─ CPSC 2019:记录(data_xxxxx)→ R 峰集合(搏动级)
├─ CPSC 2020:患者(data_1-data_10)→ 24h 信号 → 逐搏 PVC/SPB 标注
└─ CPSC 2021:受试者(105 人,编号前缀)→ 多条记录(data_{subject}_{i})
→ 全局节律诊断(记录级)→ 搏动标注 + 节律变化标注(搏动级)
关键层级提示:CPSC 2021 的记录命名含受试者前缀(如 data_0_1、data_61_9),同一受试者可有多条不同节律类型的记录——划分训练/验证集必须按受试者前缀分组(见 §5.2)。CPSC 2018 无患者级标识,无法做患者级划分,这是该届的结构性限制。
§4.5 缺失值情况与信息性缺失编码
| 缺失类型 | 位置 | 缺失原因 | 信息性缺失编码 | 对 AI 的影响 |
|---|---|---|---|---|
| 结构化缺失 | CPSC 2020 正常搏动 | 官方只标注 PVC/SPB | 无标注 = 非早搏(大概率正常,但未逐一确认) | 不能直接当负样本金标准;需先跑 QRS 检测再排除 |
| 人口学缺失 | CPSC 2018 个别记录 | 采集时未录入 | 无 sex/age 键 | 协变量分析时剔除或单独成组 |
| 患者级 ID 缺失 | CPSC 2018 全体 | 发布策略 | 无法患者级划分 | 同患者多次记录可能跨训练/测试集(见 §6.5 坑点 7) |
| 机构/设备标识缺失 | 全系列 | 脱敏要求 | 医院与设备型号不公开 | 无法做机构级分层评估 |
| Second/Third label 为空 | CPSC 2018 REFERENCE.csv | 单标签记录 | 空 = 无第二/第三诊断 | 多标签编码时按 0 填充,勿误读为第 0 类 |
§5 数据划分与使用建议
§5.1 官方数据划分
CPSC 系列的官方划分是竞赛式二分:公开训练集 + 永久封存的隐藏测试集。四届测试集(2,954 / 3,232 / 未公布 / 未公布条数)均不对外发布,官方明确表示"not planning to release the test set at any point"。因此:
- 复现官方榜单:不可能。官方成绩(如 CPSC 2018 冠军 F1=0.837)只能引用,无法复算。
- 社区惯例:在公开训练集上自行划分 train/val/test 或做 K 折交叉验证。论文间数字是否可比,完全取决于各自划分口径——引用任何"CPSC 上的 SOTA"前先核对划分方式(见 §7.2)。
§5.2 推荐划分策略
- CPSC 2018:记录级分层随机划分。无患者级 ID,按 9 类 First label 分层 8:1:1 或 10 折。多标签记录建议用 iterative stratification(多标签分层)保证长尾类(LBBB、STE)在各折均有分布。
- CPSC 2021:受试者级划分(强制)。按记录名前缀的受试者编号分组(GroupKFold),同一受试者的全部记录必须落在同一侧——该届明确同一受试者可同时有 N、AFp、AFf 三类记录,按记录随机划分必然泄漏。
- CPSC 2020:留一患者验证(LOPO)。仅 10 名患者,推荐 leave-one-patient-out 交叉验证评估跨患者泛化。
- CPSC 2019:记录级随机划分。单导短记录,无患者信息,常规 8:2 即可。
# CPSC 2021 受试者级划分示例
import re
import pandas as pd
from sklearn.model_selection import GroupKFold
records = pd.Series([f"data_{s}_{i}" for s, i in
[(0,1),(0,2),(1,1),(61,1),(61,9)]]) # 示意
subjects = records.str.extract(r"data_(\d+)_\d+")[0].astype(int)
gkf = GroupKFold(n_splits=5)
for tr, te in gkf.split(records, groups=subjects):
assert set(subjects[tr]) & set(subjects[te]) == set() # 受试者零泄漏
§5.3 数据泄漏风险防御
| # | 泄漏模式 | 严重程度 | 防御措施 |
|---|---|---|---|
| 1 | 在 CinC 2020/2021 上训练,回测 CPSC 2018(波形字节级重叠) | 极高 | 明确数据源血缘;跨基准评估时剔除 CPSC 源记录 |
| 2 | CPSC 2021 按记录而非受试者划分 | 高 | GroupKFold(groups=subject_id) |
| 3 | 把记录时长当特征(CPSC 2018 早搏类偏长) | 中 | 固定窗口输入;不做全记录统计特征入模 |
| 4 | 用 REFERENCE.csv 的 Second/Third label 空值当"正常"标签 | 中 | 空 = 无附加诊断,不是 Normal 类 |
| 5 | CPSC 2020 把"无标注搏动"直接当正常搏动训练 | 中 | 先 QRS 检测定位全部搏动,再排除已标注早搏 |
§5.4 交叉验证建议
- CPSC 2018:多标签分层 5 折或 10 折;报告宏平均 F1 与各类 F1。
- CPSC 2021:受试者级 GroupKFold(5 折);同时报告节律分类 Ur 与事件定位 Ue。
- CPSC 2020:LOPO 10 折(每折留一名患者)。
- 任何交叉验证都应固定随机种子并在论文中公开划分文件。
§5.5 外部验证
在 CPSC 上训练的模型,经典外部验证路径为:PTB-XL(德国,12 导联,注意标签体系映射到 SNOMED CT)、Georgia 12-Lead(美国)、CinC 2017(单导 AF)、MIT-BIH AFDB(长程 AF)、TNMG(巴西,232 万条 12 导联——S4D-ECG 论文用 CPSC 训练、TNMG 测试做了跨国泛化示范)。注意:做 CPSC → 外部集迁移时,先统一采样率(500/400/257/200 Hz 各异)与导联子集。
§6 AI 就绪指南
§6.0 云端快速启动
PhysioNet 一键下载(CPSC 2021):
wget -r -N -c -np https://physionet.org/files/cpsc2021/1.0.0/即可获取完整 WFDB 数据;PhysioNet 页面同时提供云端文件浏览与 LightWAVE 在线波形查看,无需本地解压即可抽查信号质量。Kaggle 切片镜像(CPSC 2021):DeepPSP 团队维护的 CPSC2021-sliced Kaggle 数据集提供预切片版本,适合在 Kaggle Notebook 免费 GPU 上直接起跑基线。
pip 一行加载(全系列):
pip install torch-ecg后,torch_ecg 内置 CPSC2018/2019/2020/2021 四个统一加载器,自动处理 .mat/WFDB 解析与已知坑点(如 CPSC 2019 评分函数修复)。
§6.1 快速上手
# ========================================
# CPSC 2018 快速上手 — scipy + pandas 版
# 环境要求: scipy>=1.7, numpy, pandas
#
# ⚠️ 目录结构预期:
# 请将官网三个训练子包解压合并至 ./data/cpsc2018/,确保:
# ./data/cpsc2018/
# ├── A0001.mat ... A6877.mat # 每条含 ECG 结构体(data/sex/age)
# └── REFERENCE.csv # Recording, First_label, Second_label, Third_label
#
# 每条 .mat 内 data 为 12×N 矩阵(12 导联 × 采样点,500 Hz,单位 mV)
# ========================================
import scipy.io as sio
import pandas as pd
import numpy as np
data_root = "./data/cpsc2018"
ref = pd.read_csv(f"{data_root}/REFERENCE.csv")
print(ref.head())
# 标签编码:1 Normal / 2 AF / 3 I-AVB / 4 LBBB / 5 RBBB / 6 PAC / 7 PVC / 8 STD / 9 STE
rec = sio.loadmat(f"{data_root}/A0001.mat")
ecg_struct = rec["ECG"][0, 0] # 结构体
signal = ecg_struct["data"] # shape: (12, N),单位 mV
sex, age = ecg_struct.get("sex"), ecg_struct.get("age")
print(signal.shape, sex, age) # 例如 (12, 6000) → 12 s @500 Hz
# 备选:torch_ecg 统一加载(自动处理多届格式与已知问题)
from torch_ecg.databases import CPSC2018, CPSC2019, CPSC2020, CPSC2021
db = CPSC2021(db_dir="./data/cpsc2021")
rec = db.all_records[0]
signal = db.load_data(rec) # 自动按 fs 与导联读取
§6.2 数据获取流程
| 届次 | 获取方式 | 链接 | 流程 |
|---|---|---|---|
| CPSC 2018 | 官网 Training Set 1/2/3 | http://2018.icbeb.org/Challenge.html | 直接下载,无需注册;发表论文须引用 Liu et al. 2018 |
| CPSC 2018(WFDB 版) | PhysioNet/CinC 2020 数据页 | https://moody-challenge.physionet.org/2020/ | 直接下载 PhysioNetChallenge2020_Training_CPSC.tar.gz(CC BY 4.0) |
| CPSC 2019 | 官网 Training Set | http://2019.icbeb.org/Challenge.html | 直接下载;引用 Gao et al. 2019 |
| CPSC 2020 | 阿里云 OSS 官方包 | https://opensz.oss-cn-beijing.aliyuncs.com/ICBEB2020/file/TrainingSet.zip | 直接下载;引用 Cai et al. 2020 |
| CPSC 2021 | PhysioNet v1.0.0 | https://physionet.org/content/cpsc2021/1.0.0/ | 直接下载或 wget 整站镜像;引用 Wang et al. 2021(DOI: 10.13026/ksya-qw89) |
镜像补充:Zenodo(CPSC 2021 切片,6879233)、Kaggle(CPSC2021-sliced)。所有公开训练集均可免费获取,无需资质审核;隐藏测试集任何渠道都不可得。
§6.3 预处理 Pipeline
<details>
<summary><b>点击展开 CPSC 2018 完整预处理代码(滤波 → 定长 → 标准化 → 多标签编码)</b></summary>
# 步骤 1:滤波——0.5-45 Hz 带通 + 50 Hz 工频陷波(中国市电)
import numpy as np
from scipy import signal as ss
def ecg_filter(x, fs=500):
b, a = ss.butter(4, [0.5, 45], btype="band", fs=fs)
x = ss.filtfilt(b, a, x, axis=-1)
b_n, a_n = ss.iirnotch(50, Q=30, fs=fs)
return ss.filtfilt(b_n, a_n, x, axis=-1)
# 步骤 2:定长——按最短记录 6 s(500 Hz × 6 = 3000 点)取窗,长记录滑窗投票
def to_fixed_length(x, win=3000):
"""x: (12, N)。短于 win 则末端补零,长于 win 则居中裁剪(或滑窗分段)。"""
n = x.shape[-1]
if n >= win:
s = (n - win) // 2
return x[:, s:s + win]
return np.pad(x, ((0, 0), (0, win - n)))
# 步骤 3:逐导联 z-score 标准化(先滤波后标准化,避免基线影响)
def zscore(x, eps=1e-8):
m, s = x.mean(axis=-1, keepdims=True), x.std(axis=-1, keepdims=True)
return (x - m) / (s + eps)
# 步骤 4:多标签二值化(First/Second/Third label → 9 维 0/1 向量)
def encode_labels(row, n_classes=9):
y = np.zeros(n_classes, dtype=np.float32)
for col in ["First_label", "Second_label", "Third_label"]:
v = row.get(col)
if pd.notna(v):
y[int(v) - 1] = 1.0
return y
# 步骤 5:类别不平衡——按逆频率开方设置类别权重(LBBB/STE 长尾)
def class_weights(ref, n_classes=9):
cnt = np.zeros(n_classes)
for _, r in ref.iterrows():
cnt += encode_labels(r)
w = 1.0 / np.sqrt(cnt + 1)
return w / w.sum() * n_classes
</details>
通用原则:(1) CPSC 2018 的 12 导联中 III、aVR、aVL、aVF 可由 I、II 与加压导联公式推得,部分工作只保留 I、II、V1-V6 八导联输入以减参;(2) 动态心电各届(2019/2020/2021)噪声更强,建议先做信号质量评估再决定是否加重滤波;(3) CPSC 2021 只有 200 Hz,与高采样率数据混训时必须统一下采样。
§6.4 框架加载
import torch
from torch.utils.data import Dataset, DataLoader
class CPSC2018Dataset(Dataset):
"""CPSC 2018 PyTorch Dataset(配合 §6.3 预处理产物)。"""
def __init__(self, records, data_root, transform=None):
self.records, self.data_root, self.transform = records, data_root, transform
def __len__(self):
return len(self.records)
def __getitem__(self, i):
row = self.records.iloc[i]
x = sio.loadmat(f"{self.data_root}/{row['Recording']}.mat")["ECG"][0, 0]["data"]
x = zscore(to_fixed_length(ecg_filter(x.astype(np.float32))))
y = encode_labels(row)
if self.transform:
x = self.transform(x)
return torch.from_numpy(x), torch.from_numpy(y)
loader = DataLoader(CPSC2018Dataset(ref_train, "./data/cpsc2018"),
batch_size=64, shuffle=True, num_workers=4)
import tensorflow as tf # TensorFlow 版:tf.data 管道
ds = tf.data.Dataset.from_generator(
lambda: ((zscore(to_fixed_length(ecg_filter(sio.loadmat(
f"./data/cpsc2018/{r['Recording']}.mat")["ECG"][0,0]["data"].astype("float32")))),
encode_labels(r)) for _, r in ref_train.iterrows()),
output_signature=(
tf.TensorSpec((12, 3000), tf.float32),
tf.TensorSpec((9,), tf.float32)))
ds = ds.shuffle(2048).batch(64).prefetch(tf.data.AUTOTUNE)
§6.5 常见坑点
⚠️ 坑点 1:记录时长 24 倍差异且时长本身泄漏类别(分类:预处理陷阱)
问题:CPSC 2018 官方宣传 6-60 s,实测最长 144 s、最短 6 s(24 倍差异),共 1,650 种不同长度,仅 2,416 条为 10 s;且早搏类(PAC/PVC)记录系统性偏长——模型拿到原始长度就能"读"出部分类别。
症状:固定窗口裁到 10 s 后短记录大面积补零,模型对补零记录性能骤降;或用全记录统计特征时验证集指标虚高。
解决:以最短 6 s(500 Hz × 6 = 3,000 点)为基准窗:短记录补零 + 掩码、长记录滑窗分段后投票/取均值;不要把时长、有效采样点数作为特征入模;评估时报告"按长度分层"的子组性能。
参考:ECGBench CPSC 2018 数据页(对 6,877 个头文件的重算结论,截至 2026-09)。
⚠️ 坑点 2:多标签 First/Second/Third 口径与 WFDB 重打包丢序(分类:标签理解)
问题:476 条记录有 2-3 个标签;官方 REFERENCE.csv 区分 First(主诊断)/Second/Third label,但 PhysioNet/CinC 2020 的 WFDB 重打包版把每条记录的多个 SNOMED 编码按类索引排序,主从次序永久丢失。官方 Table 1 是 First-label 口径(合计 6,877),any-label 口径合计 7,359——两套数字混用会让类分布统计差出 482。
症状:复现官方类分布表对不上;多标签模型在主诊断口径下指标异常。
解决:做官方口径复现时用原始 .mat + REFERENCE.csv;用 WFDB 版时在论文中声明"多标签无序"。评估时明确标注口径(first-label vs any-label)。
参考:CPSC 2018 官网 Table 1;ECGBench “About those counts” 一节。
⚠️ 坑点 3:CinC 2020/2021 字节级包含 CPSC 2018 全部波形(分类:数据泄漏)
问题:CPSC 2018 的 6,877 个波形文件与 PhysioNet/CinC 2020、2021 训练集中的对应文件字节级相同、同名。在 CinC 合集上预训练/训练后再回 CPSC 2018 报指标,等于在训练数据上测试。
症状:CPSC 2018 上的"泛化评估"指标高得离谱(接近训练集水平)。
解决:跨基准实验设计时画出数据血缘图:CinC 2020/2021 ⊃ CPSC 2018 + CPSC-Extra;凡在 CinC 合集上训练过的模型,评估 CPSC 2018 时必须剔除 CPSC 源记录或改用真正外部集(PTB-XL、Georgia、TNMG)。
参考:ECGBench 字节级比对结论;PhysioNet/CinC 2020 官方数据说明。
⚠️ 坑点 4:CPSC 2019 的尖峰记录、uint16 标注与官方评分 bug(分类:工程陷阱)
问题:(a) 13 条记录含 >20 mV 单点尖峰(data_00098、00167、00173、00223、00224、00245、00813、00814、00815、00833、00841、00949、00950,实测约 32.7 mV),会把标准化与检测器打爆;(b) R 峰参考标注 dtype 为 uint16,反向相减时下溢成巨大正值;© 官方评分函数漏算第 0 与第 1 个参考 R 峰之间的区间,可能漏计误检。
症状:归一化后有效信号被压成直线;自算 QRS 指标与官方分数对不上;误差数组出现诡异巨值。
解决:加载后先做尖峰清洗(如将超过 ±5 mV 的单点替换为前一样本值,Cai & Hu 2020 同款做法);标注数组读入立即转 int64;评分用 torch_ecg 修复版 compute_metrics 替代官方函数。
参考:torch_ecg CPSC2019 文档 Issues 节;Cai W, Hu D, IEEE Access 2020。
⚠️ 坑点 5:CPSC 2020 只标注早搏、正常搏动无标注,且评分为罚分制(分类:标签理解)
问题:官方标注文件只给 PVC/SPB 两类阳性搏动的位置与类型,约 10 万次/条的正常搏动完全没有参考标注;官方评分是罚分制(越低越好),漏检(FN)惩罚约为误检(FP)的 5 倍。
症状:把"无标注搏动"当负样本训练出的分类器把大量早搏当正常;按 F1 调优的模型在官方罚分榜上排名倒挂。
解决:先用 SOTA QRS 检测器(如 Cai & Hu 模型)自建全部搏动位置,再排除已标注早搏得到候选正常集;调阈值时按官方罚分公式(FN 权重 5×FP)优化,而非 F1;验证时用 LOPO 留一患者口径。
参考:CPSC 2020 官网评分说明;DeepPSP/cpsc2020 README(罚分复现)。
⚠️ 坑点 6:CPSC 2021 评分矩阵语义与 ±0.15 s 标注偏移(分类:评估误用)
问题:(a) Ur 评分矩阵对"持续性房颤 AFf 漏判"施加重罚,而 AFf 与 AFp 互相混淆不罚;(b) AFIB 与 AFL 评分时视为同一类;© 节律变化标注插在对应 R 峰前(onset)或后(offset)0.15 s,不是精确的搏动边界;(d) 同一受试者可同时有 N/AFp/AFf 三类记录。
症状:把 AFp 全判成 AFf 反而分数不亏;用精确搏动边界对齐标签时整体错位 0.15 s;按记录随机划分后分数虚高。
解决:分类头只需稳定区分"非 AF vs AF",AFf/AFp 细分交给事件统计后处理;事件边界回归时把 ±0.15 s 偏移纳入容差(官方 Ue 本就 ±1 搏动给满分、±2 搏动给 0.5 分);严格按受试者前缀做 GroupKFold。
参考:CPSC 2021 官网 Scoring 节与 Figure 1 评分矩阵;torch_ecg CPSC2021 文档。
⚠️ 坑点 7:类别极端不平衡 + 无患者级 ID 的双重陷阱(分类:偏倚陷阱)
问题:CPSC 2018 的 LBBB 仅 207 条而 RBBB 达 1,695 条(约 8 倍差距)、STE 仅 202 条;同时该届无患者级标识,同一患者的多条记录可能分跨训练/测试两侧而不自知。
症状:长尾类召回率接近 0(模型全预测多数类);随机划分下宏平均 F1 比论文低一截,或反过来高得可疑。
解决:类别权重/重采样(逆频率开方或 effective number 加权);多标签分层划分保证每折长尾类≥数十条;报告中必须同时给宏平均与各类 F1;接受"记录级划分是该届社区惯例"并在论文局限节声明同患者泄漏风险。
参考:CPSC 2018 官方 Table 1;ECGBench 重算分布。
⚠️ 坑点 8:.mat 版本混杂与单位/导联顺序假设(分类:工程陷阱)
问题:CPSC 2018/2019 为常规 .mat(scipy.io.loadmat 可读),CPSC 2020 为 MATLAB v4 老格式;不同论文代码对导联顺序(I, II, III, aVR, aVL, aVF, V1-V6)与单位(mV vs ADC 计数)的假设不一致,WFDB 重打包版与原版字段结构也不同。
症状:loadmat 报 NotImplementedError 或读出错位矩阵;信号幅值差 1,000 倍(mV/μV 混用);导联错位导致模型在 V 导联位置看到肢体导联。
解决:v4 文件用 h5py 之外的老接口(scipy.io.loadmat 支持 v4/v6/v7,v7.3 才需 h5py);读入后打印 shape 与 min/max 自检(12 导联应为 12×N,幅值量级 ±5 mV 内);跨格式实验统一转 WFDB 或 numpy 中间格式并记录转换脚本。
参考:CPSC 2020 TrainingSet 文件头(MATLAB v4);torch_ecg 各加载器源码。
§6.6 数据增强
| ✅ 安全增强 | ❌ 危险增强(禁止) |
|---|---|
| 小幅高斯噪声叠加(σ ≤ 0.05 mV) | 时间轴随机翻转(P-QRS-T 顺序不可逆) |
| 基线随机平移/缓变漂移模拟 | 导联随机打乱(V 导联与肢体导联不可互换) |
| 幅值缩放(0.8-1.2 倍) | 对 AF/早搏记录做改变节律结构的重采样 |
| 随机裁剪起始点(同一条内滑窗) | 跨记录拼接波形(制造伪节律转换点) |
| 混合轻度工频/肌电噪声模板 | 改变采样率后不滤波直接抽取(混叠) |
Cai & Hu(CPSC 2019 冠军)验证过的心电特化增强:随机高斯噪声、随机初相正弦叠加、基线平移、信号上下翻转(该届单导任务下有效;12 导任务慎用翻转)。
§6.7 模型推荐
| 任务 | 推荐 backbone | 训练要点 | 参考性能口径 |
|---|---|---|---|
| CPSC 2018 九分类 | ResNet-34(1D)/ MLBF-Net 多导联分支融合 | 多标签 BCE + 类别权重;10 s 或 6 s 窗 | 公开集自划分宏 F1 约 0.80-0.85(口径各异);官方隐藏测试冠军 0.837 |
| CPSC 2019 QRS 检测 | 膨胀 CNN / CRNN(SENet 注意力) | 搏动级序列标注;尖峰清洗先行 | 官方隐藏测试 QRSacc 0.9214 |
| CPSC 2020 早搏搜寻 | 1D U-Net 序列标注 + QRS 检测前置 | 罚分制调阈(FN 5× FP);LOPO 验证 | 官方罚分越低越好(冠军 PVC 41,479 / SPB 92,947) |
| CPSC 2021 PAF 事件 | CRNN(CNN+BiLSTM)/ U-Net + RR 间期 LSTM 融合 | 受试者级划分;±2 搏动容差后处理 | 官方隐藏测试冠军平均 3.2275 |
| 快速基线 | XGBoost + RR 间期/形态统计特征 | 30 分钟出结果 | 宏 F1 约 0.70-0.78(CPSC 2018 自划分) |
§6.8 计算资源需求
| 硬件 | 最小配置 | 推荐配置 |
|---|---|---|
| 磁盘 | 10 GB(全系列合集) | 20 GB(含中间特征与镜像) |
| 内存 | 8 GB | 32 GB(CPSC 2020 长程信号分段加载) |
| GPU | CPU 可跑 XGBoost/小 CNN 基线 | 1 × 8-16 GB 显存(ResNet/CRNN 批训练) |
| 训练时间 | CPSC 2018 单折 ResNet 约 1-2 h(单卡) | CPSC 2020 全量 LOPO 需数天 |
| 云端替代 | Kaggle 免费 GPU(T4 × 2) | Colab Pro / AutoDL |
§6.9 评估指标
# CPSC 2018 官方口径:9 类 F1 均值 + 分组指标
from sklearn.metrics import f1_score
import numpy as np
def cpsc2018_scores(y_true, y_pred):
"""y_true/y_pred: (N, 9) 0-1 矩阵。列序:1 Normal 2 AF 3 I-AVB 4 LBBB
5 RBBB 6 PAC 7 PVC 8 STD 9 STE"""
f1_each = np.array([f1_score(y_true[:, k], y_pred[:, k])
for k in range(9)])
f1 = f1_each.mean() # 官方主指标 F1
faf = f1_each[1] # AF
fblock = f1_each[2:5].mean() # I-AVB + LBBB + RBBB
fpc = f1_each[5:7].mean() # PAC + PVC
fst = f1_each[7:9].mean() # STD + STE
return dict(F1=f1, Faf=faf, Fblock=fblock, Fpc=fpc, Fst=fst)
# CPSC 2021 事件定位得分 Ue:onset/offset ±1 搏动 +1 分,±2 搏动 +0.5 分
def ue_score(ref_onsets, pred_onsets):
score = 0.0
for r in ref_onsets:
d = min(abs(p - r) for p in pred_onsets) if pred_onsets else 10**9
score += 1.0 if d <= 1 else (0.5 if d <= 2 else 0.0)
return score
社区共识:CPSC 2018 报宏 F1 + Faf/Fblock/Fpc/Fst 四组(官方口径);CPSC 2019 报 QRSacc/HRacc(或 Sen/Pre/Err,容差 0.075 s);CPSC 2020 报官方罚分;CPSC 2021 报 Ur + Ue 综合分。所有自划分结果必须注明划分文件与种子。
§6.10 MLOps 笔记
- 版本锁定:CPSC 2021 注明 PhysioNet v1.0.0(DOI: 10.13026/ksya-qw89);CPSC 2018 用 .mat 原版还是 CinC 2020 WFDB 版必须在方法节写明(多标签次序差异见坑点 2)。
- 引用义务:四届各有指定数据论文(§9),发表时逐届引用;用 WFDB 重打包版需同时引用 Perez Alday et al. 2021。
- 数据血缘:pipeline 中记录每条信号的源头(2018 原版 / CinC 2020 / 镜像),防止坑点 3 的隐性泄漏混入生产模型。
- 评分环境:CPSC 2019/2020/2021 官方评分代码均为 MATLAB/Python 双实现;复算时优先用 torch_ecg 修复版并保留版本哈希。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 地域/人群偏倚 | 全部数据来自中国医院与中国人群,不能代表欧美、非洲等人群的心电表型 | 高 | 用 PTB-XL(德国)、Georgia(美国)、TNMG(巴西)做外部验证 |
| 类别不平衡偏倚 | CPSC 2018 LBBB 207 条 vs RBBB 1,695 条(8 倍);STE 仅 202 条 | 高 | 类别权重/重采样;宏平均与各类指标并报 |
| 性别构成偏倚 | CPSC 2018 男 3,699 / 女 3,178(男多 16%) | 中 | 性别分层评估;公平性分析(§7.5) |
| 设备不透明偏倚 | 11 家医院与穿戴设备型号未披露,设备间分布无法校正 | 中 | 多源外部验证;报告对设备迁移的敏感性 |
| 记录长度偏倚 | 早搏类记录系统性偏长,时长携带类别信息 | 中 | 固定窗口;不作时长特征(坑点 1) |
| 标注争议偏倚 | CinC 2020 官方提示部分记录存在错误或可争议标签 | 中 | 噪声鲁棒损失(label smoothing、Co-Teaching) |
| 患者级泄漏偏倚 | CPSC 2018 无患者级 ID,同患者多记录可跨划分 | 中 | 论文局限节声明;有条件时按时间/来源粗分组 |
| 测试集封存偏倚 | 四届隐藏测试集永不公开,官方成绩无法第三方复算 | 中 | 引用官方成绩时注明"不可复算"性质 |
§7.2 标注质量评估
| 标注类型 | 可靠性 | 一致性 | 局限性 |
|---|---|---|---|
| CPSC 2018 诊断标签 | 医师判读,整体可靠 | 多标签主从次序清晰(原版) | 官方提示存在个别错误/争议标签;WFDB 版丢失主从次序 |
| CPSC 2019 R 峰标注 | 参考标注 + 算法基线对照 | 官方评分函数有 bug(少算一个区间) | 13 条尖峰记录干扰标注与训练 |
| CPSC 2020 早搏标注 | 医师逐搏标注阳性事件 | 仅标 PVC/SPB | 正常搏动无参考标注,负样本需自建 |
| CPSC 2021 三层标注 | PhysioBank 标准格式,结构最规范 | 节律变化点 ±0.15 s 插入偏移 | 105 名受试者规模偏小;AF 事件 <5 搏动被规则剔除 |
§7.3 泛化性讨论
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨人群(中国 → 欧美/拉美) | 中高 | S4D-ECG 研究将 CPSC 训练模型直接在巴西 TNMG(232 万条)上测试,可作跨洲泛化参照;多数迁移研究报告性能下降 |
| 跨设备(12 导联设备 → 穿戴) | 高 | CPSC 2021 官方刻意在隐藏测试集中放入不同设备来源子集,正视该风险 |
| 跨任务(分类模型 → 事件定位) | 高 | 记录级分类标签不含时间定位信息,2018 训练的分类器不能直接输出事件边界 |
| 跨采样率(500 Hz → 200/257/360 Hz) | 中 | CinC 2020 多源混训时采样率从 257 到 1,000 Hz 不等,需统一重采样 |
| 隐藏测试分布 | 不可知 | 官方未公布测试集构成;2021 明确含不同设备源,2020 结构同训练集 |
§7.4 伦理考量
- 数据来自真实患者的心电检查与监测,虽经组委会去标识化(无姓名、日期、机构标识),研究者仍应以对待人体数据的态度审慎使用。
- CPSC 2018 随记录提供性别与年龄,属有限人口学信息;禁止尝试与外部数据链接以重识别个体。
- 在中国人群数据上训练的模型向其他地区人群部署前,应完成当地人群的外部验证与监管审批。
- 房颤事件检测直接影响卒中预防决策,任何基于 CPSC 2021 的模型进入临床前必须经过前瞻性临床试验。
- 发表论文时按各届要求引用数据论文,是对数据贡献者(11 家医院与患者)最基本的学术尊重。
§7.5 公平性评估
# CPSC 2018 性别子组公平性评估(.mat 内含 sex 字段)
import pandas as pd
from sklearn.metrics import f1_score
def subgroup_f1(df, y_true_col="y_true", y_pred_col="y_pred", by="sex"):
out = {}
for g, sub in df.groupby(by):
out[g] = f1_score(sub[y_true_col].tolist(),
(sub[y_pred_col] > 0.5).astype(int).tolist(),
average="macro")
return out
已知差异线索:CPSC 2018 男性记录比女性多 16%;多数参赛论文未报告性别/年龄子组性能,子组公平性在该系列上仍是开放问题。年龄仅在 CPSC 2018 可得,其余各届无人口学字段,公平性分析能力受限于发布字段。
§7.6 数据漂移提示
- 数据采集于 2018 年之前的临床设备与 2019-2021 年的穿戴设备,心电设备硬件、滤波策略与电极材料持续演进,部署前应比对目标设备的幅频响应与采样率。
- 监控信号:输入信号幅值分布、基线漂移水平、工频干扰强度(50 Hz vs 60 Hz 地区差异)、记录时长分布 PSI。
- 从中国医院场景迁移到欧美穿戴场景时,60 Hz 工频与不同导联体系(如单导贴片)是最常见的漂移源。
§7.7 DAIMS 24 项数据就绪度评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 数据为宽格式(每行一个样本/事件) | ✅ | 每条记录独立文件;标签表一行一记录 |
| 2 | 有唯一标识符列 | ✅ | A0001-A6877 / data_xxxxx 命名唯一 |
| 3 | 无 Unicode 或特殊字符 | ✅ | 标签为数字编码与 ASCII 文本 |
| 4 | 无重复行 | ⚠️ | CinC 2020/2021 与 CPSC 2018 存在字节级重复(跨数据集层面) |
| 5 | 缺失值已识别并编码 | ✅ | §4.5 信息性缺失编码表 |
| 6 | 标签列被明确标识 | ✅ | First/Second/Third label 与 .hea Dx 均明确 |
| 7 | 已对罕见类别(<3%)进行分组 | ⚠️ | STE 2.9%、LBBB 3.0% 接近阈值,官方未合并 |
| 8 | 偏倚评估已完成 | ✅ | §7.1 八类偏倚 |
| 9 | 有完整的数据字典 | ⚠️ | 官方页面有格式说明;无统一机器可读数据字典(本页 §4.1 补齐) |
| 10 | 对"信息性缺失"有明确编码解释 | ⚠️ | 官方未文档化;本页 §4.5 补齐 |
| 11 | 数据采集设备和设置已记录 | ❌ | 11 家医院与穿戴设备型号均未披露 |
| 12 | 已移除完全共线性变量 | ⚠️ | 12 导联中 III/aVR/aVL/aVF 可由 I、II 推得,原始发布保留全部 |
| 13 | 对编码的映射标准已说明 | ✅ | WFDB 版映射至 SNOMED CT(CinC 2020 官方) |
| 14 | 对时间戳的处理已明确说明 | ⚠️ | 采样率明确;真实采集时间未发布 |
| 15 | 训练/验证/测试划分建议已给出 | ❌ | 官方仅"公开训练 + 隐藏测试",无公开 test 划分 |
| 16 | 数据泄漏风险已被讨论 | ✅ | §5.3 + 坑点 3(CinC 字节级重叠) |
| 17 | 标签分布已被分析 | ✅ | §4.2 双口径分布 |
| 18 | 选择性测量偏倚已被讨论 | ✅ | 坑点 1(长度-类别关联)与 §7.1 |
| 19 | 外部验证建议已给出 | ✅ | §5.5 + §7.8 |
| 20 | 数据更新和版本信息已记录 | ✅ | CPSC 2021 PhysioNet v1.0.0 + REVISED_RECORDS 修订清单 |
| 21 | 最小必要预处理脚本已提供 | ⚠️ | 官方提供基线(Pan-Tompkins、示例 entry);完整管道依赖社区(torch_ecg) |
| 22 | 合规使用要求已明确 | ✅ | CC BY 4.0 + 引用要求在各届页面明示 |
| 23 | 多模态对齐方法已说明 | ⚠️ | 单模态信号数据;仅 2021 有搏动-节律-全局三层标注对齐说明 |
| 24 | 去标识化方法已被记录 | ⚠️ | 说明经过去标识化,但具体算法未公开 |
DAIMS 评分:17 / 24
评分解读:良好——开放获取、标注协议规范、任务设计一流;设备不透明与测试集封存是主要结构性扣分。
对你意味着什么:CPSC 系列的 12 个 ✅ 集中在"开放、规范、可引用"三个维度——CC BY 4.0 即下即用、PhysioBank 标准标注、每届都有指定数据论文与 DOI。扣分集中在三处:(1) 设备与采集设置未披露(无法做设备级校正,用多源外部验证弥补);(2) 无公开测试划分(所有对比实验必须自划分并公开划分文件);(3) 信息性缺失与数据字典未官方文档化(本页 §4.1/§4.5 已按 DAIMS 格式补齐,可直接引用)。建议训练前执行:按 §6.5 坑点 1 固定窗口、坑点 2 统一标签口径、坑点 3 画出数据血缘图,再开始实验。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部测试集变化 | 关键发现 |
|---|---|---|---|---|---|
| TNMG(巴西,232 万条 12 导联) | Telehealth Network of Minas Gerais | 4 类重叠异常迁移(AF/I-AVB/LBBB/RBBB) | 论文报告子组指标(S4D-ECG) | 可迁移但需重采样对齐(400→500 Hz) | CPSC 训练的浅层模型跨洲仍保持判别力,但阈值需按目标人群校准 |
| PhysioNet/CinC 2020 隐藏测试(多机构混合) | Emory / PhysioNet | 27 类 12 导联诊断 | 官方 Challenge Score | 头部算法隐藏测试集性能下降 ≤10% | 含 CPSC 在内的多源训练显著提升泛化;隐藏测试惩罚"过拟合公开集" |
| MITDB / AFDB / LTAF / CinC 2017(AF 判别) | PhysioNet 经典库 | AF vs 非 AF | 准确率 98.32% / 98.65% / 82.30%(CPSC 2021 参赛模型外部测试) | LTAF 上下降约 16 个百分点 | 长程动态心电(LTAF)是房颤模型最硬的外部考场 |
| NST(噪声压力测试库) | PhysioNet | QRS 检测 | Sen/Pre 约 95.6%/91.0%(CPSC 2019 训练 → NST 测试) | 与库内水平相当 | CPSC 2019 训练出的噪声鲁棒 QRS 检测器可迁移到其他噪声库 |
约束:本矩阵仅收录有同行评审论文或官方赛事报告支撑的外部评估结果。
§8 基准性能与生态
§8.1 排行榜(四届官方最终成绩)
CPSC 系列的排行榜是历史性冻结的——成绩于各届赛事结束后由组委会在隐藏测试集上一次性评定,此后无官方渠道刷新。以下数值引自各届官网与官方奖项页。
CPSC 2018(隐藏测试集 2,954 条;指标 F1,越高越好)
| 排名 | 团队 | F1 | Faf | Fblock | Fpc | Fst | 完整引用 | 代码 |
|---|---|---|---|---|---|---|---|---|
| 1 | 台湾中央研究院/台湾 AI 学院(Tsai-Min Chen 等) | 0.837 | 0.933 | 0.899 | 0.847 | 0.779 | Chen TM, Huang CH, Shih ESC, Hu YF, Hwang MJ. “Detection and Classification of Cardiac Arrhythmias by a Challenge-Best Deep Learning Neural Network Model.” iScience 23(3):100886 (2020). DOI: 10.1016/j.isci.2020.100886 | https://github.com/ChihHanHuang/The-China-Physiological-Signal-Challenge-2018-champion |
| 2 | 上海理工大学(Wenjie Cai 等) | 0.830 | 0.931 | 0.912 | 0.817 | 0.761 | CPSC 2018 官网成绩页 | 官网 Entry No. CPSC0223 |
| 3 | 哈尔滨工业大学(Runnan He、Henggui Zhang 等) | 0.806 | 0.914 | 0.879 | 0.801 | 0.742 | CPSC 2018 官网成绩页 | 官网 Entry No. CPSC0183 |
CPSC 2019(隐藏测试集 3,232 条;指标 QRSacc / HRacc,越高越好)
| 排名 | 团队 | QRSacc | HRacc | 完整引用 | 代码 |
|---|---|---|---|---|---|
| 1 | 上海理工大学(Wenjie Cai, Danqin Hu, Liangyun Jiang) | 0.9214 | 0.9489 | Cai W, Hu D. “QRS Complex Detection Using Novel Deep Learning Neural Networks.” IEEE Access 8:97079-97088 (2020) | 官方奖项页(一等奖,CNY 15,000) |
| 2 | 苏州大学(Lirong Wang 团队) | 0.9155 | 0.9429 | CPSC 2019 官方奖项页(二等奖) | — |
| 3 | 电子科技大学(Jin Qi, Sunfeng Luo) | 0.9079 | 0.9377 | CPSC 2019 官方奖项页(三等奖) | — |
CPSC 2020(隐藏测试集;官方罚分,越低越好)
| 排名 | 团队 | PVC 罚分 | SPB 罚分 | 完整引用 | 代码 |
|---|---|---|---|---|---|
| 1 | Shinall Technology(Min Chen, Kui Dong) | 41,479 | 92,947 | CPSC 2020 官网成绩页 | — |
| 2 | 上海理工大学(Wenjie Cai 等) | 55,706 | 120,942 | CPSC 2020 官网成绩页 | — |
| 3 | 苏州大学(Lirong Wang 等) | 95,900 | 111,523 | CPSC 2020 官网成绩页 | — |
CPSC 2021(隐藏测试集;综合分 U,越高越好)
| 排名 | 团队 | Test I | Test II | 平均 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | usstmed,上海理工大学(Wenjie Cai 等) | 2.0629 | 4.3921 | 3.2275 | CPSC 2021 官网/官方成绩汇总 | — |
| 2 | CeZIS(VSL Software + UPJŠ,斯洛伐克) | 2.1128 | 3.5716 | 2.8422 | 同上 | — |
| 3 | UNIWA(西阿提卡大学,希腊) | 2.0144 | 3.3833 | 2.6989 | 同上 | — |
| 4 | lingshui_BME(大连理工 + RWTH Aachen) | 1.8754 | 3.5116 | 2.6935 | Hu Y et al. “Detection of Paroxysmal Atrial Fibrillation from Dynamic ECG Recordings Based on a Deep Learning Model.” J Pers Med 13(5):820 (2023) | — |
| — | 官方基线 | 0.6819 | 0.6485 | 0.6652 | CPSC 2021 官方示例 entry | https://github.com/CPSC-Committee/cpsc2021-python-entry |
可比性警告:各论文在公开训练集上自划分报告的 F1/AUC(常见 0.85-0.95 区间)与上表隐藏测试成绩口径完全不同,绝对数值不可直接比较。引用任何"CPSC 上的新 SOTA"时,先确认其划分方式、标签口径(first-label vs any-label)与是否使用了外部数据。
§8.2 SOTA 总结与选型建议
| 如果你… | 推荐方案 | 为什么 |
|---|---|---|
| 复现 CPSC 2018 冠军管线 | Chen et al. iScience 2020 开源代码(CNN+RNN) | 唯一有完整开源 + 论文的冠军方案 |
| 快速出 12 导联分类基线 | ResNet-34(1D)+ 10 s 定长 + 类别权重 | 社区默认起点,单卡 1-2 小时 |
| 做 QRS 检测 | Cai & Hu 2020 的 CRNN 架构 + 尖峰清洗 | 冠军方法且把坑点写进了论文 |
| 做 PAF 事件检测 | usstmed 思路:RR 间期 LSTM + 序列标注融合 | CPSC 2021 冠军技术路线(Test II 得分断层领先) |
| 写论文需要对标 | 引用官方隐藏测试成绩 + 自划分结果双轨报告 | 避免"自划分高分 vs 官方口径"混用的审稿风险 |
§8.3 官方评测协议
- CPSC 2018:9 类逐一计算 F1 取均值得 F1;另报 Faf(AF)、Fblock(I-AVB/LBBB/RBBB 均值)、Fpc(PAC/PVC 均值)、Fst(STD/STE 均值)。多标签记录任一标签命中即判正确。赛中评分基于测试集随机 450 条(每类 50 条),终评在全部 2,954 条上运行参赛代码。
- CPSC 2019:QRS 检测准确度 QRSacc 与心率准确度 HRacc;提供 Pan-Tompkins 基线;参赛代码在隐藏测试集上由组委会统一运行。
- CPSC 2020:罚分制,漏检惩罚约为误检 5 倍,PVC 与 SPB 分别计分。
- CPSC 2021:两步评分——节律分类 Ur(3×3 评分矩阵,AFf 漏判重罚)+ 事件定位 Ue(onset/offset ±1 搏动 +1 分、±2 搏动 +0.5 分);单条记录运行时限 1 分钟。
§8.4 相关数据集
| 数据集 | 关系 | 说明 |
|---|---|---|
| CPSC-Extra | 姊妹集 | CPSC 2018 采集时未使用的 3,453 条(男 1,843 / 女 1,610),经 CinC 2020 发布 |
| PhysioNet/CinC 2020 | 收录者 | 含 CPSC 2018 全部波形(字节级);27 类诊断、43,101 条公开 |
| PhysioNet/CinC 2021 | 收录者 | “Will Two Do?” 导联数消融,继续使用 CPSC 数据 |
| PTB-XL | 同类/外部验证 | 德国 21,837 条 12 导联,SCP-ECG 标准 |
| Georgia 12-Lead (G12EC) | 同类/外部验证 | 美国 10,344 条 12 导联 |
| CinC 2017 AF | 任务前驱 | 单导联 AF 四分类,12,186 条 |
| MIT-BIH AFDB / LTAF | 外部验证 | 长程房颤经典库 |
| TNMG | 外部验证 | 巴西 232 万条 12 导联(S4D-ECG 跨洲验证) |
§8.5 关键论文 Top 10
- Liu FF, Liu CY, Zhao LN, et al. (2018), J Med Imaging Health Inform 8(7):1368-1373. “An open access database for evaluating the algorithms of electrocardiogram rhythm and morphology abnormality detection.” — CPSC 2018 数据论文,系列引用入口(828+ 次,Google Scholar,截至 2026-09)。DOI: 10.1166/jmihi.2018.2442
- Gao HX, Liu CY, Wang XY, et al. (2019), J Med Imaging Health Inform 9(9):1853-1858. “An Open-Access ECG Database for Algorithm Evaluation of QRS Detection and Heart Rate Estimation.” — CPSC 2019 数据论文。DOI: 10.1166/jmihi.2019.2800
- Cai ZP, Liu CY, Gao HX, et al. (2020), J Med Imaging Health Inform 10(11):2663-2667. “An open-access long-term wearable ECG database for premature ventricular contractions and supraventricular premature beat detection.” — CPSC 2020 数据论文。
- Wang XY, Ma CY, Zhang XY, Gao HX, Clifford GD, Liu CY (2021), PhysioNet v1.0.0. “Paroxysmal Atrial Fibrillation Events Detection from Dynamic ECG Recordings: The 4th China Physiological Signal Challenge 2021.” — CPSC 2021 数据集官方引用。DOI: 10.13026/ksya-qw89
- Chen TM, Huang CH, Shih ESC, Hu YF, Hwang MJ (2020), iScience 23(3):100886. “Detection and Classification of Cardiac Arrhythmias by a Challenge-Best Deep Learning Neural Network Model.” — CPSC 2018 冠军方法,含单导联消融实验。DOI: 10.1016/j.isci.2020.100886
- Cai W, Hu D (2020), IEEE Access 8:97079-97088. “QRS Complex Detection Using Novel Deep Learning Neural Networks.” — CPSC 2019 冠军方法,尖峰清洗与决策规则详实。
- Perez Alday EA, Gu A, Shah AJ, et al. (2021), Physiol Meas 41(12):124003. “Classification of 12-lead ECGs: the PhysioNet/Computing in Cardiology Challenge 2020.” — CPSC 进入全球基准的官方论文。DOI: 10.1088/1361-6579/abc960
- Zhang J, Liu X, et al. (2021), IEEE 系列(MLBF-Net, PMID: 33777544). “MLBF-Net: A Multi-Lead-Branch Fusion Network for Multi-Class Arrhythmia Classification Using 12-Lead ECG.” — 多导联分支融合的代表性后赛工作。
- Yao Q, Wang R, Fan X, Liu J, Li Y (2020), Future Generation Computer Systems / 相关工作. 多标签心律失常分类的时频融合方法群——CPSC 2018 后赛期高引方法线之一。
- Hu Y, Feng T, Tang H, et al. (2023), J Pers Med 13(5):820. “Detection of Paroxysmal Atrial Fibrillation from Dynamic ECG Recordings Based on a Deep Learning Model.” — CPSC 2021 第 4 名方法全文(ResNet + Transformer 逐搏方案)。
§8.6 社区活跃度
| 维度 | 数据 |
|---|---|
| CPSC 2018 数据论文引用 | 828+(Google Scholar,截至 2026-09);Dimensions 634;OpenAlex 456 |
| CPSC 2019 数据论文引用 | 约 68(Google Scholar,截至 2026-09) |
| CPSC 2020 数据论文引用 | 约 52(Google Scholar,截至 2026-09) |
| CPSC 2021 PhysioNet 引用 | 约 79(Google Scholar,截至 2026-09) |
| 参赛规模 | 前两届累计吸引全球 100+ 团队成功参赛(CPSC 2020 官方邀请函口径) |
| CinC 2020(含 CPSC) | 217 支团队、1,395 次算法提交 |
| 奖金设置 | CPSC 2019 一/二/三等奖分别为 CNY 15,000 / 10,000 / 5,000 |
§8.7 生态快照
| 资源 | 类型 | 链接 | 热度(截至 2026-09,约) | 为什么值得关注 |
|---|---|---|---|---|
| torch_ecg(DeepPSP) | 工具库 | https://github.com/DeepPSP/torch_ecg | 社区活跃 | 四届 CPSC 统一加载器,内置坑点修复(评分 bug、uint16、尖峰清单)与基准复现 |
| DeepPSP/cpsc2021 | 方案仓库 | https://github.com/DeepPSP/cpsc2021 | 活跃 | CPSC 2021 完整官方榜单汇总 + 多模型融合参赛方案 |
| wfdb-python | 工具库 | https://github.com/MIT-LCP/wfdb-python | 高引生态 | CPSC 2021(WFDB 格式)的官方读取栈 |
| ChihHanHuang/CPSC-2018-champion | 冠军代码 | https://github.com/ChihHanHuang/The-China-Physiological-Signal-Challenge-2018-champion | 经典 | CPSC 2018 冠军开源实现 |
| ECGBench(vlbthambawita) | 再基准化 | https://huggingface.co/spaces/vlbthambawita/ECGBench | HF Space | 对 6,877 个头文件的独立重算与字节级重叠核查,本页多处引用其结论 |
| CPSC2021-sliced(Kaggle) | 数据镜像 | https://www.kaggle.com/ | 常用 | 预切片版本,免费 GPU 即训 |
| sotapapers CPSC2019 | 基准聚合 | https://sotapapers.com/dataset/cpsc2019 | — | CPSC 2019 后续工作聚合 |
§9 相关资源与引用
官方资源
- CPSC 2018 官方页:http://2018.icbeb.org/Challenge.html
- CPSC 2019 官方页:http://2019.icbeb.org/Challenge.html
- CPSC 2020 官方页:http://icbeb2020.pastconf.com/CSPC2020
- CPSC 2021 官方页:http://icbeb2021.pastconf.com/CPSC2021
- CPSC 2021 PhysioNet 托管:https://physionet.org/content/cpsc2021/1.0.0/
- CPSC 2020 训练集直链:https://opensz.oss-cn-beijing.aliyuncs.com/ICBEB2020/file/TrainingSet.zip
- CPSC 2019 官方奖项页:http://icbeb2020.pastconf.com/CPSC2019Awards
- PhysioNet/CinC 2020(含 CPSC WFDB 重打包):https://moody-challenge.physionet.org/2020/
- 许可证:CC BY 4.0(公开训练集;各届以官方页面标注为准)
BibTeX 引用(按届引用,官方要求)
% 1) CPSC 2018 数据论文(使用 2018 数据必引)
@article{liu2018cpsc,
title={An open access database for evaluating the algorithms of electrocardiogram rhythm and morphology abnormality detection},
author={Liu, Feifei and Liu, Chengyu and Zhao, Lina and Zhang, Xiangyu and Wu, Xiaoling and Xu, Xiaoyan and Liu, Yulin and Ma, Caiyun and Wei, Shoushui and He, Zhiqiang and Li, Jianqing and Ng, Eddie Yin Kwee},
journal={Journal of Medical Imaging and Health Informatics},
volume={8}, number={7}, pages={1368--1373}, year={2018},
doi={10.1166/jmihi.2018.2442}
}
% 2) CPSC 2019 数据论文(使用 2019 数据必引)
@article{gao2019cpsc,
title={An Open-Access ECG Database for Algorithm Evaluation of QRS Detection and Heart Rate Estimation},
author={Gao, Hongxiang and Liu, Chengyu and Wang, Xingyao and Zhao, Lina and Shen, Qin and Ng, Eddie Yin Kwee and Li, Jianqing},
journal={Journal of Medical Imaging and Health Informatics},
volume={9}, number={9}, pages={1853--1858}, year={2019},
doi={10.1166/jmihi.2019.2800}
}
% 3) CPSC 2020 数据论文(使用 2020 数据必引)
@article{cai2020cpsc,
title={An open-access long-term wearable ECG database for premature ventricular contractions and supraventricular premature beat detection},
author={Cai, Zhipeng and Liu, Chengyu and Gao, Hongxiang and Wang, Xingyao and Zhao, Lina and Shen, Qin and Ng, Eddie Yin Kwee and Li, Jianqing},
journal={Journal of Medical Imaging and Health Informatics},
volume={10}, number={11}, pages={2663--2667}, year={2020}
}
% 4) CPSC 2021 PhysioNet 数据集(使用 2021 数据必引)
@misc{wang2021cpsc,
author={Wang, Xingyao and Ma, Caiyun and Zhang, Xiangyu and Gao, Hongxiang and Clifford, Gari D. and Liu, Chengyu},
title={Paroxysmal Atrial Fibrillation Events Detection from Dynamic ECG Recordings: The 4th China Physiological Signal Challenge 2021 (version 1.0.0)},
year={2021}, howpublished={PhysioNet},
doi={10.13026/ksya-qw89}
}
% 5) 如使用 CinC 2020 重打包版(WFDB),需同时引用
@article{alday2021cinc,
title={Classification of 12-lead ECGs: the PhysioNet/Computing in Cardiology Challenge 2020},
author={Perez Alday, Erick A and Gu, Annie and Shah, Amit J and others},
journal={Physiological Measurement},
volume={41}, number={12}, pages={124003}, year={2021},
doi={10.1088/1361-6579/abc960}
}
% 6) CPSC 2018 冠军方法(对标基线常引)
@article{chen2020challenge,
title={Detection and Classification of Cardiac Arrhythmias by a Challenge-Best Deep Learning Neural Network Model},
author={Chen, Tsai-Min and Huang, Chih-Han and Shih, Edward S C and Hu, Yu-Feng and Hwang, Ming-Jing},
journal={iScience}, volume={23}, number={3}, pages={100886}, year={2020},
doi={10.1016/j.isci.2020.100886}
}
教程与学习资源
- torch_ecg 数据库文档(含四届加载示例与 Issues 清单):https://torch-ecg.readthedocs.io/
- CPSC 2021 官方示例 entry(Python/MATLAB):https://github.com/CPSC-Committee/cpsc2021-python-entry
- DeepPSP/cpsc2020 复现仓库(罚分制与 LOPO 实现参考):https://github.com/DeepPSP/cpsc2020
- ECGBench 数据页(CPSC 2018 独立重算):https://huggingface.co/spaces/vlbthambawita/ECGBench
原始论文
- Liu FF, Liu CY et al. (2018). CPSC 2018 数据论文. J Med Imaging Health Inform 8(7):1368-1373. DOI: 10.1166/jmihi.2018.2442.
- Gao HX, Liu CY et al. (2019). CPSC 2019 数据论文. J Med Imaging Health Inform 9(9):1853-1858. DOI: 10.1166/jmihi.2019.2800.
- Cai ZP, Liu CY et al. (2020). CPSC 2020 数据论文. J Med Imaging Health Inform 10(11):2663-2667.
- Wang XY, Ma CY et al. (2021). CPSC 2021 数据集. PhysioNet v1.0.0. DOI: 10.13026/ksya-qw89.
- Perez Alday EA et al. (2021). PhysioNet/CinC Challenge 2020 论文. Physiol Meas 41(12):124003. DOI: 10.1088/1361-6579/abc960.
§10 AI 使用声明卡
§10.1 AI 模型使用
| AI 模型 | 版本 | 用途 |
|---|---|---|
| deep-model(WorkBuddy) | 2026-09 | 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建 |
| WebSearch(多源检索) | 2026-09-05 | 7 组检索:四届官方页面、数据论文引用量快照、官方成绩与奖项页、ICD-11/SNOMED CT 映射、社区坑点文档交叉验证 |
§10.2 AI 参与范围
AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。
AI 在本页面的工作中负责:(1) 从四届 CPSC 官方页面、PhysioNet、JMIHI 数据论文、官方奖项页与社区工具文档中整理结构化信息;(2) 生成 §6 的 Python 代码示例;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph。
§10.3 输入来源
- CPSC 2018 官方页(2018.icbeb.org/Challenge.html,含最终成绩表与官方 Table 1)
- CPSC 2019 官方页(2019.icbeb.org/Challenge.html,含最终成绩表)
- CPSC 2019 官方奖项页(icbeb2020.pastconf.com/CPSC2019Awards)
- CPSC 2020 官方页(icbeb2020.pastconf.com/CSPC2020)与官方邀请函 PDF
- CPSC 2021 官方页(icbeb2021.pastconf.com/CPSC2021)
- CPSC 2021 PhysioNet v1.0.0 页面(physionet.org/content/cpsc2021/1.0.0/)
- Liu FF, Liu CY et al. (2018), JMIHI 8(7):1368-1373(DOI: 10.1166/jmihi.2018.2442)及 Google Scholar 引用快照(828,截至 2026-09)
- Gao HX, Liu CY et al. (2019), JMIHI 9(9):1853-1858(DOI: 10.1166/jmihi.2019.2800)
- Cai ZP, Liu CY et al. (2020), JMIHI 10(11):2663-2667
- Chen TM et al. (2020), iScience 23(3):100886(DOI: 10.1016/j.isci.2020.100886,PMID: 32062420)
- Cai W, Hu D (2020), IEEE Access 8:97079-97088(CPSC 2019 冠军方法)
- Perez Alday EA et al. (2021), Physiol Meas 41(12):124003(DOI: 10.1088/1361-6579/abc960)
- ECGBench CPSC 2018 数据页(Hugging Face,长度分布/多标签口径/字节级重叠重算)
- torch_ecg 文档(CPSC2019/CPSC2021 加载器 Issues 与评分修复说明)
- DeepPSP/cpsc2021 GitHub 仓库(CPSC 2021 官方最终榜单汇总)
- MDPI J Pers Med 13(5):820(CPSC 2021 第 4 名方法与外部验证数据)
- ICD-11 MMS(findacode 传导障碍块 BC63.x、BC81.3 心房颤动、KEGG H00731、ICD-11 中文版第 11 章)
- JMIR Formative Research 2024(AF 流行病学与 CinC 2020 数据集性别构成复核)
- Zenodo 6879233(CPSC 2021 镜像大小与 CC BY 4.0 标注)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED CT 映射、临床任务、金标准) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §3 数据集规格(四届规模、格式、版本矩阵) | 千方病案医学编辑部 | 与四届官方页面及 PhysioNet 交叉比对 | ✅ 已验证 |
| §4 数据结构(目录树、DAIMS 字段字典) | 千方病案医学编辑部 | 与官方格式说明及 torch_ecg 加载器交叉比对 | ✅ 已验证 |
| §5 数据划分策略 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §6 代码示例与坑点 | 千方病案医学编辑部 | 逻辑审查 + 与 ECGBench/torch_ecg 文档比对 | ✅ 已通过 |
| §7 质量评估与 DAIMS 评分 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §8 排行榜与引用数表述 | 千方病案医学编辑部 | 与官方成绩页、奖项页及 Scholar 快照交叉比对 | ✅ 已验证 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema v3.9 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§6.0-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.5 公平性评估代码、§7.7 DAIMS 评估表与评分、§8.7 生态快照、§C JSON-LD。
§10.6 最后审核
最后一次人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
