CAMUS — 心脏超声多结构分割金标准 AI-Ready Wikipedia

500 例患者、2,000 帧手工标注的心尖两腔与四腔心超声序列

来源 CREATIS 实验室(里昂大学 / INSA Lyon)与圣艾蒂安大学医院心血管科 url: https://camus.creatis.insa-lyon.fr/challenge/发布时间: 2026-09-18最后更新: 2026-09-25 阅读 40
CAMUS — 心脏超声多结构分割金标准 AI-Ready Wikipedia

信息速览

数据集名称CAMUS — 心脏超声多结构分割金标准 AI-Ready Wikipedia
数据类型4.8 GB NIfTI 序列,500 名患者,2,000 帧手工标注,非商业研究免费下载
规模500 名患者(450 例带标注 / 50 例无标注测试集)
接入方式CREATIS 实验室(里昂大学 / INSA Lyon)与圣艾蒂安大学医院心血管科 url: https://camus.creatis.insa-lyon.fr/challenge/
AI 就绪度

CAMUS — 心脏超声多结构分割金标准 AI-Ready Wikipedia

INFOBOX

数据集名称 CAMUS 心脏超声
英文全称 Cardiac Acquisitions for Multi-structure Ultrasound Segmentation
别名/简称 CAMUS、CAMUS dataset、CAMUS challenge、CAMUS public
疾病分类 心血管疾病与心功能不全(ICD-11:BC41 左心室收缩功能障碍 / BB4Z 心力衰竭未特指 / BC42 左心室舒张功能障碍 / BC20 缺血性心脏病)
SNOMED CT 34242008 Echocardiography (procedure) / 40701008 Left ventricular ejection fraction (observable) / 87878005 Left ventricular structure (body structure) / 84114007 Heart failure (disorder)(详见 §2.1b)
数据模态 二维经胸超声心动图(灰阶 B-mode 序列)
AI 任务类型 多结构语义分割、射血分数回归、心室容积回归、心动周期相位(ED/ES)分类、时序一致性建模、半监督与自监督学习、域适应
样本总数 500 名患者 / 1,000 次采集(每例 2CH + 4CH)/ 2,000 帧手工标注关键帧 / 约 21,232 帧含掩码序列帧
数据大小 3.83 GB(源发布版,gzip 压缩 float32 NIfTI)/ 约 4.8 GB 解压后
数据格式 NIfTI(.nii.gz,float32)/ 纯文本配置(.cfg);社区派生格式含 MHD、PNG 8-bit 与 16-bit、Parquet
许可证 CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享)
访问级别 开放(CREATIS 门户注册账户并接受许可条款后免费下载)
DUO 标签 NPUNCU, NCU, PUB
语言 英文(配置文件名与字段名);图像数据无语言属性
首发日期 2019-04(挑战赛平台上线);2019-09(IEEE TMI 论文正式发表)
最后更新 2023-01(官方排行榜最后一次更新,在线评测平台已关闭)
发布机构 CREATIS 实验室(里昂大学 / INSA Lyon)与圣艾蒂安大学医院(CHU Saint-Étienne)
官方主页 https://camus.creatis.insa-lyon.fr/challenge/
下载地址 https://humanheart-project.creatis.insa-lyon.fr/database/#collection/6373703d73e9f0047faa1bc8
DOI 10.1109/TMI.2019.2900516(论文 DOI;数据集经 CREATIS 门户分发,无独立 DOI)
引用次数 963+(Google Scholar,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 标注质量与官方划分顶尖、患者级划分明确;扣分项:仅 ED/ES 为手工描画、在线评测平台已关闭无法提交新结果、单中心单厂商、无官方预处理脚本
页面状态 published

§0 E-E-A-T 信任声明与免责声明

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、心力衰竭与左心室收缩功能障碍的临床任务定义、金标准描述、超声心动图检查规范)、§7 偏倚分析。

数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(Info_2CH.cfg / Info_4CH.cfg 配置字段语义、NIfTI 标签编码体系)、§5 数据划分策略(400/50/50 患者级划分与泄漏边界)、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

审核方式:交叉审核

利益冲突声明:千方病案医数集与 CREATIS 实验室、里昂大学、INSA Lyon、圣艾蒂安大学医院及 NTNU 无任何商业利益关联。本页面不销售 CAMUS 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。CAMUS 采用 CC BY-NC-SA 4.0 许可证,仅限非商业科学研究用途;使用者须在 CREATIS 数据门户注册并接受附加条款,且任何使用必须引用 Leclerc et al. (2019)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 📌 30 秒速览

这是什么? CAMUS 是一份二维心脏超声数据集,全部来自法国圣艾蒂安大学医院同一台机器、同一批病人。它有 500 名患者,每个人都拍了两个角度的心脏超声:从心尖位置拍的"两腔心"和"四腔心"。每次拍摄都记录了完整的一个心动周期(心脏从舒张到收缩再回到舒张),但真正被医生一笔一笔画出轮廓的,只有舒张末期(ED)和收缩末期(ES)这两张关键帧。医生画了三样东西:左心室的内膜边界、左心室的外膜边界、以及左心房。总共 2,000 张手工标注图,这就是这份数据集最核心的价值。

为什么重要? 在它之前,公开的心脏超声数据集要么规模小,要么只标注"心室腔"这一个结构,要么来自多个国家的不同机器因而风格混杂。CAMUS 是第一个把"够大、够干净、多结构、完全公开"四件事同时做到的二维心脏超声数据集。它让研究者第一次能在统一口径下比较不同算法到底能不能替代医生手工勾画心室轮廓——而这正是临床上计算射血分数(EF)的必经步骤。到今天,它仍然是心脏超声分割领域引用最多的公开基准。

我能用它做什么? 最直接的用法是训练一个分割模型:输入一张超声帧,输出内膜、外膜、左心房三个区域的掩码。在此之上可以进一步回归 ED 与 ES 容积并计算 EF,或者做半监督、自监督、域适应研究。需要注意三件事:第一,许可证是 CC BY-NC-SA 4.0,只能做非商业研究;第二,官方在线评测平台已经关闭,你无法再向官方榜单提交新成绩;第三,只有 50 位患者的测试集是真正留出的,训练时务必守住这条边界。

§1.1 摘要

CAMUS(Cardiac Acquisitions for Multi-structure Ultrasound Segmentation)由 CREATIS 实验室(里昂大学 / INSA Lyon)与圣艾蒂安大学医院于 2019 年联合发布,其原始论文《Deep Learning for Segmentation using an Open Large-Scale Dataset in 2D Echocardiography》发表于 IEEE Transactions on Medical Imaging 第 38 卷第 9 期,DOI 为 10.1109/TMI.2019.2900516。

数据集的构建动机十分明确:作者希望回答"当前最先进的编码器-解码器深度卷积网络,在二维超声心动图评估上究竟能走多远"。为此,他们刻意不做任何数据筛选,将 500 名患者的常规临床检查原样纳入,从而保留了日常临床工作中真实存在的困难病例、多样的采集参数、部分心室壁不可见的视野,以及少数因无法获得严格四腔心切面而以五腔心替代的采集。这种"不挑选"策略带来两份结果:数据集在图像质量与病理谱上高度异质,同时具备了其他精选数据集所缺乏的临床真实感。

在标注层面,数据集采用分层策略。全库 500 例中的 450 例构成训练与验证部分,其余 50 例作为官方留出的测试集。每一例均包含心尖两腔心(2CH)与心尖四腔心(4CH)两组序列,每组序列都标注了舒张末期与收缩末期两个关键帧,共形成 2,000 帧参考标注。标注结构为左心室内膜(LV endocardium)、左心室心肌/外膜(LV epicardium)与左心房(LA)三类,加上背景共四个标签值。全库参考标注由一名心脏科医师完成;另有 50 例折叠子集由三名心脏科医师独立重复标注,用于量化观察者间与观察者内一致性。

论文报告的核心结果显示,基于编码器-解码器的深度网络在左心室舒张末期与收缩末期容积估计上,与专家分析的平均相关系数为 0.95、平均绝对误差 9.5 ml;射血分数估计的表现则较为分化,平均相关系数 0.80、平均绝对误差 5.6%。作者明确指出,这一水平低于观察者间一致性,仅略优于观察者内一致性之外的参考线,因此"全自动心脏超声分析"的大门虽已打开,但尚未走完。

§1.2 战略价值

维度一:为心脏超声分割建立了可比的统一标尺。 在 CAMUS 之前,二维心脏超声分割研究的可比性极差:有人报告帧级 Dice,有人报告患者级 Dice;有人用整幅图像,有人裁剪到感兴趣区;有人归一化到 [0,1],有人做 z-score 标准化或直方图均衡。CAMUS 的价值在于它同时提供了三样东西——一份足够大的固定患者级划分(patient0001-0400 训练、0401-0450 验证、0451-0500 测试)、一套明确的四标签编码体系、以及一个曾长期运行的官方在线评测平台。这三者叠加,使得 2019 年之后发表的多数心脏超声分割论文都会在 CAMUS 上报告结果,从而形成了一个罕见的大规模横向比较池。截至 2026 年,第三方聚合榜单上同一测试集已积累二十余个方法的可比数值。

维度二:提供了"真实临床数据"的难度基准。 CAMUS 最有价值的战略决策恰恰是不做筛选。数据集明确保留了追踪困难的病例、广泛的采集设置差异、部分心室壁不可见的视野,以及 19% 被专家评为 Poor 质量的图像。这意味着一个在 CAMUS 上达到观察者内一致性水平的模型,其鲁棒性声明是有实际意义的——它不是在被清洗过的理想样本上取得的。相比之下,许多同类数据集在发布前剔除了差质量图像,导致模型在真实部署时性能断崖式下跌。CAMUS 的异质性因此成为其实验价值的一部分,而非需要修补的缺陷。

维度三:作为域适应的标准源域与目标域。 由于 CAMUS 的图像风格高度一致(单中心、单厂商、单探头),它天然适合扮演域适应研究中的"源域":在干净稳定的 CAMUS 上预训练,再迁移到多中心、多厂商的目标集。反之,把外部模型迁移到 CAMUS 上评测泛化能力,也是社区常见做法。这种双向流转使 CAMUS 在心脏超声基础模型与域适应文献中反复出现,进一步巩固了其基准地位。

维度四:多结构联合标注支撑了结构化推理研究。 同时标注心内膜、心外膜与左心房三个结构,而非仅仅标注心室腔,使 CAMUS 支持超越纯分割的研究:心肌厚度与质量估计、心房-心室耦合分析、解剖学合理性约束(例如心室轮廓必须闭合、心外膜必须完全包含心内膜)。后者在 2020 年之后的文献中催生了专门强调"解剖学保证"的分割方法,而这些方法的验证几乎无一例外地选择 CAMUS 作为主要评测平台。

§1.3 同类数据集横向对比

数据集 发布年 患者/样本数 视图 标注结构 差异化定位
CAMUS 2019 500 例 / 2,000 手工关键帧 + 约 19,232 序列帧 心尖 2CH、4CH LV 内膜、LV 心肌(外膜)、左心房 多结构完整标注 + 固定患者级划分;单中心单厂商
EchoNet-Dynamic 2019 10,036 例 心尖 4CH 仅 LV 内膜(单结构) 规模最大,但只有一个结构、且以视频级任务为主
TED 2022 98 例(源自 CAMUS 同批患者) 2CH、4CH LV 内膜、LV 心肌、左心房 逐帧全手工标注,与 CAMUS 共享队列,规模小
HMC-QU 2021 292 例 2CH、4CH 等多视图 LV 内膜、LV 心肌 以心肌梗死诊断为主要目标,序列标注完整
Unity Imaging Collaborative 2022 英国 17 家医院多中心队列 心尖 + 胸骨旁混合 长轴应变与 LV 尺寸测量 多中心真实世界,标注为临床测量值而非轮廓
TMED 2022 常规护理静帧 胸骨旁长轴 / 短轴 视图分类 + 主动脉瓣狭窄严重度 仅静帧、无序列、任务为分类
CETUS 2014 多中心三维超声 三维经胸 LV 内膜(三维) 三维超声分割,模态不同不可直接比较
ACDC 2017 100 例 cine MRI 短轴 LV、RV、心肌 心脏磁共振,与 CAMUS 模态不同、医院不同

读表要点:CAMUS 的规模不是最大的(EchoNet-Dynamic 是它的二十倍),标注结构也不是最全的(TED 做到了逐帧全手工)。它的定位是"规模与标注质量的最优折中":既足够大以支撑深度网络训练,又对三个结构做了完整的手工轮廓标注,还配了一套被广泛接受的划分。选型时若任务需要单结构大规模视频建模,优先考虑 EchoNet-Dynamic;若需要逐帧手工真值做时序一致性研究,TED 是 CAMUS 的补充而非替代;若需要三维或磁共振,则 CAMUS 不适用。

§1.4 版本时间轴

时间 事件
2018-08 数据集构建工作启动,圣艾蒂安大学医院伦理委员会批准采集范围
2019-04 CAMUS 挑战赛平台上线,训练/验证/测试划分与参考标注首次公开
2019-08 arXiv 预印本发布(arXiv:1908.06948)
2019-09 论文正式发表于 IEEE TMI 38(9):2198-2210;数据集稳定版定为 v1.0
2020 LU-Net 多任务网络发表,引入解剖结构约束与多任务学习
2022 TED 数据集发布,基于 CAMUS 同批患者中的 98 例子集逐帧重新标注
2022 ETAB 基准套件(NeurIPS Datasets and Benchmarks Track)将 CAMUS 纳入其 31 项评测任务
2022-11 数据集镜像至 CREATIS Human Heart Project 数据门户(Girder 集合 6373703d73e9f0047faa1bc8)
2023-01 官方排行榜最后一次更新;在线评测平台随后关闭
2024-2026 Hugging Face 与工具链(torch-em、zea)衍生版本相继出现,CAMUS 成为心脏超声基础模型的标准评测集

§1.5 典型应用场景

场景一:左心室内膜与心外膜联合分割。 最基础也最广泛的用法。输入单帧超声图像,输出两个嵌套轮廓;心外膜目标取标签 1 与 2 的并集。该任务在官方榜单上已达到甚至超过观察者内一致性水平(内膜 Dice 0.952 对观察者内 0.945)。

场景二:射血分数自动估计。 由 ED 与 ES 两帧的分割结果出发,用圆盘求和法(modified Simpson 法则)计算舒张末期容积 EDV 与收缩末期容积 ESV,再得出 EF = (EDV − ESV) / EDV。这是临床最关心的下游指标,也是误差放大最严重的一环:分割的微小偏差会在容积立方化后被放大。

场景三:心动周期相位识别。 数据集为每个半序列显式标注了 ED 帧与 ES 帧的索引(配置文件中 ED、ES 字段),因此可直接作为帧级二分类或相位回归任务的真值。该任务在心律失常患者上尤其困难,因为帧序列未必单调地从 ED 走向 ES。

场景四:半监督与自监督预训练。 数据集混合了手工标注帧(ED/ES)与传播标注帧(中间帧),天然构成一个"少量精标 + 大量弱标"的格局。研究可用 ED/ES 作为可信监督、中间帧作为一致性正则化项,或直接在无标注序列上做对比学习预训练。

场景五:域适应与泛化评测。 由于 CAMUS 单中心单厂商特性明确,它常被用作域适应的源域(在其上预训练),或在多中心数据上训练的模型迁移到 CAMUS 上评测,以量化跨中心、跨厂商的性能损失。

场景六:解剖学合理性约束验证。 心外膜必须严格包围心内膜、轮廓闭合、随心动周期平滑变化,这些是天然的先验约束。CAMUS 的三结构嵌套标注使其成为检验"带解剖学保证的分割网络"的理想平台。


§2 医学背景

§2.1 ICD-11 编码映射

CAMUS 不是按单一疾病构建的队列,而是按"临床需要测量 LVEF"这一检查指征收集的连续患者。因此其疾病谱跨越正常与多种左心功能异常。以下为与该数据集临床任务直接相关的 ICD-11 实体。

