CirCor DigiScope — 全球最大儿科心音数据库 AI-Ready Wikipedia

1,568 名 0-21 岁儿童的 5,272 条四点位心音录音与杂音特征标注

来源 PhysioNet(Universidade do Porto / INESC TEC / Real Hospital Português 等) url: https://physionet.org/content/circor-heart-sound/发布时间: 2026-09-13最后更新: 2026-09-25 阅读 51
CirCor DigiScope — 全球最大儿科心音数据库 AI-Ready Wikipedia

信息速览

数据集名称CirCor DigiScope — 全球最大儿科心音数据库 AI-Ready Wikipedia
数据类型5,272 条 4 kHz 心音录音,1,568 名 0-21 岁受试者,215,780 个心拍分割标注,约 559 MB WAV/TSV/CSV,免费开放下载
规模1,568 名受试者(0-21 岁)
接入方式PhysioNet(Universidade do Porto / INESC TEC / Real Hospital Português 等) url: https://physionet.org/content/circor-heart-sound/
AI 就绪度

数据集封面

CirCor DigiScope — 全球最大儿科心音数据库 AI-Ready Wikipedia

INFOBOX

数据集名称 CirCor DigiScope
英文全称 The CirCor DigiScope Phonocardiogram Dataset
别名/简称 CirCor Heart Sound、CirCor DigiScope Parma 之外的常见误称(官方不含 Parma)、PCG 2022、PhysioNet Challenge 2022 Dataset
疾病分类 心脏杂音相关疾病谱:先天性心脏病为主(ICD-11:LA88.4 室间隔缺损 / LB21.3 法洛四联症等,数据集本身按杂音+转诊结局标注,不按诊断编码)
SNOMED CT 248618007 Murmur / 13213009 Congenital heart disease / 91426006 Ventricular septal defect(详见 §2.2)
数据模态 单通道心音图 PCG(4 kHz、16-bit WAV)+ 人口学/体格元数据 + 心拍分割标注 + 筛查临床结局
AI 任务类型 音频分类(杂音检测/分级)、心音分割(S1/S2)、多任务学习(杂音+结局)、音频自监督预训练
样本总数 5,272 条录音 / 1,568 名受试者 / 215,780 个心拍标注(PhysioNet v1.0.3)
数据大小 约 559 MB 未压缩(v1.0.1 实测 558.9 MB,ZIP 449.4 MB)
数据格式 WAV(16-bit PCM)+ WFDB .hea + TSV(分割)+ TXT(受试者描述)+ CSV(挑战赛元数据)
许可证 Open Data Commons Attribution License v1.0(ODC-By)
访问级别 开放(PhysioNet 页面确认可匿名 AWS 下载)
DUO 标签 NRES(仅要求署名归因,无进一步限制)
语言 英文(元数据/标注);受试者为巴西葡萄牙语社区(数据内无文本语料)
首发日期 2022-01-11(PhysioNet v1.0.0)
最后更新 2022-05-10(v1.0.3,当前最新版)
发布机构 Universidade do Porto / INESC TEC(葡萄牙)、Real Hospital Português(巴西累西腓)、Emory University 等
官方主页 https://physionet.org/content/circor-heart-sound/
下载地址 https://physionet.org/content/circor-heart-sound/1.0.3/ (或 AWS:s3://physionet-open/circor-heart-sound/)
DOI 10.13026/tshs-mw03(数据集 v1.0.3)/ 10.1109/JBHI.2021.3137048(论文)
引用次数 262+(Google Scholar,截至 2026-09;另 PhysioNet 数据页被引 50+)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 官方挑战赛划分+示例代码+格式统一;扣分项:hidden test 未公开、杂音标注仅患者级与录音级两层、分割文件不覆盖全部音频段
页面状态 published

§0 E-E-A-T 审核声明

医学审核:[千方病案医学编辑部] 交叉审核:§2 医学背景(心脏杂音与先天性心脏病术语、ICD-11/SNOMED 映射、筛查流程)、§7 偏倚分析。

数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。CirCor DigiScope 采用 ODC-By v1.0 开放许可,使用者仅须按许可要求归因引用原始论文与 PhysioNet 页面。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 📌 30 秒速览

这是什么? 用电子听诊器给 1,568 名 0-21 岁孩子的胸口四个位置(主动脉瓣、肺动脉瓣、三尖瓣、二尖瓣)各录一段心跳的声音,得到 5,272 段"心音录音",再由心脏生理专家逐段听音并写下是否有心脏杂音、杂音出现在心跳的哪个时相、形状如何、响度几级。数据来自 2014-2015 年巴西东北部帕拉伊巴州的两轮大规模社区筛查(PhysioNet v1.0.3)。

为什么重要? 先天性心脏病是儿童最常见的出生缺陷之一,而听诊是成本最低的初筛手段——但专业听诊能力需要多年训练,基层与资源受限地区恰恰缺乏。这是目前最大的公开儿科心音数据集,且首次做到"逐条杂音特征级"标注(timing/shape/pitch/grading/quality),而非简单的正常/异常二分类。它也是 2022 年 George B. Moody PhysioNet Challenge(87 支队伍、779 个算法)的官方数据,基准生态成熟。

我能用它做什么? 训练"算法听诊器":自动检测杂音并给出转诊建议;做心音 S1/S2 自动分割;做音频自监督预训练;研究算法筛查在资源受限场景的成本-收益(挑战赛的 cost 指标就是为此设计的)。约 559 MB、免费开放下载,个人笔记本即可开始。

§1.1 技术摘要

CirCor DigiScope 的采集分两轮(CC2014:2014 年 7-8 月;CC2015:2015 年 6-7 月),在巴西帕拉伊巴州以"Caravana do Coração"流动筛查车形式开展。受试者自愿参加并持监护人签署的知情同意书,完成社会人口学问卷、临床体检、护理评估与心脏检查(胸片、心电图、必要时超声心动图)后,由同一名操作者用 Littmann 3200 电子听诊器(内嵌 DigiScope Collector 软件)在四个听诊点顺序采录心音,采样 4 kHz、16-bit、归一化到 [-1, 1](论文)。最终 v1.0.3 发布 5,272 条录音(1,568 名受试者、0-21 岁、合计超过 33.5 小时);215,780 个心音(S1/S2)经"三算法半监督分割 + 两名心脏生理专家逐拍复核"获得标注;每名患者的杂音由同一名专家在 Audacity 中盲法(不听分割、不看临床记录)标注 timing、shape、pitch、quality、Levine 分级与位置。筛查同时产生患者级临床结局标签(正常出院 vs 异常转诊)。2022 年,该数据 60% 被用作 PhysioNet Challenge 公开训练集(942 名患者、3,163 条录音),10% 与 30% 分别作为隐藏验证集与测试集(挑战赛论文)。

§1.1b 关键数字速查表

指标 数值 一句话语境
受试者 1,568 名 0-21 岁儿科社区筛查队列
录音 5,272 条 四听诊点位,4 kHz 单通道
心拍标注 215,780 个 S1/S2 半监督+专家复核
总时长 > 33.5 小时 单条 4.8-80.4 秒
杂音患者 305 名(19.4%) 其中舒张期仅 10 名
质量受限(Unknown) 119 名(7.6%) 信号质量不足,官方标签
转诊随访 834 名(53.2%) 筛查通路结局
挑战赛规模 87 队 / 779 算法 2022 年官方评测
murmur 榜首 0.780(HearHeart) hidden test 加权准确率
许可与体积 ODC-By v1.0 / 约 559 MB 免申请开放下载

§1.2 战略价值

维度一:儿科稀缺模态的"规模+标注深度"双冠军。 医疗 AI 的高质量音频数据长期稀缺,儿科尤其如此——受试者招募难、噪声大、标注需要专业听诊能力。CirCor 以 1,568 名受试者、5,272 条录音的规模成为最大的公开儿科心音数据集(PhysioNet),且是首个提供逐条杂音多维度特征标注的公开数据集(JBHI 论文)。这使它既能支持二分类筛查研究,也能支持"杂音分级/形状/时相"细粒度任务与多任务学习——后者是从"检测异常"走向"辅助分诊"的关键台阶。

维度二:真实世界噪声 + 临床工作流对齐。 录音在筛查车/门诊环境中采集,包含听诊器摩擦、说话、哭闹、笑声等真实噪声源(PhysioNet),这使模型评估更贴近部署条件。挑战赛专门设计了反映"漏诊成本 vs 过度转诊成本"的 cost 指标(treatment 10、error 10000、missed 50000 每人,CinC 2022),把"算法筛查要不要转诊给专家"这个真实决策问题形式化,是评估方法学与临床对齐研究的稀有范本。

维度三:南半球代表性的公平性资产。 数据来自巴西单一州份的社区筛查人群——恰好是 AI 医疗研究中代表性不足的人群。挑战赛论文明确把"sourced from an underrepresented population"列为核心贡献之一(CinC 2022)。对研究跨地域泛化、肤色/人群公平性的团队,这是少数可得的儿科心音非欧美数据源。

§1.3 同类数据集横向对比

数据集 规模 模态/采样 标注深度 与 CirCor 的差异化
CirCor DigiScope(本文) 1,568 名患者 / 5,272 条录音 / >33.5 小时 PCG 4 kHz,四听诊点位 杂音特征级(timing/shape/pitch/grade/quality/位置)+ S1/S2 分割 + 患者级结局 最大儿科心音库;含临床结局标签;挑战赛生态
PhysioNet/CinC 2016(PCG2016) 3,240 条录音(训练集) PCG 2 kHz,单一心前区位置 normal / abnormal 二分类(abnormal 含确诊心脏病者) 成人为主、无杂音特征标注、无人口学;常被用于跨库验证(对比来源)
Challenge 2022 公开训练子集 942 名患者 / 3,163 条录音 同 CirCor 同 CirCor(仅训练划分部分) CirCor 的官方 60% 子集;排行榜分数只对该子集+隐藏集可比(CinC 2022)
巴西两轮筛查原始口径(v1.0.0 摘要) 1,568 名患者 / 5,282 条录音 同 CirCor 同 CirCor v1.0.0 与 v1.0.3 的录音数口径差 10 条,见 §3.0

对比表选型结论:做儿科杂音研究只有 CirCor 一个选择(规模+标注深度+生态);需要跨库外部验证时配 PCG2016(注意成人/2 kHz/单点位的口径差);需要复现榜单分数时只用 challenge 训练子集。三个场景不要混用同一套划分代码。

§1.4 版本时间轴

时间 事件
2014-07 至 2014-08 第一轮筛查(CC2014),巴西帕拉伊巴州
2015-06 至 2015-07 第二轮筛查(CC2015)
2021-12-21 数据集论文在 IEEE JBHI 上线(DOI 10.1109/JBHI.2021.3137048)
2022-01-11 PhysioNet v1.0.0 发布(DOI 10.13026/cy60-yn18)
2022-02-01 George B. Moody PhysioNet Challenge 2022 开赛(非官方阶段)
2022-05-10 PhysioNet v1.0.3 发布(DOI 10.13026/tshs-mw03,当前最新)
2022-09 CinC 2022 公布挑战赛结果(murmur 任务冠军 HearHeart,加权准确率 0.780)
2023-09-11 挑战赛描述论文发表于 PLOS Digital Health(2(9):e0000324)