标签 ICD-11 编码 中文名 与 CAMUS 的关联
左心室收缩功能障碍 BC41 左心室收缩功能不全 约一半患者 LVEF < 45%,属该类
心力衰竭(未特指) BB4Z 心力衰竭,未特指 LVEF 降低者的临床诊断归属
射血分数降低的心力衰竭 BB41 射血分数降低型心力衰竭(HFrEF) LVEF < 40% 的典型诊断锚点
射血分数保留的心力衰竭 BB42 射血分数保留型心力衰竭(HFpEF) LVEF 正常但舒张功能异常者
左心室舒张功能障碍 BC42 左心室舒张功能不全 由二尖瓣血流与左心房容积推断
缺血性心脏病 BC20 缺血性心脏病 导致节段性室壁运动异常的常见病因
心肌病 BC43 心肌病 心肌质量与几何形态异常的病因之一
原发性高血压 BA00 原发性高血压 导致左心室肥厚与舒张功能受损

ICD-11 使用提醒:CAMUS 本身不含任何诊断编码字段,上表是"该数据集的临床任务通常服务于哪些诊断类别"的映射,而非数据集自带标签。研究者若需要疾病标签,必须自行定义规则(例如按 EF 阈值分层),并明确声明该规则为自建而非官方。

§2.1b SNOMED CT 映射

标签 ICD-11 SNOMED CT 术语
超声心动图检查 — 34242008 Echocardiography (procedure)
经胸超声心动图 — 433236007 Transthoracic echocardiography (procedure)
左心室射血分数 BC41 40701008 Left ventricular ejection fraction (observable entity)
左心室结构 — 87878005 Left ventricular structure (body structure)
左心房结构 — 9553008 Left atrial structure (body structure)
左心室心肌 — 74281007 Myocardium of left ventricle (body structure)
舒张末期 — 255354001 End-diastolic phase (qualifier value)
收缩末期 — 255355000 End-systolic phase (qualifier value)
心力衰竭 BB4Z 84114007 Heart failure (disorder)
左心室收缩功能障碍 BC41 413844002 Left ventricular systolic dysfunction (disorder)
心尖四腔心切面 — 399204005 Apical four chamber view (qualifier value)
心尖两腔心切面 — 399208008 Apical two chamber view (qualifier value)

§2.2 疾病简介与流行病学

心力衰竭是全球心血管疾病负担的核心组成。按射血分数分层,HFrEF 与 HFpEF 各占相当大的比例,而 LVEF 本身既是诊断分层的核心指标,也是治疗决策与预后判断的锚点。在临床实践中,LVEF 的测量几乎完全依赖超声心动图中的心室腔轮廓勾画——医师逐帧观察、在舒张末期与收缩末期手动描出心内膜边界,再由机器用几何公式推算出容积。这一流程的痛点在于:手工描画耗时、高度依赖操作者经验、且观察者间差异可观。CAMUS 论文本身给出的观察者内一致性数据(内膜 Dice 约 0.945/0.930,EF 相关系数 0.896)恰恰量化了这种不确定性——即使同一位医师重复标注同一次检查,结果也不会完全一致。

在这种背景下,自动化分割的临床价值不在于"做得比医生更准",而在于把一致性从观察者内水平提升到绝对可重复,同时把几分钟的勾画压缩到秒级。这正是 CAMUS 所瞄准的临床缺口,也是它选择将 LVEF 测量作为采集优化目标的根本原因。

值得注意的是,CAMUS 的队列刻意接近真实临床分布:约一半患者 LVEF 低于 45%(判为病理风险),其余为相对正常的心功能;19% 的图像被专家评为 Poor 质量。这种"半病半常 + 两成无法用"的构成,与临床上一次超声门诊的实际分布相当接近,也意味着在该数据集上报告的模型性能,其绝对数值会显著低于在精选数据集上的成绩——这不是模型变差,而是任务变难。

§2.3 临床任务定义

临床环节 具体任务 CAMUS 可支撑程度 说明
筛查 识别 LVEF 显著降低(< 45%)的受检者 中等 数据集群体约半数属此范围,但无高危/低危标签
诊断 判定左心室收缩功能障碍、心肌病、HFrEF/HFpEF 弱 无临床诊断标签,只有 EF、容积与图像质量
分级 LVEF 分级(正常 / 轻度 / 中度 / 重度降低) 中等 可依据 EF 数值阈值自行分层,但阈值需自行声明
定量测量 EDV、ESV、EF、每搏输出量、心输出量 强 配置文件提供 EF 参考值,ED/ES 帧提供轮廓真值
结构评估 左心房容积、心肌质量、心肌厚度 强 左心房与心肌均有掩码标注
时序建模 心动周期相位识别、心室容积-时间曲线 强 半序列含完整周期,ED/ES 帧索引已标注
预后 心血管事件预测、死亡率预测 不可支撑 无随访数据、无结局标签

关键边界:CAMUS 支持"测量",不直接支持"诊断"与"预后"。任何把它当作诊断标签数据集使用的尝试都会失败——它根本没有诊断字段。研究者需要自行定义临床终点(如"LVEF < 45% 视为阳性"),并明确声明该定义是自建的、非官方的。

§2.4 患者人群

维度 描述
来源机构 法国圣艾蒂安大学医院(CHU Saint-Étienne)心血管科,单中心
采集时段 单中心回顾性连续入组,与论文发表(2019)同期;数据集配置未逐例暴露具体检查日期
入组方式 无前置条件、无数据筛选,按 LVEF 测量指征连续纳入
样本规模 500 名患者,每人 2CH 与 4CH 各一次采集
年龄 逐例记录于 Info_*.cfg 的 Age 字段(示例:53 岁);全队列跨成年年龄段
性别 逐例记录于 Sex 字段,取值为 M / F
心功能分布 约 50% 患者 LVEF < 45%(病理风险),其余为相对正常心功能
图像质量分布 约 19% 图像被评为 Poor;其余为 Good 或 Medium
种族/族裔 数据集未按此维度分层或记录
就医类型 门诊或住院超声心动图检查(回顾性常规检查)
解剖异常 部分病例因无法获得严格四腔心切面,改采五腔心视图
伦理合规 采集在圣艾蒂安大学医院本地伦理委员会规定的范围内进行

§2.5 临床价值

CAMUS 的临床价值集中在"测量自动化"这一环节。在超声心动图报告中,LVEF 是出现频率最高的定量指标之一,而其测量链路(描画心内膜 → 圆盘求和法求容积 → 计算 EF)中每一步都会累积误差。CAMUS 提供了在这条链路上逐环节量化的能力:分割掩码用于评估描画精度,ED/ES 帧索引用于评估相位识别精度,EF 数值用于评估最终指标精度。

第二层价值在于"一致性基准"。CAMUS 论文与官方榜单都明确给出了观察者内变异作为参照线(内膜 Dice 0.945/0.930、外膜 0.957/0.951、EF 相关系数 0.896)。有了这条线,"模型是否足够好"才成为一个可回答的问题:达到或超过观察者内一致性,意味着模型的重复性已不低于医师本人;低于观察者间一致性则意味着替代人工尚不成熟。这种把机器性能锚定在人类变异上的评估范式,是 CAMUS 对临床 AI 评估方法论的实质性贡献。

第三层价值在于"揭示失败边界"。正因为 CAMUS 保留了 19% 的 Poor 质量图像和大量困难病例,它才有可能暴露模型在真实临床中的失效模式。在清理过的数据集上,模型性能曲线是单调上升的;而在 CAMUS 上,性能会被图像质量、声窗条件与病理形态反复拉扯,从而让研究者看到从实验室到门诊之间还差什么。

§2.6 金标准

维度 说明
划分方式 患者级三划分:训练 patient0001-patient0400(400 例)、验证 patient0401-patient0450(50 例)、测试 patient0451-patient0500(50 例)
标注结构 左心室内膜(LV endocardium)、左心室心肌/外膜(LV epicardium)、左心房(LA),加背景共四类
标注帧范围 全库每例的 2CH 与 4CH 各标注 ED 与 ES 两帧(共 2,000 帧手工);半序列中间帧标注为传播/插值生成
主要标注者 1 名心脏科医师完成全库参考标注
一致性标注者 3 名心脏科医师独立重复标注一个 50 例折叠子集,用于观察者间与观察者内一致性分析
标注性质 人工描画轮廓转成的像素级分割掩码(非分类标签、非边界框)
标注格式 与图像同尺寸的 NIfTI 掩码,像素值属于集合
质量分级来源 由专家对图像质量给出 Good / Medium / Poor 判定
参考临床值 配置文件提供 EF、FrameRate、ED 与 ES 帧索引、NbFrame、Age、Sex、ImageQuality
权威引用 Leclerc S, Smistad E, Pedrosa J, Østvik A, et al. IEEE TMI 38(9):2198-2210, 2019

§3 数据集规格

§3.0 版本抉择矩阵

CAMUS 不存在多个官方版本号,但社区分发形态差异显著,选择错误会造成数倍的工作量差异甚至结果不可比。

你的需求 推荐版本 大小 理由
复现官方榜单成绩、与论文数值对比 源发布版(CREATIS 门户 database_nifti) 3.83 GB(gzip float32 NIfTI) 官方榜单数值基于此形态;其他形态的灰度位深与重采样会偏离原协议
快速跑通管线、验证代码正确性 Hugging Face camus-sample 示例子集 约 156 MB 仅少数患者,可分钟级验证读取、归一化与分割流程
训练二维分割网络(默认路线) 源发布版中的 ED/ES 帧(2,000 帧) 派生后约 186 MB(Parquet ed_es 配置) 只有这 2,000 帧是严格意义上的手工标注,是唯一干净监督信号
时序建模、视频分割、半监督 half_sequence 全序列帧 派生后约 1.97 GB(21,232 帧) 含完整心动周期;但需知中间帧标注为传播生成,非独立人工
医学影像专用工具链集成 社区 MHD 转换版(如基于 SimpleITK 的处理器期望的 .mhd) 视转换而定 便于接入 MONAI 等流水线;需自行承担转换一致性风险
商业产品原型 不可用 — CC BY-NC-SA 4.0 明确禁止商业用途,需另行联系 CREATIS 洽谈授权

决策提醒:无论选择哪种形态,都应在实验记录中写明具体来源、下载日期与文件校验信息。因为源发布版在不同时间下载所得压缩包的校验和并不一致(见 §6.5 坑点 7),仅写"CAMUS"不足以让他人复现。

§3.1 模态详情

属性 描述
成像模态 二维经胸超声心动图(2D transthoracic echocardiography),灰阶 B-mode
切面 心尖两腔心(Apical 2-chamber,2CH)、心尖四腔心(Apical 4-chamber,4CH)
数据类型 单帧静态图像 + 心动周期半序列(cine loop)
采集设备 GE Vivid E95 超声扫描仪(GE Vingmed Ultrasound, Horten, Norway)+ GE M5S 探头
像素数值类型 float32(源发布版,像素值为 0-255 的整数值以浮点存储)
空间分辨率 各向同性 0.308 × 0.308 mm(源发布主流版本);另有各向异性 uint8 版本 0.308 × 0.154 mm
序列长度 半序列含完整心动周期,通常约 10-20 帧(示例配置 NbFrame 为 19)
帧率 逐例记录(示例配置 FrameRate 为 55.4 帧/秒)
声学伪影 斑点噪声(speckle)、声影、瓣膜与腱索回声、近场饱和
缺乏的能力 无血流多普勒、无组织多普勒、无三维容积、无应变分析原始数据
视图差异 2CH 视图不显示右心系统;4CH 视图含右心室、右心房与二尖瓣/三尖瓣

§3.2 子集与样本数

子集 患者范围 患者数 采集次数 手工标注关键帧 序列帧(含掩码) 备注
训练集 patient0001-patient0400 400 800 1,600 约 17,000 官方划分,唯一可用于训练的部分
验证集 patient0401-patient0450 50 100 200 约 2,100 调参用,不得并入训练
测试集 patient0451-patient0500 50 100 200 约 2,100 官方留出,榜单数值来源
观察者间折叠 跨子集 50 例 50 — — — 3 名心脏科医师重复标注,用于一致性分析
差质量亚组 跨全库 — — — — 84 例图像质量被评为 Poor,占约 19%
合计 patient0001-patient0500 500 1,000 2,000 约 21,232 含 ED/ES 重复计入

阅读提示:约 21,232 帧 = 19,232 帧 cine 序列帧 + 2,000 帧手工关键帧(关键帧被重复并入序列以便两种配置各自独立可用)。若只统计独立帧,应以 21,232 为准;若只统计手工标注帧,则为 2,000。

§3.3 数据格式

格式 用途 提供方 注意事项
NIfTI(.nii.gz,float32) 图像与掩码的官方原始形态 CREATIS 门户 掩码像素值为整数值但以 float32 存储;读取后应先舍入再转整型
纯文本配置(Info_2CH.cfg / Info_4CH.cfg) 每例每视图的临床与采集元数据 CREATIS 门户 无表头,按 键:值 逐行;键名为 ED、ES、NbFrame、Sex、Age、ImageQuality、EF、FrameRate
MHD(.mhd + .raw) 社区为接入 SimpleITK/MONAI 的转换形态 第三方仓库 非官方分发;ITK 读写依赖需预先安装
PNG(8-bit) 掩码可视化与轻量分发 第三方派生 值域 0-3 在 8-bit 尺度上几乎全黑,需在加载器中重映射
PNG(16-bit) 保留灰度动态范围的图像导出 第三方派生 与源 float32 全动态范围不完全等价,存在精度损失风险
Parquet(含 PNG 载荷) 批量训练的低开销分发 第三方派生 分 ed_es 与 half_sequence 两个配置,合计约 2.16 GB

§3.4 存储大小

形态 大小 说明
源发布版压缩包 3.83 GB gzip 压缩的 float32 NIfTI(官方)
解压后预估 约 4.8 GB float32 展开,建议预留 15 GB 以上磁盘
第三方镜像压缩包 3.57 GB 社区镜像,与官方包非逐字节一致
示例子集 约 156 MB 用于快速验证管线
Parquet ed_es 配置 186 MB 2,000 帧关键帧
Parquet half_sequence 配置 1.97 GB 21,232 帧全序列

容量规划建议:若同时保留原始 NIfTI、转换后的 PNG 缓存与训练时生成的张量缓存,实际磁盘占用可达原始大小的 3-4 倍。建议在单一工作目录下保留只读的原始 NIfTI,并把所有派生形态写入独立缓存目录,同时把缓存目录纳入版本控制忽略清单。

§3.5 标注方式

CAMUS 采用分层标注策略,这一点直接决定了训练数据的可信度分层。

帧类别 数量 标注方式 可信度 建议用法
ED/ES 关键帧 2,000 心脏科医师逐帧手工描画轮廓 高(金标准) 监督学习主信号、评测用真值
半序列中间帧 约 19,232 由两端点手工轮廓经插值/传播生成 中(衍生标注) 时序一致性正则、半监督、预训练
观察者间折叠 50 例 3 名心脏科医师独立重复标注 高(用于一致性度量) 评估模型是否达到人类变异水平

关键机制说明:全库仅 ED 与 ES 帧为手工描画。有第三方分析通过"仅用两端点掩码做符号距离场混合重建中间帧"的实验量化了这一衍生过程——重建掩码与实际发布的中间帧掩码之间的 Dice 为:左心室内膜 0.9943、左心室心肌 0.9957;作为对照,完全手工标注的 TED 数据集上同一实验的对应值为 0.9685 与 0.9789。这一差值(约 +0.5%)表明中间帧确实携带独立的解剖信息,但其中段帧的独立标注含量有限——用作时序基准是有效的,用作逐帧监督则需谨慎。

§3.6 标注者资质与一致性

项目 说明
全库标注者 1 名心脏科医师(论文中的参考标注者)
一致性标注者 3 名心脏科医师(论文中的折叠子集重复标注)
标注者领域 心血管临床医师,隶属圣艾蒂安大学医院心血管科
一致性评估规模 50 例折叠子集,逐帧独立重复标注
图像质量评级者 1 名专家
一致性参照数值 左心室内膜 Dice 0.945 (ED) / 0.930 (ES);左心室外膜 Dice 0.957 (ED) / 0.951 (ES);EF 相关系数 0.896、MAE 4.7%
质控机制 论文报告观察者内与观察者间双层一致性;官方榜单将观察者内变异作为排名参照线列出

对使用者的含义:CAMUS 的真值来自单一医师,因此它衡量的是"与这位医师的一致性",而非"与某个专家委员会的共识"。在需要排除单人风格偏好的研究中,应额外利用那 50 例的三医师重复标注,或引入外部数据集交叉验证。

§3.7 采集周期

CAMUS 为回顾性连续入组,论文于 2019 年发表,采集工作在发表前完成。数据集本身未逐例暴露具体检查日期——配置文件中不包含日期字段,这是刻意的去标识化措施之一。因此任何依赖"检查日期"的分析(如季节效应、设备老化效应、疫情前后对比)在 CAMUS 上都无法开展。schema.org 元数据中的 temporalCoverage 应理解为"数据构建与发布期"而非"临床观察期"。

§3.8 地域覆盖

维度 说明
国家 法国
地区 奥弗涅-罗讷-阿尔卑斯大区,圣艾蒂安市
机构 圣艾蒂安大学医院(CHU Saint-Étienne)心血管科
中心数 1(单中心)
设备厂商数 1(GE Healthcare)
人群族裔构成 未记录、未分层
多中心泛化声明 数据集明确不具备多中心、多厂商特性;外部泛化需自行补充验证

§3.9 设备规格

组件 规格
超声主机 GE Vivid E95(GE Vingmed Ultrasound, Horten, Norway)
探头 GE M5S 相控阵探头
成像模式 二维 B-mode 灰阶
图像存储格式 NIfTI(由原始 DICOM 经厂商工作站导出后转换)
图像尺寸 与探头扇区几何相关,逐例不同;社区处理管线常见做法是统一重采样到 256 × 256 或 272 × 272 后中心裁剪到 256 × 256
像素间距 0.308 × 0.308 mm(各向同性主流版本)
帧率范围 逐例记录,示例值 55.4 帧/秒
设备相关偏差 单厂商单探头设定导致设备相关的斑点纹理、增益与动态范围风格高度一致

§3.10 深度溯源链

临床检查(圣艾蒂安大学医院超声心动图室)
    ↓ GE Vivid E95 + M5S 探头采集,二维 B 模式
厂商工作站导出(DICOM)→ 匿名化、删除日期与标识
    ↓ 本地伦理委员会规定的范围内处理
转换为 NIfTI float32(patientXXXX_{2CH,4CH}_{ED,ES,half_sequence}[_gt].nii.gz)
    ↓ 与 Info_2CH.cfg / Info_4CH.cfg 逐例配对
CAMUS public release v1.0(CREATIS Girder 集合 6373703d73e9f0047faa1bc8,约 3.83 GB)
    ↓ 官方划分:patient0001-0400 train / 0401-0450 val / 0451-0500 test
官方挑战赛平台 + 在线评测(2019-04 至 2023-01;平台现已关闭)
    ↓
第三方派生分发:Hugging Face Parquet/PNG 版本、MHD 版本、工具链封装(torch-em、zea)

溯源使用建议:在论文方法章节中完整报告这条链路中你实际停留的层级。停留在"第三方 Parquet 派生版"的研究,必须写明派生版的来源与转换日期,因为该派生版与官方 NIfTI 并非像素级等同(灰度位深与重采样方式均可能不同)。


§4 数据结构

§4.0 目录树

以下是官方源发布版解压后(database_nifti)的典型结构。

CAMUS_public/
├── database_nifti/
│   ├── patient0001/
│   │   ├── patient0001_2CH_ED.nii.gz               # 两腔心舒张末期图像
│   │   ├── patient0001_2CH_ED_gt.nii.gz            # 对应手工掩码 (0/1/2/3)
│   │   ├── patient0001_2CH_ES.nii.gz               # 两腔心收缩末期图像
│   │   ├── patient0001_2CH_ES_gt.nii.gz            # 对应手工掩码
│   │   ├── patient0001_2CH_half_sequence.nii.gz    # 完整心动周期半序列 (T,H,W)
│   │   ├── patient0001_2CH_half_sequence_gt.nii.gz # 全帧掩码 (ED/ES 手工, 中间帧传播)
│   │   ├── patient0001_4CH_ED.nii.gz
│   │   ├── patient0001_4CH_ED_gt.nii.gz
│   │   ├── patient0001_4CH_ES.nii.gz
│   │   ├── patient0001_4CH_ES_gt.nii.gz
│   │   ├── patient0001_4CH_half_sequence.nii.gz
│   │   ├── patient0001_4CH_half_sequence_gt.nii.gz
│   │   ├── Info_2CH.cfg                            # 两腔心元数据
│   │   └── Info_4CH.cfg                            # 四腔心元数据
│   ├── patient0002/
│   │   └── ...(同上 14 个文件)
│   ├── ...
│   └── patient0500/
│       └── ...
├── database_split/
│   ├── training.txt        # patient0001-patient0400 目录清单
│   ├── validation.txt      # patient0401-patient0450 目录清单
│   ├── testing.txt         # patient0451-patient0500 目录清单
│   ├── LICENSE_TERMS.md    # 附加许可条款
│   └── information.txt     # 数据集总述与字段说明
└── README.md

三种常见训练布局:

布局 A:关键帧监督(最常用)
  样本 = (patientXXXX_{2CH,4CH}_{ED,ES}.nii.gz, 对应 _gt.nii.gz)
  规模 = 450 例 × 2 视图 × 2 相位 = 1,800 个训练/验证样本

布局 B:全序列(含传播标注)
  样本 = half_sequence 的第 t 帧
  规模 = 约 21,232 帧(其中 2,000 帧为手工标注)

布局 C:患者级回归(EF 预测)
  样本 = 一例一视图的 ED/ES 组合
  标签 = Info_*.cfg 中的 EF 字段

§4.1 DAIMS 字段字典

下表覆盖 CAMUS 中最核心的可用字段。CAMUS 没有传统意义的关系表,因此字段来自三个来源:配置文件键、文件命名约定、掩码像素值。

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
patient_id string 患者目录名,去标识化序号 patient0011 患者级划分、分组索引 无(唯一且稳定) 无缺失 patient0001-patient0500
view string 超声切面类型 2CH 视图条件建模、分支任务 少数病例实际为五腔心 无缺失 2CH / 4CH
phase string 心动周期相位 ED 相位分类真值、容积配对 由专家目视判定,存在边界帧歧义 无缺失(仅 ED/ES 两帧有) ED / ES
Sex string 患者性别 M 公平性分析、亚组评估 病历记录 无缺失 M / F
Age int 患者年龄(岁) 53 年龄分层、协变量校正 记录精度到年 无缺失 成年范围
ImageQuality string 专家图像质量评级 Good 质量分层评估、难例挖掘 单人主观评级,无重复测量 无缺失 Good / Medium / Poor
EF int 参考射血分数(%) 33 回归目标、病理分层阈值 由单医师轮廓推得,含测量误差 无缺失 数值型百分比
ED int 舒张末期帧索引(1 基) 1 相位定位、序列对齐 目视判定边界 无缺失 1 至 NbFrame
ES int 收缩末期帧索引(1 基) 19 相位定位、序列对齐 目视判定边界 无缺失 1 至 NbFrame
NbFrame int 半序列总帧数 19 序列长度统计、可变长处理 无 无缺失 约 10-20
FrameRate float 采集帧率(帧/秒) 55.4 时间归一化、容积-时间曲线 设备报告值 个别配置文件损坏 数值型
mask_label int 掩码像素类别 1 分割监督信号、多类目标构造 单人描画,轮廓位置误差约 1-2 mm 0 表示背景(非缺失) 0 / 1 / 2 / 3
image float32 数组 二维灰阶像素矩阵 形状 (H, W) 或 (T, H, W) 模型输入 斑点噪声、声影、增益相关 无(全幅有效) 0-255(浮点存储)
pixel_spacing float 像素间距(mm) 0.308 物理尺度指标(mm 单位的 Hausdorff) 由导出流程决定,版本间不一致 无缺失 0.308×0.308 或 0.308×0.154
split string 官方划分归属 training 划分策略、泄漏防护 无 无缺失 training / validation / testing

§4.2 标签分布

CAMUS 的掩码是互斥分区(disjoint partition),而非可重叠的多通道标注。四个像素值合计覆盖整幅图像。

标签值 结构名称 描画方式 覆盖范围 分割难点
0 背景 默认 扇区外区域、非心肌组织、右心系统、瓣膜 与心外膜边界邻近的背景区域易混淆
1 左心室内膜(心室腔) 沿血池-心肌界面描画 左心室腔 乳头肌与腱索造成腔内凹陷,边缘对比度低
2 左心室心肌(外膜界定) 沿心外膜界面描画,实为环形薄带 心室壁心肌层 薄环结构,Dice 对边界偏移极敏感
3 左心房 沿心房腔轮廓描画 左心房腔 与肺静脉交界处边界模糊,受二尖瓣环牵拉

关键语义提醒:数据集的目标结构之一在文献中常被称作"心外膜"(epicardium),但在掩码中它并非独立标签,而应由标签 1(内膜)与标签 2(心肌)的并集构成。单独使用标签 2 会得到一个薄环,此时 Dice 衡量的是环带几何而非分割质量——有第三方测量显示,在原本 Dice 约 0.99 的序列上,误用裸标签 2 会把分数压到约 0.80。

§4.3 关键统计

统计项 数值 来源/说明
患者总数 500 官方主页
带参考标注患者数 450 训练 400 + 验证 50
无标注测试患者数 50 官方留出测试集
采集总数 1,000 每例 2CH + 4CH
手工标注关键帧 2,000 500 例 × 2 视图 × 2 相位
含掩码序列帧 约 21,232 19,232 序列帧 + 2,000 关键帧
掩码类别数 4 背景 + 三个解剖结构
图像质量差样本 84 例 / 约 19% 论文与第三方资料
LVEF 低于 45% 患者比例 约 50% 论文
观察者间折叠规模 50 例 / 3 名医师 论文
源发布版大小 3.83 GB gzip 压缩 float32 NIfTI

§4.4 数据层级

患者层(patient_id)
  └── 视图层(2CH / 4CH)                     每例 2 个
        └── 采集层(ED 帧 / ES 帧 / 半序列)  关键帧 2 个 + 序列 1 条
              └── 帧层(frame_index)         关键帧 1 帧;序列约 10-20 帧
                    └── 像素层(H × W)       灰阶图像 + 同尺寸掩码

层级对建模的含义:任何跨越"患者层"的随机划分都会造成泄漏。同一患者的 2CH 与 4CH 来自同一颗心脏、同一次检查,形态与功能状态高度相关;把其中一个视图放进训练集、另一个放进测试集,会让模型通过"认出这颗心脏"而非"学会分割"来提升测试成绩。同理,同一半序列的不同帧绝不可跨划分。

§4.5 缺失值与信息性缺失编码

CAMUS 的整体缺失率极低,这与它作为受控研究数据集的定位一致。

字段 缺失模式 信息性编码 处理建议
patient_id / view / 文件名 无缺失 无 直接作为主键与分组键
Sex / Age 无缺失 无 可直接作为协变量
EF 无缺失 无 数值型,可直接回归
ImageQuality 无缺失 无 序数使用(Good 优于 Medium 优于 Poor)
ED / ES 帧索引 无缺失 无 序列相位定位的唯一依据
NbFrame / FrameRate 极少数配置文件损坏 无显式编码 遇到解析失败时应记录并从统计中剔除而非补零
半序列中间帧掩码 非手工 无显式标记 需自行依据帧索引与 ED/ES 字段推断是否手工帧
诊断标签 完全不存在 — 不可推断,需自行定义代理终点
检查日期 完全不存在 — 去标识化刻意移除,不可恢复

信息性缺失的陷阱:CAMUS 并未提供"该帧是否为手工标注"的显式布尔字段。研究者必须自行根据文件名(是否含 _ED / _ES)、或根据半序列内的帧索引是否等于 ED/ES 值来判定。若忽略这一判定,把传播标注帧当作手工真值参与评测,会得到虚高的分数。


§5 划分与使用建议

§5.1 官方划分

子集 患者范围 患者数 主要用途
训练(training) patient0001-patient0400 400 参数学习、数据增强策略开发
验证(validation) patient0401-patient0450 50 超参数选择、早停、模型选择
测试(testing) patient0451-patient0500 50 最终报告;官方榜单数值的来源

官方划分以患者为单位,视图与帧均不跨划分。划分清单位于源分发包的 database_split 目录(training.txt / validation.txt / testing.txt)。这是 CAMUS 相对同期数据集的一项重要优势:划分是被明确公布且被社区广泛遵从的,因此不同论文报告的测试集数值具有可比性。

§5.2 社区惯例划分

尽管官方划分明确,社区实践中仍存在若干变体:

惯例 做法 风险
合并训练与验证 400 + 50 = 450 例全部用于训练,不单独设验证集 无法早停与选型;测试集成绩可能被间接调参污染
交叉验证 在 450 例标注数据上做 5 折或 10 折交叉验证 折间患者不重叠时可接受,但结果不可与官方榜单直接对比
帧级划分 按帧随机划分为训练/测试 严重错误,同患者帧跨划分导致泄漏
只取 4CH 仅用四腔心视图 丢弃一半数据;同时使跨视图一致性分析失去意义
剔除 Poor 质量 训练前过滤差质量图像 与官方评测口径不一致,成绩不可比

§5.3 泄漏风险(重点)

CAMUS 的泄漏风险有四种,其中前两种最容易发生。

风险一:视图间泄漏。 同一患者的 2CH 与 4CH 是同一颗心脏的两次观察。若按文件而非按患者划分,模型会在训练时见过该心脏的 4CH 形态,从而在测试时"认出"其 2CH 形态。防护方式:始终以 patient_id 为分组键做划分,绝不按文件或帧随机划分。

风险二:同源衍生数据集泄漏。 这一点尤其隐蔽。TED 数据集与 syntheticCAMUS 均派生自 CAMUS 这 500 例患者中的 98 例,两者都重新编号为 patient001-patient098 且不携带交叉引用 ID。据第三方核查,这 98 例中有 94 例落在 CAMUS 官方训练集、4 例落在官方测试集。因此"在 TED 上训练、在 CAMUS 官方测试集上评测"会泄漏这 4 例。防护方式:若你的预训练语料包含 TED、syntheticCAMUS 或任何声称派生自 CAMUS 的数据,必须显式声明这 4 例的重叠,或从测试集中剔除。

风险三:预训练语料污染。 大规模基础模型可能已经把 CAMUS 吃进训练语料。据第三方核查,MedSAM 的补充材料列出 CAMUS · Ultrasound · 21,232 对,且未标记为留出集——这个数字与 CAMUS 总帧数(19,232 cine 帧 + 2,000 端点帧 = 21,232)完全吻合。这意味着 MedSAM 系列模型在 CAMUS 上的分数不是干净的留出测量。CAMUS 还被报告出现在 US30K/SAMUS、UltraSam、BiomedParseData、U2-BENCH 与 FedCVD 等语料中。防护方式:报告基础模型成绩时,明确标注该模型是否可能已见过 CAMUS。

风险四:测试集标注可见性。 源发布包中 50 例测试患者的图像与标注文件物理上是可以下载到的。官方榜单的公平性依赖参赛方自觉不查看测试标注。这在今天已构成结构性风险:任何人都可以在看过测试标注后训练模型并上报成绩。防护方式:任何声称达到官方榜单水平的复现,都应说明测试标注的使用方式;若追求严格,应自行从训练集中切出新的留出集。

§5.4 划分策略建议

你的目标 推荐划分 理由
与官方榜单/论文数值对比 严格使用官方 400/50/50 唯一可比的协议
论文主实验,需稳定估计 官方划分 + 在 450 例标注数据上补充 5 折交叉验证,报告两套数字 兼顾可比性与统计稳定性
小样本或半监督研究 官方训练集内再切 10% 作验证;其余标注数据 + 全部无标注序列参与训练 最大化利用序列帧
域适应(CAMUS 为源域) 全部 450 例标注记为源域;在目标域上用官方测试协议评测 与文献惯例一致
域适应(CAMUS 为目标域) 用官方训练集做目标域微调,测试集评测 注意目标域微调本身可能已被测试集选型污染
时序/视频分割 患者级划分不变,但样本单位改为整个 half_sequence 保持患者隔离

§5.5 交叉验证建议

在 450 例标注数据上做患者级分层 K 折(K=5 或 10)时,有两点需要处理:第一,分层依据建议同时考虑 EF 分层(低于 45% 与不低于 45%)与性别,以保证各折病理构成均衡;第二,由于每例有 2CH 与 4CH 两个视图,划分必须在患者层完成,同一患者的两个视图必须同折。折叠划分建议用固定随机种子生成并随论文发布清单文件,避免"折划分不可复现"这一常见缺陷。

§5.6 外部验证建议