§1.5 典型应用场景

  1. 算法听诊筛查器:输入四点位心音+人口学,输出杂音概率与转诊建议,对标挑战赛双任务协议(murmur + outcome)。
  2. 心音自动分割:利用 .tsv 的 S1/S2 逐拍标注训练/评估分割模型(HSMM、CRNN、Transformer 类)。
  3. 杂音细粒度分析:收缩期杂音的 timing(早/中/晚/全收缩期)、shape、Levine 分级预测,支持"杂音描述自动生成"类研究。
  4. 音频自监督预训练:以 33.5 小时心音为域内语料或评估集(如 M2D 在 CirCor 上取得加权准确率 0.832,EMBC 2024)。
  5. 教学与标注协议研究:作为"半监督分割+专家复核"标注范本与成本敏感筛查指标设计的案例库。

以上场景按投入成本递增排序:前两项个人/小团队数天内可产出结果;多任务与预训练需 GPU 资源与协议对齐纪律;最后两项适合方法学或教育学团队。无论哪条路线,§5.3 的划分纪律与 §6.5 的坑点清单都是共同的先决条件。


§2 医学背景

§2.1 ICD-11 编码映射表

数据集以杂音与筛查结局为标注轴,不直接给出 ICD 诊断码。其覆盖的疾病谱主要落在以下 ICD-11 编码(KEGG/ICD-11 引用):

数据集内概念 ICD-11 编码 ICD-11 中文名
室间隔缺损(数据集中最常见的简单先心病类型之一) LA88.4 室间隔缺损
心室/室间隔先天性异常(类目,覆盖杂音相关主要先心病群) LA88 心室或室间隔先天性异常
法洛四联症(复杂先心病代表,数据集含 3.9% 复杂先心病) LB21.3 法洛四联症

注:数据集官方文档不提供逐患者诊断码,仅提供"正常出院/异常转诊"结局与杂音特征;上表为疾病谱覆盖映射,不能直接当患者级标签使用。

§2.2 SNOMED CT 映射表

数据集标签/概念 对应 ICD-11 SNOMED CT 码 SNOMED 术语
Murmur = Present 心脏杂音相关疾病谱 248618007 Murmur
Outcome = Abnormal(转诊) 先天性心脏病总体 13213009 Congenital heart disease
杂音最常见器质性病因之一 LA88.4 91426006 Ventricular septal defect
Systolic murmur(收缩期杂音标注) — 313065006 Systolic murmur

注:SNOMED 映射为术语学辅助,便于知识图谱/EHR 对接;杂音是否存在须以数据集 .txt/.csv 标注为准。

§2.3 疾病简介与流行病学

心脏杂音(heart murmur) 是血流经过心脏瓣膜或腔室时产生湍流所引起的异常声音。S1 由二尖瓣/三尖瓣关闭产生(收缩期开始),S2 由主动脉瓣/肺动脉瓣关闭产生(舒张期开始);瓣膜结构或功能异常会改变血流动力学,形成可闻及或可记录的杂音(PhysioNet 背景章节)。杂音的听诊特征——出现时相(收缩/舒张)、形状(渐强/渐弱/菱形/平台)、音调、质量、Levine 分级(I-VI)与最响位置——共同构成鉴别生理性(无害性)与病理性杂音的临床依据。

四个听诊点位与瓣膜的对应关系(数据集位置码的解剖学来源):

位置码 听诊点 解剖定位 主要听诊对象
AV 主动脉瓣区 胸骨右缘第 2 肋间 主动脉瓣
PV 肺动脉瓣区 胸骨左缘第 2 肋间 肺动脉瓣
TV 三尖瓣区 胸骨左下缘 三尖瓣
MV 二尖瓣区(心尖) 第 5 肋间锁骨中线 二尖瓣
Phc 其他点位 未归类体表位置 —

先天性心脏病(CHD) 是儿童最常见的出生缺陷类别之一,室间隔缺损(VSD)是其中发生率最高的类型(KEGG)。在本数据集的筛查队列中,共确认 647 个单/多诊断,最常见为简单先天性心脏病(30.2%),其次为获得性心脏病(3.3%),复杂先天性心脏病占 3.9%;834 名(53.2%)参与者被转诊随访,35 名(2.2%)有手术/介入指征(论文综述)。

数据集标注轴与杂音临床特征的对照:

临床听诊特征 数据集字段 取值 临床意义
时相 Systolic_murmur_timing / Diastolic_murmur_timing Early/Mid/Late、Holo- 收缩期杂音多数为良性线索,全收缩期+舒张期杂音提示器质性病变概率升高
形状 Shape Crescendo/Decrescendo/Diamond/Plateau 菱形(crescendo-decrescendo)常见于血流性杂音
音调 Pitch High/Medium/Low 高调提示狭窄性病变
质量 Quality Blowing/Harsh/Musical 音乐性杂音需警惕特定结构病变
响度 Grading Levine I/VI - VI/VI IV 级及以上常伴震颤
定位 Murmur_locations / Most_audible_location AV/PV/TV/MV 最响位置指向起源瓣膜

§2.4 临床任务定义

本数据集支持两级临床任务,均以"算法预筛查"为定位:

  1. 杂音检测/分级(筛查任务):判断受试者是否存在心脏杂音(Present / Absent / Unknown),进一步可预测杂音时相、分级与最响位置。对应临床工作流:听诊初筛 → 决定是否转诊。
  2. 临床结局识别(分诊任务):仅凭 PCG + 常规人口学预测完整诊断筛查的结局(Abnormal = 需转诊/治疗;Normal = 出院)。注意结局由包含胸片、心电图、超声心动图在内的完整筛查确定(CinC 2022),比杂音标签更"重",但也更难仅凭心音预测。

§2.5 患者人群表

维度 描述
来源 巴西帕拉伊巴州两轮社区大规模筛查(Caravana do Coração)
时间 2014-07/08(CC2014)与 2015-06/07(CC2015)
年龄 0-21 岁(6.1±4.3 年;官方文件按 Neonate/Infant/Child/Adolescent/Young adult 五类记录)
性别 提供 Female/Male 字段(总体比例未在官方文档汇总发布)
就医类型 自愿参加的社区筛查(持监护人知情同意),非住院队列
特殊人群 110 名自报怀孕;223 名(13.5%)为随访既往杂音复诊
种族/民族 官方文档未发布

§2.6 临床价值

在资源受限环境(基层诊所、筛查车、学校体检),超声与专科医生不可及,听诊几乎是唯一的心脏初筛手段,但其敏感度高度依赖听诊者经验。算法听诊器(PCG + ML)的目标不是替代超声确诊,而是把"该不该转诊给专家"前置自动化:挑战赛 cost 指标将漏诊(missed treatment,每人 50000 成本)与误治(error,10000)以及算法筛查/治疗成本(10)显式纳入,使模型优化直接对应筛查路径的经济账(CinC 2022)。CirCor 提供的"杂音特征级标注 + 结局标签"组合,正是训练这类转诊决策模型所需的最小监督信号集。

从公共卫生视角,其价值链条是:低成本数字听诊(设备普及)→ 算法预筛查(本数据集训练)→ 仅对高风险者转诊做超声确诊 → 早期干预先天性/获得性心脏病。队列中 35 名(2.2%)有手术/介入指征、834 名(53.2%)需随访(论文综述)的事实说明:筛查人群中的"异常发现率"并不低,算法初筛的漏诊代价真实存在,这正是官方把漏诊成本设为最高(50000/人)的临床依据。

§2.7 金标准参考表

项目 内容
划分方式 挑战赛官方:60% 公开训练 / 10% 隐藏验证 / 30% 隐藏测试,按患者划分、不重叠(CinC 2022)
标注方式 杂音:单专家盲法听诊标注(Audacity,听音+看波形,不使用分割数据);分割:3 算法半监督投票 + 专家逐拍复核;结局:完整诊断筛查通路
标注者 2 名心脏生理学家(分割,各负责一场活动);1 名心脏生理学家(杂音,全程两场)
标注者间一致性 官方未发布 κ/一致性系数;杂音标注为单标注者,无第三方复评
标注性质 杂音标签是"专家听诊所见"(perceptual ground truth),不区分病理/生理性杂音;结局标签是"筛查通路结果",含超声等客观检查(PLOS Digit Health 讨论)

§3 数据集规格

§3.0 版本抉择矩阵

你的需求 推荐版本 大小 理由
复现 PhysioNet Challenge 2022 排行榜 v1.0.3 + 官方 training_data.csv 约 559 MB 该 CSV 恰好覆盖 942 名患者(60% 划分),与 hidden validation/test 划分对应;排行榜分数只在此协议下可比
训练最大规模模型(不追榜单) v1.0.3 全量 1,568 名患者 约 559 MB v1.0.3 摘要口径为 5,272 条录音;自定划分即可用全部数据,但结果不可与榜单比较
溯源 2022 年初的早期复现工作 v1.0.0 282.4 MB 早期论文/notebook 基于该版(摘要口径 5,282 条、312 小时,录音数与总时长口径与后续版本不一致,见 §3.4 说明)
教学演示/课程作业 v1.0.3 的 20-30 名患者子集 <20 MB 用 training_data.csv 前若干行筛选 Patient_ID 即可构建最小子集

§3.1 模态详情

  • 心音图 PCG(主模态):单通道 16-bit PCM WAV,4 kHz 采样,数值归一化到 [-1, 1];每条录音对应一名受试者的一个听诊点位(AV/PV/TV/MV/Phc),时长 4.8-80.4 秒(22.9±7.4 秒)(PhysioNet v1.0.3)。
  • 心拍分割标注(衍生模态):.tsv 三列文件,逐拍给出 S1/S2 起止时间与标签;仅覆盖专家认定的"高质量代表段"。
  • 人口学/临床元数据(表格模态):年龄类别、性别、身高、体重、怀孕状态 + 杂音特征描述 + 患者级结局(Normal/Abnormal)。
  • 模态间关系:音频↔元数据以患者 ID 关联;但同一患者多个点位的录音是顺序采集、互不同步的独立单通道信号(官方文档明确 “no time synchrony between them”)。

§3.2 按子集样本数表

子集 受试者数 录音数 说明
CC2014(第一轮筛查) — 2,106 AV 540 / PV 497 / MV 603 / TV 461 / 未报告点位 5(论文)
CC2015(第二轮筛查) — 3,177 AV 817 / PV 793 / MV 812 / TV 754 / 未报告点位 1
全量(v1.0.3 口径) 1,568 5,272 摘要口径;与两轮位置明细之和(5,283)存在 11 条的版本间口径差
Challenge 2022 公开训练集 942 3,163 全量按患者的 60% 划分,随 training_data.csv 提供(CinC 2022)
Challenge 隐藏验证/测试 未公开 未公开 各约 10% / 30% 按患者划分,数据未发布

§3.3 数据格式表

文件类型 格式 内容 命名规则
录音 .wav(16-bit PCM,单声道) 4 kHz 心音信号 <ID>_<LOC>.wav;同位置多条录音带索引
头文件 .hea(WFDB 文本) 采样率、增益、通道描述 与 .wav 同名
分割标注 .tsv(文本,3 列) S1/S2 的起止时间与标签 与 .wav 同名
受试者描述 .txt(文本) 人口学 + 逐条杂音特征 <ID>.txt(同一患者所有录音共享)
汇总元数据 .csv 挑战赛训练子集的宽表(标签+人口学) training_data.csv(仅训练划分部分)