CAMUS 单中心单厂商,任何泛化性结论都需要外部验证支撑。建议的验证设计是三层:

  1. 同域异标注者:使用 CAMUS 内那 50 例三医师重复标注折叠,检验模型是否达到人类一致性水平。
  2. 异域同模态:迁移到其他二维经胸超声数据集(多中心、多厂商),观察性能下降幅度。
  3. 异域异模态:迁移到三维超声或心脏磁共振,此类跨模态迁移通常用于检验模型是否学到了模态无关的解剖先验,而非超声纹理捷径。

§6 AI 就绪指南

§6.0 云端快速启动

如果你不想在本地处理 3.83 GB 的下载与 NIfTI 依赖,可以先在带 GPU 的云端环境(如云端 Notebook 或自有 GPU 服务器)验证管线。推荐的最短路径是:先用 Hugging Face 的 CAMUS 示例子集(约 156 MB)跑通读取、归一化与前向推理,确认环境无误后再拉取完整数据集。

# 云端最小验证:安装依赖
pip install -q SimpleITK==2.3.1 numpy==1.26.4 torch==2.2.0 \
    monai==1.3.0 huggingface_hub==0.23.0

# 拉取官方示例子集用于管线验证(约 156 MB)
huggingface-cli download zeahub/camus-sample --repo-type dataset \
    --local-dir ./camus_sample

# 完整数据集建议在本地或持久化存储上准备,见 §6.2

§6.1 快速上手

以下代码块假设的目录结构:data_root 指向 CAMUS 源发布包解压后的根目录,其中包含 database_nifti/(逐患者子目录)与 database_split/(划分清单)。所有图像路径由 data_root / "database_nifti" / patient_id / f"{patient_id}_{view}_{phase}.nii.gz" 拼接得出。最小可用子集为 patient0001 一个患者目录(14 个文件,约 8 MB),足以验证读取、归一化、掩码转换与可视化全链路。

# 依赖: SimpleITK==2.3.1, numpy, matplotlib
# 目录约定:
#   data_root/
#     database_nifti/patient0001/patient0001_2CH_ED.nii.gz
#     database_nifti/patient0001/patient0001_2CH_ED_gt.nii.gz
#     database_split/training.txt
# 最小可用子集: data_root/database_nifti/patient0001

import re
from pathlib import Path

import numpy as np
import SimpleITK as sitk

DATA_ROOT = Path("./CAMUS_public")
NIFTI_DIR = DATA_ROOT / "database_nifti"

# CAMUS 掩码语义: 0=背景 1=LV 内膜 2=LV 心肌 3=左心房
LABELS = {0: "background", 1: "LV_endo", 2: "LV_myo", 3: "LA"}


def read_nifti(path: Path) -> tuple[np.ndarray, tuple[float, float]]:
    """读取 NIfTI,返回 (数组, 像素间距)。数组形状为 (H, W) 或 (T, H, W)。"""
    img = sitk.ReadImage(str(path))
    arr = sitk.GetArrayFromImage(img)                # (z, y, x)
    spacing_zyx = img.GetSpacing()
    return arr, (spacing_zyx[-1], spacing_zyx[-2])   # (spacing_x, spacing_y)


def load_keyframe(data_root: Path, patient: str, view: str, phase: str):
    """读取单张关键帧及其手工掩码。view 属于 {2CH,4CH},phase 属于 {ED,ES}。"""
    base = data_root / "database_nifti" / patient
    img, spacing = read_nifti(base / f"{patient}_{view}_{phase}.nii.gz")
    gt, _ = read_nifti(base / f"{patient}_{view}_{phase}_gt.nii.gz")

    # 源发布版以 float32 承载整数像素值,先舍入再转整型
    img = np.rint(img).astype(np.float32)
    gt = np.rint(gt).astype(np.uint8)

    # 关键帧应为二维;若返回三维(单帧被当作 T=1),压掉第一维
    if img.ndim == 3 and img.shape[0] == 1:
        img, gt = img[0], gt[0]
    return img, gt, spacing


def parse_info_cfg(cfg_path: Path) -> dict:
    """解析 Info_2CH.cfg / Info_4CH.cfg,逐行按 '键:值' 读取。"""
    meta = {}
    for line in cfg_path.read_text(encoding="utf-8").splitlines():
        line = line.strip()
        if not line or ":" not in line:
            continue
        key, val = line.split(":", 1)
        meta[key.strip()] = val.strip()
    for k in ("ED", "ES", "NbFrame"):
        if k in meta:
            meta[k] = int(meta[k])
    for k in ("EF", "FrameRate", "Age"):
        if k in meta and re.fullmatch(r"-?\d+(\.\d+)?", meta[k]):
            meta[k] = float(meta[k])
    return meta


def to_epicardium_mask(gt: np.ndarray) -> np.ndarray:
    """心外膜目标 = 内膜(1) 与心肌(2) 的并集,而非裸标签 2。"""
    return np.isin(gt, [1, 2]).astype(np.uint8)


if __name__ == "__main__":
    img, gt, spacing = load_keyframe(NIFTI_DIR, "patient0001", "2CH", "ED")
    meta = parse_info_cfg(NIFTI_DIR / "patient0001" / "Info_2CH.cfg")
    print(f"图像形状 {img.shape}  像素间距 {spacing} mm")
    print(f"灰度范围 {img.min():.0f}-{img.max():.0f}")
    print(f"掩码取值 {sorted(np.unique(gt).tolist())}")
    print(f"元数据 EF={meta.get('EF')} FrameRate={meta.get('FrameRate')} "
          f"ED={meta.get('ED')} ES={meta.get('ES')} NbFrame={meta.get('NbFrame')} "
          f"ImageQuality={meta.get('ImageQuality')}")
    print(f"心外膜像素占比 {to_epicardium_mask(gt).mean():.4f}")

运行期望输出(数值随患者而异,形状与取值集合应一致):

图像形状 (512, 512)  像素间距 (0.308, 0.308) mm
灰度范围 0-255
掩码取值 [0, 1, 2, 3]
元数据 EF=33.0 FrameRate=55.4 ED=1 ES=19 NbFrame=19 ImageQuality=Good
心外膜像素占比 0.0371

最小可用子集:database_nifti/patient0001/ 单个目录即可完整验证上述链路。若要验证 DataLoader,建议取 patient0001 至 patient0008 共 8 例(约 64 MB),足以覆盖 2CH/4CH 两种视图与 Good/Medium/Poor 三种质量。

§6.2 数据获取

获取渠道 内容 需要注册 大小 适用场景
CREATIS Human Heart Project 门户(官方) 源发布版 database_nifti + database_split 是(需接受 CC BY-NC-SA 4.0 及附加条款) 3.83 GB 论文实验、与官方榜单对比
官方挑战赛主页链接 数据集下载入口与文档 跳转至门户 同上 首次了解数据集
Hugging Face camus-sample 少量患者示例(社区镜像) 否 约 156 MB 管线验证、教学演示
Hugging Face 第三方派生版(Parquet/PNG) ed_es 配置(2,000 帧)与 half_sequence 配置(21,232 帧) 否 186 MB + 1.97 GB 快速训练;需注意与源版非像素等同
医学影像工具链封装 torch-em / zea 的下载函数 否 同源版 接入现有 MONAI/SimpleITK 流水线
# 方式一:官方门户手动下载(推荐用于正式实验)
# 1) 打开 https://humanheart-project.creatis.insa-lyon.fr/database/
# 2) 进入集合 #collection/6373703d73e9f0047faa1bc8
# 3) 注册账户,阅读并接受 LICENSE_TERMS.md 中的附加条款
# 4) 下载 CAMUS_public.zip(约 3.83 GB),校验后解压

unzip -q CAMUS_public.zip -d ./CAMUS_public
ls ./CAMUS_public/database_nifti | head                    # patient0001 ... patient0500
cat ./CAMUS_public/database_split/training.txt | wc -l     # 应为 400
cat ./CAMUS_public/database_split/testing.txt  | wc -l     # 应为 50

# 方式二:通过官方 Girder API 取文件夹(脚本化,仍需遵守许可条款)
# 注意:不同时间下载所得压缩包校验和可能不同,请记录下载日期
curl -L -o CAMUS.zip \
  "https://humanheart-project.creatis.insa-lyon.fr/database/api/v1/folder/63fde55f73e9f004868fb7ac/download"

# 方式三:用 torch-em 的封装函数
python -c "
from torch_em.data.datasets.medical import camus
root = camus.get_camus_data(path='./data/camus', download=True)
print('解压目录:', root)
"

# 方式四:调用 zea 的转换器(含精简子集选项,适合快速验证)
# python -m zea.data.convert camus ./raw ./output --download
# python -m zea.data.convert camus ./raw ./output --download --reduced-dataset

合规提醒:下载前必须阅读 LICENSE_TERMS.md。除 CC BY-NC-SA 4.0 本身外,上游附加两条强制条款——仅限非商业科学研究用途;任何引用该数据集的工作必须引用 Leclerc et al. (2019)。ShareAlike 条款意味着由 CAMUS 派生的数据(包括格式转换产物)若对外分发,也必须采用同一许可证。

§6.3 预处理全流程

标准预处理链路包含五步:格式转换 → 灰度归一化 → 空间统一 → 掩码整数化 → 缓存。

# 依赖: SimpleITK, numpy, tqdm
# 输入: data_root/database_nifti/patientXXXX/*.nii.gz(源发布版)
# 输出: cache_dir/{images,masks}/{patient_id}_{view}_{phase}.npy

import json
from pathlib import Path

import numpy as np
import SimpleITK as sitk
from tqdm import tqdm

TARGET_SIZE = 256          # 统一边长;源图像多为各向同性正方阵
MIN_MAX_EPS = 1e-6


def load_volume(path: Path) -> tuple[np.ndarray, tuple[float, float]]:
    img = sitk.ReadImage(str(path))
    arr = sitk.GetArrayFromImage(img)
    sp = img.GetSpacing()
    return arr, (sp[-1], sp[-2])


def normalize_minmax(img: np.ndarray) -> np.ndarray:
    """按整幅图做 [0,1] 归一化。

    注意:不要按帧独立归一化半序列——帧间亮度差异本身携带心动周期信息,
    逐帧归一化会抹平该信号并使序列模型的输入分布失真。
    """
    lo, hi = float(img.min()), float(img.max())
    return ((img - lo) / (hi - lo + MIN_MAX_EPS)).astype(np.float32)


def _resample(arr: np.ndarray, size: int, interp: int, dtype) -> np.ndarray:
    t = sitk.GetImageFromArray(arr.astype(dtype))
    orig = t.GetSize()
    scale = (size / orig[0], size / orig[1])
    rs = sitk.ResampleImageFilter()
    rs.SetSize([size, size])
    rs.SetOutputSpacing([t.GetSpacing()[0] / scale[0], t.GetSpacing()[1] / scale[1]])
    rs.SetInterpolator(interp)
    rs.SetOutputOrigin(t.GetOrigin())
    rs.SetOutputDirection(t.GetDirection())
    return sitk.GetArrayFromImage(rs.Execute(t))


def resize_image(img: np.ndarray, size: int) -> np.ndarray:
    """图像用线性插值。"""
    return _resample(img, size, sitk.sitkLinear, np.float32).astype(np.float32)


def resize_mask(mask: np.ndarray, size: int) -> np.ndarray:
    """掩码必须用最近邻插值,否则会出现 1.5 这类非法标签值。"""
    out = _resample(mask, size, sitk.sitkNearestNeighbor, np.uint8)
    return np.rint(out).astype(np.uint8)


def prepare_cache(data_root: Path, cache_dir: Path) -> dict:
    nifti_dir = data_root / "database_nifti"
    (cache_dir / "images").mkdir(parents=True, exist_ok=True)
    (cache_dir / "masks").mkdir(parents=True, exist_ok=True)
    manifest, bad = {}, []

    patients = sorted(p.name for p in nifti_dir.glob("patient*") if p.is_dir())
    for pid in tqdm(patients, desc="预处理"):
        for view in ("2CH", "4CH"):
            for phase in ("ED", "ES"):
                stem = f"{pid}_{view}_{phase}"
                img_p = nifti_dir / pid / f"{stem}.nii.gz"
                gt_p = nifti_dir / pid / f"{stem}_gt.nii.gz"
                if not (img_p.exists() and gt_p.exists()):
                    bad.append(stem)              # 信息性缺失:记录而非补零
                    continue
                img, spacing = load_volume(img_p)
                gt, _ = load_volume(gt_p)
                if img.ndim == 3 and img.shape[0] == 1:
                    img, gt = img[0], gt[0]
                if img.shape != gt.shape:
                    bad.append(stem)
                    continue

                img_n = resize_image(normalize_minmax(img), TARGET_SIZE)
                gt_n = resize_mask(np.rint(gt).astype(np.uint8), TARGET_SIZE)

                np.save(cache_dir / "images" / f"{stem}.npy", img_n)
                np.save(cache_dir / "masks" / f"{stem}.npy", gt_n)
                manifest[stem] = {
                    "patient_id": pid, "view": view, "phase": phase,
                    "spacing_mm": spacing,
                    "mask_values": sorted(np.unique(gt_n).tolist()),
                }
    (cache_dir / "manifest.json").write_text(
        json.dumps({"items": manifest, "excluded": bad}, ensure_ascii=False, indent=2),
        encoding="utf-8")
    return {"cached": len(manifest), "excluded": bad}


if __name__ == "__main__":
    stats = prepare_cache(Path("./CAMUS_public"), Path("./cache_camus"))
    print(f"已缓存 {stats['cached']} 个关键帧,排除 {len(stats['excluded'])} 个")

关键取舍说明:

  1. 归一化必须按整幅图像或按患者,不可按帧。 半序列中相邻帧的亮度差异部分来自增益自动调整,又部分来自心肌运动引起的散射变化。逐帧独立归一化会同时抹掉两者,使序列模型失去可利用的时序信号。
  2. 重采样必须区分插值方式。 图像用线性插值、掩码用最近邻。用线性插值处理掩码会生成 1.5 之类的非法标签,在后续 one-hot 编码时静默产生全零通道。
  3. 不做直方图均衡化。 部分文献对超声图像做 CLAHE 以增强对比度,但这会改变斑点噪声的统计特性,而斑点噪声是超声图像域特征的重要组成部分,可能加剧跨域泛化困难。若确需使用,应在论文中显式声明并做消融对照。
  4. 保留物理尺度信息。 若后续需要以毫米为单位报告 Hausdorff 距离,必须保留 pixel_spacing;统一重采样到 256 × 256 时物理间距随之改变,应重算而非沿用原始值。

§6.4 PyTorch DataLoader

# 依赖: torch>=2.0, numpy
# 目录预期: cache_dir/images/{patient_id}_{view}_{phase}.npy  形状 (256,256) float32
#          cache_dir/masks/{patient_id}_{view}_{phase}.npy   形状 (256,256) uint8, 取值 0-3
#          cache_dir/manifest.json  由 §6.3 生成,含 patient_id/view/phase
# 最小可用子集: cache_dir 中存在 patient0001_2CH_ED.npy 即可跑通

import json
from pathlib import Path

import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader


class CAMUSKeyframeDataset(Dataset):
    """CAMUS 关键帧分割数据集(ED/ES × 2CH/4CH)。

    目标类别为 0 背景 / 1 LV 内膜 / 2 心外膜并集 / 3 左心房。
    """

    def __init__(self, cache_dir: Path, split_file: Path, target: str = "endo_epi",
                 augment: bool = False):
        self.cache_dir = Path(cache_dir)
        self.augment = augment
        self.target = target

        manifest = json.loads((self.cache_dir / "manifest.json").read_text(encoding="utf-8"))
        allowed = {ln.strip() for ln in split_file.read_text(encoding="utf-8").splitlines()
                   if ln.strip()}
        self.items = [
            (stem, meta) for stem, meta in sorted(manifest["items"].items())
            if meta["patient_id"] in allowed
        ]
        if not self.items:
            raise ValueError(
                f"划分文件 {split_file} 与缓存不匹配:请确认划分清单中的目录名"
                f"(形如 patient0001)与 manifest 的 patient_id 一致。")

    def __len__(self) -> int:
        return len(self.items)

    def build_target(self, mask: np.ndarray) -> np.ndarray:
        """构造训练目标。

        raw        : 保留原始四类 0/1/2/3
        endo_epi   : 0 背景 / 1 LV 内膜 / 2 心外膜(内膜 ∪ 心肌)/ 3 左心房
        """
        if self.target == "raw":
            return mask.astype(np.int64)
        if self.target == "endo_epi":
            out = np.zeros_like(mask, dtype=np.int64)
            out[mask == 3] = 3                 # 左心房
            out[np.isin(mask, [1, 2])] = 2     # 心外膜 = 内膜 并 心肌
            out[mask == 1] = 1                 # 内膜覆盖回写,保证内膜优先
            return out
        raise ValueError(f"未知目标类型 {self.target}")

    def __getitem__(self, idx: int):
        stem, meta = self.items[idx]
        img = np.load(self.cache_dir / "images" / f"{stem}.npy")
        mask = np.load(self.cache_dir / "masks" / f"{stem}.npy")

        if self.augment:
            # 仅使用解剖学安全的增强:水平翻转对心尖切面成立(左右镜像仍为合法切面)
            if np.random.rand() < 0.5:
                img = img[:, ::-1]
                mask = mask[:, ::-1]
            # 轻度亮度/对比度抖动,模拟增益差异
            if np.random.rand() < 0.5:
                alpha = 1.0 + np.random.uniform(-0.1, 0.1)
                beta = np.random.uniform(-0.05, 0.05)
                img = np.clip(img * alpha + beta, 0.0, 1.0)

        img_t = torch.from_numpy(np.ascontiguousarray(img)).unsqueeze(0).float()
        tgt_t = torch.from_numpy(self.build_target(mask)).long()
        return {"image": img_t, "target": tgt_t,
                "patient_id": meta["patient_id"], "view": meta["view"],
                "phase": meta["phase"]}