§3.4 存储大小

  • v1.0.1:未压缩 558.9 MB,ZIP 449.4 MB(PhysioNet 1.0.1 页)。
  • v1.0.0:未压缩 282.4 MB,ZIP 227.3 MB(早期版本文件集较小,PhysioNet 1.0.0 页)。
  • v1.0.3 未直接标注总大小;体量与 v1.0.1 相近(同一文件体系,新增/整理了部分文件)。
  • ⚠️ 版本摘要口径漂移:v1.0.0 摘要写"5,282 条录音、超过 312 小时",v1.0.3 摘要写"5,272 条录音、超过 33.5 小时"。33.5 小时与 5,272×22.9 秒自洽;312 小时应为早期版本摘要的口径问题。引用总时长请以 v1.0.3 为准。
  • 版本功能差异速览:v1.0.0→v1.0.1 主要是数据扩充与结构整理(体积近乎翻倍,282.4 MB→558.9 MB,补齐 .tsv 分割与受试者文件);v1.0.1→v1.0.3 修正文件命名与文档(分割文件统一为 .tsv,明确带索引录音命名)。引用任何早期论文的数字时,先确认其对应的版本口径。

§3.5 标注方式

标注对象 方式 说明
S1/S2 心拍分割 半监督(3 算法投票 + 人工复核) 三个机器分割算法给出建议,心脏生理专家逐拍核对;与所有算法都不一致时人工标注(至少 5 个完整心动周期);仅保留专家认可的高质量代表段(PhysioNet)
杂音特征 全人工(单专家盲法) timing、shape、pitch、quality、Levine grade、出现位置与最响位置;标注者不接触分割数据与临床记录
录音质量 全人工 119 名参与者因音质不达标获 Unknown 标注
临床结局 临床通路 正常出院 vs 异常转诊(含胸片、心电图、超声心动图的完整筛查)

§3.6 标注者资质与一致性

分割标注由 2 名心脏生理学家执行,两人分别负责 CC2014 与 CC2015(互相不交叉复核);杂音标注由同一名心脏生理学家全程完成。官方未发布标注者间一致性(如 κ 系数),论文亦未引入第二盲评者——这是该数据集标注质量评估的主要空白(PhysioNet v1.0.3)。实践含义:杂音标签应视为"单专家参考标准",对边界样本(Unknown 类、轻微杂音)的模型输出保持校准与不确定性估计。

§3.7 采集周期

两轮集中采集:CC2014 于 2014 年 7-8 月;CC2015 于 2015 年 6-7 月。两轮均为期约两个月的筛查车式流动服务;数据集只包含初次筛查记录,后续随访中的重复听诊数据未纳入(PhysioNet v1.0.3)。两轮在录音时长分布上存在显著差异(均值 28.7 s vs 19.0 s,p < 0.001,JBHI 论文),分析时建议把"采集批次"作为协变量或分组因素对待。

§3.8 地域覆盖

巴西帕拉伊巴州(Paraíba,东北部)。单一州份、两轮社区筛查——地理覆盖窄是该数据集最重要的泛化性约束(详见 §7.1、§7.3)。

§3.9 设备规格

项目 规格
听诊器 3M Littmann 3200 电子听诊器
采集软件 DigiScope Collector
采样率 4,000 Hz
位深/声道 16-bit / 单声道
数值范围 归一化至 [-1, 1]
采集姿态 受试者仰卧,四点位顺序采集(每条录音独立)

§3.10 深度溯源链

环节 执行者 产物/证据
筛查设计 Real Hospital Português 主持,Caravana do Coração 团队执行 研究方案、IRB 批件(5192-HUOC/PROCAPE)
音频采集 单一操作者(每场活动) Littmann 3200 + DigiScope Collector 原始 .wav
数据质控 数据团队 录入错误/离群值筛查;119 名 Unknown 判定
心拍分割 3 个机器算法 + 2 名心脏生理专家 .tsv 分割文件(仅高质量代表段)
杂音标注 1 名心脏生理专家(盲法) .txt 逐患者杂音描述
编译入库 Universidade do Porto / INESC TEC PhysioNet 结构化发布(v1.0.0→v1.0.3)
评测采用 PhysioNet Challenge 2022 组委会 官方划分、指标、87 队 779 算法结果

资金来源:DigiScope2 项目(POCI-01-0145-FEDER-029200-PTDC/CCI-COM/29200/2017,FEDER + FCT)等(OpenEmory 记录)。伦理:5192-Complexo Hospitalar HUOC/PROCAPE IRB 批准(CinC 2022)。


§4 数据结构

§4.0 目录树

数据解压后的结构预览(v1.0.3):

circor-heart-sound/1.0.3/
├── training_data.csv                  # 挑战赛训练子集(942 名患者)汇总元数据
├── RECORDS                            # 录音文件清单
├── SHA256SUMS.txt                     # 校验和
├── LICENSE.txt                        # ODC-By v1.0
└── training_data/                     # 按受试者组织的原始文件
    ├── 2530.txt                       # 受试者 2530 的描述文件(人口学+杂音特征)
    ├── 2530_AV.wav                    # 主动脉瓣点录音
    ├── 2530_AV.hea                    # WFDB 头文件
    ├── 2530_AV.tsv                    # S1/S2 分割标注
    ├── 2530_AV_1.wav                  # 同点位第 2 次录音(带索引)
    ├── 2530_AV_1.hea
    ├── 2530_AV_1.tsv
    ├── 2530_MV.wav                    # 二尖瓣点录音
    ├── 2530_MV.hea
    ├── 2530_MV.tsv
    ├── 2530_PV.wav                    # 肺动脉瓣点录音
    ├── 2530_PV.hea
    ├── 2530_PV.tsv
    ├── 2530_TV.wav                    # 三尖瓣点录音
    ├── 2530_TV.hea
    ├── 2530_TV.tsv
    └── ...

§4.1 DAIMS 字段字典(training_data.csv + .txt 关键字段)

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
Patient_ID Integer 受试者唯一数值 ID 2530 分组键(防泄漏划分) 无(官方编码) 无 1,000-1,999 区间内分配
Recording Text 录音文件基础名 2530_AV 与 .wav/.hea/.tsv 文件名对齐 无 无 <ID>_<LOC> 形式
Locations Text 该患者所有录音位置集合 AV+MV+PV+TV 多位置聚合特征 操作者记录偏差 无 AV/MV/PV/TV/Phc 的组合
Age String 年龄类别 Child 协变量/分层 家属自报误差 空值(少数受试者未记录) Neonate/Infant/Child/Adolescent/Young adult
Sex String 自报性别 Female 协变量/公平性分析 自报误差 空值 Female/Male
Height Float 身高(cm) 118.0 协变量、体型相关噪声建模 现场测量误差 NaN > 0
Weight Float 体重(kg) 21.4 同上 同上 NaN > 0
Pregnancy_status Boolean 是否自报怀孕 False 协变量(110 名 True) 自报误差 无(默认 False) True/False
Murmur String 患者级杂音标签 Present 主任务标签 单专家听诊主观性 无 Present/Unknown/Absent
Murmur_locations Text 杂音被听到的位置 MV 弱监督定位 依赖听诊点覆盖 无 位置码组合
Most_audible_location Text 杂音最响位置 MV 定位任务标签 同上 仅 Present 患者有值 AV/MV/PV/TV
Systolic_murmur_timing String 收缩期杂音时相 Mid-systolic 细粒度分类 单专家标注 NaN(无收缩期杂音时) Early/Mid/Late-systolic、Holosystolic
Shape String 杂音形状 Diamond 细粒度分类 同上 NaN Crescendo/Decrescendo/Diamond/Plateau
Pitch String 杂音音调 Medium 细粒度分类 同上 NaN High/Medium/Low
Grading String Levine 分级 II/VI 分级回归/分类 同上 NaN I/VI 至 VI/VI
Quality String 杂音质量 Blowing 细粒度分类 同上 NaN Blowing/Harsh/Musical
Outcome String 患者级临床结局 Abnormal 第二任务标签 筛查通路判定 无 Abnormal/Normal

§4.2 标签分布

患者级杂音标签(全量 1,568 名;305 与 119 来自论文/官方文档,Absent 由差值推得):

标签 人数 占比 来源
Present 305 19.4% JBHI 论文
Unknown 119 7.6% PhysioNet
Absent 约 1,144 约 73.0% 由 1,568 − 305 − 119 推得(与挑战赛训练集约 74%/19%/7% 的分布一致,arXiv 2501.13884)

杂音特征(305 名 Present 患者内):294 名仅收缩期杂音、1 名仅舒张期、9 名双期(JBHI 论文)——舒张期杂音患者仅 10 名,属极端长尾。

患者级结局:834 名(53.2%)转诊随访(Abnormal 口径的来源事件),575 名(36.7%)筛查后出院(论文综述)。注意"转诊随访"含风险因素随访,与挑战赛二分类 Outcome 的口径不完全一一对应,使用时以官方 CSV 的 Outcome 列为准。

§4.3 关键统计

统计项 数值
录音总数 5,272(v1.0.3)
受试者总数 1,568
心拍(S1/S2)标注总数 215,780(103,853 + 111,927)
总时长 > 33.5 小时(均值 22.9±7.4 秒/条)
每名受试者录音数 1-10 条(CC2014 均值 3.2;CC2015 均值 3.5)
采样率/位深 4 kHz / 16-bit
有杂音患者 305(19.4%)
质量不达标(Unknown) 119(7.6%)

按听诊点位的录音分布(论文位置明细,合计 5,283 条,与 v1.0.3 摘要 5,272 存在版本间口径差,见 §3.2):

听诊点位 CC2014 CC2015 合计
AV(主动脉瓣) 540 817 1,357
PV(肺动脉瓣) 497 793 1,290
MV(二尖瓣) 603 812 1,415
TV(三尖瓣) 461 754 1,215
Phc/未报告 5 1 6
合计 2,106 3,177 5,283

§4.4 数据层级

受试者(Patient_ID,1,568 名)
└── 听诊录音(Recording,5,272 条;同一患者 1-10 条,覆盖 1-4 个点位)
    ├── 音频信号(.wav,4 kHz 单通道,4.8-80.4 s)
    ├── WFDB 头(.hea)
    ├── 心拍分割(.tsv,S1/S2 逐拍;仅高质量代表段)
    └── 杂音特征(位于患者级 .txt,逐条录音描述其杂音表现)
受试者级标签:Murmur(三分类)、Outcome(二分类)、人口学

层级要点:标签在患者级,信号在录音级。杂音标签对所有录音共享;把录音当独立样本训练时必须按患者分组划分(§5.3)。

§4.4b 受试者描述文件(.txt)格式解析

每个 <ID>.txt 是患者级"单一真值卡",前两行为机器可读头,其余为 # 开头的注释化标签行:

# 受试者 2530 的描述文件(示意结构,字段顺序同官方文档)
2530 5 4000                # 行1:患者ID 录音数 采样率(Hz)
AV 2530_AV.hea 2530_AV.wav 2530_AV.tsv   # 行2:位置 + 三件套文件名(空格分隔,逐录音重复)
# Age: Child               # 年龄类别(Neonate/Infant/Child/Adolescent/Young adult)
# Sex: Female              # 性别(Female/Male)
# Height: 118.0            # 身高 cm
# Weight: 21.4             # 体重 kg
# Pregnancy status: False  # 怀孕状态
# Murmur: Present          # 患者级杂音标签
# Murmur locations: MV/AV  # 杂音可闻位置
# Most audible location: MV
# Systolic murmur timing: Mid-systolic
# Systolic murmur shape: Diamond
# Systolic murmur grading: II/VI
# Systolic murmur pitch: Medium
# Systolic murmur quality: Blowing
# Diastolic murmur timing: NaN
# Additional ID: NaN

解析建议:前两行按空格切分即可建立"患者→录音文件清单"索引;标签行用 key: value 正则提取。挑战赛用户可直接用 training_data.csv(字段等价的宽表形态),绕开逐文件解析;但注意该 CSV 只覆盖 942 名训练患者,访问全量必须解析 .txt。

§4.5 缺失值与信息性缺失

情形 机制 处理建议
Height/Weight 少量 NaN 现场漏测 数值列用患者级中位数填充或直接丢弃协变量;禁止跨患者用全局均值+诊断标签联合填充
杂音特征列(Timing/Shape/Pitch/Grading/Quality)NaN 结构性缺失:无杂音即无特征 不得当随机缺失插补;建模时以 Murmur 标签门控或用"缺失即类别"
Murmur = Unknown(119 人) 信号质量不足,无法可靠判定 这是信息性标签(质量信号),加权准确率给其权重 3;直接删除会扭曲评估分布
.tsv 覆盖不满整条录音 专家只保留高质量代表段 分割监督训练时将"未覆盖段"当无标签区;推理时不得假设整条信号都有分割真值
无绝对时间戳 去标识化设计 不可做时间相关分析;跨录音无同步性(见坑点 7)

缺失值总策略:先问机制,再动手。结构性缺失(无杂音→无特征)用门控或"缺失即类别";质量性缺失(Unknown)当作信息性标签保留;真漏测(Height/Weight)才考虑插补。三者的混淆——尤其是把 Unknown 当 NaN 删掉——是该数据集最常见的低级错误,也是 §6.5 坑点 3 的根源。


§5 划分与使用建议

§5.1 官方划分

George B. Moody PhysioNet Challenge 2022 官方划分:按患者(而非录音)将全量数据的 60% 公开为训练集(942 名患者、3,163 条录音,通过 training_data.csv 标识),10% 作隐藏验证集、30% 作隐藏测试集;训练集患者不会出现在验证/测试集;划分时保持变量与标签分布(CinC 2022)。隐藏集在挑战赛结束后仍未发布。

该划分的两个推论值得记住:其一,"官方训练集"是全量的真子集,training_data/ 目录里的其余约 626 名患者(2,100+ 条录音)不属于任何可比较的评测协议,使用它们等于离开官方赛道;其二,官方划分是按患者保持分布的——这为社区自建划分提供了"保持 Murmur×Outcome 联合分布"的先例参照。

§5.2 社区惯例划分

  • GroupKFold(5 折)by Patient_ID:最常用的公开数据交叉验证方案,保证同一患者所有录音同折。
  • 分层 75/25 患者级 train/test:部分音频表示学习工作采用(如 M2D 按类分层后 75/25,EMBC 2024)。
  • 子采样平衡划分:部分论文仅使用 challenge 训练子集的 3,163 条录音并自行再划分(Wavelet+1D-CNN 工作)。

§5.3 划分策略建议与泄漏风险(重点)

  1. 唯一允许的分组键是 Patient_ID。 同一患者最多 10 条录音,随机按录音划分会造成跨 train/test 的患者泄漏,准确率虚高可达数十个百分点(经验规律,与 §6.5 坑点 1 对应)。
  2. 追榜单必须用官方 60% 子集 + 官方指标。 用全量 1,568 名患者自定划分得到的分数与排行榜(hidden test 30%)不可比。
  3. Unknown 类要保留。 它是官方评估指标的一部分(权重 3),删除会改变类别分布与指标含义。
  4. 划分前固定版本。 v1.0.0 与 v1.0.3 录音数不同;写死版本号与文件清单(SHA256SUMS.txt)到实验配置中。

§5.4 交叉验证建议

推荐 5 折 GroupKFold(by Patient_ID)+ 每折内按 Murmur 标签分层;报告折间均值±标准差而非单折最优。若同时预测 Outcome,按(Murmur × Outcome)联合分层更稳。对细粒度杂音特征任务,因舒张期杂音仅 10 例患者,建议将这些患者整体置于训练侧并在报告中显式声明。

# 分层 + 分组的划分最小实现(防泄漏,可直接复用)
import numpy as np
from sklearn.model_selection import StratifiedGroupKFold

sgkf = StratifiedGroupKFold(n_splits=5, shuffle=True, random_state=42)
for fold, (tr, va) in enumerate(
        sgkf.split(meta, meta.Murmur, groups=meta.Patient_ID)):
    assert set(meta.iloc[tr].Patient_ID).isdisjoint(set(meta.iloc[va].Patient_ID))
    # 划分清单落盘,供全部实验复用(MLOps:划分即代码)
    np.save(f"split_fold{fold}_train.npy", meta.iloc[tr].Patient_ID.values)
    np.save(f"split_fold{fold}_val.npy", meta.iloc[va].Patient_ID.values)

§5.5 外部验证建议

  • PCG2016(PhysioNet/CinC 2016):成人、2 kHz、单点位、normal/abnormal 二分类——可作为跨设备、跨人群、跨标签体系的压力测试(已有工作双库联评,arXiv 2303.11423)。
  • PASCAL Heart Sounds:另一常用心音库,注意其录音条件与标签体系差异更大。
  • 落地验证:任何面向筛查部署的模型都应在本地人群(而非巴西儿童队列)上重新校准阈值;challenge 的 cost 指标权重应按本地筛查成本重估。

§6 AI 就绪指南

§6.0 云端快速启动

数据托管在 PhysioNet 与 AWS 开放数据(s3://physionet-open/circor-heart-sound/),无需注册即可匿名下载:

# AWS 开放数据镜像(推荐,免登录)
aws s3 sync --no-sign-request s3://physionet-open/circor-heart-sound/1.0.3/ ./circor-1.0.3/

# 或 wget 递归下载
wget -r -N -c -np https://physionet.org/files/circor-heart-sound/1.0.3/

Colab/Kaggle 环境:安装 wfdb、scipy、librosa、torch 即可运行本节全部代码;约 559 MB 数据在免费实例上加载无压力。

§6.1 快速上手

# ============================================================
# 快速上手:加载元数据 + 一条心音 + 一份心拍分割
#
# 目录结构预期(data_root 解压后):
#   data_root/
#     training_data.csv          # 汇总元数据(挑战赛训练子集)
#     training_data/
#       <PID>.txt                # 受试者描述
#       <PID>_<LOC>.wav          # 心音录音(<LOC> ∈ AV/PV/TV/MV/Phc)
#       <PID>_<LOC>.hea          # WFDB 头
#       <PID>_<LOC>.tsv          # S1/S2 分割
# data_root 拼接关系:文件路径 = data_root/training_data/<Recording>.wav
# 最小可用子集:training_data.csv 的任意 20 行(约 20 MB)
# ============================================================
import pandas as pd
import scipy.io.wavfile as wavfile
import numpy as np

DATA_ROOT = "./circor-1.0.3"

meta = pd.read_csv(f"{DATA_ROOT}/training_data.csv")
print(meta["Murmur"].value_counts())          # Absent / Present / Unknown
print(meta["Outcome"].value_counts())         # Normal / Abnormal

row = meta.iloc[0]
pid, loc = str(row.Patient_ID), row.Locations.split("+")[0]
sr, audio = wavfile.read(f"{DATA_ROOT}/training_data/{pid}_{loc}.wav")
print(f"sampling rate = {sr} Hz, duration = {len(audio)/sr:.1f} s")  # 4000 Hz

# 读取 S1/S2 分割(三列:start, end, label;时间为秒)
seg = pd.read_csv(f"{DATA_ROOT}/training_data/{pid}_{loc}.tsv",
                  sep="\t", header=None, names=["start", "end", "label"])
print(seg.head())

运行要点:training_data.csv 只覆盖挑战赛训练子集(942 名患者);访问全量受试者需直接枚举 training_data/ 目录下的 <PID>.txt 文件。

§6.2 数据获取

项目 内容
官方页面 PhysioNet circor-heart-sound(v1.0.3)
ZIP 直下 页面 Download the ZIP(v1.0.1 为 449.4 MB)
AWS 匿名同步 aws s3 sync --no-sign-request s3://physionet-open/circor-heart-sound/1.0.3/ DEST
申请流程 无需申请:Open Access,ODC-By v1.0 许可,仅要求引用原始论文与 PhysioNet 标准引用
大小 约 559 MB 未压缩(v1.0.1 实测)
校验 下载后核对 SHA256SUMS.txt
# 一键验证完整性
cd circor-1.0.3 && sha256sum -c SHA256SUMS.txt --quiet && echo OK

下载经验提示:PhysioNet ZIP 与 AWS 同步内容一致,择一即可;AWS 方式支持断点续传,弱网环境优先。下载后先统计 training_data/ 下 .wav 数量是否为 5,272(v1.0.3),再开始解析——数量不符先查版本号。

§6.3 预处理全流程

# ============================================================
# 预处理:4 kHz wav → 带通滤波 → 重采样 → 归一化 → mel 频谱
# 社区惯例(Challenge 2022 主流方案):25-400 Hz Butterworth 带通
#   + 下采样至 1000-1600 Hz + z-score 归一化
# ============================================================
import numpy as np
from scipy.signal import butter, sosfiltfilt, resample_poly

def preprocess_pcg(audio: np.ndarray, sr: int = 4000, target_sr: int = 1000):
    # 1) 带通 25-400 Hz:去除基线漂移与高频电子噪声,保留心音主要能量带
    sos = butter(N=2, Wn=[25, 400], btype="bandpass", fs=sr, output="sos")
    x = sosfiltfilt(sos, audio.astype(np.float64))
    # 2) 抗混叠下采样(4 kHz → 1 kHz,challenge 惯例;若研究高频杂音特征可用 2 kHz)
    x = resample_poly(x, target_sr, sr)
    # 3) z-score 归一化(逐条录音)
    x = (x - x.mean()) / (x.std() + 1e-8)
    return x, target_sr

def log_mel(x: np.ndarray, sr: int, n_mels: int = 64,
            n_fft: int = 512, hop: int = 128) -> np.ndarray:
    import librosa
    m = librosa.feature.melspectrogram(y=x, sr=sr, n_mels=n_mels,
                                       n_fft=n_fft, hop_length=hop)
    return np.log(m + 1e-8)          # (n_mels, T)

# 用法
x, sr2 = preprocess_pcg(audio)                  # audio 来自 §6.1
feat = log_mel(x, sr2)                          # (64, ~duration*1000/128)

清洗要点:① 16-bit PCM 读出后先转 float;② 同一患者多条录音独立处理(无同步性);③ .tsv 只用于监督段——未覆盖段不应参与分割损失;④ Unknown 类样本照常进入训练集(其标签即 Unknown),不要按"脏数据"丢弃。

特征工程参考表(挑战赛队伍常用的手工/混合特征,可与深度特征拼接):

特征族 代表特征 来源 适用
频域 MFCC、log-mel 统计量(均值/方差/偏度) librosa 所有分类任务
包络 Shannon 包络、同态包络 scipy/librosa 分割辅助、S1/S2 对齐
时域 过零率、RMS 能量、段时长统计 librosa 质量评估、Unknown 预测
分割衍生 心拍数、S1/S2 时长比、收缩期占比 .tsv 派生 与杂音时相任务强相关
人口学 年龄类别 one-hot、身高体重 z 值 training_data.csv outcome 任务收益最大

§6.4 PyTorch DataLoader(患者级聚合,完整可运行)

# ============================================================
# 患者级杂音分类 Dataset:一人一样本,聚合其全部录音
# 目录预期与 §6.1 相同;标签来自 training_data.csv
# 策略:每条录音独立过编码器 → 按录音聚合(mean+max)→ 患者级分类
# ============================================================
import torch
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import GroupKFold

class CircorPatientDataset(Dataset):
    def __init__(self, meta: pd.DataFrame, data_root: str, target_sr: int = 1000):
        self.rows = meta.reset_index(drop=True)
        self.data_root = data_root
        self.target_sr = target_sr

    def __len__(self):
        return len(self.rows)

    def _load_patient_audios(self, pid: int, locations: str):
        import scipy.io.wavfile as wavfile
        clips = []
        for loc in locations.split("+"):           # AV/MV/PV/TV 逐条独立加载
            base = f"{self.data_root}/training_data/{pid}_{loc}"
            try:
                sr, wav = wavfile.read(base + ".wav")
            except FileNotFoundError:              # 个别位置缺失录音,跳过
                continue
            x, _ = preprocess_pcg(wav, sr, self.target_sr)   # §6.3 预处理
            clips.append(torch.from_numpy(log_mel(x, self.target_sr)).float())
        return clips                                # List[Tensor(64, T_i)],T_i 可不同

    def __getitem__(self, idx: int):
        r = self.rows.iloc[idx]
        clips = self._load_patient_audios(int(r.Patient_ID), r.Locations)
        label = {"Absent": 0, "Present": 1, "Unknown": 2}[r.Murmur]
        return clips, label

def collate(batch):
    # 变长时序:拼 batch 维,模型端用 attention/池化处理不同 T
    clips, labels = zip(*batch)
    flat, owner = [], []
    for i, cs in enumerate(clips):
        for c in cs:
            flat.append(c)
            owner.append(i)
    return flat, owner, torch.tensor(labels)

# 患者级 5 折 GroupKFold(防泄漏,见 §5.3 / 坑点 1)
gkf = GroupKFold(n_splits=5)
for tr_idx, va_idx in gkf.split(meta, meta.Murmur, groups=meta.Patient_ID):
    train_ds = CircorPatientDataset(meta.iloc[tr_idx], DATA_ROOT)
    val_ds   = CircorPatientDataset(meta.iloc[va_idx], DATA_ROOT)
    train_dl = DataLoader(train_ds, batch_size=4, shuffle=True,
                          num_workers=2, collate_fn=collate)
    val_dl   = DataLoader(val_ds, batch_size=4, shuffle=False,
                          num_workers=2, collate_fn=collate)
    break    # 实际训练循环在此展开

配套的最小编码器 + 聚合分类器(与上方 collate 对接,单卡即可跑通):

import torch.nn as nn

class CircorNet(nn.Module):
    """录音级 CNN 编码器 → 患者级 attention 聚合 → 三分类"""
    def __init__(self, n_mels: int = 64, n_classes: int = 3):
        super().__init__()
        self.encoder = nn.Sequential(          # 输入 (n_mels, T)
            nn.Conv2d(1, 32, 3, padding=1), nn.BatchNorm2d(32), nn.ReLU(),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 64, 3, padding=1), nn.BatchNorm2d(64), nn.ReLU(),
            nn.AdaptiveAvgPool2d((8, 8)),
            nn.Flatten(),
            nn.Linear(64 * 8 * 8, 256), nn.ReLU(),
        )
        self.attn = nn.Linear(256, 1)          # 录音重要性权重(多录音聚合)
        self.head = nn.Linear(256, n_classes)  # Absent / Present / Unknown

    def forward(self, clips, owner, n_patients):
        emb = self.encoder(torch.stack(clips))              # (n_clips, 256)
        w = torch.softmax(self.attn(emb), dim=0)            # 跨录音归一化
        pooled = torch.zeros(n_patients, 256, device=emb.device)
        owner_t = torch.tensor(owner, device=emb.device)
        pooled.index_add_(0, owner_t, emb * w)              # 患者级聚合
        return self.head(pooled)                            # (n_patients, 3)

训练建议:交叉熵按类加权(Absent 1 / Present 3 / Unknown 1 起步),优化器 AdamW lr 3e-4,早停以验证折加权准确率为准;murmur 与 outcome 双任务时共用编码器、双头输出(权重 1:1 起步)。

§6.5 坑点 8 个

⚠️ 坑点 1:按录音随机划分导致患者级泄漏(分类:数据泄漏)

问题:同一患者的 1-10 条录音高度相关(同一颗心脏、同一次采集会话),按录音随机 train/test 划分会让模型在测试集上"认出"同一患者,性能严重虚高。
症状:录音级随机划分的准确率轻松上 90%+,换成患者级 GroupKFold 后骤降 10-30 个百分点;论文间结果无法复现。
解决:

  1. 简单方法:所有划分以 Patient_ID 为分组键(sklearn.model_selection.GroupKFold(groups=meta.Patient_ID))。
  2. 进阶方法:患者级划分 + 按标签分层(Murmur × Outcome),并对 Unknown 类设置固定配额,保证每折分布一致。
  3. SOTA 方法:同时冻结划分清单(patient ID 列表落盘为 JSON),全实验共用,杜绝"代码改动悄悄改变划分"。
    参考:挑战赛官方明确按患者划分且训练/验证/测试互斥(CinC 2022)。

⚠️ 坑点 2:拿全量数据自定划分却与排行榜比较(分类:评估误用)

问题:官方排行榜的 hidden validation/test 是全量数据中隔离出的 40%(10%+30%),从未发布。用全量 1,568 名患者自定划分训练出的分数与榜单(如冠军 0.780)处于不同协议,直接比较没有意义。
症状:新方法"超过挑战赛冠军"的报告,实际只是自定 split 上的高分数;审稿一查 training_data.csv 覆盖 942 名患者即露馅。
解决:

  1. 简单方法:只使用 training_data.csv 覆盖的 942 名患者(3,163 条录音)做方法研究,明写协议。
  2. 进阶方法:仿照官方协议自建 60/10/30 患者级隐藏集并只报告该协议下的分数。
  3. SOTA 方法:跟随挑战赛论文的社区惯例——引用官方指标公式(加权准确率 + cost),报告交叉验证均值±标准差,并声明与榜单不可比。
    参考:挑战赛结果页;CinC 2022 描述论文。

⚠️ 坑点 3:丢弃 Unknown 类污染评估(分类:标签理解)

问题:119 名受试者因录音质量不达标被标为 Unknown——它是官方指标的一部分(加权准确率中权重 3,介于 Present 5 与 Absent 1 之间),而不是"可删除的脏数据"。
症状:训练时丢掉 Unknown 后,模型在真实低质量音频上输出高置信 Absent;自评分数偏高但在 hidden 协议或真实筛查中失真。
解决:

  1. 简单方法:保留三分类(Absent/Present/Unknown)训练与评估。
  2. 进阶方法:加入质量评估辅助头或把 Unknown 建模为"质量驱动的拒答",用置信度校准(temperature scaling)。
  3. SOTA 方法:MC-Dropout/集成的不确定性估计 + 拒答机制,匹配官方"宁可 Unknown 不可漏诊"的临床逻辑(ICASSP 2024 工作即采用不确定性路线)。
    参考:官方指标定义(CinC 2022);Unknown 机制见 PhysioNet v1.0.3。

⚠️ 坑点 4:把 .tsv 分割当作整条录音的真值(分类:预处理陷阱)

问题:.tsv 分割标注只覆盖专家认可的"高质量代表段",其余音频段(可能含高/低质量数据)没有分割真值;把它当全信号真值会引入系统性监督偏差。
症状:分割模型在"标注边界处"损失突变、验证抖动;下游用分割裁剪杂音时,杂音恰好落在未标注段的样本被错误丢弃。
解决:

  1. 简单方法:只在 .tsv 覆盖区间上计算分割损失(mask 掉未覆盖区)。
  2. 进阶方法:将未覆盖区建模为"未标注"(semi-supervised 损失或一致性正则)。
  3. SOTA 方法:用官方提供的三个分割算法(HSMM/CRNN 系)做伪标签自训练,专家标注作为小规模金标验证集。
    参考:官方标注协议说明(PhysioNet v1.0.3)。

⚠️ 坑点 5:文件名解析器在带索引录音上崩掉(分类:工程陷阱)

问题:同一点位多次录音会带整数索引,且带索引命名在论文(ABCDE_nXY.wav)与官方文档(ABCDE_XY_n.wav)中描述不一致;只用一种正则会漏文件。
症状:glob 后患者录音数少于 training_data.csv 的 Locations 集合;个别患者维度报 KeyError。
解决:

  1. 简单方法:兼容两种模式,正则 ^(?P<pid>\d+)_(?P<idx>\d+_)?(?P<loc>AV|MV|PV|TV|Phc)(?:_(?P<idx2>\d+))?\.wav$。
  2. 进阶方法:不猜名字——直接解析 RECORDS 清单与 .hea 头(WFDB 标准字段含采样率与增益),以 .hea 为唯一可信源。
  3. SOTA 方法:用 wfdb.rdheader 批量校验 + SHA256SUMS.txt 固定文件清单,任何缺失/多出立即报错。
    参考:arXiv 论文 v1 命名描述 vs PhysioNet 1.0.3 文档。

⚠️ 坑点 6:把杂音标签当病理诊断(分类:偏倚陷阱)

问题:杂音标签来自专家听诊所见,数据集不区分病理性与生理性(innocent)杂音;而 Outcome 由含超声的完整筛查决定。二者不一致是特性而非缺陷——“有杂音"不等于"有病”,"无杂音"也不排除部分心脏病。
症状:用 Murmur=Present 作"患病"真值评估 outcome 任务,混淆矩阵出现系统性错位;论文里 murmur 与 outcome 的性能差异被误读为模型问题。
解决:

  1. 简单方法:明确区分两个任务、两套指标,报告中并列给出,不互推。
  2. 进阶方法:把 Murmur 与 Outcome 做多任务联合建模,显式学习两者的相关性(挑战赛多任务方案即此思路,prna 队论文)。
  3. SOTA 方法:校准后按筛查经济学设定双阈值(murmur 高敏感 + outcome 高特异),并报告 cost 指标。
    参考:PLOS Digital Health 相关讨论。

⚠️ 坑点 7:把四点位录音堆叠成"4 通道同步输入"(分类:预处理陷阱)