def build_loaders(data_root: Path, cache_dir: Path, batch_size: int = 8,
                  num_workers: int = 4, target: str = "endo_epi"):
    # 官方划分清单位于源发布包的 database_split 目录
    split_dir = data_root / "database_split"
    train_ds = CAMUSKeyframeDataset(cache_dir, split_dir / "training.txt",
                                    target=target, augment=True)
    val_ds = CAMUSKeyframeDataset(cache_dir, split_dir / "validation.txt",
                                  target=target, augment=False)
    test_ds = CAMUSKeyframeDataset(cache_dir, split_dir / "testing.txt",
                                   target=target, augment=False)

    train_loader = DataLoader(train_ds, batch_size=batch_size, shuffle=True,
                              num_workers=num_workers, pin_memory=True, drop_last=True)
    val_loader = DataLoader(val_ds, batch_size=batch_size, shuffle=False,
                            num_workers=num_workers, pin_memory=True)
    test_loader = DataLoader(test_ds, batch_size=batch_size, shuffle=False,
                             num_workers=num_workers, pin_memory=True)
    return train_loader, val_loader, test_loader


if __name__ == "__main__":
    tr, va, te = build_loaders(Path("./CAMUS_public"), Path("./cache_camus"))
    print(f"训练 {len(tr.dataset)} 帧 / 验证 {len(va.dataset)} 帧 / 测试 {len(te.dataset)} 帧")
    batch = next(iter(tr))
    print("图像批形状", tuple(batch["image"].shape),
          "| 目标批形状", tuple(batch["target"].shape),
          "| 目标取值", torch.unique(batch["target"]).tolist())
    print("首帧患者", batch["patient_id"][0], batch["view"][0], batch["phase"][0])

注意掩码的形状契约:源发布版的半序列形状为 (T, H, W),而关键帧读取后可能呈现为 (H, W) 或 (1, H, W)。上述 Dataset 期望缓存中已统一为二维 (H, W)(§6.3 已做处理)。若你的缓存保留了时间维,需要在 __getitem__ 中显式取帧,否则会发生"通道数与时间维混淆"的静默错误——网络会把时间帧当作通道处理,训练不报错但结果无意义。

§6.5 坑点

⚠️ 坑点 1:只有 ED/ES 是手工标注,半序列中间帧是插值生成的(分类:标签理解)

问题:CAMUS 以"21,232 帧带掩码"的形态分发,极易被理解成"两万多帧手工标注"。实际上只有 2,000 帧(ED/ES)由心脏科医师逐帧描画,其余约 19,232 帧的掩码由两端点轮廓插值/传播产生。把传播标注当手工真值使用,既会虚高评测分数,也会让模型学到插值算法的平滑先验而非真实解剖边界。

症状:用全部序列帧训练时,中间帧上的 Dice 异常高(常达 0.98 以上),但同一模型在独立测试集的手工标注帧上明显偏低;可视化预测结果发现轮廓在心脏收缩中段异常平滑,缺少真实超声中乳头肌与腱索造成的腔内凹陷。

解决:

  1. 简单方法:训练与评测都只使用 *_ED.nii.gz 与 *_ES.nii.gz 及其 _gt 版本,完全不碰 half_sequence。这是与官方榜单可比的最保守做法。
  2. 进阶方法:显式区分两类帧。依据半序列内帧索引是否等于配置文件的 ED 或 ES 值来打标签,把序列帧放进单独的 Dataset 分支作为一致性正则项,权重设低(如 0.1-0.3),并在论文中把这一决策写清楚。
  3. SOTA 方法:把序列帧用于自监督预训练(如对比学习、帧间光流一致性),只在 2,000 帧手工真值上做有监督微调与全部评测。有第三方量化显示,传播帧可用符号距离场重建的 Dice 达 0.9943(内膜)与 0.9957(心肌),可用作时序基准,但中段帧的独立标注含量有限。

参考:https://huggingface.co/datasets/MedOtter/CAMUS

⚠️ 坑点 2:心外膜不是标签 2,而是标签 1 与 2 的并集(分类:标签理解)

问题:数据集文档中三种结构被称为 LV 内膜、LV 心肌、左心房,但文献中常把第二个目标称作"心外膜"(epicardium)。若照字面把标签 2 当作心外膜掩码,得到的是一个薄环带(心肌层本身),而不是心外膜所界定的整个心室区域。此时 Dice 衡量的是环带几何,而非临床关心的心室边界定位质量。

症状:训练能正常收敛,损失正常下降,但心肌类的 Dice 卡在 0.78-0.82 上不去,Hausdorff 距离异常大;可视化时预测掩码呈现为一个空心细环,与预期的心室区域明显不符。

解决:

  1. 简单方法:用 np.isin(mask, [1, 2]) 构造心外膜二值目标,这是唯一正确的合并方式。
  2. 进阶方法:若需要同时评估心肌层与心外膜,构造双分支输出——一路预测三类(背景/内膜/左心房),一路预测心肌环带,再在推理时用 epi = endo 并 myo 合成心外膜,并对两路分别报告指标。
  3. SOTA 方法:引入嵌套约束损失,强制心外膜区域严格包含心内膜区域(如对内膜落在心外膜之外的面积施加惩罚项),使网络无法产生解剖学上不可能的交叉轮廓。这类带解剖学保证的方法已在 CAMUS 上被反复验证有效。

参考:https://huggingface.co/datasets/MedOtter/CAMUS

⚠️ 坑点 3:TED 与 syntheticCAMUS 与 CAMUS 共享患者,跨数据集评测会泄漏(分类:数据泄漏)

问题:TED 与 syntheticCAMUS 都派生自 CAMUS 这 500 例患者中的 98 例,两者都重新编号为 patient001-patient098,且不携带任何交叉引用 ID。据第三方核查,这 98 例中有 94 例落在 CAMUS 官方训练集,4 例落在官方测试集。因此"在 TED 上预训练、在 CAMUS 官方测试集上评测"这一看似标准的跨数据集设置,实际上是部分泄漏的。

症状:在 TED 上预训练的模型,其 CAMUS 测试集成绩小幅但系统地高于同等条件下的纯 CAMUS 训练基线;由于只有 4 例重叠,提升幅度不大(1-2 个 Dice 点),容易被误解释为"跨数据集的泛化收益"。

解决:

  1. 简单方法:先做患者级交集检查——把 TED 的患者图像与 CAMUS 训练集对应患者做像素级比对或轮廓比对,确认重叠清单后再决定评测集。
  2. 进阶方法:把与 TED 重叠的患者从 CAMUS 测试集中剔除,重新计算指标,并在论文中同时报告"含重叠"与"去重叠"两套结果。
  3. SOTA 方法:建立跨数据集血缘登记表,记录所有派生自 CAMUS 的数据集及其患者映射关系,把这类检查做成脚本在 CI 中自动运行,避免每次实验重复手工排查。

参考:https://huggingface.co/datasets/MedOtter/CAMUS

⚠️ 坑点 4:MedSAM 等基础模型的 CAMUS 分数不是干净留出测量(分类:评估误用)

问题:MedSAM 的补充材料列出 CAMUS · Ultrasound · 21,232 对,未标记为留出集,而 21,232 恰好等于 CAMUS 的全部帧数(19,232 cine 帧 + 2,000 端点帧)。这意味着 CAMUS 极可能已完整进入 MedSAM 的训练语料。CAMUS 还被报告出现在 US30K/SAMUS、UltraSam、BiomedParseData、U2-BENCH 与 FedCVD 等语料中。把这些模型的 CAMUS 成绩当作"零样本能力"来对比,会严重误导。

症状:某些基础模型在 CAMUS 上的零样本分割成绩异常接近全监督方法;论文中把它列为"泛化性对照"时,审稿人会质疑评测公平性。

解决:

  1. 简单方法:在报告中显式标注每个对比模型是否可能见过 CAMUS,区分"留出测量"与"可能污染测量"两组。
  2. 进阶方法:改用 CAMUS 之外的数据集来评估基础模型的零样本能力(例如多中心、多厂商的二维超声集),把 CAMUS 上的成绩只作为"已知受过训练条件下的上限参考"。
  3. SOTA 方法:在预训练语料核查层面建立流程——查阅待评模型的发表材料与权重卡,确认其训练集清单;对不可确认的模型标注为"污染状态未知",并避免把它作为基线列入主表。

参考:https://huggingface.co/datasets/MedOtter/CAMUS

⚠️ 坑点 5:患者级划分被破坏——视图或帧级随机划分(分类:数据泄漏)

问题:同一患者的 2CH 与 4CH 来自同一颗心脏的同一次检查;同一半序列的不同帧更是同一段连续采集。若按文件或按帧随机划分训练/测试,测试集里会出现与训练集同源甚至几乎相同的样本。这是 CAMUS 社区实践中最常见、后果也最严重的错误。

症状:测试 Dice 高达 0.96-0.98,远超文献报告与官方榜单(内膜 Dice 0.952 已是榜首水平);把模型部署到新的患者数据上时性能断崖式下跌 10-20 个 Dice 点。

解决:

  1. 简单方法:直接使用官方划分清单 database_split/training.txt、validation.txt、testing.txt,以患者目录名为分组键。这是最省事也最正确的做法。
  2. 进阶方法:若必须自行划分(例如做交叉验证),用 GroupKFold(groups=patient_ids) 或 StratifiedGroupKFold,分组键取 patient_id,分层键取 EF 二分(低于 45% 与不低于 45%)与性别。
  3. SOTA 方法:在训练脚本入口加断言——检查 train/val/test 三份患者集合两两交集为空,且每个患者的全部文件(2CH、4CH、ED、ES、半序列)都落在同一划分内。把该断言写进 CI,任何划分改动都会立即失败。

参考:https://arxiv.org/html/2601.00839v1

⚠️ 坑点 6:跨论文数值不可直接比较——评测协议未统一(分类:评估误用)

问题:CAMUS 本身不规定预处理与评测实现,导致文献间协议差异巨大:强度归一化有的用 [0,1] 归一化、有的 z-score 标准化、有的直方图均衡;数据格式有的用原生 NIfTI 全动态范围、有的转成 8-bit 或 16-bit PNG;指标有的按帧统计、有的按患者平均;损失函数在交叉熵、Dice 与混合损失之间变化。结果是"某方法比基线高 1.5 个 Dice 点"这类结论,很可能完全来自预处理差异而非架构改进。

症状:复现某篇论文时,用自己的预处理管线得到的基线数值与原文差 2-3 个 Dice 点,无法判断是代码有误还是协议不同;文献综述中把不同来源的数字并列成表,得出的排名与官方榜单不一致。

解决:

  1. 简单方法:任何 CAMUS 结果都同时报告三件事——归一化方式、数据位深与分辨率、指标统计单位。只报一个 Dice 数字的表格不可用于横向比较。
  2. 进阶方法:固定一套参考协议(本节 §6.3 提供的方案:整图 min-max 归一化、保持 float32 动态范围、统一 256 × 256、图像线性插值 + 掩码最近邻)并把它开源为脚本,使自己的所有对比在完全相同的管线内完成。
  3. SOTA 方法:在同一管线内做受控消融——把 U-Net、Attention U-Net、TransUNet 等架构在相同预处理、相同划分、相同损失与相同指标下训练,把架构贡献与协议贡献解耦。这正是近两年出现的"受控对比"研究的核心动机。

参考:https://arxiv.org/html/2601.00839v1

⚠️ 坑点 7:不同时间下载的发布包校验和不同,且存在两个非等价的发布版本(分类:工程陷阱)

问题:官方 Girder 门户的文件夹下载接口在不同时间返回的压缩包校验和并不一致。此外,社区核查发现存在两个非像素等同的发布版本:一版是完整心动周期但无标注、各向异性 uint8(0.308 × 0.154 mm);另一版是各向同性 float32(0.308 × 0.308 mm)。这意味着"我用的是 CAMUS"这句话在复现层面是不充分的。

症状:两位研究者使用同一份论文的预处理代码,得到的像素间距、数组形状甚至灰度分布不同,Dice 相差若干点;用固定校验和做下载验证的脚本在第二次下载时失败。

解决:

  1. 简单方法:在实验记录中写明下载日期、下载 URL、压缩包大小,并把 sha256sum 结果写进 README。不要依赖固定的预期校验和做断言。
  2. 进阶方法:下载后立即做一致性自检——统计所有患者文件的形状、dtype 与像素间距,输出唯一值集合。若出现两种间距(0.308 × 0.308 与 0.308 × 0.154)并存,说明混用了两个版本,必须重新统一下载。
  3. SOTA 方法:把原始下载包归档到不可变存储(对象存储的版本化桶或带校验的制品库),所有实验从归档副本出发,并对派生缓存附带清单文件(记录 sha256、shape、dtype),使数据血缘可逐字节追溯。

参考:https://constantinpape.github.io/torch-em/torch_em/data/datasets/medical/camus.html ;https://huggingface.co/datasets/MedOtter/CAMUS

⚠️ 坑点 8:19% 的 Poor 质量图像与五腔心替代采集破坏了统一处理假设(分类:偏倚陷阱)

问题:数据集中约 19% 的图像被专家评为 Poor 质量,论文明确指出对这些子集而言 LV 内膜/外膜的定位与临床指标估计"不被视为临床准确可用"。此外,部分病例因无法获得严格四腔心切面而以五腔心视图替代。若把这些样本与其余样本一视同仁地混入训练和评测,会同时污染两个方向:训练时模型被迫拟合不可靠的边界,评测时成绩被难例拉低却不反映真实水平。

症状:验证集与测试集指标方差极大,个别患者 Dice 低至 0.6 以下;按 ImageQuality 字段分组统计时发现 Poor 组 Dice 比 Good 组低 10 个点以上;错误可视化显示五腔心样本上左心房预测严重错位。

解决:

  1. 简单方法:解析 Info_2CH.cfg / Info_4CH.cfg 中的 ImageQuality 字段,把质量作为元数据一路带到评测阶段;报告指标时按 Good / Medium / Poor 分层给出,而不是只报一个总体均值。
  2. 进阶方法:训练时对 Poor 样本降权(如 Good 1.0 / Medium 0.7 / Poor 0.4),评测时分别报告"全量"与"仅 Good 与 Medium"两套结果。有第三方资料显示差质量样本为 84 例,占比与论文的 19% 一致,可据此核查你自己的子集划分是否合理。
  3. SOTA 方法:把图像质量作为显式的辅助预测任务(多任务学习),让模型在预测分割的同时预测质量等级,用共享表征改善难例表现;或用质量预测结果驱动一个不确定性加权损失,使模型在低质量区域自动降低梯度贡献。

参考:https://www.creatis.insa-lyon.fr/site/sites/default/files/Olivier BERNARDL.pdf ;https://hyper.ai/en/datasets/38453

§6.6 数据增强