问题:四个听诊点的录音是顺序采集的,长度不同、无时间同步(官方文档明确 “no time synchrony between them”)。将其当多通道同步信号堆叠(如 4×T 张量)会制造不存在的跨通道时间对齐。
症状:多通道模型精度反而低于单通道聚合;可视化发现"同一心动周期"在四个通道完全错位。
解决:

  1. 简单方法:每条录音独立过编码器,患者级用 mean/max 池化聚合(§6.4 的做法)。
  2. 进阶方法:位置嵌入(AV/MV/PV/TV)+ attention 聚合,让模型学习点位权重。
  3. SOTA 方法:按心拍对齐——用 .tsv 的 S1/S2 边界把每条录音切成心拍段,再做周期级跨点位聚合。
    参考:PhysioNet v1.0.3 数据说明。

⚠️ 坑点 8:过度去噪与降采样抹掉诊断信息(分类:预处理陷阱)

问题:录音含真实环境噪声(摩擦、说话、哭闹、笑声),社区惯例是 25-400 Hz 带通 + 1 kHz 下采样;但杂音的音调(pitch)与质量特征部分位于较高频段,过激的滤波/降采样会削弱模型区分 high/medium/low pitch 的能力。
症状:二分类没问题、细粒度特征(pitch/quality)任务性能掉底;对噪声增强过于敏感。
解决:

  1. 简单方法:细粒度任务保留 2 kHz 采样与更宽通带(25-600 Hz),二分类再用 1 kHz 惯例。
  2. 进阶方法:多分辨率分支(1 kHz 全局 + 4 kHz 局部窗),并保留原始噪声作为增强多样性而非全部滤除。
  3. SOTA 方法:让模型在 mel 域学噪声鲁棒表征(SpecAugment + 时间遮蔽),而不是依赖手工去噪;评估时按官方 Unknown 质量逻辑报告拒答率。
    参考:噪声类型官方说明(PhysioNet);主流滤波实践(prna 队)。

§6.6 数据增强

类别 方法 说明
✅ 安全 时间平移(±0.1 s)、小幅增益抖动、SpecAugment(时间/频率遮蔽)、低强度背景噪声混合(用数据集内的真实噪声段) 与听诊真实变异一致
✅ 安全 心拍级拼接(按 .tsv 边界重排高质量心拍) 保留心脏声学结构
✅ 安全 跨录音混响模拟(室内小混响) 模拟不同筛查场地声学
❌ 危险 时间反转 心音时相结构(S1→收缩→S2→舒张)有严格方向性,反转会制造物理上不可能的样本
❌ 危险 大幅音高/速度变换(pitch-shift >2 半音) 直接破坏 pitch/quality 标注的有效性
❌ 危险 过度降噪后再增强 数据集噪声本身是真实部署分布的一部分(见坑点 8)

§6.7 模型推荐表

模型类型 代表 适用任务 备注
CNN(mel 频谱) ResNet/Xception 变体 murmur 分类、特征分类 挑战赛多数队伍基线;输入小、易训
CRNN / 时序池化 CNN+GRU+attention 患者级聚合、多录音 与 §6.4 管线天然契合
音频 Transformer AST、Branchformer(ICASSP 2024) murmur 检测 + 不确定性 需预训练或较强正则
自监督表征 M2D 等通用音频模型(EMBC 2024) 表征迁移 报告 wacc 0.832,当前公开最优之一
分割专用 HSMM、CRNN 分割网络 S1/S2 分割 官方分割算法即 HSMM/CRNN 系
多任务 murmur+outcome 双头 筛查转诊模拟 对齐挑战赛双任务协议

§6.8 硬件需求表

场景 配置 说明
数据探索/统计 CPU 4 核 + 8 GB RAM 559 MB 音频,pandas/scipy 即可
单模型训练 1×GPU 8-12 GB(如 RTX 3080/T4) mel 频谱输入,batch 4-16
自监督预训练/集成 1×GPU 24 GB(如 A5000/3090) 33.5 小时音频量级可控
全量复现挑战赛级调参 2-4×GPU 数天 主要耗时在多录音聚合与超参搜索

§6.9 评估指标代码

# ============================================================
# 官方双指标复现:murmur 加权准确率 + outcome cost
# 公式来源:CinC 2022 挑战赛描述论文
#   murmur: a = (5·m_PP + 3·m_UU + 1·m_AA) / (5·ΣP + 3·ΣU + 1·ΣA)
#   cost: treatment 10/人、error 10000/人、missed 50000/人
# ============================================================
import numpy as np

def murmur_weighted_accuracy(y_true, y_pred):
    """y ∈ {0: Absent, 1: Present, 2: Unknown}"""
    w = {0: 1.0, 1: 5.0, 2: 3.0}
    num = sum(w[t] for t, p in zip(y_true, y_pred) if t == p)
    den = sum(w[t] for t in y_true)
    return num / den if den else 0.0

def outcome_cost(y_true, y_pred):
    """y ∈ {0: Normal, 1: Abnormal};返回总 cost(越低越好)
    漏诊(真 Abnormal 预测 Normal)= 50000;误判(真 Normal 预测 Abnormal,
    进入算法治疗路径出错)= 10000;正确识别 Abnormal 的治疗成本 = 10。
    此处实现挑战赛核心惩罚结构,完整成本函数含专家筛查项,见官方论文。"""
    cost = 0.0
    for t, p in zip(y_true, y_pred):
        if t == 1 and p == 0:
            cost += 50000          # missed / late treatment
        elif t == 0 and p == 1:
            cost += 10000          # diagnostic error pathway
        elif t == 1 and p == 1:
            cost += 10             # timely treatment
    return cost

报告规范:murmur 报加权准确率(越高越好),outcome 报 cost(越低越好);同时给出按类的混淆矩阵,避免单指标遮蔽 Unknown/Abnormal 的行为差异。

# 按类混淆矩阵 + Unknown 行为专项检查(评估报告必备)
import pandas as pd

def report_confusion(y_true, y_pred):
    names = {0: "Absent", 1: "Present", 2: "Unknown"}
    df = pd.crosstab(pd.Series(y_true).map(names),
                     pd.Series(y_pred).map(names),
                     rownames=["true"], colnames=["pred"])
    print(df)
    # 关键检查:被误判为 Absent 的真 Unknown(质量拒答失败)与
    # 被误判为 Present 的真 Absent(过度转诊)两格
    return df

§6.10 MLOps 笔记

  • 数据版本化:把 SHA256SUMS.txt 与 training_data.csv 的哈希写入实验元数据;PhysioNet 版本号(1.0.3)写进 dataset card。
  • 划分即代码:GroupKFold 的患者分组清单落盘为 JSON,任何实验从同一清单加载(坑点 1/2 的制度化防线)。
  • 评估对齐:CI 中固定运行官方双指标;任何与榜单的比较必须走 942 名患者子集协议。
  • 监控漂移:部署后按"质量拒答率"(Unknown 比例)与"置信度分布"监控,而非仅看准确率——真实筛查噪声会漂移。
  • 可复现性:Challenge 遗产是开源代码文化(53 个公开 codebase,PLOS Digit Health),复现工作应优先从官方 GitHub 组织起步。
  • 推理侧预算:单条录音 1 kHz 重采样后约 0.1 M 采样点,CPU 上 mel 前处理 <0.5 秒/条;筛查车场景可在边缘设备(如树莓派级)做前处理+云端推理的分工。
  • 再训练触发:新增标注(如未来发布 hidden 集或新轮筛查)时,用 SHA256 变更检测触发全量重训与阈值重校准,而非热更新。

§7 质量评估与局限性

§7.1 已知偏倚表

偏倚类型 描述 严重程度 缓解措施
地域偏倚 单一巴西州份社区筛查,代表南美东北部儿科人群 高 外部验证(PCG2016 等)+ 部署前本地校准
标注者偏倚 杂音由单专家盲法标注,无标注者间一致性 高 对边界样本做不确定性估计;多标注者复评研究
类别不平衡 患者级约 73% Absent / 19% Present / 8% Unknown 中 加权损失/分层采样;报告按类指标
特征长尾 舒张期杂音仅 10 名患者 高 不做舒张期算法 benchmark;显式声明范围
设备单一 全部来自 Littmann 3200 + 同一采集软件 中 跨设备验证(PCG2016 用的设备族不同)
通路偏倚 Outcome 是筛查通路结果(转诊 vs 出院),受临床实践影响 中 把 Outcome 当"分诊标签"而非"诊断金标"使用
年龄口径 Age 为五分类而非精确年龄;部分样本缺 Height/Weight 低 用类别协变量;缺失显式处理(§4.5)

§7.2 标注质量

优势:215,780 个心拍标注经"三算法 + 双专家逐拍复核",是心音领域罕见的规模+质量组合;杂音特征标注协议清晰(盲法、不使用分割数据、统一量表)。短板:杂音单标注者、无一致性系数;分割仅覆盖高质量段;Unknown 机制使标签质量与信号质量耦合(PhysioNet、PLOS Digit Health 相关讨论)。总体判断:分割标注可信度高,杂音/结局标签应作"单专家/通路参考标准"使用。

§7.3 泛化性表

场景 失效风险 证据
移植到成人人群 高 队列为 0-21 岁,心脏声学特征随年龄/体型变化
移植到非巴西人群 中-高 单一地域队列;肤色/基因背景相关先心病谱差异未评估
不同听诊设备 中 全量单一设备(Littmann 3200,4 kHz);其他设备频响不同
门诊嘈杂环境 中 训练环境含真实噪声(筛查车),但与目标环境仍可能有差距
舒张期杂音检测 极高 仅 10 名患者有舒张期杂音(PLOS Digit Health)
无害性杂音鉴别 高 数据不区分病理/生理性杂音,模型无法学到该鉴别

§7.4 伦理

受试者为儿童,全部经监护人知情同意;研究方案获 5192-Complexo Hospitalar HUOC/PROCAPE IRB 批准(CinC 2022)。数据去标识化:数值 ID、无采集日期、无姓名/地址;音频为心音信号,面部/语音身份信息风险低,但公开许可下仍应避免二次身份推断尝试。ODC-By v1.0 要求署名——任何衍生成果须引用数据集论文与 PhysioNet。

对弱势群体的特别提示:队列含新生儿与婴幼儿(Neonate/Infant 类别),其监护人在社区筛查场景下签署的同意覆盖"研究用途"的程度应谨慎解读;衍生研究若涉及儿童数据再利用,建议按本地伦理要求重新评估,尤其当研究目标超出原筛查目的(如商业产品训练)时。

§7.5 公平性

该数据集是少数以南美中低收入地区儿科人群为主体的公开医疗 AI 数据,挑战赛论文将其"underrepresented population"属性列为核心贡献(CinC 2022)。可用作跨人群公平性研究的数据源;同时注意:性别的总体比例未官方汇总、种族字段缺失,公平性分析须以 Age/Sex/Pregnancy 等可得字段为限,避免过度解读。

§7.6 数据漂移

两轮采集间隔约 10 个月,官方统计显示两轮录音平均时长差异显著(28.7 s vs 19.0 s,Mann-Whitney p < 0.001,JBHI 论文)——即数据内部已存在采集批次漂移。部署含义:模型对录音时长/质量分布变化敏感,线上应监控输入时长分布与质量拒答率,并按批次评估性能。

§7.7 DAIMS 数据集就绪度评估

# 检查项 状态 说明
1 宽格式 ✅ training_data.csv 一行一录音,标签/人口学全列
2 唯一标识 ✅ Patient_ID 全局唯一;Recording 键 = ID+位置(+索引)
3 特殊字符 ✅ 文件名为数字+位置码,跨平台安全
4 重复行 ⚠️ 无重复行,但同一患者多行需 group 处理
5 缺失编码 ⚠️ Height/Weight 等以空值缺失,无哨兵码约定
6 标签标识 ✅ Murmur/Outcome 显式列,取值枚举清晰
7 罕见类分组 ⚠️ 舒张期杂音 10 例、Unknown 119 例,需专门策略
8 偏倚评估 ✅ 论文/挑战赛论文对人群与通路偏倚有明确讨论
9 数据字典 ✅ 官方文档逐字段说明 .txt/.csv 格式
10 信息性缺失解释 ✅ Unknown=质量差有官方定义;NaN=无杂音结构性缺失
11 设备记录 ✅ 设备/采样率/位深/归一化完整披露
12 共线性 ⚠️ 身高-体重-年龄类别强相关,协变量建模需正则
13 编码映射 ✅ 位置码 AV/PV/TV/MV/Phc 官方映射完整
14 时间戳处理 ⚠️ 无绝对时间戳(去标识化);录音间无同步
15 划分建议 ✅ 官方 60/10/30 患者级划分 + training_data.csv 标识
16 泄漏讨论 ✅ 官方明确患者不重叠;社区普遍知晓录音级泄漏问题
17 标签分布 ✅ 患者级杂音/特征分布有论文级披露
18 测量偏倚 ⚠️ 两名分割专家各管一场;杂音单标注者
19 外部验证建议 ✅ 与 PCG2016 双库联评已有同行评审先例
20 版本记录 ✅ PhysioNet 四个版本 + changelog + DOI 区分
21 预处理脚本 ✅ 官方示例代码 + 53 个挑战赛开源 codebase
22 合规要求 ✅ ODC-By 开放许可,无 DUA/培训门槛
23 多模态对齐 ⚠️ 音频↔表格按患者对齐,但多录音间无时间同步
24 去标识化 ✅ 数值 ID、无日期、无直接标识符

DAIMS 评分:20 / 24

评分解读:该数据集在"结构化程度、官方划分与协议、去标识化与合规、文档完备性"上接近满分,属于音频医疗数据的第一梯队;扣分集中在三点——无时间戳/录音不同步(14、23)、单标注者与批次间测量偏倚(18)、以及长尾罕见类与协变量共线性(7、12)。这些扣分项不是数据缺陷,而是采集与去标识化设计的固有代价,使用时以方法论弥补。

对你意味着什么:① 你可以直接把它接入标准音频分类管线,不必担心格式与划分的脏活——官方 CSV+示例代码已铺好;② 你的第一笔技术债应花在"患者级划分即代码"与"Unknown 类保留"上,这两件事决定结果是否可信;③ 任何细粒度杂音特征研究,先检查长尾类(尤其舒张期)是否在你的指标口径内;④ 部署导向的模型必须补外部验证(PCG2016 起步)与本地校准,地域与设备泛化是它最大的软肋;⑤ 若目标是发表论文,请同时报告 murmur 与 outcome 双指标及混淆矩阵,并显式声明划分协议与数据版本——这套透明度标准正是挑战赛社区留下的最大方法论遗产。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
PhysioNet Challenge 2022 hidden test(内部隔离集,非外部库但属分布同源隔离) Emory/PhysioNet murmur 检测 加权准确率 0.780(冠军 HearHeart) 相对公开验证集普遍下降约 1-4 个百分点 代码提交制下最优模型可复现,但与公开集自评仍有差距(CinC 2022)
PCG2016(PhysioNet/CinC 2016,成人、2 kHz、单点位) PhysioNet murmur/abnormal 分类(双库联评) 双库报告分类性能(F1/准确率口径) 迁移后性能低于 CirCor 内部基线 跨人群+跨设备+跨采样率迁移可行但需域适配(arXiv 2303.11423)

注:CirCor 的真正跨库外部验证文献仍较少——这一空白本身是社区共识(PLOS Digit Health 相关论文在 limitations 中多次指出儿科心音数据的稀缺)。


§8 基准性能与生态

§8.1 排行榜

PhysioNet Challenge 2022 — murmur 检测任务(hidden test set,官方排名,加权准确率,越高越好):

排名 模型/团队 性能 年份 关键技术 完整引用 代码
1 HearHeart 0.780 2022 团队开源提交(官方评测) Reyna MA, et al., “Heart murmur detection from phonocardiogram recordings: The George B. Moody PhysioNet Challenge 2022.” PLOS Digit Health 2(9): e0000324, 2023. DOI 10.1371/journal.pdig.0000324 结果页
2 CUED Acoustics 0.776 2022 同上协议 同上(Challenge 汇总论文收录各队 CinC 2022 论文) 同上
2 HearTech+ 0.776 2022 同上协议 同上 同上
4 PathToMyHeart 0.771 2022 同上协议 同上 同上
5 CAU_UMN 0.767 2022 同上协议 同上 同上

outcome 任务:以 cost 指标排名(越低越好),39 支队伍上榜;prna 队以 11,403 获第 2 名(其 murmur 加权准确率 0.694,第 20/40,CinC 2022-309)。

⚠️ 数值不可直接比较的原因:① 所有榜单分数产生于官方隐藏 test set(30%,未发布),第三方无法复算;② 社区论文使用自定患者级划分(如 M2D 的 75/25、ICASSP 2024 的自定协议),分数与榜单不同分布;③ 加权准确率对 Unknown 的权重设定使任何类别口径改动都会改变指标数值。

§8.2 SOTA 总结与选型建议

  • 官方协议上限:约 0.78 加权准确率(murmur);说明"仅凭 PCG+人口学"复现专家听诊仍有实质差距,转诊决策需保留人工环节。
  • 社区自划分最优:M2D 自监督表征 wacc 0.832 / UAR 0.713(EMBC 2024)与 parallel-attentive + 不确定性 wacc 79.8% / F1 65.1%(ICASSP 2024)——两者协议不同、互相不可比,但共同指向"通用音频预训练 + 注意力聚合 + 不确定性估计"是当前最有效的配方。
  • 选型建议:基线先用 CNN+患者级聚合(§6.4);追性能换预训练音频骨干;做筛查系统研究务必加 outcome cost 指标与拒答机制。

对 2023-2025 年后续工作的两点观察:① 自监督通用音频表征在 CirCor 上的收益显著,说明领域内数据量(33.5 小时)不足以从头训练大模型,"通用预训练+领域微调"已是事实范式(EMBC 2024);② 不确定性估计/校准开始成为杂音检测的标配组件——与 Unknown 类的临床语义天然契合,新方法报告时建议附上拒答率-准确率曲线。

§8.3 评测协议

  1. 数据:仅挑战赛公开训练集(942 名患者)训练;隐藏验证/测试集由官方执行评分。
  2. 输入:PCG 录音 + 常规人口学(年龄/性别/身高/体重/怀孕状态);禁止其他信息。
  3. 指标:murmur 加权准确率(权重 5/3/1)+ outcome cost(treatment 10 / error 10000 / missed 50000 每人,外加专家筛查成本项)。
  4. 提交:完整训练+推理代码,官方统一运行;每队 test 集只评一次。
  5. 结果:murmur 40 队、outcome 39 队进入官方排名(CinC 2022)。

自评复现检查清单(声称"对齐挑战赛协议"前逐项确认):

  • [ ] 只用了 training_data.csv 覆盖的 942 名患者,未混入全量其余患者
  • [ ] 划分按患者分组,train/val 内患者互斥
  • [ ] 三分类输出含 Unknown,未在评估前删类
  • [ ] murmur 指标为官方加权公式(5/3/1),非宏平均 F1
  • [ ] outcome 报 cost(含 10000/50000 惩罚结构),并附混淆矩阵
  • [ ] 报告中声明"与官方榜单不可直接比较(无 hidden test 访问)"
数据集 关系 差异 适用
PhysioNet/CinC 2016(PCG2016) 同模态(PCG) 成人、2 kHz、单点位、二分类标签 跨库外部验证
PASCAL Heart Sounds 同模态 规模小、采集条件杂 历史基准复现
PTB-XL(心电图) 不同模态、相近任务(心脏异常筛查) 12 导联 ECG 多模态对比研究
Challenge 2022 hidden sets 同源子集 未发布 仅官方评分

§8.5 关键论文 Top 9

  1. Oliveira J, Renna F, Costa PD, et al. “The CirCor DigiScope dataset: from murmur detection to murmur classification.” IEEE J Biomed Health Inform 26(6):2524-2535, 2022. DOI 10.1109/JBHI.2021.3137048 — 数据集奠基论文:规模、标注协议、人口统计全披露。
  2. Reyna MA, Kiarashi Y, Elola A, et al. “Heart murmur detection from phonocardiogram recordings: The George B. Moody PhysioNet Challenge 2022.” PLOS Digit Health 2(9):e0000324, 2023. DOI 10.1371/journal.pdig.0000324 — 挑战赛全景:指标设计、87 队 779 算法、结果分析。
  3. Reyna MA, et al. “Heart Murmur Detection from Phonocardiogram Recordings: The George B. Moody PhysioNet Challenge 2022.” Computing in Cardiology 2022(CinC2022-109)— 会议版,含完整指标公式与前五名分数。
  4. Niizumi D, Takeuchi D, Ohishi Y, Harada N, Kashino K. “Exploring Pre-trained General-purpose Audio Representations for Heart Murmur Detection.” EMBC 2024. DOI 10.1109/EMBC53108.2024.10782479 — 通用音频自监督(M2D)迁移到 CirCor 的最优公开结果之一。
  5. Zhang Z, Pang T, Han J, Schuller BW. “Intelligent Cardiac Auscultation for Murmur Detection via Parallel-Attentive Models with Uncertainty Estimation.” ICASSP 2024 / arXiv:2405.03953 — 并行注意力 + MC-Dropout 不确定性路线。
  6. Chang Y, Liu L, Antonescu C. “Multi-Task Prediction of Murmur and Outcome from Heart Sound Recordings.” Computing in Cardiology 2022(prna 队)— murmur+outcome 多任务联合建模代表。
  7. Oliveira J, Renna F, Mantadelis T, Coimbra MT. “Adaptive sojourn time HSMM for heart sound segmentation.” IEEE J Biomed Health Inform 23(2):642-649, 2019. DOI 10.1109/JBHI.2018.2841197 — CirCor 官方分割三算法之一。
  8. Renna F, Oliveira J, Coimbra MT. “Deep convolutional neural networks for heart sound segmentation.” IEEE J Biomed Health Inform 23(6):2435-2445, 2019. DOI 10.1109/JBHI.2019.2894222 — CirCor 官方分割三算法之一(CNN 系)。
  9. Liu C, Springer D, Li Q, et al. “An open access database for the evaluation of heart sound algorithms.” Physiol Meas 37(12):2181, 2016. DOI 10.1088/0967-3334/37/12/2181 — PCG2016 数据集论文,CirCor 最重要的跨库验证对象。