增强方式 安全性 说明
水平翻转 ✅ 安全 心尖 2CH/4CH 切面左右镜像后仍是合法的解剖切面(相当于探头旋转 180°)
随机旋转(小角度 ±15°) ✅ 安全 探头角度本就有个体差异;角度过大则违背心尖切面的解剖约束
亮度/对比度抖动 ✅ 安全 直接对应不同患者的增益设置差异
随机缩放(0.85-1.15) ✅ 安全 对应不同患者的胸腔深度与探头距离差异
弹性形变 ⚠️ 谨慎 轻度可增加形态多样性;强度过大会破坏心肌的连续性与厚度平滑性
高斯噪声 ⚠️ 谨慎 与超声斑点噪声统计特性不符,可能引入域偏移
斑点噪声合成 ⚠️ 谨慎 需匹配实际斑点尺度,否则可能损害泛化
随机裁剪到小窗 ❌ 危险 心尖切面的解剖结构有固定相对位置,裁剪可能切掉心尖或心房
垂直翻转(上下) ❌ 危险 上下翻转相当于把心尖放到图像顶部,解剖学上不可能
大角度旋转(超过 45°) ❌ 危险 违反心尖切面的采集几何约束
直方图均衡化 / CLAHE ❌ 危险 改变斑点噪声统计特性,损害跨域泛化
通道混洗 / RGB 变换 ❌ 危险 输入是单通道灰阶,任何通道操作都无解剖意义

§6.7 模型推荐

模型 参数量级 CAMUS 上的表现定位 适用场景
U-Net 约 31 M 官方榜单第 4 名水平(内膜 Dice 0.936/0.912) 基线、教学、快速验证
nnU-Net 自动配置 官方榜单第 1 名(内膜 0.952/0.935,外膜 0.963/0.959),已达观察者内一致性 追求最高精度的首选
Attention U-Net 约 35 M 上榜(ACNN 内脏膜 0.936/0.913) 需要注意力可解释性的场景
LU-Net 多任务 论文报告在鲁棒性上优于单任务基线 需要解剖约束与多任务输出
CLAS 未公开 官方榜单第 2 名(内膜 0.947/0.929),EF 相关性最优(0.926) EF 回归优先的任务
TransUNet / 混合 Transformer 约 100 M 以上 第三方榜单中位水平,数据量小易过拟合 需要长程依赖建模的研究
视频分割模型(基于记忆的架构) 视实现 序列任务上有优势 时序一致性、半序列建模

选型建议:若目标是"在 CAMUS 上取得最好成绩",nnU-Net 仍是首选,且其优势来自自动化的预处理与超参搜索,而非架构创新——这也侧面印证了坑点 6 的结论:在 CAMUS 上,协议往往比架构更重要。

§6.8 硬件需求

训练配置 显存 预计单 epoch 时间 说明
U-Net, 256×256, batch 8, FP32 约 4 GB 约 30-60 秒 单卡入门级 GPU 足够(覆盖 1,800 帧)
U-Net, 256×256, batch 16, AMP 约 6 GB 约 25-50 秒 混合精度可缩短约 30%
nnU-Net, 三维配置 约 10-12 GB 数分钟 自动配置可能启用伪三维训练
TransUNet, 256×256, batch 8 约 12-16 GB 约 90-150 秒 注意力层显存开销显著
序列模型(半序列输入) 约 12-24 GB 视序列长度 序列长度可变(NbFrame 约 10-20)
全监督训练总时长(单卡) — 约 2-6 小时(200-400 epoch) CAMUS 规模小,训练快是其主要优势之一

提示:CAMUS 的训练成本极低,这是它被广泛用作教学与原型验证基准的重要原因。相对地,瓶颈通常不在 GPU 而在数据加载——NIfTI 解压与重采样是 CPU 密集型操作,建议按 §6.3 预先生成 .npy 缓存,并把 num_workers 设为 CPU 核心数的 50-75%。

§6.9 评估指标

# 依赖: numpy, scipy(用于距离变换)
# 对齐官方榜单口径: 分别报告 ED 与 ES,结构分三类,指标含 Dice / Hausdorff / MAD

import numpy as np


def dice(pred: np.ndarray, gt: np.ndarray) -> float:
    """二值 Dice。pred/gt 均为布尔或 0/1 数组。"""
    pred = pred.astype(bool)
    gt = gt.astype(bool)
    inter = np.logical_and(pred, gt).sum()
    denom = pred.sum() + gt.sum()
    if denom == 0:
        return 1.0 if inter == 0 else 0.0     # 双方皆空时定义为 1
    return float(2.0 * inter / denom)


def hausdorff_mm(pred: np.ndarray, gt: np.ndarray, spacing_mm: float) -> float:
    """按物理尺度换算的 Hausdorff 距离(毫米)。"""
    from scipy.ndimage import distance_transform_edt
    pred = pred.astype(bool)
    gt = gt.astype(bool)
    if not pred.any() or not gt.any():
        return float("nan")
    dt_gt = distance_transform_edt(~gt, sampling=spacing_mm)
    dt_pred = distance_transform_edt(~pred, sampling=spacing_mm)
    return float(max(dt_gt[pred].max(), dt_pred[gt].max()))


def mean_absolute_distance_mm(pred: np.ndarray, gt: np.ndarray, spacing_mm: float) -> float:
    """平均绝对表面距离(MAD / ASSD),单位毫米。"""
    from scipy.ndimage import distance_transform_edt
    pred = pred.astype(bool)
    gt = gt.astype(bool)
    if not pred.any() or not gt.any():
        return float("nan")
    dt_gt = distance_transform_edt(~gt, sampling=spacing_mm)
    dt_pred = distance_transform_edt(~pred, sampling=spacing_mm)
    return float((dt_gt[pred].mean() + dt_pred[gt].mean()) / 2.0)


def ejection_fraction(edv: float, esv: float) -> float:
    """EF = (EDV - ESV) / EDV × 100%。"""
    if edv <= 0:
        raise ValueError("EDV 必须为正数")
    return float((edv - esv) / edv * 100.0)


def disk_summation_volume(mask_area_px: float, pixel_area_mm2: float,
                          long_axis_mm: float) -> float:
    """单平面圆盘求和法(modified Simpson)的简化实现。

    CAMUS 是单张二维帧而非多切片堆叠,社区惯例是先由掩码几何反推
    从心尖到瓣环的心室长轴长度 L,再按 V = 5/6 × A × L 估计容积。
    """
    area_mm2 = mask_area_px * pixel_area_mm2
    return 5.0 / 6.0 * area_mm2 * long_axis_mm


def evaluate_case(pred: np.ndarray, gt: np.ndarray, spacing_mm: float) -> dict:
    """按结构分别计算指标。gt 取值属于集合 {0,1,2,3}。"""
    out = {}
    targets = {
        "LV_endo": gt == 1,
        "LV_epi": np.isin(gt, [1, 2]),      # 关键:心外膜 = 内膜 并 心肌
        "LA": gt == 3,
    }
    preds = {
        "LV_endo": pred == 1,
        "LV_epi": np.isin(pred, [1, 2]),
        "LA": pred == 3,
    }
    for name in targets:
        out[f"{name}_dice"] = dice(preds[name], targets[name])
        out[f"{name}_hd_mm"] = hausdorff_mm(preds[name], targets[name], spacing_mm)
        out[f"{name}_mad_mm"] = mean_absolute_distance_mm(preds[name], targets[name], spacing_mm)
    return out

指标使用提醒:Hausdorff 对单个离群像素极度敏感,实践中建议同时报告 95 百分位版本(HD95)。此外,官方榜单分别报告 ED 与 ES 两个相位的数值而非合并平均,复现时应对齐这一口径,否则数字无法与榜单对照。

§6.10 MLOps 笔记

版本管理:数据侧需要记录的不只是"用了 CAMUS",而是下载日期、来源 URL、压缩包 sha256、解压后患者文件数量与形状分布。模型侧需要绑定数据快照 ID,因为 CAMUS 的下载包在不同时间可能不一致(坑点 7)。

划分固化:把官方划分清单(training.txt / validation.txt / testing.txt)复制进代码仓库并计算其 sha256,训练前校验。任何对划分的改动都应产生新的实验版本号,而不是就地修改。

指标看板:按患者、按视图(2CH/4CH)、按相位(ED/ES)、按图像质量(Good/Medium/Poor)四个维度分别汇总指标。单一总体均值会掩盖最关键的问题——Poor 质量组与 Good 组的性能差距通常远大于模型迭代带来的提升。

可复现性检查清单:

[ ] 数据来源与下载日期已记录,且与压缩包 sha256 一并归档
[ ] 患者级划分已断言(train ∩ val = train ∩ test = val ∩ test = 空集)
[ ] 同一患者的全部文件(2CH/4CH、ED/ES/半序列)在同一划分内
[ ] 心外膜目标由标签 {1,2} 并集构造,而非裸标签 2
[ ] 评测只在手工标注帧上进行,传播帧不进入测试集
[ ] 图像归一化按整幅图/患者进行,未按帧独立归一化
[ ] 掩码重采样使用最近邻,且已校验目标取值集合属于 {0,1,2,3}
[ ] 若预训练语料含 TED / syntheticCAMUS / MedSAM 系列,已声明与 CAMUS 测试集的重叠
[ ] 指标按 ED/ES、按结构、按质量分层报告,与官方榜单口径对齐
[ ] 归一化方式、位深、分辨率三项协议已随结果一并报告

持续监控:CAMUS 是静态数据集,不存在数据漂移问题;需要监控的是你自身管线的一致性——预处理版本升级、依赖库版本变化(尤其是 SimpleITK 与 MONAI 的插值实现)都可能在数值层面引入漂移。建议每次依赖升级后,在固定的若干张测试帧上重跑并比对 Dice 是否发生非预期变化。


§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解方式
单中心偏倚 全部 500 例来自圣艾蒂安大学医院,人群与设备环境单一 高 使用外部多中心数据集交叉验证;报告跨域性能下降幅度
单厂商偏倚 全部采集使用 GE Vivid E95 与 M5S 探头,斑点纹理与增益风格高度一致 高 在多厂商数据集上微调后评测;加入设备风格随机化增强
单标注者偏倚 全库参考轮廓来自一名心脏科医师,模型学到的是与这位医师的一致性 中 利用 50 例三医师重复标注折叠量化;引入外部真值交叉复核
病理谱偏倚 约半数患者 LVEF 低于 45%,构成与普通人群筛查场景不同 中 按 EF 分层报告指标;明确声明队列的病理性富集
图像质量偏倚 19% 图像为 Poor 质量,且质量评级来自单一专家主观判断 中 按质量分层评估;把质量作为辅助任务或样本权重
视图覆盖偏倚 仅含心尖 2CH 与 4CH,无胸骨旁、短轴或三维视图 中 明确限定适用范围;需要其他切面的任务应换用其他数据集
解剖异常偏倚 部分病例以五腔心替代严格四腔心 低 按视图字段分层核查;必要时人工复核异常视图
基准污染偏倚 该数据集可能已进入多个基础模型的训练语料 高 报告对比模型时标注污染状态;优先使用可能未被污染的评测集
派生数据重叠偏倚 TED 与 syntheticCAMUS 与之共享 98 例患者,其中 4 例在官方测试集 中 跨数据集实验前先做患者映射核查并剔除重叠

§7.2 标注质量

CAMUS 的标注质量在同类数据集中属于第一梯队,理由有三:第一,全库轮廓由具备心血管临床资质的心脏科医师手工描画,而非众包或自动生成;第二,数据集明确公布了观察者内一致性数值(内膜 Dice 0.945/0.930,外膜 0.957/0.951,EF 相关系数 0.896),使"真值的可靠上限"成为可量化的事实;第三,官方榜单把观察者内变异作为参照线直接列出,使"模型是否足够好"有了明确的比较锚点。

但仍有两点需清醒认识。其一,真值来自单一医师,因此衡量的是"与这位医师的一致性",而非专家共识;若该医师的描画风格存在系统性倾向(例如倾向于把心内膜画得稍大),模型会继承这一倾向。其二,只有 ED 与 ES 帧是手工描画,半序列中间帧为传播生成,其中段帧的独立标注含量有限——有第三方通过符号距离场重建实验量化了这一点(重建与发布掩码的 Dice 达 0.9943 与 0.9957,而完全手工的对照数据集为 0.9685 与 0.9789)。

§7.3 泛化性

迁移场景 失效风险 证据
同中心、同设备、新患者 低 官方测试集即为该场景,榜首方法已达观察者内一致性水平
不同中心、同厂商设备 中 采集流程与患者人群差异会引入域偏移;CAMUS 单中心设计无法内部估计该风险
不同厂商设备 高 斑点纹理、增益曲线、动态范围与扫描几何均不同;CAMUS 完全不含多厂商数据
不同切面(胸骨旁、短轴) 极高 数据集不含这些切面,模型未见过对应的解剖布局
三维超声 极高 模态不同,二维模型无法直接迁移
心脏磁共振 极高 模态完全不同,仅解剖先验可能部分迁移
儿科与先天性心脏病 高 队列为成人,心脏尺寸与解剖变异超出训练分布
便携式与手持超声设备 高 图像质量与扇区几何与高端设备差异显著
不同种族人群 未知 数据集未记录族裔构成,无法评估

结论性判断:CAMUS 适合作为方法开发与受控比较的平台,不适合作为"泛化性能"的证明。任何泛化声明都必须在 CAMUS 之外的数据上提供证据。这一点在综述文献中被反复强调:单中心成果要推广到多中心、多厂商、多专家的真实场景,仍需显式的域适应或外部再训练。

§7.4 伦理与合规

伦理审批:采集工作按圣艾蒂安大学医院本地伦理委员会规定的范围进行,属回顾性、去标识化的常规临床数据二次利用。

去标识化:数据集仅暴露序数患者编号与年龄、性别、EF、帧率、图像质量等临床变量,不含姓名、出生日期、检查日期、住院号或自由文本报告。值得注意的是,连检查日期都被刻意移除,因此基于时间维度的分析在该数据集上无法开展。

许可约束:CC BY-NC-SA 4.0 加两条上游附加条款——仅限非商业科学研究用途,引用强制。ShareAlike 条款具有传染性:由 CAMUS 派生的数据(包括格式转换产物、切片版本、增强后的训练集)若对外分发,也必须采用同一许可证。这在实践中意味着你不能把 CAMUS 转换后与自有商业数据混合分发。

知识产权边界:数据集本身不授予任何软件专利或产品化权利。基于 CAMUS 训练的模型权重是否属于"派生作品"、其分发是否受 ShareAlike 约束,在社区中尚无统一解释;涉及商业用途时应直接联系 CREATIS 实验室确认。

§7.5 公平性

CAMUS 提供了性别与年龄字段,使基础的公平性分析可以开展:可以按 Sex 分组比较模型性能,也可以按 Age 分层检查是否存在系统性偏差。但数据集未记录族裔、社会经济状况、合并症谱等维度,因此跨族裔公平性评估在该数据集上不可行。

此外需注意统计功效问题:全库 500 例中测试集仅 50 例,按性别二分后每约 25 例。在这个规模上检出的亚组性能差异极易受抽样波动影响,报告时应给出置信区间而非仅报点估计。若研究目标本身是公平性,应考虑与其他人口构成更多样的数据集联合分析。

§7.6 数据漂移

CAMUS 是一份冻结的回顾性数据集,不存在随时间推移的数据漂移。需要关注的反而是三类"隐性漂移":

协议漂移:同一份数据在社区实践中的预处理与评测协议逐年分化,导致"报告的是同一数据集却数字不可比"。这是当前文献最主要的可比性障碍。

版本漂移:官方门户的下载包在不同时间可能产生不同的校验和,且存在两个非像素等同的发布版本(各向同性 float32 与各向异性 uint8)。使用不同版本的研究者会面临细微但系统性的差异。

生态漂移:随着 CAMUS 被纳入各类基础模型的训练语料(MedSAM 等),“在 CAMUS 上评测"这一行为的语义正在改变——它逐渐从"留出性能测量"退化为"已知受训条件下的复现测量”。这是使用该数据集的研究者必须主动声明的背景变化。

§7.7 DAIMS 24 项检查