§8.6 社区活跃度

  • 数据集论文被引 262+、PhysioNet 页被引 50+(Google Scholar,截至 2026-09),为心音领域近年最高引用的資源之一。
  • 挑战赛 87 支队伍、779 个算法提交、53 个公开 codebase(PLOS Digit Health),官方在 GitHub 组织 physionet-challenges 维护示例与队伍仓库。
  • 持续产出:2023-2025 年仍有 ICASSP/EMBC/Interspeech 级别论文以 CirCor 为标准评估集(如音频-LLM 杂音特征研究,arXiv 2501.13884)。
  • 维护状态:数据集自 2022-05(v1.0.3)后冻结,官方以"挑战赛遗产+PhysioNet 长期托管"形式维护;社区活动集中于挑战赛论坛与 GitHub 队伍仓库的后续使用与复现讨论。

§8.7 生态快照表

资源 类型 链接 Star/热度(截至 2026-09) 推荐理由
PhysioNet 数据页 官方托管 https://physionet.org/content/circor-heart-sound/ 累计访问 850+ 版本浏览量级 唯一权威版本与文档
Moody Challenge 2022 官网 官方挑战赛 https://moody-challenge.physionet.org/2022/ — 指标定义与规则唯一来源
2022 结果页 官方榜单 https://moody-challenge.physionet.org/2022/results/ — 全部队伍分数与论文索引
physionet-challenges/2022 GitHub 组织 https://github.com/physionet-challenges 多仓库,含官方示例 官方 example classifier 起点
Challenge 论坛 官方讨论区 moody-challenge.physionet.org/2022 论坛入口 — 数据/指标疑问的官方问答存档
Kaggle 镜像 社区镜像 kaggle.com(搜索 CirCor DigiScope) 非官方 方便 Colab 快速实验(注意用 v 对应版本)

§9 相关资源与引用

§9.1 官方资源列表

§9.2 BibTeX 引用块

@article{oliveira2022circor,
  title   = {The CirCor DigiScope dataset: from murmur detection to murmur classification},
  author  = {Oliveira, Jorge and Renna, Francesco and Costa, Paulo Dias and
             Nogueira, Marcelo and Oliveira, Cristina and Ferreira, Carlos and
             Jorge, Al{\'i}pio and Mattos, Sandra and Hatem, Thamine and
             Tavares, Thiago and Elola, Andoni and Rad, Ali Bahrami and
             Sameni, Reza and Clifford, Gari D. and Coimbra, Miguel T.},
  journal = {IEEE Journal of Biomedical and Health Informatics},
  volume  = {26},
  number  = {6},
  pages   = {2524--2535},
  year    = {2022},
  doi     = {10.1109/JBHI.2021.3137048}
}

@article{reyna2023murmur,
  title   = {Heart murmur detection from phonocardiogram recordings:
             The George B. Moody PhysioNet Challenge 2022},
  author  = {Reyna, Matthew A. and Kiarashi, Yashar and Elola, Andoni and
             Oliveira, Jorge and Renna, Francesco and Gu, Annie and
             Perez Alday, Erick A. and Sadr, Nadi and Sharma, Ashish and
             Kpodonu, Jennifer and Mattos, Sandra and Coimbra, Miguel T. and
             Sameni, Reza and Rad, Ali Bahrami and Clifford, Gari D.},
  journal = {PLOS Digital Health},
  volume  = {2},
  number  = {9},
  pages   = {e0000324},
  year    = {2023},
  doi     = {10.1371/journal.pdig.0000324}
}

@misc{oliveira2022physionet,
  title        = {The CirCor DigiScope Phonocardiogram Dataset (version 1.0.3)},
  author       = {Oliveira, Jorge and Renna, Francesco and Costa, Paulo and
                  Nogueira, Marcelo and Oliveira, Ana Cristina and Elola, Andoni and
                  Ferreira, Carlos and Jorge, Alipio and Bahrami Rad, Ali and
                  Reyna, Matthew and Sameni, Reza and Clifford, Gari and
                  Coimbra, Miguel},
  howpublished = {PhysioNet},
  year         = {2022},
  doi          = {10.13026/tshs-mw03}
}

@article{liu2016open,
  title   = {An open access database for the evaluation of heart sound algorithms},
  author  = {Liu, Chengyu and Springer, David and Li, Qiao and Moody, Benjamin and
             Juan, Ricardo Abad and Chorro, Francisco J and Castells, Francisco and
             Roig, Jos{\'e} Millet and Silva, Ivan and Johnson, Alistair EW and others},
  journal = {Physiological Measurement},
  volume  = {37},
  number  = {12},
  pages   = {2181},
  year    = {2016},
  doi     = {10.1088/0967-3334/37/12/2181}
}

§9.3 引用指南

使用本数据集时须同时引用:① 数据集论文(Oliveira 2022,JBHI);② PhysioNet 数据版本引用(DOI 10.13026/tshs-mw03);③ PhysioNet 平台标准引用(Goldberger 2000, Circulation);④ 若使用挑战赛协议或比较榜单分数,须引用挑战赛描述论文(Reyna 2023, PLOS Digit Health)。

论文/项目页中的推荐引用句式示例:

Heart sound recordings were obtained from the CirCor DigiScope Phonocardiogram Dataset (v1.0.3, DOI 10.13026/tshs-mw03), described in Oliveira et al. (IEEE JBHI, 2022), following the evaluation protocol of the George B. Moody PhysioNet Challenge 2022 (Reyna et al., PLOS Digital Health, 2023).

补充规范:报告实验结果时注明使用的 PhysioNet 版本号与是否仅限训练子集(942 名患者);引用论文中披露的划分清单或随机种子,便于社区复现。


§10 AI 使用声明卡

§10.1 本页面使用的 AI 模型

模型 用途
fast-model(大语言模型) 条目初稿撰写、资料汇总、代码示例编写
内置联网检索工具 事实核查(6 轮 WebSearch,覆盖 PhysioNet、CinC/PLOS、arXiv、Kaggle、GitHub 生态)

§10.2 AI 参与范围

AI 参与了资料检索汇总、结构规划、正文撰写与代码示例编写。所有关键数字(规模、日期、许可、基准分数、分布比例)均要求检索来源支撑;AI 输出经编辑部按 §0 声明的审核范围人工复核后方可发布。

§10.3 输入来源列表

  1. Oliveira J, et al. IEEE J Biomed Health Inform 26(6):2524-2535, 2022. DOI 10.1109/JBHI.2021.3137048.
  2. PhysioNet. The CirCor DigiScope Phonocardiogram Dataset v1.0.3. DOI 10.13026/tshs-mw03. https://physionet.org/content/circor-heart-sound/1.0.3/training_data
  3. PhysioNet. The CirCor DigiScope Phonocardiogram Dataset v1.0.0. DOI 10.13026/cy60-yn18. https://physionet.org/content/circor-heart-sound/1.0.0/training/
  4. PhysioNet. The CirCor DigiScope Phonocardiogram Dataset v1.0.1. https://physionet.org/content/circor-heart-sound/1.0.1/training_data
  5. Reyna MA, et al. PLOS Digit Health 2(9):e0000324, 2023. DOI 10.1371/journal.pdig.0000324.
  6. Reyna MA, et al. Computing in Cardiology 2022 (CinC2022-109). https://cinc.org/archives/2022/pdf/CinC2022-109.pdf
  7. George B. Moody PhysioNet Challenge 2022 结果页. https://moody-challenge.physionet.org/2022/results/
  8. Chang Y, Liu L, Antonescu C. Computing in Cardiology 2022 (CinC2022-309, prna 队).
  9. Niizumi D, et al. EMBC 2024. DOI 10.1109/EMBC53108.2024.10782479. PMID 40039556.
  10. Zhang Z, Pang T, Han J, Schuller BW. ICASSP 2024. arXiv:2405.03953.
  11. Oliveira J, et al. arXiv:2108.00813(数据集论文预印本 v1).
  12. PMC9253493(JBHI 论文 NIH 手稿版). https://pmc.ncbi.nlm.nih.gov/articles/PMC9253493/
  13. Beholder 数据集综述博客(引论文 Table 数据). https://blog.beholderhq.com/brief-review-the-circor-digiscope-dataset-from-murmur-detection-to-murmur-classification-2de6916878f8
  14. PLOS Digit Health 相关论文(心音分割与检测,DOI 10.1371/journal.pdig.0000436).
  15. arXiv 2303.11423(Wavelet Scattering + 1D-CNN 双库联评).
  16. arXiv 2501.13884(音频-LLM 杂音特征研究).
  17. KEGG H01926(VSD 的 ICD-11 映射). https://www.kegg.jp/entry/H01926
  18. MalaCards Ventricular Septal Defect(ICD-11/SNOMED 交叉引用). https://www.malacards.org/card/ventricular_septal_defect
  19. UNSW Embryology ICD-11 心血管结构异常层级表. https://embryology.med.unsw.edu.au/
  20. OpenEmory 出版物记录(资助与作者机构). https://open.library.emory.edu/concern/publications/a1fc6826-be37-459b-bb31-3836d64506a4

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
frontmatter 与 schema_org 结构 千方病案医学编辑部 依据写作宪法逐字段核对 ✅ 已通过/已验证
§1 概览与规模数字 千方病案医学编辑部 对照 PhysioNet v1.0.3 官方摘要逐项核对 ✅ 已通过/已验证
§2 医学背景(ICD-11/SNOMED/流行病学) 千方病案医学编辑部 对照 KEGG/MalaCards/官方文档交叉核对 ✅ 已通过/已验证
§3 数据规格与版本口径 千方病案医学编辑部 三个 PhysioNet 版本页对照 ✅ 已通过/已验证
§4 数据字典与目录树 千方病案医学编辑部 对照官方文件格式说明 ✅ 已通过/已验证
§5-§6 划分/代码/坑点 千方病案医学编辑部 代码逻辑走查 + 挑战赛协议对照 ✅ 已通过/已验证
§7 DAIMS 与偏倚分析 千方病案医学编辑部 逐项对照官方局限说明 ✅ 已通过/已验证
§8 基准分数 千方病案医学编辑部 对照官方结果页与原始论文 ✅ 已通过/已验证
§9-§10 引用与声明卡 千方病案医学编辑部 BibTeX 逐字段核对 DOI ✅ 已通过/已验证

§10.5 AI 生成章节标注

全部章节由 AI 生成初稿;§0 审核声明、§2.1/§2.2 编码映射表与 §7 偏倚/DAIMS 评估经人工重点复核并按需要修订;§6 代码示例经逻辑走查(运行环境差异可能导致个别库版本 API 需微调,已在注释中说明预期)。

§10.6 最后人工审核日期

2026-09-05(与 §0 审核日期一致)。

页面状态:published(全部内容已完成审核并发布)


相关数据集导航

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

  • hls-cmds — 共享标签:生理信号 / 心血管疾病 / 语音信号
  • physionet-cinc-2016 — 共享标签:生理信号 / 心血管疾病 / 语音信号
  • bridge2ai-voice — 共享标签:生理信号 / 图像分类 / 语音信号
  • ptb-xl — 共享标签:生理信号 / 图像分类 / 心血管疾病
  • coughvid — 共享标签:生理信号 / 语音信号
  • physionet-cinc-2017 — 共享标签:生理信号 / 图像分类 / 心血管疾病
  • torgo — 共享标签:生理信号 / 语音信号
  • echonet-lvh — 共享标签:图像分类 / 心血管疾病
  • fetal-planes-db — 共享标签:儿科 / 图像分类
  • coswara — 共享标签:生理信号 / 语音信号

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

返回 AI-Ready 数据集