# 检查项 状态 说明
1 宽格式(wide format) ✅ 关键帧布局为标准的图像-掩码配对,每患者每视图每相位一行,天然宽格式
2 唯一标识(unique identifier) ✅ patient_id + view + phase 三元组唯一确定一帧;文件名即复合主键,无重复风险
3 特殊字符 ✅ 文件名与配置键均为 ASCII 字母数字与下划线,无空格、重音符号或中文
4 重复行 ⚠️ 半序列配置中 2,000 个关键帧被重复并入 cine(便于两种配置各自独立使用);按帧去重时需注意这一设计
5 缺失编码(missing code) ✅ 数据集整体缺失极少;存在个别损坏的配置文件,属记录缺失而非编码缺失,应显式剔除
6 标签标识 ✅ 掩码取值严格属于 {0,1,2,3},全部真值文件均可用此集合校验
7 罕见类分组 ⚠️ 图像质量 Poor 组(约 19%)与五腔心替代病例属稀有亚组;未提供稀有病理的专门分组
8 偏倚评估 ✅ 数据集论文明确讨论单中心、单厂商、半数为病理风险患者、19% 差质量图像等偏倚来源
9 数据字典 ⚠️ 提供 information.txt 与逐例配置,但字段语义(尤其"心外膜"对应标签并集)需依赖论文与社区整理
10 信息性缺失解释 ❌ 未提供显式的"该帧是否为手工标注"布尔字段,研究者须自行依据 ED/ES 索引推断
11 设备记录 ✅ 设备型号(GE Vivid E95)与探头(GE M5S)在论文与第三方文献中均有明确记载
12 共线性 ⚠️ EF、ED 容积、ES 容积在数学上强相关(EF 由两者导出),联合建模时需警惕信息重复
13 编码映射 ✅ 掩码标签为解剖结构而非疾病,结构命名遵循标准解剖术语,无编码错配风险
14 时间戳处理 ✅ 检查日期被刻意移除并已去标识化;帧索引(ED/ES/NbFrame)提供了序列内的相对时间基准
15 划分建议 ✅ 官方提供患者级三划分清单(400/50/50),并附带划分文件,社区广泛遵从
16 泄漏讨论 ⚠️ 官方未讨论派生数据集(TED、syntheticCAMUS)共享患者与基础模型语料污染,需使用者自行核查
17 标签分布 ⚠️ 三类结构的像素占比在文档中未系统给出,需自行统计;类别不平衡明显(背景占绝对多数)
18 测量偏倚 ✅ 论文量化了观察者内与观察者间变异,使真值的不确定性有明确数值边界
19 外部验证建议 ⚠️ 论文与官方文档未提供外部验证协议;单中心设计使泛化性需由使用者自行设计验证
20 版本记录 ⚠️ 无正式版本号体系;不同时间下载的包校验和不同,且存在两个非像素等同的发布版本
21 预处理脚本 ❌ 官方未提供参考预处理或训练脚本;社区方案(torch-em、zea)覆盖下载与格式转换但不含训练基线
22 合规要求 ✅ 许可条款明确(CC BY-NC-SA 4.0 + 非商业 + 强制引用),附加条款以独立文件随数据分发
23 多模态对齐 ⚠️ 图像与配置文本为一一对应的目录配对,但配置文件与图像之间无显式外键字段,需按文件名约定对齐
24 去标识化 ✅ 移除全部直接标识符与检查日期,仅保留序数编号与有限的临床变量

DAIMS 评分:17.5 / 24

评分解读:良好——标注规范性与划分透明度达到同类数据集顶尖水平,但在工具链与版本治理两个工程维度上留有明显缺口。

对你意味着什么:CAMUS 的 12 个 ✅ 项集中在"数据本身的质量"——唯一主键清晰、标签编码干净无特殊字符、设备与去标识化记录完整、官方划分明确、合规条款独立成文。这些都来自 CREATIS 作为医学影像实验室的专业规范。扣分集中在"你能省多少力"这一侧:没有官方预处理脚本(第 21 项),意味着归一化、重采样、掩码整数化这套流程必须自己写一遍,且写错的方式不会报错、只会让结果悄悄变差;没有版本号体系(第 20 项),意味着你必须在实验记录里写清下载日期与校验和,否则半年后无法解释为什么复现不出自己的结果;信息性缺失没有显式编码(第 10 项),意味着"这一帧是手工标注还是插值生成"这个问题必须靠你从文件名与帧索引反推,一旦推错就会把传播标注当金标准用。落到行动上:第一,把 §6.3 的预处理脚本一次写对并固化下来,不要每次实验重写;第二,训练脚本入口加患者级划分断言;第三,在实验记录模板里加上"数据快照"一栏,强制填写下载日期与 sha256。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
TED(同批 98 例,逐帧全手工) 舍布鲁克大学等(Painchaud et al., IEEE TMI 41(10), 2022) 分割掩码与 CAMUS 发布掩码的一致性对照 符号距离场重建 Dice:CAMUS 0.9943/0.9957 对 TED 0.9685/0.9789 非迁移实验,为标注质量对照 证实 CAMUS 半序列中间帧确为插值传播生成,中段帧独立标注含量有限
CardiacNet(含房间隔缺损队列) 独立多队列集合 跨数据集泛化(不做域适应) 论文报告跨域性能下降,ASD 结构变异加大分割难度 性能下降,未报具体幅度 结构性异常(ASD)导致的形态变异是跨域失效的主要来源
ETAB 基准套件(多数据集统一协议) NeurIPS 2022 Datasets and Benchmarks Track 31 项任务,含心脏结构识别、功能估计、视图分类、临床预测 提供统一评价协议与基线 统一协议下可比 CAMUS 因标注精细被选为理想下游目标域,规模小于 EchoNet-Dynamic
官方在线评测(test split,2023-01 冻结) CREATIS CAMUS 挑战赛 LV 内膜/外膜/左心房分割 + EF 与容积回归 榜首 nnU-Net 内膜 Dice 0.952/0.935、外膜 0.963/0.959、左心房 0.902/0.935 达到并略超观察者内一致性(内膜 0.945/0.930) 在受控单中心数据上,nnU-Net 已具备替代专家手工勾画的潜力
多中心多厂商真实场景 社区共识 泛化能力 综述指出仍存在显著域偏移 未量化,方向为下降 单中心成果需显式域适应或外部再训练才能推广

矩阵使用说明:上表只收录有同行评审或官方发布支撑的结果。所有跨数据集对比都必须先做患者级重叠核查(参见 §5.3 风险二),否则数值差异可能包含泄漏成分。


§8 基准性能与生态

§8.1 官方排行榜

CREATIS 官方排行榜(test 集,最后一次更新 2023-01)按结构分列。下表为完整榜单前 5 名与观察者内参照线。

左心室内膜(LV endocardium)

排名 模型 Dice ED / ES Hausdorff ED / ES (mm) MAD ED / ES (mm) 年份 关键技术 完整引用 代码
参照 观察者内一致性 0.945 / 0.930 4.6 / 4.5 1.4 / 1.3 — 同一专家重复标注 见 §9 BibTeX —
1 nnU-Net 0.952 / 0.935 4.3 / 4.2 1.3 / 1.3 2021 自动化配置:自适应的预处理、网络拓扑与训练策略搜索 Isensee F, et al. Nat Methods 18:203-211, 2021. DOI: 10.1038/s41592-020-01008-z https://github.com/MIC-DKFZ/nnUNet
2 CLAS 0.947 / 0.929 4.6 / 4.6 1.4 / 1.4 2021 类别级注意力与多尺度聚合 见排行榜提交记录(CREATIS 官方榜单) —
3 GUDU 0.946 / 0.929 4.7 / 4.7 1.4 / 1.4 2021 论文未完整披露 见排行榜提交记录(CREATIS 官方榜单) —
4 U-Net(作者基线) 0.936 / 0.912 5.3 / 5.5 1.7 / 1.7 2019 编码器-解码器 + 跳跃连接 Leclerc S, et al. IEEE TMI 38(9):2198-2210, 2019. DOI: 10.1109/TMI.2019.2900516 https://github.com/creatis-myriad/CAAMUS
5 ACNN 0.936 / 0.913 5.6 / 5.6 1.7 / 1.7 2018 注意力系数网络 Oktay O, et al. arXiv:1804.03999, 2018 https://github.com/ozan-oktay/Attention-Gated-Networks

左心室外膜(LV epicardium)

排名 模型 Dice ED / ES Hausdorff ED / ES (mm) MAD ED / ES (mm) 年份 关键技术
参照 观察者内一致性 0.957 / 0.951 5.0 / 5.0 1.7 / 1.7 — 同一专家重复标注
1 nnU-Net 0.963 / 0.959 4.6 / 4.4 1.5 / 1.5 2021 同上
2 CLAS 0.961 / 0.955 4.8 / 4.9 1.5 / 1.6 2021 同上
2 GUDU 0.960 / 0.955 4.8 / 4.9 1.6 / 1.6 2021 同上
3 U-Net(作者基线) 0.956 / 0.946 5.2 / 5.7 1.7 / 1.9 2019 同上
4 ACNN 0.953 / 0.945 5.9 / 5.9 1.9 / 2.0 2018 同上

左心房(Left atrium)

排名 模型 Dice ED / ES Hausdorff ED / ES (mm) MAD ED / ES (mm) 年份
1 nnU-Net 0.902 / 0.935 5.1 / 4.3 2.0 / 1.6 2021
2 CLAS 0.902 / 0.927 5.2 / 4.8 1.9 / 1.8 2021
3 GUDU 0.894 / 0.926 5.4 / 5.0 2.3 / 1.9 2021
4 U-Net(作者基线) 0.889 / 0.918 5.7 / 5.3 2.2 / 2.0 2019
5 ACNN 0.881 / 0.911 6.0 / 5.8 2.3 / 2.2 2018

左心室功能指标回归

排名 模型 EF 相关系数 EF MAE (%) ED 容积相关系数 ED 容积 MAE (ml) ES 容积相关系数 ES 容积 MAE (ml) 年份
参照 观察者内一致性 0.896 4.7 0.978 6.5 0.981 4.5 —
1 nnU-Net 0.857 4.7 0.977 5.9 0.987 4.0 2021
2 GUDU 0.897 4.0 0.977 6.7 0.981 4.6 2021
3 CLAS 0.926 4.0 0.958 7.7 0.979 4.4 2021
4 U-Net(作者基线) 0.845 5.0 0.926 11.2 0.960 7.5 2019
5 ACNN 0.807 5.5 0.928 9.7 0.954 6.9 2018

为什么这些数值不可直接相互比较:上表所有数值均来自同一官方评测流程(test 集、同一提交协议),因此表内可比。但把它与文献中其他论文报告的 CAMUS 数值对比时,以下三个原因会使比较失效——第一,归一化与分辨率协议不同([0,1] 归一化与 z-score、原生分辨率与 256 × 256 重采样);第二,指标统计单位不同(帧级平均与患者级平均);第三,部分论文在 450 例标注数据上评测而非官方 50 例测试集。此外,官方在线平台自 2023 年 1 月起关闭,因此表中 2023 年之后的新方法无法进入官方榜单,只能在同一测试集上自行评测——第三方聚合榜单试图填补这一空缺,但其数值由提交方自报,未经官方复算。

§8.2 SOTA 总结与选型建议

官方榜单层面的结论:nnU-Net 在四个指标组(内膜、外膜、左心房、容积回归)中均排名第一或并列第一,其水平达到甚至略微超过观察者内一致性。这意味着在 CAMUS 这一受控单中心数据上,"机器替代专家手工勾画"已经是可达成的目标,而非远期愿景。作者团队在综述中亦明确表态:nnU-Net 产生的分数来自受控数据集,具备替代专家手工的潜力。

第三方聚合视角:在线平台关闭后,社区出现了对 CAMUS test 集的持续聚合跟踪。截至 2026 年,该口径下的平均 Dice 已达 94.9(2025 年 10 月提交),nnU-Net 为 93.8,而通用医学基础模型 MedSAM 仅 85.8。另一聚合口径报告 Overall Dice 94.71 由 UltraUPConvNet(约 60.48 M 参数)保持。这些数字揭示两点:第一,专用分割架构仍显著优于通用基础模型在超声上的表现;第二,分数提升已进入小数点后一位的竞争区间,边际收益递减。

选型建议:

你的处境 建议
需要可复现的强基线 nnU-Net,直接使用官方仓库的 2D 配置
需要最快的训练与推理 标准 U-Net,4 GB 显存即可训练,代价是内膜 Dice 约低 1.6 个点
EF 回归精度优先 CLAS 在 EF 相关系数上表现最好(0.926,超过观察者内 0.896)
需要解剖学保证 带嵌套约束或拓扑保证的方法,注意其在官方榜单中未单独列出
需要时序一致性 基于记忆的视频分割架构,序列帧可用作无标注监督
部署到新中心 不要直接套用榜单模型;先在目标域做外部验证并评估域适应必要性

§8.3 评测协议

CAMUS 的评测协议由官方挑战赛定义,核心要素如下。

协议要素 官方设定 复现注意事项
评测集 patient0451-patient0500(50 例,100 次采集,200 帧) 不得用于训练或模型选择
评测结构 LV 内膜、LV 外膜、左心房(三类) 外膜定义为内膜与心肌的并集
相位报告 ED 与 ES 分别报告,不合并平均 合并平均的数字无法与榜单对照
分割指标 Dice、Hausdorff 距离、平均绝对距离(MAD) Hausdorff 对离群像素敏感,建议附带 HD95
回归指标 EF 与 ED/ES 容积的相关系数与平均绝对误差 EF 由容积导出,报告时应说明容积估计方法
提交方式 上传分割结果由官方平台复算(平台已于 2023-01 关闭) 平台关闭后需自行按同一协议复算并在论文中说明
参照线 观察者内一致性数值随榜单并列给出 这是判断模型是否"足够好"的唯一官方锚点
数据集 关系 是否共享患者 使用建议
TED CAMUS 同批 98 例的逐帧全手工再标注 是(其中 4 例在 CAMUS 测试集) 可与 CAMUS 互补用于时序研究;跨集评测前必须剔除重叠患者
syntheticCAMUS 派生自 CAMUS 的合成版本 是(同 98 例) 仅用于合成数据研究;不得与 CAMUS 测试集混用于评测
EchoNet-Dynamic 同为心尖四腔心二维超声,规模大二十倍 否(斯坦福独立队列) 单结构大规模视频任务的首选;可作跨中心外部验证目标
HMC-QU 二维超声,含心肌梗死诊断目标 否(多哈独立队列) 可作跨中心外部验证;标注结构与 CAMUS 接近
Unity Imaging Collaborative 英国 17 家医院多中心超声 否 多中心、多厂商泛化评测的合适目标域
TMED 二维超声静帧,视图分类与主动脉瓣狭窄分级 否 分类任务对照;无序列数据
CETUS 三维经胸超声,多中心 否 三维分割对照;模态不同不可直接比较
ACDC 心脏磁共振 cine 短轴 否(第戎独立队列) 仅共享托管门户与作者;跨模态迁移研究的对照

§8.5 关键论文

  1. Leclerc S, Smistad E, Pedrosa J, Østvik A, Cervenansky F, Espinosa F, Espeland T, Berg EAR, Jodoin PM, Grenier T, Lartizien C, D’hooge J, Løvstakken L, Bernard O. Deep Learning for Segmentation Using an Open Large-Scale Dataset in 2D Echocardiography. IEEE Transactions on Medical Imaging, 38(9):2198-2210, 2019. DOI: 10.1109/TMI.2019.2900516。贡献:发布 CAMUS 数据集本体,建立官方划分与评测协议,报告编码器-解码器架构在容积与 EF 估计上的上限(容积相关系数 0.95、EF 相关系数 0.80)。

  2. Leclerc S, Smistad E, Østvik A, Cervenansky F, Espinosa F, Espeland T, Berg EAR, Grenier T, Lartizien C, Jodoin PM, Løvstakken L, Bernard O. LU-Net: A Multistage Attention Network to Improve the Robustness of Segmentation of Left Ventricular Structures in 2-D Echocardiography. IEEE Transactions on Ultrasonics, Ferroelectrics, and Frequency Control, 67(12), 2020. 贡献:提出多任务 LU-Net,通过同时预测分割与解剖结构定位提升左心室结构分割的鲁棒性,是 CAMUS 上早期最有影响力的架构改进之一。

  3. Isensee F, Jaeger PF, Kohl SAA, Petersen J, Maier-Hein KH. nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation. Nature Methods, 18:203-211, 2021. DOI: 10.1038/s41592-020-01008-z。贡献:提出自动化配置框架,在 CAMUS 官方榜单上取得四项第一,验证"预处理与训练策略自动化"比"架构创新"在该数据集上更具收益。

  4. Painchaud N, Skandarani Y, Judge T, Bernard O, Lalande A, Jodoin PM. Cardiac Segmentation with Strong Anatomical Guarantees. IEEE Transactions on Medical Imaging, 39(11):3703-3713, 2020. DOI: 10.1109/TMI.2020.3000559。贡献:提出带强解剖学保证的分割框架,确保输出轮廓在拓扑上合法(无自交、无空洞),并在 CAMUS 等数据集上验证。

  5. Østvik A, Smistad E, Espeland T, Berg EAR, Løvstakken L. ETAB: A Benchmark Suite for Visual Representation Learning in Echocardiography. Advances in Neural Information Processing Systems 35 (Datasets and Benchmarks Track), 2022. 贡献:以 CAMUS 作为精细标注的下游目标域,构建 31 项覆盖心脏结构识别、功能估计、视图分类与临床预测的标准化评测任务。

  6. Smistad E, Østvik A, Salte IM, Melichova D, Nguyen TM, Haugaa K, Brun H, Edvardsen T, Løvstakken L. Real-time automatic ejection fraction and foreshortening detection using deep learning. IEEE TUFFC, 67(12), 2020. 贡献:将 CAMUS 方法推向实时临床可用,同时处理 EF 估计与心尖短缩(foreshortening)检测两个耦合问题。

  7. Smistad E, Salte IM, Østvik A, Leclerc S, Bernard O, Løvstakken L. Segmentation of apical long axis, four- and two-chamber views using deep neural networks. 2019 IEEE IUS, 8-11, 2019. 贡献:把分割能力从 CAMUS 的 2CH/4CH 扩展到心尖长轴视图,验证方法的视图泛化性。

  8. Fiorito AM, Østvik A, Smistad E, Leclerc S, Bernard O, Løvstakken L. Detection of cardiac events in echocardiography using 3D convolutional recurrent neural networks. 2018 IEEE IUS, 1-4, 2018. 贡献:利用序列信息自动识别 ED 与 ES 事件,为 CAMUS 的相位标注提供算法侧的对照。

  9. Leclerc S, Smistad E, Grenier T, Lartizien C, Østvik A, Espinosa F, Jodoin PM, Løvstakken L, Bernard O. Deep learning applied to multi-structure segmentation in 2D echocardiography: a preliminary investigation of the required database size. 2018 IEEE IUS, 1-4, 2018. 贡献:研究分割性能随训练数据库规模的变化曲线,为 CAMUS 的 500 例规模选择提供实证依据。

§8.6 社区活跃度

指标 数值 说明
原始论文引用量 963+ Google Scholar,截至 2026-09;Semantic Scholar 同文显示 407-416,平台口径差异显著
官方排行榜提交数 二十余个方法 榜单 2023-01 冻结,此后不再接受提交
Hugging Face 衍生版下载 2,208 次/月(camus-sample);262 次/月(第三方 Parquet 版) 说明社区对开箱即用格式有稳定需求
工具链集成 torch-em、zea、MONAI 生态均有 CAMUS 加载器 医学影像工程社区的标准化程度高
基础模型语料收录 至少 6 个大规模语料收录 MedSAM、US30K/SAMUS、UltraSam、BiomedParseData、U2-BENCH、FedCVD
评测平台状态 已关闭 这是当前最主要的社区痛点:新方法无法获得官方认证的成绩

§8.7 生态快照

资源 类型 链接 Star 或活跃度(截至 2026-09) 推荐理由
CREATIS 官方挑战赛主页 官方门户 https://camus.creatis.insa-lyon.fr/challenge/ 静态页面,长期可用 许可条款、引用格式与榜单的唯一权威来源
CREATIS Human Heart Project 数据门户 官方下载 https://humanheart-project.creatis.insa-lyon.fr/database/ Girder 集合 6373703d73e9f0047faa1bc8 官方源发布版下载入口
torch-em 工具链 https://github.com/constantinpape/torch-em 活跃维护 提供 get_camus_data 下载封装,与 PyTorch 生态直接集成
zea 工具链 https://github.com/tue-bmd/zea 活跃维护 提供 CAMUS 到标准格式的转换器,含精简子集选项
nnU-Net 模型 https://github.com/MIC-DKFZ/nnUNet 高关注度,持续维护 官方榜单第一名方法,开箱即用
MedOtter/CAMUS 数据派生 https://huggingface.co/datasets/MedOtter/CAMUS 262 次下载/月 附详细的数据来源核查与污染分析,工程参考价值高
zeahub/camus-sample 数据派生 https://huggingface.com/datasets/zeahub/camus-sample 2,208 次下载/月 最小可跑示例子集,适合管线验证
ETAB 基准套件 基准 https://proceedings.neurips.cc/paper_files/paper/2022/ NeurIPS 2022 收录 以 CAMUS 为核心的标准化多任务评测协议

§9 相关资源与引用

§9.1 官方资源

资源 链接 说明
挑战赛主页 https://camus.creatis.insa-lyon.fr/challenge/ 数据集总入口与项目背景
数据集说明页 https://camus.creatis.insa-lyon.fr/challenge/databases.html 数据集构成、引用要求、平台状态说明
组织者与委员会 https://www.creatis.insa-lyon.fr/Challenge/camus/organizers.html 主组织者、医学专家委员会与科学专家委员会名单
官方排行榜 https://www.creatis.insa-lyon.fr/Challenge/camus/results.html test 集成绩,最后一次更新 2023-01
数据下载门户 https://humanheart-project.creatis.insa-lyon.fr/database/ CREATIS Girder 门户,需注册并接受许可条款

§9.2 教程与社区资源

资源 类型 说明
torch-em CAMUS 模块 官方文档 下载封装与路径获取函数,含执行环境依赖说明
zea CAMUS 转换器 官方文档 命令行格式转换工具,含精简子集与 Hugging Face 上传流程
Hugging Face 派生版数据卡 数据文档 附数据来源、污染核查与标签语义的详细工程说明
MONAI 医学影像变换库 工具链 提供统一的医学影像重采样、归一化与增强实现

§9.3 BibTeX 完整引用

@article{leclerc2019deep,
  title     = {Deep Learning for Segmentation Using an Open Large-Scale Dataset
               in 2D Echocardiography},
  author    = {Leclerc, Sarah and Smistad, Erik and Pedrosa, Joao and
               {\O}stvik, Andreas and Cervenansky, Frederic and
               Espinosa, Florian and Espeland, Torvald and
               Berg, Erik Andreas Rye and Jodoin, Pierre-Marc and
               Grenier, Thomas and Lartizien, Carole and D'hooge, Jan and
               L{\o}vstakken, Lasse and Bernard, Olivier},
  journal   = {IEEE Transactions on Medical Imaging},
  volume    = {38},
  number    = {9},
  pages     = {2198--2210},
  year      = {2019},
  doi       = {10.1109/TMI.2019.2900516},
  publisher = {IEEE}
}

@article{isensee2021nnunet,
  title   = {nnU-Net: a self-configuring method for deep learning-based
             biomedical image segmentation},
  author  = {Isensee, Fabian and Jaeger, Paul F. and Kohl, Simon A. A. and
             Petersen, Jens and Maier-Hein, Klaus H.},
  journal = {Nature Methods},
  volume  = {18},
  pages   = {203--211},
  year    = {2021},
  doi     = {10.1038/s41592-020-01008-z}
}

§9.4 引用指南

使用 CAMUS 时有两条强制要求,均来自官方许可条款而非学术惯例:

  1. 必须引用原始论文。 官方明确表述"任何使用 CAMUS 数据库的行为都必须引用该论文"。引用时使用上文的 leclerc2019deep 条目,或采用官方主页给出的简化格式:S. Leclerc, E. Smistad, J. Pedrosa, A. Ostvik, et al. “Deep Learning for Segmentation using an Open Large-Scale Dataset in 2D Echocardiography” in IEEE Transactions on Medical Imaging, vol. 38, no. 9, pp. 2198-2210, Sept. 2019. doi: 10.1109/TMI.2019.2900516。

  2. 必须声明非商业用途。 许可协议限定该数据集"仅严格用于非商业科学研究目的"。论文的方法章节或数据章节应包含这一声明,商业场景需另行取得授权。

此外,强烈建议在数据可得性声明中写明:下载日期、使用的分发包形态(官方 NIfTI 源版或第三方派生版)、以及是否包含任何与之共享患者的外部数据集(TED、syntheticCAMUS)。这三项信息是当前 CAMUS 社区复现困境的主要症结所在。


§10 AI 使用声明卡

§10.1 AI 模型列表

用途 模型/工具 版本或说明
文献检索与事实核查 大语言模型辅助 Web 检索 覆盖官方主页、论文页、数据门户、工具链文档与第三方派生数据卡
正文撰写与结构化 大语言模型辅助写作 在人工给定的规范框架与事实清单约束下生成初稿
代码示例编写 大语言模型辅助编码 依赖 SimpleITK、PyTorch、NumPy、SciPy
格式与规范校验 check_md.py 校验脚本 行数、章节、锚点、frontmatter、坑点数量、DAIMS、受控词表强校验

§10.2 AI 参与范围

AI 参与的范围包括:公开资料的检索与整理、事实清单的构建、正文初稿的结构化撰写、代码示例的编写与说明、以及格式规范的自动化校验。

AI 未参与的范围包括:医学事实的最终裁定、基准数值的采集与复核、许可条款的法律解释、以及任何与数据集本身相关的实务决策。所有涉及临床语义的表述(如 ICD-11 与 SNOMED CT 映射、临床任务边界、偏倚严重程度评级)均由人工审核者复核。

§10.3 输入来源列表

  1. CREATIS CAMUS 挑战赛主页(数据集构成与平台状态)— https://camus.creatis.insa-lyon.fr/challenge/databases.html
  2. CREATIS CAMUS 组织者与委员会页(机构与人员名单)— https://www.creatis.insa-lyon.fr/Challenge/camus/organizers.html
  3. CREATIS CAMUS 官方排行榜(test 集成绩与观察者内参照线)— https://www.creatis.insa-lyon.fr/Challenge/camus/results.html
  4. Leclerc S, et al. Deep Learning for Segmentation Using an Open Large-Scale Dataset in 2D Echocardiography. IEEE TMI 38(9):2198-2210, 2019 — https://doi.org/10.1109/TMI.2019.2900516
  5. 论文摘要与引用统计(容积与 EF 相关系数、引文计数)— https://readthispaper.com/zh-tw/paper/s2:73510235/abstract
  6. Semantic Scholar 论文条目(引用量平台差异)— https://www.semanticscholar.org/paper/Deep-Learning-for-Segmentation-Using-an-Open-in-2D-Leclerc-Smistad/82b46dd7c67b17dfc34b10b4e7db6f8391cd4886/figure/31
  7. Sarah Leclerc Google Scholar 学者主页(引用量 963)— https://scholar.google.co.th/citations?hl=th&user=OegLvG0AAAAJ
  8. 数据集患者选择与标注协议说明(论文作者公开材料)— https://www.creatis.insa-lyon.fr/site/sites/default/files/Olivier BERNARDL.pdf
  9. 心脏影像数据集对比综述(CAMUS 性能与结论)— https://olivier-bernard-creatis.github.io//files//research-iccr-bernard-2024.pdf
  10. ETAB 基准套件论文(CAMUS 作为下游目标域)— https://proceedings.neurips.cc/paper_files/paper/2022/file/796501434d0dc3a039d5b91261f7f889-Paper-Datasets_and_Benchmarks.pdf
  11. 第三方派生版数据卡(标签语义、污染核查、版本差异)— https://huggingface.co/datasets/MedOtter/CAMUS
  12. 许可条款文件(CC BY-NC-SA 4.0 与附加条款)— https://huggingface.co/datasets/MedOtter/CAMUS/blob/main/source_metadata/database_split/LICENSE_TERMS.md
  13. torch-em CAMUS 数据模块文档(下载封装与校验和说明)— https://constantinpape.github.io/torch-em/torch_em/data/datasets/medical/camus.html
  14. zea CAMUS 转换器源码文档(划分定义、标签数组、精简子集)— https://zea.readthedocs.io/en/v0.1.0a2/_modules/zea/data/convert/camus.html
  15. Hugging Face camus-sample 数据卡(示例子集大小与元数据字段)— https://huggingface.com/datasets/zeahub/camus-sample
  16. 第三方数据集镜像说明(划分构成与差质量样本数)— https://hyper.ai/en/datasets/38453
  17. 配置文件实例(Info_2CH.cfg 字段与取值)— https://huggingface.co/datasets/miyuki17/CAMUS_public/blob/main/database_nifti/patient0011/Info_2CH.cfg
  18. 设备规格来源(GE Vivid E95 与 M5S 探头)— https://dx.doi.org/10.1109/TUFFC.2024.3393026
  19. 第三方聚合排行榜(test 集方法对比)— https://www.sota2.com/research/sota/echocardiography-segmentation-on-camus-test
  20. 受控对比研究(评测协议不统一问题)— https://arxiv.org/html/2601.00839v1

§10.4 人工校验表

内容模块 审核者 审核方式 审核状态
§1 概览与战略价值 千方病案医学编辑部 与官方主页及论文原文交叉比对 ✅ 已通过
§2 医学背景与编码映射 千方病案医学编辑部 ICD-11 与 SNOMED CT 编码逐项核验 ✅ 已验证
§3 数据集规格与版本矩阵 千方病案医学编辑部 与官方文档及第三方派生数据卡交叉核对 ✅ 已通过
§4 DAIMS 字段字典 千方病案医学编辑部 字段名与示例值逐一对照配置文件实例 ✅ 已验证
§5 划分与泄漏分析 千方病案医学编辑部 与官方划分清单及第三方重叠核查报告比对 ✅ 已通过
§6 预处理与 DataLoader 代码 千方病案医学编辑部 代码路径拼接、插值方式与形状契约逐行复核 ✅ 已验证
§6.5 八个坑点 千方病案医学编辑部 每条坑点对应的真实来源已逐一核实 ✅ 已通过
§7 质量评估与 DAIMS 24 项 千方病案医学编辑部 24 项逐项评级,评分解读与行动建议逐条撰写 ✅ 已通过
§8 排行榜与引用数表述 千方病案医学编辑部 与 CREATIS 官方榜单及 Google Scholar 快照交叉比对 ✅ 已验证
§9 BibTeX 与引用指南 千方病案医学编辑部 与官方指定引用格式逐字比对 ✅ 已验证
§C JSON-LD @graph 千方病案医学编辑部 Schema 字段逐项校验 ✅ 已通过

§10.5 AI 生成章节标注

以下章节由 AI 在人工规范约束下生成初稿,并已通过人工校验:§1.0 至 §1.5、§2.2、§2.5、§3.0、§3.3、§3.4、§3.10、§4.0 至 §4.5、§5.2 至 §5.6、§6.0 至 §6.10、§7.1 至 §7.6、§8.2 至 §8.7、§9.1 至 §9.4。

以下内容为人工主导核定:§0 全部声明与免责条款、§2.1 与 §2.1b 的编码映射、§2.3 临床任务边界、§2.4 患者人群、§2.6 金标准、§3.5 与 §3.6 标注方式与一致性、§5.1 官方划分、§6.5 坑点的真实性裁定、§7.7 DAIMS 24 项评级、§8.1 排行榜数值转录、§10.4 校验表。

§10.6 最后人工审核日期

最后人工审核日期:2026-09-05

审核范围:全文内容、结构规范、数值来源、代码示例、许可与合规表述。

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


相关数据集导航

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

  • mms-2 — 共享标签:医学影像 / 医学图像分割 / 挑战赛数据集 / 心血管疾病
  • cmrxmotion — 共享标签:医学影像 / 医学图像分割 / 挑战赛数据集 / 心血管疾病
  • wmh-challenge — 共享标签:医学图像分割 / 挑战赛数据集 / 心血管疾病
  • emidec — 共享标签:医学影像 / 医学图像分割 / 挑战赛数据集 / 心血管疾病
  • myops — 共享标签:医学影像 / 医学图像分割 / 挑战赛数据集 / 心血管疾病
  • myocardial-perfusion-spect — 共享标签:医学影像 / 医学图像分割 / 心血管疾病
  • cmrxrecon — 共享标签:医学影像 / 挑战赛数据集 / 心血管疾病
  • echonet-dynamic — 共享标签:医学影像 / 医学图像分割 / 心血管疾病
  • hc18 — 共享标签:医学影像 / 医学图像分割 / 挑战赛数据集
  • us-nerve-seg — 共享标签:医学影像 / 医学图像分割 / 挑战赛数据集

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

返回 AI-Ready 数据集