EchoNet-LVH — 左心室肥厚超声精准表型 AI-Ready Wikipedia

12,000 段胸骨旁长轴超声心动视频 · 左室壁厚测量与 LVH 病因鉴别 · 斯坦福

来源 Stanford Center for Artificial Intelligence in Medicine & Imaging (AIMI) url: https://aimi.stanford.edu/datasets/echonet-lvh发布时间: 2026-09-18最后更新: 2026-09-25 阅读 29
EchoNet-LVH — 左心室肥厚超声精准表型 AI-Ready Wikipedia

信息速览

数据集名称EchoNet-LVH — 左心室肥厚超声精准表型 AI-Ready Wikipedia
数据类型12,000 段 AVI 视频,约 15GB,研究用途协议,3 项结构测量标签
规模12,001 名患者(Stanford 队列)
接入方式Stanford Center for Artificial Intelligence in Medicine & Imaging (AIMI) url: https://aimi.stanford.edu/datasets/echonet-lvh
AI 就绪度

EchoNet-LVH(心脏超声 LVH)— 左心室肥厚超声精准表型 AI-Ready Wikipedia


INFOBOX

数据集名称 EchoNet-LVH
英文全称 EchoNet-LVH: High-Throughput Precision Phenotyping of Left Ventricular Hypertrophy
别名/简称 EchoNet-LVH、LVH、EchoNet-LVH Dataset、PLAX Wall Thickness Dataset
疾病分类 左心室肥厚(ICD-11:BC42 心肌病 / BA00 原发性高血压 / BC43.1 肥厚型心肌病)/ 心脏淀粉样变(ICD-11:BC43.3)
SNOMED CT 55827005 Left ventricular hypertrophy (disorder) / 45227007 Hypertrophic cardiomyopathy (disorder) / 53050002 Cardiac amyloidosis (disorder)
数据模态 超声心动视频(二维灰阶 B 模式,胸骨旁长轴 PLAX 切面)
AI 任务类型 关键点检测、回归测量(IVSd/LVIDd/LVPWd)、视频二分类(淀粉样变/HCM 病因鉴别)、自监督预训练、结构量化不确定性估计
样本总数 12,000 段视频(对应 12,001 名患者队列)/ 官方划分 10,490 训练 + 1,167 验证 + 343 测试
数据大小 约 15 GB(4 个 Batch 分卷压缩包,解压后为 AVI 视频)
数据格式 AVI(视频)+ CSV(标注与划分表)+ 关键点坐标
许可证 Stanford University School of Medicine Research Use Agreement and Terms of Use
访问级别 申请审核(同意斯坦福研究使用协议后经 Stanford AIMI 分发)
DUO 标签 GRU, NPUNCU, IRB
语言 英文(文件名经哈希处理,无自然语言文本)
首发日期 2022-02-23(JAMA Cardiology 在线发表)
最后更新 2022-04-01(JAMA Cardiology 纸本 7(4):386-395)
发布机构 Stanford University School of Medicine(Stanford AIMI)& Cedars-Sinai Medical Center
官方主页 https://echonet.github.io/lvh/
下载地址 https://aimi.stanford.edu/datasets/echonet-lvh
DOI 10.1001/jamacardio.2021.6059
引用次数 74+(Google Scholar,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 官方划分 + 关键点坐标 + 官方推理代码齐备;扣分项:无官方数据集类、视频未统一扫描扇形裁剪、A4C 病因标签子集未随包发布
页面状态 published

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

医学审核者:[千方病案医学编辑部]交叉审核:§2 医学背景(左心室肥厚的病理生理、超声心动图测量标准、ICD-11 与 SNOMED CT 映射)、§7 偏倚分析(转诊偏倚、单中心偏倚、标注者间变异)。

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

审核日期:2026-09-05

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。EchoNet-LVH 由 Stanford AIMI 分发,使用者须同意 Stanford University School of Medicine Research Use Agreement and Terms of Use,该协议限定研究用途、禁止再识别、禁止未经授权的商业再分发。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 📌 30 秒速览

这是什么? EchoNet-LVH 是一个由斯坦福大学医学院与 Cedars-Sinai 医学中心联合发布的超声心动图视频数据集。它包含 12,000 段心脏超声视频,全部拍摄的是同一个切面——胸骨旁长轴(PLAX)。这个切面可以从胸骨左侧观察到左心室、室间隔和左室后壁,是测量心肌厚度的标准视角。每段视频都配有心脏科医生手工标注的三项尺寸测量值,以及这些测量是在视频的哪一帧、哪几个像素点上做出的。

为什么重要? 心肌变厚(左心室肥厚,LVH)本身只是一种表现,背后可能是高血压这样的良性原因,也可能是肥厚型心肌病或心脏淀粉样变这类会致命的疾病。它们在超声上看起来非常相似,靠人眼区分既困难又不稳定,不同医生的测量差异甚至可以达到几毫米——而临床上 1—2 毫米的差别就可能改变诊断。EchoNet-LVH 提供了上万段带专家标注的视频,第一次让机器可以在整个心动周期的尺度上、逐搏地去观察这些细微变化。

我能用它做什么? 你可以训练模型自动测量室间隔厚度、左室内径和左室后壁厚度,把原本依赖医生手绘的测量流程变成可重复的自动流程;也可以在它的基础上做视频分类,区分淀粉样变、肥厚型心肌病与其他原因的肥厚。数据集带了官方的训练/验证/测试划分,因此你得到的指标可以和其他论文直接对照。需要注意它是单一切面、单一机构来源的转诊人群数据,任何临床结论都必须经过外部验证。

§1.1 摘要

EchoNet-LVH 是一个面向心血管超声视频的深度学习工作流与其配套公开数据集,由 Grant Duffy、David Ouyang 等人在 2022 年发表于 JAMA Cardiology,论文题为 High-Throughput Precision Phenotyping of Left Ventricular Hypertrophy With Cardiovascular Deep Learning,DOI 为 10.1001/jamacardio.2021.6059。研究队列共纳入 23,745 名患者,来自 Stanford Health Care 与 Cedars-Sinai Medical Center,时间跨度为 2008 年 1 月 1 日至 2020 年 12 月 31 日;其中 Stanford 的 12,001 名患者提供了胸骨旁长轴视频,构成数据集主体。

技术路线上,该工作分为两个组件。第一个组件是结构测量模型:在 PLAX 图像上使用修改版 DeepLabV3 架构定位四个关键点——室间隔的起止点与左室后壁的起止点——由此换算出 IVSd、LVIDd、LVPWd 三项长度。训练损失是三项测量均方误差的加权和,权重取训练集各测量值标准差的倒数,以便让变异度更小的测量(壁厚)获得更高权重。第二个组件是病因分类模型:使用 18 层 ResNet3D 对视频做二分类,判断该检查属于心脏淀粉样变还是不属于。

作者采用了一个关键的测试时增强策略:不只在单帧上预测,而是在整段视频上逐帧聚合预测结果,再用预测的 LVID 曲线定位收缩末期峰值与舒张末期峰值,从而在一个心动周期内多次测量、取多搏平均。论文报告的平均绝对误差为室内壁厚 1.4 mm(95% CI 1.2—1.5 mm)、左室直径 2.4 mm(95% CI 2.2—2.6 mm)、后壁厚度 1.2 mm(95% CI 1.1—1.3 mm);病因分类 AUC 为心脏淀粉样变 0.83、肥厚型心肌病 0.98。在独立外部数据集上,国内(Cedars-Sinai)量化 R² 为 0.96、国际(Unity Imaging Collaborative,来自 7 家英国超声实验室)R² 为 0.90,淀粉样变与肥厚型心肌病的检出 AUC 在国内外部集分别为 0.79 与 0.89。

§1.2 战略价值

维度一:把「测量」从专家手工艺变成可复现的工程量。 超声心动图测量长期受制于观察者间变异。论文专门做了一个对比实验:从 Stanford 超声报告库中筛出临床判定为「与前次检查相比无显著变化」的配对检查,取其中同时具备两次 LVID、IVS、LVPW 舒张期测量的 23,874 项研究,用前后两次检查之间的测量方差作为临床专家变异的代理量,再与 EchoNet-LVH 在同一批视频上的逐搏预测方差对照。这个设计的价值在于,它把「AI 是否比人更准」这个问题转化为一个可量化的方差比较,为自动化测量的临床采纳提供了统计学论据。对于任何需要纵向随访左室结构的场景(高血压管理、淀粉样变治疗反应监测),可复现的测量是疗效判断的前提。

维度二:让「病因鉴别」这一高难度判别问题获得大规模监督信号。 左心室肥厚的病因鉴别是心血管影像中最棘手的判别任务之一。淀粉样变与肥厚型心肌病在传统二维超声上常常表现为相似的对称性或非对称性增厚,确诊往往需要心脏磁共振、骨闪烁显像或组织活检。EchoNet-LVH 首次提供了上万段带结构测量标注的视频,并对其中一部分检查附加了由专科门诊(Stanford 淀粉样变中心、Stanford 遗传性心血管病中心、CSMC 晚期心脏病门诊、CSMC 肥厚型心肌病门诊)医师策展的病因标签,使得「从一段常规超声视频中区分两种致命疾病」成为可监督学习任务。后续研究已将其作为外部验证集,用于多任务超声解读系统与淀粉样变专用模型的验证。

维度三:构成了公开超声视频数据资产的主干。 论文明确说明,EchoNet-LVH 的 12,000 段与 EchoNet-Dynamic 的 10,030 段合并,使公开可用的带标签医学视频总量达到 22,030 段,作者称之为当时规模最大的带标注医学视频公开释放,并附带了完整的算法与数据处理流程代码。这一体量使得视频级自监督预训练成为可能;已有基础模型工作将 EchoNet-LVH 的 12,000 段纳入其 1,495,588 段预训练语料,并以此驱动下游任务微调。

§1.3 同类数据集横向对比

数据集 规模 模态/切面 标注类型 差异化定位
EchoNet-LVH 12,000 段视频 超声心动视频 / PLAX IVSd、LVIDd、LVPWd + 关键点坐标 + 帧号 唯一以「左室壁厚结构量化 + LVH 病因」为核心的大规模视频集;原始分辨率高(1024×768 或 800×600)
EchoNet-Dynamic 10,030 段视频 超声心动视频 / A4C EF、ESV、EDV + 心内膜描迹坐标 同源队列,任务是功能量化而非结构量化;视频已裁剪至 112×112
EchoNet-Pediatric 7,810 段视频 超声心动视频 / A4C + PSAX EF + 性别、年龄、身高、体重 覆盖 0—18 岁儿科人群,与成人模型不可直接迁移
CAMUS 1,000 段视频(500 患者 × 2 切面) 超声心动视频 / A2C + A4C EF、性别、年龄、图像质量 + 心腔分割掩膜 提供端到端心内膜/心外膜分割真值;规模小、刻意包含低质量图像
TMED-2 17,270 张图像 超声心动图像 / 多切面 主动脉瓣狭窄分级 图像而非视频;任务是瓣膜病分级

需要强调的是,上表规模与标注口径不同,跨数据集比较模型性能时必须重新划分并统一评价协议,不能直接引用各自论文中的数字。

§1.4 版本时间轴

日期 事件
2021-06-23 预印本 arXiv:2106.12511 上线,摘要记为 23,212 段带标注视频
2022-02-23 JAMA Cardiology 在线发表(Duffy 等,DOI 10.1001/jamacardio.2021.6059)
2022-04-01 JAMA Cardiology 纸本 7(4):386-395 出版,公开数据集定稿为 12,000 段
2022 年内 官方仓库 echonet/lvh 发布 v1.0,含 PLAX 测量与 A4C 分类两个推理 CLI
2023 JACC 研究将 EchoNet-Dynamic 与 EchoNet-LVH 用作公开外部验证样本
2024 Circulation 摘要报告 EchoNet-LVH 淀粉样变模型的外部验证与心肌病关联
2024—2026 社区工具链(如 zea 项目)为其编写专用转换脚本,并围绕黑边与扫描扇形裁剪问题提交修复

§1.5 典型应用场景

  1. 自动化结构量化:用关键点检测或回归模型从 PLAX 视频直接输出 IVSd、LVIDd、LVPWd,替代或辅助医生手工测量,并给出逐搏变异度估计。
  2. LVH 病因分型:在结构测量之上构建分类头,区分心脏淀粉样变、肥厚型心肌病与其他原因的室壁增厚(需另行获取病因标签,见 §6.5 坑点 6)。
  3. 超声视频基础模型预训练:作为大规模带标签视频语料的一部分,用于自监督或弱监督预训练,再迁移至 EF 估计、瓣膜病检测等下游任务。
  4. 测量误差与可复现性研究:利用逐帧预测序列研究不同采集设备、不同帧率、不同心动周期长度对测量稳定性的影响。
  5. 外部验证与泛化性评测:作为独立测试集,评估其他机构训练的超声模型在斯坦福数据分布上的性能衰减。

§2 医学背景

§2.1 ICD-11 编码表

标签 ICD-11 编码 中文名称 在数据集中的角色
左心室肥厚 BC42 心肌病(含肥厚性重构) 数据集的核心表型,覆盖全部 12,000 段视频的观察对象
肥厚型心肌病 BC43.1 肥厚型心肌病 病因分类目标类之一(内部 AUC 0.98)
心脏淀粉样变 BC43.3 心脏淀粉样变性 病因分类目标类之一(内部 AUC 0.83)
原发性高血压 BA00 原发性高血压 最常见的 LVH 病因,属「其他病因」参照类
主动脉瓣狭窄 BB70 主动脉瓣狭窄 压力负荷型 LVH 的代表病因,属参照类

§2.1b SNOMED CT 映射表

标签 ICD-11 SNOMED CT 术语
左心室肥厚 BC42 55827005 Left ventricular hypertrophy (disorder)
肥厚型心肌病 BC43.1 45227007 Hypertrophic cardiomyopathy (disorder)
心脏淀粉样变 BC43.3 53050002 Cardiac amyloidosis (disorder)
左室后壁厚度 — 277226001 Left ventricular posterior wall thickness (observable entity)
室间隔厚度 — 250768004 Interventricular septum thickness (observable entity)

§2.2 疾病简介与流行病学

左心室肥厚并非一个独立疾病,而是心肌对慢性血流动力学或遗传性损伤的适应性重构结果。其常见驱动因素包括长期高血压造成的压力负荷、主动脉瓣狭窄造成的流出道梗阻、肥厚型心肌病的肌节基因变异,以及心脏淀粉样变中错误折叠蛋白在心肌间质的沉积。病理生理上,初期肥厚是代偿性的——通过增加室壁厚度降低室壁应力、维持射血功能;但当重构持续,心肌僵硬度上升、氧耗增加,逐步转向失代偿,导致舒张功能障碍乃至收缩功能受损。

其预后负担在大型队列研究中已被反复量化。Framingham 心脏研究 20 年随访显示,向心性左室肥厚(cLVH)人群的心衰发生率为 13.4%、离心性左室肥厚(eLVH)为 15.3%,均显著高于正常几何构型人群,且在调整合并症与心肌梗死后风险依然存在。多民族动脉粥样硬化研究(MESA)对 4,979 名参与者随访 15 年,eLVH 的全因死亡风险比为 2.58、cLVH 为 1.84;心衰发生风险比分别为 3.78 与 3.09。这些数据说明,左室肥厚既是疾病进展的标志,也是独立的风险分层因子,早期识别具有明确的临床意义。

在诊断手段上,超声心动图是美国使用最广泛、可及性最高的心脏影像方法。它兼具便携设备、快速成像、高时间分辨率、无电离辐射等优点,对从心力衰竭到瓣膜性心脏病的广泛疾病谱既可必要也可充分地作出诊断。一次标准的完整静息超声心动图检查通常包含 50—100 段视频与静态图像,覆盖多个切面;本数据集提取的是其中胸骨旁长轴(PLAX)二维灰阶视频,因为该切面能够同时显示室间隔、左室内径与左室后壁,是测量室壁厚度的标准视角。

§2.3 临床任务定义

任务层级 任务定义 在本数据集上的可操作性
筛查 在无症状或未明确诊断人群中识别室壁增厚个体 可做,但受转诊偏倚影响,不能直接外推至筛查人群
诊断 判定是否存在左心室肥厚及增厚程度分级 可做,需先确定阈值(如按体表面积指数化的室壁厚度界值)
分级/分型 区分肥厚型心肌病、心脏淀粉样变、高血压性心脏病等病因 可做,对应 ResNet3D 二分类任务;注意病因标签子集未随公开视频一并提供
量化 输出 IVSd、LVIDd、LVPWd 的具体毫米数值 核心任务,直接有逐段标注与关键点真值
预后 预测心衰、死亡等终点事件 数据集不含随访终点,需与外部 EHR 队列链接
疗效监测 纵向追踪同一患者的室壁厚度变化 理论上可做,但需自行解决同一患者多段视频的匹配问题

§2.4 患者人群表

维度 Stanford Health Care PLAX 队列 Cedars-Sinai PLAX 队列
来源 Stanford Health Care 超声报告库 CSMC 晚期心脏病门诊与肥厚型心肌病门诊
时间 2016—2018 年(论文工作流覆盖 2008-01-01 至 2020-12-31) 同论文研究期
例数 12,001 1,309
年龄(均值 ± 标准差) 61.6 ± 17.4 岁 62.8 ± 17.2 岁
女性比例 54.2%(6,509 / 12,001) 61.7%(808 / 1,309)
种族 未在论文公开摘要中分层报告 未在论文公开摘要中分层报告
就医类型 常规临床超声心动图检查(回顾性) 专科门诊(淀粉样变 / 肥厚型心肌病)

A4C 视角队列另包含 Stanford Health Care 8,084 例(女性 54.0%,平均年龄 69.1 ± 16.8 岁)与 CSMC 2,351 例(平均年龄 69.6 ± 14.7 岁),用于病因分类任务。

§2.5 临床价值

左心室肥厚的临床痛点有三个:识别不足、测量误差与变异、病因难以区分。EchoNet-LVH 针对这三点分别给出了数据层面的回应:用 12,000 段带标注视频解决监督信号不足;用逐搏测量与多帧聚合降低单次测量的偶然误差;用医师策展的病因标签把原本需要多模态检查才能回答的鉴别诊断问题转化为可从常规超声视频学习的任务。

对研究者而言,其价值还在于测量可复现性的量化。论文把 23,874 项临床稳定配对检查的测量方差作为专家变异上界,与模型逐搏方差对照,这为「自动测量是否具备临床替代性」提供了一个可检验的框架。对工程实践者而言,数据集提供的关键点坐标(X1, Y1, X2, Y2)比仅提供测量数值更有价值,因为它允许从头训练关键点检测器,而不是只能拟合一个回归关系。

§2.6 金标准表

维度 内容
金标准划分 训练 9,600 / 验证 1,200 / 测试 1,200(论文 SHC PLAX 患者级划分);公开 CSV 中另有按视频统计的 10,490 / 1,167 / 343 划分
标注方式 心内科医生在常规报告流程中完成的临床测量,包含舒张末期与收缩末期测量帧号与关键点坐标
标注者 参与机构超声心动图实验室的临床读片医师(专家标注,非众包)
标注性质 单次临床读片结果,非多读者共识,因此标注本身携带观察者间变异
疾病标签来源 Stanford 淀粉样变中心、Stanford 遗传性心血管病中心、CSMC 晚期心脏病门诊、CSMC 肥厚型心肌病门诊的医师策展队列
质量控制 自动化预处理去标识 + 人工抽查确认视图分类 + 排除含彩色多普勒的片段

§3 数据集规格

§3.0 版本抉择矩阵

你的需求 推荐版本 大小 理由
复现论文的 PLAX 结构测量任务 官方 12,000 段视频 + MeasurementsList.csv 约 15 GB 唯一同时提供关键点坐标与测量帧号的发布形态
只做快速原型验证 仅取 train 子集抽样(如 500 段) 约 0.6 GB 划分已在 CSV 中,抽样不影响协议一致性
做视频级病因分类 需自备 A4C 数据 不适用 论文的淀粉样变/HCM 分类基于 7,767 项 A4C 研究,该子集未随公开视频包发布
训练关键点检测器 官方 12,000 段视频(使用 X1/Y1/X2/Y2 坐标) 约 15 GB 坐标以原始视频分辨率记录,不能用统一 resize 后的低分辨率替代
与 EchoNet-Dynamic 联合预训练 两个数据集合并,各自按其官方划分 约 20 GB 论文明确二者为同源队列、合计 22,030 段,联合使用符合原始设计

§3.1 模态详情

数据集仅包含一种模态:二维灰阶(B 模式)经胸超声心动图的胸骨旁长轴(PLAX)视频。原始视频分辨率不统一,典型为 1024×768 或 800×600 像素,显著高于 EchoNet-Dynamic 的 112×112。视频均为多心动周期连续采集,因此同一位点在一个视频内会被反复经过,这正是论文能够在多个心搏上重复测量并评估变异度的物理基础。

论文使用自动化预处理流程去除标识信息、去除画面中烧录的人为标注、并裁去扫描扇区之外的内容。但需要特别注意,公开视频未做统一的扫描扇形几何归一化——社区工具(如 zea 项目)在为其编写转换脚本时,专门增加了扫描扇形参数检测与裁剪居中步骤,并在 issue 中报告了图像黑边问题。

§3.2 按子集样本数表

子集 视频数 说明
train 10,490 CardioBench 采用的官方划分统计口径
val 1,167 同上
test 343 同上,测试集规模明显小于验证集
rejected 未公开具体数量 CSV 中存在的第四类划分,来自人工剔除清单机制
合计 12,000 公开释放总量

论文正文另按患者报告 SHC PLAX 划分为 9,600 / 1,200 / 1,200。两种口径的差异源于「患者级划分」与「视频级计数」的统计对象不同,使用时必须以 CSV 中的 split 列为准,不要混用。

§3.3 格式表

内容 格式 备注
视频 AVI(Audio Video Interleave) 分卷存放于 Batch1—Batch4 目录
标注与划分 CSV(MeasurementsList.csv) 含 HashedFileName、split、Height、Width 及测量列
关键点 CSV 内的坐标列(X1, Y1, X2, Y2) 坐标为原始视频像素坐标
官方代码 Python(PyTorch) 仓库 echonet/lvh

§3.4 存储大小

官方以 4 个 Batch 分卷压缩包分发,公开信息中未逐项列出单个分卷体积。由于视频为未裁剪的原始分辨率 AVI 且数量达 12,000 段,总体积约在 15 GB 量级,显著大于 EchoNet-Dynamic(后者已下采样至 112×112)。规划存储时应按解压后 1.5—2 倍压缩包体积预留空间。

§3.5 标注方式

标注属于「常规临床读片回顾 + 专家测量」的混合模式,而非专门为机器学习设计的众包标注。具体而言:

  1. 测量标签:IVSd、LVIDd、LVPWd 的毫米数值来自临床报告系统,是医生在真实诊疗流程中做出的测量。
  2. 几何标签:测量所在的帧号,以及四个关键点的像素坐标,使标签从「一个数值」升级为「可反推的几何配置」。
  3. 疾病标签:由专科门诊医师策展,覆盖心脏淀粉样变、肥厚型心肌病、重度主动脉瓣狭窄、高血压及其他 LVH 表型,用于二分类任务。
  4. 质控标签:视图分类确认与彩色多普勒片段排除,为隐式质量筛选。

第三类标签所依赖的 A4C 视频子集并未随公开包一并发布,这是使用者在规划任务时必须事先确认的关键约束。

§3.6 标注者资质与一致性

标注者为参与机构超声心动图实验室的临床读片医师,具备心脏病学专科资质,标注是其在常规工作流中的真实测量而非事后补标。这一点既是优势(标签反映真实临床标准)也是局限(标签继承真实临床的观察者间变异)。

论文设计了一个巧妙的替代性一致性度量:利用临床判定为「与前次检查无显著变化」的配对检查,将前后两次测量的方差作为专家变异的代理量,再用同一指标衡量模型的逐搏预测方差。该方法避免了重新组织多读者标注的昂贵流程,但其前提是「临床判定稳定」这一筛选本身无偏——实际筛选过程可能倾向于纳入了图像质量更好的检查。

§3.7 采集周期

公开数据集对应的采集窗口为 2016—2018 年(Stanford University Hospital 常规临床检查)。论文的整体研究期则覆盖 2008 年 1 月 1 日至 2020 年 12 月 31 日,包含淀粉样变与肥厚型心肌病策展队列。另有文献将 Stanford 心脏科的采集期记为 2008—2020 年,两种表述对应的是「公开视频子集」与「全部研究数据」的不同范围。

§3.8 地域覆盖

训练与测试主体为美国单一学术医疗中心(Stanford Health Care,加利福尼亚州斯坦福)。外部验证覆盖两类:国内为 Cedars-Sinai Medical Center(加利福尼亚州洛杉矶),国际为 Unity Imaging Collaborative(来自 7 家英国超声实验室)。地域多样性有限,是评估泛化性时最需要警惕的维度。

§3.9 设备规格

论文未在公开摘要中逐型号列出超声设备清单,仅说明数据来自多个超声机器与不同操作者。社区转换工具的实现细节反证了设备异构性:其扫描扇形参数检测逻辑需要为每段视频独立拟合扇区边界,说明不同设备的扇区几何不一致。视频分辨率同样不一致(1024×768 或 800×600),这是构建统一预处理管线时必须处理的第一个问题。

§3.10 深度溯源链

临床超声检查(DICOM,含患者标识与烧录标签)
        ↓  自动化预处理:去标识 / 去烧录标注 / 裁去扇区之外内容
PLAX 二维灰阶 AVI 视频(哈希文件名)
        ↓  医师在报告系统中完成 IVSd / LVIDd / LVPWd 测量
MeasurementsList.csv(HashedFileName, split, Height, Width, 测量帧, 关键点坐标)
        ↓  人工抽查:确认视图、排除彩色多普勒片段
人工剔除清单(rejected 划分)
        ↓  4 个 Batch 分卷打包
公开释放:Batch1—Batch4 + MeasurementsList.csv(12,000 段)

§4 数据结构

§4.0 目录树

EchoNet-LVH/
├── Batch1/
│   ├── 0a1b2c3d4e.avi
│   ├── 0f2e3d4c5b.avi
│   └── ...                     # 哈希命名,无患者标识
├── Batch2/
│   └── ...                     # 延续 Batch1 的命名空间
├── Batch3/
│   └── ...
├── Batch4/
│   └── ...
└── MeasurementsList.csv        # 划分 + 尺寸 + 测量帧 + 关键点坐标

解压后顶层是 4 个 Batch 目录与 1 个 CSV 文件。视频文件本身的命名是哈希值,与患者或检查号无任何可推断关系;所有元数据只能通过 MeasurementsList.csv 关联。同一段视频在 CSV 中会出现多行(每个测量点一行),因此「CSV 行数」不等于「视频数」,必须先按 HashedFileName 去重。

§4.1 DAIMS 字段字典

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
HashedFileName string 视频文件的哈希标识,关联 CSV 与 AVI 0a1b2c3d4e 主键,用于 join 与划分映射 无(确定性标识) 无缺失 无固定长度约束
split enum 官方划分归属 train / val / test / rejected 决定训练与评测协议,禁止自行重划 划分基于患者,视频级计数与患者级计数不一致 无缺失 4 类枚举
Height integer 视频帧像素高度 768 决定预处理 resize 策略与尺度还原 同一文件多行必须一致,否则解析断言失败 无缺失 典型 600 或 768
Width integer 视频帧像素宽度 1024 决定预处理 resize 策略与尺度还原 同上 无缺失 典型 800 或 1024
Frame integer 测量所在的视频帧号 42 定位舒张末期与收缩末期关键帧 单帧标注,跨搏需自行推断 无缺失 视视频长度而定
X1 float 关键点 1 的横坐标(像素) 312.5 关键点检测回归目标 单读者标注,含观察者间变异 无缺失 0 ≤ X1 < Width
Y1 float 关键点 1 的纵坐标(像素) 401.0 关键点检测回归目标 同上 无缺失 0 ≤ Y1 < Height
X2 float 关键点 2 的横坐标(像素) 356.2 关键点检测回归目标 同上 无缺失 0 ≤ X2 < Width
Y2 float 关键点 2 的纵坐标(像素) 402.8 关键点检测回归目标 同上 无缺失 0 ≤ Y2 < Height
MeasurementType enum 该行对应的测量类别 IVS / LVID / LVPW 分组聚合,避免三测量混淆 类别与几何方向绑定,方向选错会导致符号翻转 无缺失 3 类枚举
派生 IVSd float(派生) 由关键点距离换算的室间隔厚度(mm) 11.2 回归目标或评估真值 论文报告 MAE 1.4 mm 不适用 临床常见 5—20 mm
派生 LVIDd float(派生) 由关键点距离换算的左室内径(mm) 48.6 回归目标或评估真值 论文报告 MAE 2.4 mm 不适用 临床常见 35—70 mm
派生 LVPWd float(派生) 由关键点距离换算的左室后壁厚度(mm) 10.4 回归目标或评估真值 论文报告 MAE 1.2 mm 不适用 临床常见 5—20 mm

上表前 10 行为 CSV 中直接可读的原始列,后 3 行为研究社区通行的派生量。派生量的毫米换算依赖像素间距,而公开视频未随包提供像素间距标定,因此实际做法通常是直接以像素距离为回归目标,再按需用体表面积或参考尺度折算。

§4.2 标签分布

数据集的主标签是三项连续测量而非类别,因此「分布」体现为测量值的数值范围而非类频。论文报告的内部测试 MAE 分别为室内壁厚 1.4 mm、左室直径 2.4 mm、后壁厚度 1.2 mm,可作为误差量级的参照。CardioBench 报告 EchoNet-LVH 标注了 IVSd、LVIDd、LVPWd 三项并给出了这三项结构测量的分布箱线图,说明数值分布存在明显的右偏——大多数受检者处于正常范围,少数显著增厚者构成分布的长尾。

病因分类标签来自 7,767 项 A4C 研究的策展队列,疾病类别包括心脏淀粉样变、肥厚型心肌病、重度主动脉瓣狭窄、高血压及其他 LVH 表型。这是一个严重不平衡的多类集合,淀粉样变与肥厚型心肌病相对罕见,二分类任务的设计本身就是为了缓解多类不平衡带来的优化困难。

§4.3 关键统计

统计项 数值 来源
公开视频总数 12,000 官方页面
训练视频数 10,490 CardioBench
验证视频数 1,167 CardioBench
测试视频数 343 CardioBench
研究队列患者总数 23,745 JAMA Cardiology 2022
Stanford PLAX 患者数 12,001 JAMA Cardiology 2022
模型训练视频总量(含 A4C) 28,201 预印本与官方仓库 README
内部测试 IVS 壁厚 MAE 1.4 mm(95% CI 1.2—1.5) 官方仓库 README
内部测试 LVID MAE 2.4 mm(95% CI 2.2—2.6) 官方仓库 README
内部测试 LVPW MAE 1.2 mm(95% CI 1.1—1.3) 官方仓库 README
淀粉样变分类 AUC 0.83 JAMA Cardiology 2022
肥厚型心肌病分类 AUC 0.98 JAMA Cardiology 2022

§4.4 数据层级

患者(患者级划分的唯一单位,公开包中不可见标识)
  └── 检查(一次完整超声心动图,通常含 50—100 段视频与静态图)
        └── 切面视频(PLAX 二维灰阶,本数据集的主体,每个检查可含多段)
              └── 帧(连续心动周期序列)
                    └── 标注帧(舒张末期与收缩末期,携带 4 个关键点坐标 × 3 类测量)

关键约束:公开包只到「切面视频」这一层,患者与检查两层被完全剥离。因此无法从公开数据中重建「同一患者的多段视频」,也无法将同一检查的不同切面视频配对。这意味着任何需要患者级聚合的任务(如以患者为单位投票)都无法在公开数据上严格实现,只能以视频为代理单位。

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

情形 表现 处理建议
视频存在但 CSV 无标注行 极少数,可能对应被剔除但未清理的文件 以 CSV 为准建立索引,忽略无标注视频
CSV 有标注行但视频缺失 分卷下载不完整时会出现 校验 Batch1—Batch4 完整性,检查解压日志
同一文件 Height/Width 冲突 解析时断言失败 视为数据损坏,该视频应排除并记录
关键点坐标超出画面边界 裁剪参数与实际视频不匹配时出现 在预处理阶段做边界校验并丢弃异常样本
病因标签缺失 公开视频包不含 A4C 病因标签 若需分类任务,须自行构建或改用非公开子集

数据集的缺失机制总体属于「非信息性缺失」——缺失主要来自分发与文件完整性,而非临床原因驱动的选择性记录。唯一例外是被剔除进 rejected 划分的视频,其剔除本身携带质量信息,不应简单当作随机缺失丢弃。


§5 划分与使用建议

§5.1 官方划分

官方划分记录在 MeasurementsList.csv 的 split 列中,包含 train / val / test / rejected 四类,公开统计口径为 10,490 / 1,167 / 343(另加 rejected)。论文正文按患者报告 SHC PLAX 划分为 9,600 / 1,200 / 1,200。划分以患者为基本单位,目的是防止同一患者的多段视频跨集泄漏。

使用时务必注意三点:第一,必须直接使用 CSV 中的 split 列,不要按视频重新随机划分;第二,rejected 类不属于任何训练或评测集,必须显式排除;第三,测试集只有 343 段,若做多次实验并挑选最优结果,过拟合测试集的风险很高,应优先在验证集上做模型选择。

§5.2 社区惯例划分

社区实践基本沿用官方划分。CardioBench 等基准工作明确采用官方划分,并指出对于 EchoNet-LVH 这类数据集「假定每段视频对应一位患者」。这一假定的风险在后文坑点中详述。部分二次研究(如关键点检测方向的复现工作)会从 train 中再切出一部分作为自己的验证集,此时应记录实际切分方式以便结果可比较。

§5.3 泄漏风险

这是使用 EchoNet-LVH 时最需要警惕的问题,共四个层次:

第一层:患者级泄漏。 公开包剥离了患者标识,因此使用者无法验证官方划分是否真的按患者隔离,也无法在自己的二次划分中保持患者隔离。任何声称「按患者划分」的二次实验在公开数据上都无法被验证。

第二层:检查级泄漏。 一次完整超声心动图检查含 50—100 段视频。若同一检查的多段 PLAX 视频同时落入训练与测试,模型可能记住的是这次检查的采集条件(增益、探头角度、患者体位)而非解剖结构。公开包不提供检查标识,因此这一泄漏无法检测也无法消除。

第三层:衍生数据集泄漏。 存在多个基于 EchoNet-LVH 二次加工的数据集(如附加自定义标注后通过申请分发的版本)。若训练时使用已标注版本、测试时使用原始版本,看似数据不重叠,但底层视频相同,构成事实上的测试集泄漏。

第四层:跨数据集泄漏。 EchoNet-LVH 与 EchoNet-Dynamic 为同源队列(同一机构、时间窗重叠),且论文说明 12,000 + 10,030 合计 22,030 段为统一释放。若用 EchoNet-Dynamic 预训练、EchoNet-LVH 评测,需在论文中明确说明这并非严格的跨机构泛化评估。

§5.4 划分策略建议

  1. 首选官方划分,并使用 split 列而非自行重划,这是唯一能与其他论文结果对齐的方案。
  2. 若必须自行划分(例如任务与官方不一致),应在论文中明示「因公开包无患者标识,本次划分未能保证患者级隔离」,并将其列为局限性。
  3. 报告结果时同时给出 val 与 test 两组数字。若 test 最优结果明显优于 val,应怀疑测试集过拟合。
  4. 做外部验证时,优先使用论文所述的 Cedars-Sinai 数据或 Unity Imaging Collaborative 数据,而不是从公开包中切分。

§5.5 交叉验证建议

公开包缺少患者标识,标准的分层 k 折患者级交叉验证无法严格实施。可行的折中方案是以视频为抽样单位做 k 折,但同时报告:折间性能标准差、以及性能与「训练集与验证集视频文件名的哈希前缀是否相同」之间是否存在相关性(若存在则提示潜在的文件级聚集)。更稳妥的做法是直接给出官方划分下的单次结果,并明确说明其不确定性来源。

§5.6 外部验证建议

论文本身已提供两个外部验证集的表现作为参照基线:国内(Cedars-Sinai)量化 R² = 0.96、MAE 为 IVS 1.7 mm / LVID 3.8 mm / LVPW 1.8 mm,分类 AUC 为淀粉样变 0.79、肥厚型心肌病 0.89;国际(Unity Imaging Collaborative,7 家英国实验室)量化 R² = 0.90、MAE 为 IVS 1.7 mm / LVID 2.9 mm / LVPW 2.3 mm。自行开展外部验证时,应至少报告与这些数字的差距,并注意 LVID 的 MAE 在所有外部集上都出现了明显上升(内部 2.4 mm → 国内 3.8 mm),说明内径测量对采集条件最敏感。


§6 AI 就绪指南 ⭐

§6.0 云端快速启动

EchoNet-LVH 不适合在免费云端笔记本上做全量训练——12,000 段原始分辨率视频的解压、解码与批处理对 I/O 和显存都有实质要求。推荐的起点是:先用 500—1,000 段的抽样验证整条管线是否跑通,再迁移到有本地 SSD 与单卡 GPU 的环境做全量训练。若只需复现论文的推理流程,官方脚本可直接在单张消费级卡上运行,论文的算力评估即基于单张 NVIDIA GeForce GTX 3090。

§6.1 快速上手

# ============================================================
# 最小可用示例:从 MeasurementsList.csv 构建索引并读取一段视频
# ------------------------------------------------------------
# 目录结构预期(解压后):
#   DATA_ROOT/
#     ├── Batch1/*.avi
#     ├── Batch2/*.avi
#     ├── Batch3/*.avi
#     ├── Batch4/*.avi
#     └── MeasurementsList.csv
#
# 路径拼接关系:
#   csv_path  = DATA_ROOT / "MeasurementsList.csv"
#   avi_path  = DATA_ROOT / f"Batch{batch_no}" / f"{HashedFileName}.avi"
#   说明:CSV 不记录文件位于哪个 Batch,必须遍历 Batch1-4 做存在性探测
#
# 最小可用子集:取 split == "train" 的前 500 个唯一 HashedFileName
# ============================================================

import os
from pathlib import Path
import pandas as pd
import cv2
import numpy as np

DATA_ROOT = Path(os.environ.get("ECHONET_LVH_ROOT", "./EchoNet-LVH"))
csv_path = DATA_ROOT / "MeasurementsList.csv"

# 同一视频有多行(每个测量点一行),必须先去重才能得到唯一视频清单
df = pd.read_csv(csv_path)
df = df[df["split"] != "rejected"].copy()          # 关键:剔除人工剔除集
video_index = (
    df.drop_duplicates(subset=["HashedFileName"])
      .loc[:, ["HashedFileName", "split", "Height", "Width"]]
      .reset_index(drop=True)
)
print(f"唯一视频数 = {len(video_index)}")
print(video_index["split"].value_counts())


def resolve_avi(data_root: Path, hashed_name: str) -> Path:
    """CSV 不含 Batch 归属,需遍历 4 个 Batch 目录定位文件。"""
    for batch in range(1, 5):
        candidate = data_root / f"Batch{batch}" / f"{hashed_name}.avi"
        if candidate.exists():
            return candidate
    raise FileNotFoundError(hashed_name)


def read_video(path: Path, max_frames: int = 64) -> np.ndarray:
    """读取 AVI,返回 (T, H, W, 3) 的 uint8 数组。

    注意:EchoNet-LVH 的视频未做扫描扇形裁剪,也未统一分辨率,
    因此不要在 Dataset 外部预先 pad;112x112 的下采样口径只适用于
    EchoNet-Dynamic,直接套用会破坏本数据集的测量尺度关系。
    """
    cap = cv2.VideoCapture(str(path))
    frames = []
    while len(frames) < max_frames:
        ok, frame = cap.read()
        if not ok:
            break
        frames.append(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
    cap.release()
    if not frames:
        raise RuntimeError(f"空视频: {path}")
    return np.stack(frames)                        # (T, H, W, 3)


sample_row = video_index.iloc[0]
sample_path = resolve_avi(DATA_ROOT, sample_row["HashedFileName"])
clip = read_video(sample_path, max_frames=8)
print(f"样本视频 {sample_row['HashedFileName']} 形状: {clip.shape}")
print(f"CSV 记录分辨率: {sample_row['Height']} x {sample_row['Width']}")

上面的代码揭示了本数据集最基础的三条工程约束:CSV 需要按文件去重、视频文件需要遍历 Batch 目录定位、分辨率需要从 CSV 而非帧数组反推(因为抽样读帧可能提前终止)。

§6.2 数据获取

项目 内容
官方入口 https://echonet.github.io/lvh/
托管平台 Stanford AIMI Shared Datasets
数据集页面 https://aimi.stanford.edu/datasets/echonet-lvh
分发形式 4 个 Batch 分卷压缩包 + MeasurementsList.csv
总大小 约 15 GB
访问方式 在线接受斯坦福研究使用协议后下载(研究用途)
许可协议 Stanford University School of Medicine Research Use Agreement and Terms of Use
代码仓库 https://github.com/echonet/lvh
引用要求 须引用 Duffy 等 2022 年 JAMA Cardiology 论文
# 标准获取流程(示例,实际链接以 Stanford AIMI 页面提供为准)
# 1) 在 AIMI 数据集页填写申请并接受 Stanford 研究使用协议
# 2) 获得下载许可后,获取分卷压缩包链接,逐个下载

mkdir -p ./EchoNet-LVH && cd ./EchoNet-LVH

# 按官方分卷下载(文件名以官方页面为准)
# curl -L -O "<Batch1 下载链接>"
# curl -L -O "<Batch2 下载链接>"
# curl -L -O "<Batch3 下载链接>"
# curl -L -O "<Batch4 下载链接>"

# 3) 校验并解压(分卷完整性与磁盘空间需自行确认)
# unzip -q Batch1.zip && unzip -q Batch2.zip
# unzip -q Batch3.zip && unzip -q Batch4.zip

# 4) 校验解压结果:应得到 Batch1-4 与 MeasurementsList.csv
ls -d Batch* MeasurementsList.csv

# 5) 统计唯一视频数(应对应官方划分计数)
python - <<'PY'
import pandas as pd
df = pd.read_csv("MeasurementsList.csv")
uniq = df.drop_duplicates("HashedFileName")
print(uniq["split"].value_counts())
PY
# 官方仓库中的两个推理 CLI(需先克隆 echonet/lvh)
# 说明:两个脚本分别对应 PLAX 测量与 A4C 分类两条任务线
git clone https://github.com/echonet/lvh.git
cd lvh

# PLAX 室壁厚度测量:输入目录内所有 .avi 逐一推理
# 输出结构:每段视频一个同名文件夹,内含叠加预测的 .avi、
#           逐帧预测 .csv、以及测量-时间曲线 .png
python run_plax_inference.py ./PLAX ./Inference

# A4C 疾病分类:整个输入目录的推理结果汇总到单个 .csv
python run_a4c_classification_inference.py ./A4C ./Inference

§6.3 预处理全流程

推荐的预处理顺序为:格式统一 → 尺寸与尺度处理 → 强度标准化 → 时序对齐 → 增强。每一步都必须保留从像素到毫米的换算关系,这是本数据集区别于普通视频分类任务的核心要求。

# ============================================================
# 预处理全流程:从 AVI 到可训练的 (T, C, H, W) 张量
# ------------------------------------------------------------
# 设计要点:
#   1) 不做"最小边缩放到固定短边"的暴力 resize —— 会破坏测量尺度
#   2) 改为按视频自身尺寸做等比缩放 + 固定尺寸 padding,并记录缩放因子
#   3) 全部强度归一化参数在训练集上统计,验证/测试集复用
# ============================================================

import cv2
import numpy as np


def detect_scan_cone(frame: np.ndarray, thr: int = 20) -> tuple:
    """粗略检测超声扇形(亮区)边界。

    公开视频未做扫描扇形裁剪,画面四周存在黑边;黑边会污染
    归一化统计并使卷积网络把算力浪费在无信息区域。
    """
    gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
    mask = gray > thr
    rows = np.where(mask.any(axis=1))[0]
    cols = np.where(mask.any(axis=0))[0]
    if len(rows) == 0 or len(cols) == 0:
        return 0, gray.shape[0], 0, gray.shape[1]
    return rows[0], rows[-1] + 1, cols[0], cols[-1] + 1


def crop_and_resize(frames: np.ndarray,
                    target: tuple = (224, 224)) -> tuple:
    """扇形裁剪 + 等比缩放 + 居中 padding,返回张量与缩放因子。"""
    t, h, w, _ = frames.shape
    top, bottom, left, right = detect_scan_cone(frames[0])
    cropped = frames[:, top:bottom, left:right, :]
    ch, cw = cropped.shape[1], cropped.shape[2]

    scale = min(target[0] / ch, target[1] / cw)
    new_h, new_w = int(round(ch * scale)), int(round(cw * scale))
    resized = np.stack([
        cv2.resize(f, (new_w, new_h), interpolation=cv2.INTER_AREA)
        for f in cropped
    ])

    canvas = np.zeros((t, target[0], target[1], 3), dtype=resized.dtype)
    oy = (target[0] - new_h) // 2
    ox = (target[1] - new_w) // 2
    canvas[:, oy:oy + new_h, ox:ox + new_w, :] = resized
    # scale 是把「裁剪后像素」映射到「模型输入像素」的因子,
    # 反推毫米时需要把它与原始像素间距一并还原
    return canvas, {"scale": float(scale), "crop": (int(top), int(bottom),
                                                   int(left), int(right))}


def normalize(frames: np.ndarray, mean: float, std: float) -> np.ndarray:
    x = frames.astype(np.float32) / 255.0
    return (x - mean) / (std + 1e-8)


def uniform_sample(frames: np.ndarray, num_frames: int = 16) -> np.ndarray:
    """在整段视频上均匀采样固定帧数。

    注意:不要用"截取前 N 帧"的写法 —— EchoNet-LVH 视频包含
    多个心动周期,截取前段会系统性丢失舒张末期信息。
    """
    t = frames.shape[0]
    if t >= num_frames:
        idx = np.linspace(0, t - 1, num_frames).round().astype(int)
    else:
        idx = np.concatenate([
            np.arange(t),
            np.full(num_frames - t, t - 1, dtype=int),
        ])
    return frames[idx]

对于只需要结构测量的任务,还存在一个被广泛采用的轻量方案:从标注帧号直接抽出舒张末期与收缩末期两帧,把视频任务退化为图像任务。这样做的代价是丢失心动周期的时间信息,收益是计算量下降一个数量级,且样本数翻倍。论文中提到的逐搏聚合策略正是视频方案的价值所在,若追求复现论文指标,不应采用退化方案。

§6.4 PyTorch DataLoader

# ============================================================
# 完整的 Dataset + DataLoader 实现
# ------------------------------------------------------------
# 目录结构预期:
#   DATA_ROOT/Batch1..4/*.avi
#   DATA_ROOT/MeasurementsList.csv
#
# 标签组织:同一位点在一个视频里有 IVS / LVID / LVPW 三行,
#           这里按 (HashedFileName, Frame) 聚合为一组回归目标
# ============================================================

from pathlib import Path

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


class EchoNetLVHDataset(Dataset):
    """EchoNet-LVH 视频数据集。

    Parameters
    ----------
    data_root : str
        解压后包含 Batch1-4 与 MeasurementsList.csv 的根目录。
    split : str
        'train' / 'val' / 'test' / 'all',直接使用官方 split 列。
    num_frames : int
        每段视频均匀采样的帧数。
    image_size : tuple
        模型输入尺寸,默认 (224, 224)。
    mean, std : float
        强度归一化参数,必须来自训练集统计。
    task : str
        'measure' 回归三项测量;'frame' 只返回标注帧图像。
    """

    def __init__(self, data_root, split="train", num_frames=16,
                 image_size=(224, 224), mean=0.0, std=1.0,
                 task="measure"):
        self.root = Path(data_root)
        self.split = split
        self.num_frames = num_frames
        self.image_size = image_size
        self.mean, self.std = mean, std
        self.task = task

        df = pd.read_csv(self.root / "MeasurementsList.csv")
        df = df[df["split"] != "rejected"]
        if split != "all":
            df = df[df["split"] == split]

        # 按视频聚合:每个视频一行,标签为该视频的测量集合
        grouped = []
        coord_cols = ["X1", "Y1", "X2", "Y2"]
        for name, sub in df.groupby("HashedFileName"):
            rec = {"HashedFileName": name, "split": sub["split"].iloc[0]}
            for _, row in sub.iterrows():
                if not set(coord_cols).issubset(sub.columns):
                    break
                length = float(abs(row["X2"] - row["X1"]))
                # 依据行内测量列/坐标列判断归属,避免类别名硬编码
                mtype = str(row.get("MeasurementType", "")).upper()
                if "IVS" in mtype or "SEPT" in mtype:
                    rec["IVS"] = length
                elif "LVID" in mtype or "INTERNAL" in mtype:
                    rec["LVID"] = length
                elif "LVPW" in mtype or "POST" in mtype:
                    rec["LVPW"] = length
            grouped.append(rec)
        self.index = pd.DataFrame(grouped).reset_index(drop=True)

    def _resolve(self, hashed_name):
        for b in range(1, 5):
            p = self.root / f"Batch{b}" / f"{hashed_name}.avi"
            if p.exists():
                return p
        raise FileNotFoundError(hashed_name)

    def _read(self, path):
        cap = cv2.VideoCapture(str(path))
        frames = []
        while True:
            ok, f = cap.read()
            if not ok:
                break
            frames.append(cv2.cvtColor(f, cv2.COLOR_BGR2RGB))
        cap.release()
        if not frames:
            raise RuntimeError(f"空视频: {path}")
        return np.stack(frames)

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

    def __getitem__(self, i):
        row = self.index.iloc[i]
        path = self._resolve(row["HashedFileName"])
        frames = self._read(path)

        # 黑边裁剪:只在画面确实存在暗边时生效,避免误裁
        if frames.shape[0] > 1:
            gray = cv2.cvtColor(frames[0], cv2.COLOR_RGB2GRAY)
            ys, xs = np.where(gray > 20)
            if len(ys) > 0:
                frames = frames[ys.min():ys.max() + 1,
                                xs.min():xs.max() + 1, :]

        t = frames.shape[0]
        if t >= self.num_frames:
            idx = np.linspace(0, t - 1, self.num_frames).round().astype(int)
        else:
            idx = np.concatenate([np.arange(t),
                                  np.full(self.num_frames - t, t - 1)])
        frames = frames[idx]

        h, w = self.image_size
        frames = np.stack([cv2.resize(f, (w, h), interpolation=cv2.INTER_AREA)
                           for f in frames])
        x = frames.astype(np.float32) / 255.0
        x = (x - self.mean) / (self.std + 1e-8)
        x = torch.from_numpy(x).permute(0, 3, 1, 2)      # (T, C, H, W)

        if self.task == "frame":
            return x, row["HashedFileName"]

        target = torch.tensor(
            [float(row.get("IVS", np.nan)),
             float(row.get("LVID", np.nan)),
             float(row.get("LVPW", np.nan))],
            dtype=torch.float32,
        )
        return x, target


# ------------------- transform 说明 -------------------
# 本数据集的 transform 只应包含"几何不改变物理尺度"的操作:
#   安全 ✅:亮度/对比度抖动、轻微高斯噪声、时间轴上的随机裁剪
#   危险 ❌:随机水平翻转(左右心解剖方位固定)、
#           随机各向异性缩放(破坏测量尺度)、
#           随机大角度旋转(PLAX 切面的解剖朝向有语义)
# 若必须使用空间增强,请对关键点坐标施加同一变换,
# 否则回归目标与图像不再一致。


def build_loaders(data_root, num_frames=16, batch_size=8,
                  num_workers=4, image_size=(224, 224)):
    """构建训练/验证/测试三个 DataLoader。

    归一化参数只在训练集上统计,避免验证集信息泄漏。
    """
    train_plain = EchoNetLVHDataset(data_root, "train",
                                    num_frames=num_frames,
                                    image_size=image_size)
    sample = np.concatenate([
        train_plain[i][0].numpy() for i in range(min(64, len(train_plain)))
    ])
    mean, std = float(sample.mean()), float(sample.std())

    train_ds = EchoNetLVHDataset(data_root, "train", num_frames=num_frames,
                                 image_size=image_size, mean=mean, std=std)
    val_ds = EchoNetLVHDataset(data_root, "val", num_frames=num_frames,
                               image_size=image_size, mean=mean, std=std)
    test_ds = EchoNetLVHDataset(data_root, "test", num_frames=num_frames,
                                image_size=image_size, mean=mean, std=std)

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

在真实训练中,num_workers 建议设为 CPU 核数的一半左右,因为 AVI 解码是 CPU 密集操作;同时应把 Batch1—Batch4 目录放在本地 SSD 上,网络存储上的随机读取会显著拖慢吞吐。

§6.5 坑点

⚠️ 坑点 1:CSV 行数不等于视频数——按行划分会造成严重重复(分类:数据泄漏)

问题:MeasurementsList.csv 中每段视频按测量点占据多行(IVS、LVID、LVPW 各自成行,舒张期与收缩期亦可能分行),因此文件行数远大于 12,000。若直接对 DataFrame 做 train_test_split,同一段视频的不同行会被分到训练集与测试集,模型在测试时看到的是它已经记住的同一段影像,指标虚高且完全不可信。
症状:测试集 MAE 异常低(例如低于论文报告的 1.2 mm),但换一个自建外部集后性能断崖式下跌;训练曲线与验证曲线高度贴合,模型看似「收敛得非常好」。
解决:

  1. 简单方法:读取 CSV 后立即按 HashedFileName 去重,一切划分与统计都在去重后的表上进行。
  2. 进阶方法:以 CSV 中的 split 列为唯一划分来源,并在代码中断言 set(train_names) & set(test_names) == set();同时对视频文件名建立哈希指纹表,检测是否存在内容重复而文件名不同的样本。
  3. SOTA 方法:在训练管线中加入数据血缘检查——记录每个样本的哈希前缀分布,若测试集与训练集在哈希前缀上呈现非随机聚集,说明官方划分可能存在文件级聚集,需在论文中报告并考虑聚类划分(以哈希前缀为组做分组交叉验证)。
    参考:https://zea.readthedocs.io/en/latest/_modules/zea/data/convert/echonetlvh.html (load_splits 明确按 HashedFileName 去重)

⚠️ 坑点 2:rejected 划分是陷阱——把人工剔除的坏样本当成训练数据(分类:预处理陷阱)

问题:split 列除 train/val/test 外还存在 rejected 一类,对应人工剔除清单(manual_rejections.txt)中的样本。这些视频被剔除的原因通常是视图错误、严重伪影或含彩色多普勒帧。若在筛选时只写 df[df.split != "test"] 之类的条件,rejected 会被静默并入训练集,给模型注入系统性噪声。
症状:训练损失下降但在验证集上表现抖动明显;可视化预测结果时偶发出现模型把多普勒彩超画面当作灰阶结构处理;某些样本的关键点预测完全偏离解剖位置。
解决:

  1. 简单方法:显式过滤 df = df[df["split"].isin(["train", "val", "test"])],并在日志中打印被剔除的样本数。
  2. 进阶方法:为 rejected 样本单独建立审计集,抽样 30—50 段做人工检查,统计剔除原因分布,以此判断剔除标准是否与你的任务目标冲突(例如若剔除原因多为图像质量差,而你的目标是训练抗噪模型,则应保留部分样本作为困难负例)。
  3. SOTA 方法:将剔除原因编码为多标签,训练一个质量评估头,让模型同时输出测量值与预测置信度,用置信度对下游决策做加权。
    参考:https://zea.readthedocs.io/en/v0.1.0a2/_autosummary/zea.data.convert.echonetlvh.html (overwrite_splits 与 manual_rejections.txt 机制)

⚠️ 坑点 3:照搬 EchoNet-Dynamic 的 112×112 预处理——尺度关系被破坏(分类:预处理陷阱)

问题:EchoNet-Dynamic 的视频已被官方裁剪并下采样到 112×112,因此大量开源代码默认「读进来就是 112×112」。EchoNet-LVH 的原始视频分辨率为 1024×768 或 800×600,若沿用同样的 resize 逻辑,本来只有几十像素宽的室间隔会被压到几个像素,壁厚测量的精度损失远超论文报告的 MAE 量级。
症状:IVSd 与 LVPWd 的回归误差显著大于论文的 1.4 mm / 1.2 mm;同一段视频在不同分辨率下预测结果差异很大;模型对大心脏与小操作窗口的样本表现不一致。
解决:

  1. 简单方法:把输入尺寸提升到 224×224 或 384×384,并保证等比缩放后再 padding,而不是直接拉伸。
  2. 进阶方法:按视频自身尺寸做等比缩放,把缩放因子记录在样本元数据中,训练时以「裁剪后像素距离」为回归目标,评估时再乘以缩放因子还原为原始像素距离,从而让不同分辨率的视频共享同一物理尺度语义。
  3. SOTA 方法:采用两阶段架构——先在高分辨率下做关键点检测(如使用 EfficientNetV2S backbone 替换 ResNet50 的 DeepLabV3+ 变体),再在关键点局部区域做精细化回归;社区工作已证实这一改动是适配本数据集高分辨率的必要条件。
    参考:https://arxiv.org/pdf/2312.08567.pdf (明确指出分辨率差异要求替换 backbone)

⚠️ 坑点 4:误以为视频已做扫描扇形裁剪——黑边污染归一化与卷积(分类:工程陷阱)

问题:EchoNet-LVH 的公开视频保留了扇形之外的黑色区域。这带来两个后果:一是全图均值方差被大面积零值拉低,使归一化后真实组织区域的对比度被压缩;二是卷积网络的感受野有相当一部分消耗在无信息区域,等效于降低了有效分辨率。
症状:可视化归一化后的帧,发现心肌区域偏暗且细节平淡;把同一模型迁移到已裁剪数据(如 EchoNet-Dynamic)时性能异常;社区工具在转换本数据集时报告「Black areas in Echonet LVH images」。
解决:

  1. 简单方法:用固定阈值(如灰度 > 20)检测每帧的亮区边界框并裁剪,再统一 padding。
  2. 进阶方法:为每段视频预计算扫描扇形参数(扇区左右边界、顶点位置),做扇形几何裁剪与居中,并把关键点坐标按同一变换重新投影——注意坐标变换必须与图像变换严格一致,否则标签与图像错位。
  3. SOTA 方法:在扇形裁剪的基础上做极坐标变换,把超声图像从笛卡尔域映射到极域,使声束方向成为规整的坐标轴,这一步骤已在社区工具链中实现并可复用。
    参考:https://github.com/tue-bmd/zea/pull/220 ;https://zea.readthedocs.io/en/latest/_modules/zea/data/convert/echonetlvh.html

⚠️ 坑点 5:用「截取前 N 帧」代替均匀采样——系统性丢失舒张末期(分类:预处理陷阱)

问题:超声心动图视频包含多个完整心动周期,测量标注位于舒张末期与收缩末期这两个特定时刻。若预处理时简单取视频前 N 帧,采样窗口很可能只覆盖一到两个周期的一部分,导致舒张末期帧根本不进入模型输入。
症状:模型预测的 LVID 系统性偏小(收缩期主导),而 IVSd、LVPWd 系统性偏大(收缩期心肌增厚);预测值的分布整体偏移,但排序相关性尚可,掩盖了偏差。
解决:

  1. 简单方法:改为在整个视频长度上均匀采样固定帧数(np.linspace(0, T-1, N))。
  2. 进阶方法:利用 CSV 中的标注帧号构造监督信号,训练一个帧级回归器预测每帧的测量值,再按论文的做法用预测的 LVID 曲线定位收缩末期峰值与舒张末期峰值,只在这两个极值帧上生成最终测量。
  3. SOTA 方法:在多心搏上重复上述极值定位并聚合(逐搏评估 + 测试时增强),既提升精度又给出逐搏方差作为不确定性估计,这正是原论文相对单帧方法的优势所在。
    参考:https://www.academia.edu/125599372/ (test-time augmentation 与逐搏评估方法描述)

⚠️ 坑点 6:把公开包当作完整数据——病因分类标签其实不在包里(分类:标签理解)

问题:论文中淀粉样变 AUC 0.83、肥厚型心肌病 AUC 0.98 的分类结果建立在 7,767 项 A4C 研究之上,这些 A4C 视频与病因标签并不包含在公开发布的 12,000 段 PLAX 视频包内。研究者若按论文摘要直接规划「下载数据 → 训练分类器」,会发现根本找不到病因标签列。
症状:翻阅 MeasurementsList.csv 找不到任何疾病标签列;试图用 IVSd/LVIDd/LVPWd 的数值阈值伪造病因标签,得到远低于论文的分类性能。
解决:

  1. 简单方法:明确区分两条任务线——测量任务用本数据集的公开部分,分类任务必须自筹数据(如本院 A4C 队列)或申请其他含病因标签的公开集。
  2. 进阶方法:用公开的结构测量标签构造弱监督代理任务(例如按 IVSd 阈值划分「增厚/非增厚」),训练结构表征,再在自有的小规模病因队列上做少样本微调。
  3. SOTA 方法:构建多任务模型,共享视频编码器,结构测量作为辅助任务与病因分类联合训练,利用测量任务的大量监督信号稳定分类头的表征学习。
    参考:https://stanfordhealthcare.org/publications/840/840320.html ;https://www.academia.edu/125599372/

⚠️ 坑点 7:忽略 LVID 的跨中心衰减——用内部指标估计泛化能力(分类:评估误用)

问题:论文数据显示,LVID 的平均绝对误差从内部测试的 2.4 mm 上升到国内外部集的 3.8 mm,增幅超过 50%;相比之下 IVSd 与 LVPWd 的外部误差基本稳定(1.4→1.7 mm、1.2→1.8 mm)。这说明左室内径的测量对采集条件、仪器增益、测量习惯的敏感性远高于壁厚。若只报告内部测试指标,会系统性高估模型在新机构的表现。
症状:模型在自有测试集上 MAE 达标,部署到另一台设备或另一位操作者的数据上,LVID 的误差明显放大而壁厚误差变化不大,导致壁厚与内径比值这一关键临床参数失真。
解决:

  1. 简单方法:在报告中分别列出三项测量的误差,并明确标注哪一项对域偏移最敏感,不要只报一个总体 MAE。
  2. 进阶方法:对三项测量分别做域适应——对 LVID 采用更强的强度归一化与尺度对齐,或在目标域上做少量无标注自监督微调。
  3. SOTA 方法:引入测量级别的置信区间估计(论文使用 10,000 次 bootstrap 采样得到 95% 分位区间),在部署时对高不确定性的 LVID 预测进行人工复核,而不是对所有预测一视同仁。
    参考:https://www.physiciansweekly.com/ai-algorithm-accurately-ids-two-life-threatening-heart-conditions/

⚠️ 坑点 8:以为存在官方 Dataset 类——管线需要从零搭建(分类:工程陷阱)

问题:EchoNet-Dynamic 附带官方的 echonet/datasets/echo.py,提供完整的数据集类、target_type 机制与归一化参数。EchoNet-LVH 的官方仓库只提供推理脚本,没有等价的数据集类。研究者若按惯性 from echonet.datasets import Echo 去加载 LVH,会立刻失败;而自行实现的 Dataset 往往漏掉去重、rejected 过滤、Batch 目录遍历这三个必要逻辑。
症状:找不到可导入的数据集类;自行实现的管线在 __len__ 上直接返回 CSV 行数;读取时报 FileNotFoundError(因为假设视频都在同一目录)。
解决:

  1. 简单方法:直接采用本文 §6.4 的 EchoNetLVHDataset 实现,它已内建去重、rejected 过滤与 Batch 目录探测。
  2. 进阶方法:为数据集建立离线索引缓存——首次扫描时生成「HashedFileName → Batch 编号」的映射表并持久化,避免每次初始化都做 4 次文件系统探测;同时对每段视频预抽取元数据(帧数、分辨率、是否含黑边)写入索引。
  3. SOTA 方法:把原始包转换为高效的张量存储格式(如 HDF5),一次性完成解码、扇形裁剪与统一采样,后续训练直接从存储读取;社区工具已提供该转换路径并支持手动剔除覆盖。
    参考:https://github.com/echonet/lvh ;https://zea.readthedocs.io/en/v0.1.0a2/_autosummary/zea.data.convert.echonetlvh.html

§6.6 数据增强

增强操作 安全等级 理由
亮度/对比度抖动(±10%) ✅ 安全 不同设备增益差异本就是真实变异来源
高斯噪声(低强度) ✅ 安全 模拟不同信噪比,有助于鲁棒性
时间轴随机裁剪与均匀重采样 ✅ 安全 心动周期长度个体差异大,属真实变异
轻度弹性形变(幅度 < 2 px) ⚠️ 谨慎 需同步变换关键点坐标,否则标签错位
水平/垂直翻转 ❌ 危险 心脏解剖方位有固定语义,翻转后 IVS 与 LVPW 位置互换
各向异性缩放 ❌ 危险 直接改变测量尺度,使回归目标失去意义
大角度旋转(> 15°) ❌ 危险 PLAX 切面朝向由探头位置决定,任意旋转不符合采集物理
MixUp / CutMix 跨视频混合 ❌ 危险 会生成解剖上不可能的图像,破坏测量任务的几何一致性

§6.7 模型推荐表

任务 推荐架构 输入 理由
关键点检测(IVS/LVID/LVPW 端点) 修改版 DeepLabV3 + EfficientNetV2S backbone 高分辨率帧(≥224×224) 论文原方案为 DeepLabV3;社区证实高分辨率需替换 backbone
测量回归(直接输出三项数值) 3D CNN 或视频 Transformer + 回归头 16—32 帧整段视频 可利用多心动周期信息,天然支持逐搏聚合
病因二分类 18 层 ResNet3D A4C 视频片段(batch 14) 论文原方案,等参数量下性价比高
预训练骨干 视频 Vision Transformer 大规模超声视频语料 有基础模型工作以 1,495,588 段语料训练后微调,性能优于从零训练
轻量化部署 紧凑 CNN(参数量显著低于原模型) 降采样帧 社区已有紧凑模型在细粒度测量上仍存在精度差距,需按临床容差取舍

§6.8 硬件需求表

场景 GPU 显存 存储 说明
推理复现(官方脚本) 单卡消费级(论文用 GTX 3090) 12 GB 以上 约 40 GB(原始与输出) 官方脚本可直接运行
关键点检测训练 单卡 24 GB 24 GB 200 GB SSD 高分辨率输入使批大小受限
视频回归/分类训练 单卡 24—48 GB 24—48 GB 500 GB SSD 需缓存解码后的帧序列
全量预训练/微调 多卡(4—8) 单卡 40 GB 以上 2 TB NVMe AVI 解码是 CPU 瓶颈,需高核数 CPU

§6.9 评估指标代码

# ============================================================
# 评估指标:MAE + 95% bootstrap 置信区间 + R^2
# ------------------------------------------------------------
# 说明:论文使用 10,000 次 bootstrap 重采样得到 95% 分位区间,
#       下方实现遵循同样的协议,便于与论文数字对照。
# ============================================================

import numpy as np


def mae_with_ci(y_true, y_pred, n_boot=10000, seed=0):
    """返回 MAE 及其 95% bootstrap 置信区间。"""
    y_true = np.asarray(y_true, dtype=np.float64)
    y_pred = np.asarray(y_pred, dtype=np.float64)
    assert y_true.shape == y_pred.shape

    def _mae(a, b):
        return float(np.mean(np.abs(a - b)))

    point = _mae(y_true, y_pred)
    rng = np.random.default_rng(seed)
    n = len(y_true)
    boots = np.empty(n_boot, dtype=np.float64)
    for i in range(n_boot):
        idx = rng.integers(0, n, size=n)
        boots[i] = _mae(y_true[idx], y_pred[idx])
    lo, hi = np.percentile(boots, [2.5, 97.5])
    return point, float(lo), float(hi)


def r2_score(y_true, y_pred):
    y_true = np.asarray(y_true, dtype=np.float64)
    y_pred = np.asarray(y_pred, dtype=np.float64)
    ss_res = float(np.sum((y_true - y_pred) ** 2))
    ss_tot = float(np.sum((y_true - np.mean(y_true)) ** 2))
    return 1.0 - ss_res / (ss_tot + 1e-12)


# 使用示例(三项测量必须分开报告,不能只报平均)
# for name in ["IVS", "LVID", "LVPW"]:
#     m, lo, hi = mae_with_ci(gts[name], preds[name])
#     print(f"{name}: MAE {m:.2f} mm (95% CI {lo:.2f}-{hi:.2f}), "
#           f"R2 {r2_score(gts[name], preds[name]):.3f}")

需要特别提醒:三项测量的误差量级不同(内部测试 LVID 的 MAE 是 LVPW 的两倍),把三项 MAE 简单求平均会掩盖关键差异,必须分项报告。同时,论文在外部验证中报告的是 R² 而非以 MAE 为主,因为 R² 更能反映模型在分布偏移下保持排序一致性的能力,但 R² 对测量方差敏感——在测量值分布狭窄的子集上 R² 会天然偏低,解释时需谨慎。

§6.10 MLOps 笔记

  1. 数据版本化:原始包 4 个 Batch 体积大且不可变,建议对 MeasurementsList.csv 与每次生成的划分索引做版本控制,视频本体用内容哈希校验而非复制。
  2. 索引缓存:首次扫描时生成「HashedFileName → Batch 编号 → 帧数 → 分辨率」的索引,持久化为 parquet,可把 DataLoader 初始化时间从分钟级降到秒级。
  3. 格式转换一次性完成:把 AVI 解码、扇形裁剪、统一采样合并为一次离线转换,输出 HDF5 或 WebDataset 分片。重复在线解码是本数据集最大的工程浪费来源。
  4. 指标看板:三项测量分别跟踪 MAE 与 R²,并单独监控 LVID 的误差漂移,因为它是跨中心泛化性最敏感的指标。
  5. 不确定性输出:论文的逐搏方差天然提供了一个不确定性信号,建议在推理服务中输出该方差,作为是否需要人工复核的路由依据。
  6. 协议冻结:一旦确定使用官方划分,应把划分文件的哈希写入实验配置,防止后续无意中重新划分导致结果不可比。

§7 质量评估与局限性

§7.1 已知偏倚表

偏倚类型 描述 严重程度 缓解措施
转诊偏倚 全部视频来自临床指征驱动的超声检查,LVH 及相关疾病患病率远高于筛查人群 高 不得用于筛查场景的性能声明;报告时明确队列来源
单中心偏倚 训练与内部测试均来自 Stanford Health Care,机构采集习惯高度一致 高 必须做外部验证;参照论文国内与国际外部集的表现
设备与操作者偏倚 数据来自多台超声机器与不同操作者,图像质量未分级报告 中 在预处理中加入质量分层;对低质量子集单独评估
病因标签富集 病因分类队列来自专科门诊策展,疾病患病率被人为放大 中 分类模型的阳性预测值不可外推至普通人群
标注者偏倚 标签为单读者临床测量,继承观察者间变异 中 使用逐搏多次测量降低偶然误差;报告测量不确定度
切面偏倚 仅含 PLAX 单一视图,缺少心尖切面 中 涉及功能评估的任务不可用本数据集完成
人群构成偏倚 女性比例约 54%—62%,年龄均值约 62 岁,种族构成未分层报告 中 在不同性别与年龄亚组上分别评估性能

§7.2 标注质量

标注质量的最大特点在于「临床真实性」与「标注一致性」之间的张力。标签直接来自临床读片流程,反映了真实世界的测量标准,这使模型学到的目标与临床实践高度一致;但正因为如此,标签也继承了临床测量的全部缺陷——不同读片者对同一图像的测量可能相差 1—2 mm,而这正是模型误差量级本身。

论文对该问题的处理方式值得借鉴:它没有试图建立多读者共识标注,而是通过 23,874 项「临床判定无显著变化」的配对检查,把前后两次测量的方差作为专家变异的代理上限,再用模型的逐搏预测方差与之对照。这一设计的巧妙之处在于承认了「金标准本身有噪声」,并把评估目标从「逼近某个确定真值」转向「方差不超过临床专家」。

几何标注(关键点坐标与帧号)的质量相对更高,因为它比一个孤立的毫米数值包含更多约束信息——关键点必须落在解剖边界上,错误会立刻在可视化中暴露。这也是为什么在小规模二次研究中,直接使用关键点坐标作为监督目标通常比直接回归毫米数值更容易获得稳定结果。

§7.3 泛化性表

场景 失效风险 证据
跨机构(同国不同医院) 中—高 国内外部集 LVID MAE 由 2.4 mm 升至 3.8 mm,其余两项稳定
跨国家/跨医疗体系 中 国际外部集量化 R² 降至 0.90(对比国内 0.96)
跨设备/便携超声(POCUS) 高 论文未评估 POCUS 场景;POCUS 图像质量与操作者经验差异显著
跨切面(PLAX → A4C) 极高 数据集仅含 PLAX,模型无法直接迁移至其他切面
跨人群(儿科) 极高 队列为成人,儿科另有独立数据集 EchoNet-Pediatric
跨任务(测量 → 功能) 高 无 EF、容积等标签,功能评估需 A4C 数据
图像质量差/伪影重 高 病因分类 AUC 从内部 0.83 降至国内外部 0.79,提示域偏移影响

§7.4 伦理

数据集在发布前经过自动化去标识流程处理,包括移除身份信息、移除画面中烧录的人为标签、裁剪扫描扇区之外的内容,视频经抽查确认视图分类并排除含彩色多普勒的片段;文件名改为哈希标识,不随包发布 DICOM 头信息。研究经斯坦福大学与 Cedars-Sinai 医学中心机构审查委员会批准。

需要使用者额外注意的伦理问题有三点。第一,作者已就 EchoNet-LVH 申请专利,商业化使用可能涉及知识产权问题,使用前应确认许可范围。第二,虽然视频已去标识,超声图像中仍可能残留可识别信息(如探头上标注的机构信息、罕见的解剖变异),再识别尝试被使用协议明确禁止。第三,模型若用于淀粉样变或肥厚型心肌病的机会性筛查,阳性结果会带来后续检查与心理负担,而当前的阳性预测值是基于富集队列估计的,不能直接外推。

§7.5 公平性

论文公开摘要报告了性别与年龄分布:Stanford PLAX 队列女性占 54.2%、平均年龄 61.6 岁;CSMC PLAX 队列女性占 61.7%、平均年龄 62.8 岁。两个队列的性别构成接近平衡,年龄分布集中在老年段,符合超声心动图临床使用人群的特征。种族、族裔与社会经济状况未在公开摘要中分层报告,因此无法评估模型在不同族群间的性能差异。

从数据构成推断,潜在的不公平风险主要来自三点:一是老年人群主导使模型在年轻患者上的表现未知;二是不同体型患者的超声穿透条件差异很大(脂肪组织厚度影响图像质量),可能引入与体质相关的系统性误差;三是数据集来源为美国单一地区的学术医疗中心,其转诊模式与疾病谱在不同医疗体系中不具代表性。

缓解建议:在任何下游应用前,按性别、年龄组、体型指标分层评估三项测量的误差,并对误差显著偏大的亚组单独报告。若目标人群与斯坦福队列差异较大,应优先考虑在目标人群中做少量标注并微调,而不是直接部署。

§7.6 数据漂移

数据集本身是静态快照(2016—2018 年采集),不会随时间漂移,但存在三种使用层面的漂移风险:

  1. 设备漂移:超声设备与成像软件持续更新,新设备的图像风格、降噪算法、动态范围与 2016—2018 年的数据可能存在差异,直接部署会出现性能衰减。
  2. 临床实践漂移:测量规范会随指南更新而变化(例如室壁厚度指数化方式、参考界值调整),若下游应用依赖固定阈值,需定期校准。
  3. 编码与流程漂移:数据集的划分索引曾有过修订(官方仓库中保留过 hashed_index_old_split.csv),说明划分协议并非完全冻结。使用旧文档中的划分数字可能与当前 CSV 不一致,必须以实际下载到的 CSV 为准。

§7.7 DAIMS 24 项检查

# 检查项 状态 说明
1 宽格式 ✅ 视频为 AVI 宽格式,CSV 为长格式(每测量点一行),二者通过 HashedFileName 关联,无嵌套结构
2 唯一标识 ✅ HashedFileName 为哈希标识,是唯一且稳定的主键
3 特殊字符 ✅ 文件名经哈希处理,无空格、中文或特殊字符;CSV 为标准 UTF-8
4 重复行 ⚠️ CSV 中同一视频必然出现多行(每测量点一行),非错误但必须去重;已明确写入 §6.5 坑点 1
5 缺失编码 ⚠️ CSV 使用空值而非显式缺失码;无标注列语义说明文档
6 标签标识 ✅ 划分以 split 列显式记录,含 train/val/test/rejected 四类
7 罕见类分组 ⚠️ 病因分类中淀粉样变等为罕见类,且标签子集未随包发布,无法在公开数据上做类平衡
8 偏倚评估 ✅ 论文报告了队列性别年龄构成;本文 §7.1 列出七类偏倚并给出缓解建议
9 数据字典 ⚠️ 官方未发布完整列级数据字典,本文 §4.1 依据社区实现与论文反推整理
10 信息性缺失解释 ✅ 已说明缺失主要来自分发完整性与人工剔除,非临床原因驱动(见 §4.5)
11 设备记录 ❌ 未提供逐视频的设备型号、探头参数或采集设置
12 共线性 ⚠️ IVSd、LVIDd、LVPWd 在解剖上相关(同属左室几何),多元回归目标间存在共线性
13 编码映射 ✅ 病因标签可映射至 ICD-11(BC42/BC43.1/BC43.3)与 SNOMED CT,见 §2.1 与 §2.1b
14 时间戳处理 ⚠️ 仅提供视频内帧号,无采集日期;无法做时间维度的分布漂移分析
15 划分建议 ✅ 官方提供四类划分;本文 §5 给出使用建议与泄漏风险清单
16 泄漏讨论 ✅ §5.3 详述患者级、检查级、衍生数据集、跨数据集四层泄漏风险
17 标签分布 ✅ 三项测量为连续量,论文与 CardioBench 报告了分布特征;分类标签高度不平衡
18 测量偏倚 ✅ 论文以 23,874 项临床稳定配对检查的测量方差作为专家变异代理量,见 §3.6
19 外部验证建议 ✅ §5.6 与 §7.3 给出论文外部验证基线数字与自行验证建议
20 版本记录 ⚠️ 公开版本号未在官方页面显式标注;划分索引存在历史修订(hashed_index_old_split.csv)
21 预处理脚本 ✅ 官方提供推理脚本;预处理需自行实现,社区工具已提供可参考的转换实现
22 合规要求 ✅ 使用须接受斯坦福研究使用协议;作者已申请相关专利
23 多模态对齐 ❌ 无配对文本、报告或 EHR 数据,无法做影像-文本对齐
24 去标识化 ✅ 自动化流程移除身份信息与烧录标签、哈希化文件名、经 IRB 批准

DAIMS 评分:18.5 / 24

评分解读:EchoNet-LVH 在标识规范、划分协议、泄漏讨论、去标识化与合规这些「数据治理基础项」上表现优秀(✅ 14 项),说明发布方对研究用途的规范性有清醒认识。失分集中在三个方向:一是元数据完备性(状态为 ⚠️ 的 8 项中,缺失编码、数据字典、设备记录、版本记录、时间戳处理都属于此类),官方把发布重点放在视频与标签本体,元数据文档相对薄弱;二是多模态能力(❌),数据集完全没有文本或结构化临床数据,无法支持当前热门的影像-文本对齐研究;三是公开包与论文任务的不完整对应——病因分类所需的 A4C 视频与标签未随包发布,这是最大的实用性缺口。

对你意味着什么:

  • 如果你的任务是结构测量,这个数据集基本可以直接开工:官方划分、关键点坐标、推理代码齐备,只需自行补齐预处理与 Dataset 类。
  • 如果你的任务是病因分类,请在立项前先确认数据来源——公开包无法支撑该任务,需要另行申请或自筹 A4C 队列。
  • 如果你的目标是发表可比较的结果,请严格使用 CSV 中的 split 列,并分项报告三项测量的 MAE 与 R²,因为 LVID 的跨中心衰减会让你在未做外部验证时的乐观结论站不住脚。
  • 如果你计划做多模态或影像-文本工作,这个数据集不适合作为主数据源,它只能作为纯视觉预训练或外部验证的一部分。
  • 如果你需要设备级溯源或质量分层,需要自行标注或从视频中反推图像质量指标,因为官方未提供这类元数据。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
Cedars-Sinai Medical Center Cedars-Sinai(美国洛杉矶) 左室参数量化 R² = 0.96 内部为训练域,无直接对照 同国不同机构下的量化性能保持良好
Cedars-Sinai Medical Center Cedars-Sinai(美国洛杉矶) 参数测量误差 IVS 1.7 mm / LVID 3.8 mm / LVPW 1.8 mm LVID 由 2.4 mm 升至 3.8 mm 左室内径对域偏移最敏感
Cedars-Sinai Medical Center Cedars-Sinai(美国洛杉矶) 淀粉样变分类 AUC 0.79 由 0.83 下降 疾病分类在跨机构时出现明显衰减
Cedars-Sinai Medical Center Cedars-Sinai(美国洛杉矶) 肥厚型心肌病分类 AUC 0.89 由 0.98 明显下降 高内部性能未必能迁移,HCM 衰减幅度最大
Unity Imaging Collaborative 7 家英国超声实验室 左室参数量化 R² = 0.90 低于国内的 0.96 跨国迁移性能进一步下降但仍在可用范围
Unity Imaging Collaborative 7 家英国超声实验室 参数测量误差 IVS 1.7 mm / LVID 2.9 mm / LVPW 2.3 mm 三项误差均高于内部 国际队列的 LVID 误差反而小于国内外部集
PanEcho 多任务评测 耶鲁纽黑文医疗系统 心脏超声多任务外部验证 中位 AUC 约 0.91(多任务体系整体) 不适用(不同模型体系) EchoNet-LVH 被用作该体系的公开外部测试集之一

上表仅纳入有同行评审或公开预印本支撑的结果。需要注意 Unity Imaging 的外部集是以已标注帧的 PNG 形式提供的,而非原始视频,因此其评估协议与视频端到端方法存在差异,跨行比较数字时应谨慎。


§8 基准性能与生态

§8.1 排行榜

排名 模型 性能 年份 关键技术 完整引用 代码
— EchoNet-LVH(原始) IVS MAE 1.4 mm;LVID MAE 2.4 mm;LVPW MAE 1.2 mm;淀粉样变 AUC 0.83;HCM AUC 0.98 2022 修改版 DeepLabV3 关键点检测 + ResNet3D 分类 + 逐搏测试时增强 Duffy G, Cheng PP, Yuan N, et al. High-Throughput Precision Phenotyping of Left Ventricular Hypertrophy With Cardiovascular Deep Learning. JAMA Cardiology. 2022;7(4):386-395. DOI:10.1001/jamacardio.2021.6059 https://github.com/echonet/lvh
— ConFormer(LVD 估计模型) 三项测量合计 MAE 约 6(第三方报告口径) 2023 DeepLabV3+ 配 EfficientNetV2S backbone,参数量显著更小 ConFormer: A Novel Collection of Deep Learning Models to Assist Cardiologists in the Assessment of Cardiac Function. arXiv:2312.08567. 2023 见论文
— PanEcho 多任务中位 AUC 约 0.91(含左室壁厚评估任务) 2024 多任务深度学习统一超声解读 Holste G, Oikonomou EK, Mortazavi BJ, et al. PanEcho: Complete AI-enabled echocardiography interpretation with multi-task deep learning. medRxiv. 2024. DOI:10.1101/2024.11.16.24317431 https://github.com/CarDS-Yale/PanEcho
— 多模态 LVH 融合模型 LVH 病因鉴别优于单模态 2022 多模态深度学习融合 Soto JT, Weston Hughes J, Sanchez PA, Perez M, Ouyang D, Ashley EA. Multimodal deep learning enhances diagnostic precision in left ventricular hypertrophy. European Heart Journal - Digital Health. 2022 见论文

数值不可直接比较的原因:上表数字来自不同论文,其评估协议存在三处不可比因素。第一,预处理不同——原始论文在整段视频上做逐搏聚合,部分第三方工作只使用舒张末期与收缩末期两帧,输入信息量差异巨大。第二,测试集划分不同——原始论文使用患者级划分并报告国内与国际两个外部集,第三方工作常自行划分或有不同的样本筛选。第三,指标口径不同——MAE 是绝对误差(毫米),在不同队列的测量分布下意义不同;R² 对测量方差敏感,在分布狭窄的子集上会天然偏低。因此本表仅用于了解各方法的技术路线,不构成严格排名。

§8.2 SOTA 总结与选型建议

从技术演进看,EchoNet-LVH 上的方法经历了三个阶段。第一阶段是原始论文确立的「关键点检测 + 逐搏聚合」范式,核心洞察在于超声测量的精度瓶颈不在单帧识别,而在心动周期内的时刻定位与多搏平均。第二阶段是效率优化,社区工作尝试用更小的 backbone 与更紧凑的架构复现接近的性能,结果显示在细粒度测量上仍有明显差距——这意味着关键点精度对表征能力的要求高于一般分类任务。第三阶段是多任务统一,PanEcho 等工作把壁厚测量并入覆盖射血分数、瓣膜、心腔功能的多任务体系,用共享表征换取跨任务的正迁移。

选型建议按任务区分:追求最高测量精度,应沿用关键点检测加逐搏聚合的思路,并把输入分辨率提升到与原始视频匹配的水平;追求部署效率,可考虑紧凑架构,但需在目标临床容差内验证误差,不能只对比平均 MAE;需要同时输出多项超声指标,应优先考虑多任务架构,并确保壁厚测量任务在损失加权中不被大样本任务淹没;数据量有限,应使用在超声视频语料上预训练过的基础模型做微调,而不是从零训练。

§8.3 评测协议

复现本数据集结果的推荐协议:

  1. 使用 MeasurementsList.csv 中 split 列定义的官方划分,测试集规模为 343 段视频。
  2. 三项测量分别报告 MAE 与 95% bootstrap 置信区间(10,000 次重采样,与论文一致)。
  3. 同时报告 R²,以便与论文的外部验证数字对照。
  4. 若使用视频方法,明确说明采样帧数与是否做逐搏聚合;若使用单帧方法,明确说明选取的是舒张末期、收缩末期还是两者。
  5. 分类任务需说明病因标签的来源,因为公开包不含该标签。
  6. 报告时区分「内部测试」与「外部验证」,不得用内部数字推断泛化能力。

§8.4 相关数据集表

数据集 关系 规模 说明
EchoNet-Dynamic 同源前作 10,030 段 A4C 视频 同一机构、时间窗重叠,任务是 EF 与容积量化;与本数据集合并构成 22,030 段公开视频
EchoNet-Pediatric 同系列 7,810 段视频 覆盖 0—18 岁人群,含 A4C 与 PSAX 视图,标签为 EF 与人体测量学指标
EchoNet-MR 同系列 未在官方页面公布 面向二尖瓣反流的深度学习检测
EchoNet-RCT 同系列 未在官方页面公布 声学技师与 AI 心脏功能评估的盲法随机对照试验
EchoNet-Labs 同系列 未在官方页面公布 从超声视频评估实验室生物标志物
CAMUS 可比数据集 1,000 段视频 / 500 患者 提供心腔分割掩膜,图像质量故意异质
TMED-2 可比数据集 17,270 张图像 主动脉瓣狭窄分级,图像而非视频

§8.5 关键论文 Top 8

  1. Duffy G, Cheng PP, Yuan N, He B, Kwan AC, Shun-Shin MJ, Alexander KM, Ebinger J, Lungren MP, Rader F, Liang DH, Schnittger I, Ashley EA, Zou JY, Patel J, Witteles R, Cheng S, Ouyang D. High-Throughput Precision Phenotyping of Left Ventricular Hypertrophy With Cardiovascular Deep Learning. JAMA Cardiology. 2022;7(4):386-395. DOI:10.1001/jamacardio.2021.6059 —— 数据集与方法的原始论文,确立关键点检测加逐搏聚合范式,发布 12,000 段视频。
  2. Duffy G, Cheng PP, Yuan N, et al. 同上预印本 arXiv:2106.12511. 2021 —— 论文早期版本,摘要记为 23,212 段带标注视频,可用于追踪版本差异。
  3. ConFormer 作者组. ConFormer: A Novel Collection of Deep Learning Models to Assist Cardiologists in the Assessment of Cardiac Function. arXiv:2312.08567. 2023 —— 提出紧凑架构并在本数据集上验证,明确指出高分辨率要求替换 backbone。
  4. Holste G, Oikonomou EK, Mortazavi BJ, Coppi A, Faridi KF, Miller EJ, et al. PanEcho: Complete AI-enabled echocardiography interpretation with multi-task deep learning. medRxiv. 2024. DOI:10.1101/2024.11.16.24317431 —— 多任务超声解读体系,将 EchoNet-LVH 作为外部测试集之一。
  5. Oikonomou EK, Holste G, et al. Deep Learning–Enabled Assessment of Left Heart Structure and Function Predicts Cardiovascular Outcomes. Journal of the American College of Cardiology. 2023. DOI:10.1016/j.jacc.2023.09.800 —— 使用 EchoNet-Dynamic 与 EchoNet-LVH 作为公开外部验证样本,并在方法中明确记录 Stanford 研究使用协议的合规要求。
  6. Soto JT, Weston Hughes J, Sanchez PA, Perez M, Ouyang D, Ashley EA. Multimodal deep learning enhances diagnostic precision in left ventricular hypertrophy. European Heart Journal - Digital Health. 2022 —— 多模态融合提升 LVH 诊断精度,与本数据集形成方法互补。
  7. CardioBench 作者组. CardioBench: Do Echocardiography Foundation Models Generalize Beyond the Lab? arXiv:2510.00520. 2025 —— 系统整理包括本数据集在内的超声数据集划分与标签,指出官方划分为 10,490/1,167/343。
  8. Reddy CD, Lopez L, Ouyang D, Zou JY, He B. Video-Based Deep Learning for Automated Assessment of Left Ventricular Ejection Fraction in Pediatric Patients. Journal of the American Society of Echocardiography. 2023 —— 儿科功能评估工作,说明本数据集的成人模型不可直接迁移至儿科。

§8.6 社区活跃度

EchoNet 系列在 GitHub 上由官方组织 echonet 维护,本数据集仓库为 echonet/lvh,提供两个推理 CLI 与模型定义。社区侧的活跃度体现在三个方面:一是第三方工具链为其编写专用转换脚本(如 zea 项目,其转换模块完整实现了划分加载、扫描扇形参数检测、坐标变换与手动剔除覆盖,并配有专门的测试用例);二是存在多个 fork 与镜像仓库,部分仓库新增了文档说明或补充了历史划分索引;三是围绕图像黑边与扫描扇形裁剪问题有持续的 issue 与 PR 讨论,说明使用者普遍遇到这类预处理障碍。

相比 EchoNet-Dynamic,本数据集的社区生态明显更薄——没有官方的 PyTorch Dataset 类,预处理需要自行实现,这既是门槛也是改进空间。

§8.7 生态快照表

资源 类型 链接 Star 截至 2026-09 推荐理由
echonet/lvh 官方代码仓库 https://github.com/echonet/lvh 未在公开页面单列计数 唯一的官方推理代码来源,含 PLAX 测量与 A4C 分类两条 CLI
Stanford AIMI Shared Datasets 数据托管页 https://aimi.stanford.edu/datasets/echonet-lvh 不适用 官方下载入口与许可协议签署处
EchoNet-LVH 项目主页 官方文档 https://echonet.github.io/lvh/ 不适用 数据集说明、示例结果与引用信息
tue-bmd/zea 转换脚本 社区工具 https://github.com/tue-bmd/zea 未在公开页面单列计数 提供扫描扇形检测、坐标变换与 HDF5 转换的完整参考实现
CardioBench 第三方基准 https://arxiv.org/abs/2510.00520 不适用 汇总本数据集划分与标签口径,便于协议对齐

§9 相关资源与引用

§9.1 官方资源

资源 链接 说明
项目主页 https://echonet.github.io/lvh/ 数据集介绍、结果示例与获取入口
Stanford AIMI 数据集页 https://aimi.stanford.edu/datasets/echonet-lvh 官方下载与许可协议
官方代码仓库 https://github.com/echonet/lvh 推理脚本与模型定义
论文 DOI https://doi.org/10.1001/jamacardio.2021.6059 JAMA Cardiology 正式版本
预印本 https://arxiv.org/abs/2106.12511 早期版本,可用于对照版本差异

§9.2 教程与社区链接

资源 类型 说明
zea 数据集转换文档 工具文档 提供 EchoNet-LVH 专用的加载、扇形检测与格式转换 API 说明
CardioBench 基准论文 给出各超声数据集的官方划分与可用标签对照表
PanEcho 仓库 代码 多任务超声模型实现,可作为多任务架构参考
ConFormer 论文 论文 高分辨率超声的紧凑架构实现细节

§9.3 BibTeX 引用

@article{duffy2022echonetlvh,
  title   = {High-Throughput Precision Phenotyping of Left Ventricular
             Hypertrophy With Cardiovascular Deep Learning},
  author  = {Duffy, Grant and Cheng, Paul P. and Yuan, Neal and He, Bryan
             and Kwan, Alan C. and Shun-Shin, Matthew J. and
             Alexander, Kevin M. and Ebinger, Joseph and Lungren, Matthew P.
             and Rader, Florian and Liang, David H. and Schnittger, Ingela
             and Ashley, Euan A. and Zou, James Y. and Patel, Jignesh and
             Witteles, Ronald and Cheng, Susan and Ouyang, David},
  journal = {JAMA Cardiology},
  volume  = {7},
  number  = {4},
  pages   = {386--395},
  year    = {2022},
  doi     = {10.1001/jamacardio.2021.6059},
  pmid    = {35195663}
}

@misc{echonetlvh_dataset,
  title        = {EchoNet-LVH: A Large Video Dataset of Echocardiograms
                  for Left Ventricular Hypertrophy Research},
  author       = {{Stanford University School of Medicine}},
  howpublished = {Stanford Center for Artificial Intelligence in Medicine
                  and Imaging (AIMI) Shared Datasets},
  year         = {2022},
  url          = {https://echonet.github.io/lvh/},
  note         = {Accessed 2026-09}
}

@article{holste2024panecho,
  title   = {PanEcho: Complete AI-enabled echocardiography interpretation
             with multi-task deep learning},
  author  = {Holste, Gregory and Oikonomou, Evangelos K. and
             Mortazavi, Bobak J. and others},
  journal = {medRxiv},
  year    = {2024},
  doi     = {10.1101/2024.11.16.24317431}
}

§9.4 引用指南

使用 EchoNet-LVH 数据集时,必须引用原始论文(Duffy 等,JAMA Cardiology 2022)与数据集本身。若使用了官方代码,应同时引用代码仓库。若将数据集作为外部验证集使用,建议在方法部分明确记录:所使用的划分来源、预处理是否做了扫描扇形裁剪、以及输入是完整视频还是抽帧图像,这三项信息决定了结果能否被他人复现。若使用了病因分类相关的结论,需注意该任务的标签子集未随公开包发布,应在论文中说明标签来源。


§10 AI 使用声明卡

§10.1 AI 模型列表

模型/工具 版本标识 用途
deep-model(WorkBuddy) 2026-09 条目结构化写作、代码示例生成、DAIMS 评估表编制、JSON-LD 构建
WebSearch(多源检索) 2026-09 6 组检索:官方页面与托管信息、原始论文与引用数、数据集划分与规模、文件结构与工具链、外部验证与基准、工程坑点线索

§10.2 AI 参与范围

本条目由 AI 模型完成初稿撰写,具体参与的模块包括:INFOBOX 字段汇编、§1 至 §9 的结构化正文、§6 全部代码示例、§7.7 DAIMS 24 项评估表、§C JSON-LD 序列化。AI 未参与的事实性内容仅来自 §10.3 所列公开来源。所有代码示例为示意性实现,未在真实数据集上端到端执行验证,使用者需自行测试。医学描述与偏倚分析经千方病案医学编辑部交叉审核。

§10.3 输入来源列表

  1. Duffy G, Cheng PP, Yuan N, et al. High-Throughput Precision Phenotyping of Left Ventricular Hypertrophy With Cardiovascular Deep Learning. JAMA Cardiology. 2022;7(4):386-395. https://doi.org/10.1001/jamacardio.2021.6059
  2. Stanford Health Care 论文摘要页(含完整队列人口学与 MAE/AUC 结果). https://stanfordhealthcare.org/publications/840/840320.html
  3. Stanford AIMI Shared Datasets 官方数据集目录页. http://aimi2021.sites.stanford.edu/shared-datasets
  4. Stanford AIMI EchoNet-LVH 数据集页面. https://aimi.stanford.edu/datasets/echonet-lvh
  5. EchoNet-LVH 官方项目主页. https://echonet.github.io/lvh/
  6. EchoNet-LVH 官方代码仓库 README(含完整结果摘要). https://github.com/echonet/lvh
  7. arXiv 预印本 2106.12511 摘要页. https://arxiv.org/abs/2106.12511
  8. CardioBench: Do Echocardiography Foundation Models Generalize Beyond the Lab? arXiv:2510.00520. https://ar5iv.labs.arxiv.org/html/2510.00520
  9. ConFormer: A Novel Collection of Deep Learning Models to Assist Cardiologists in the Assessment of Cardiac Function. arXiv:2312.08567. https://arxiv.org/pdf/2312.08567.pdf
  10. Holste G, et al. PanEcho: Complete AI-enabled echocardiography interpretation with multi-task deep learning. medRxiv. 2024. https://www.medrxiv.org/content/10.1101/2024.11.16.24317431.full.pdf
  11. Oikonomou EK, et al. Deep Learning–Enabled Assessment of Left Heart Structure and Function Predicts Cardiovascular Outcomes. JACC. 2023. https://www.onlinejacc.org/doi/full/10.1016/j.jacc.2023.09.800
  12. zea 数据集转换文档(EchoNet-LVH 模块源码与 API 说明). https://zea.readthedocs.io/en/latest/_modules/zea/data/convert/echonetlvh.html
  13. zea 项目 EchoNet-LVH 转换测试与修复 PR #220. https://github.com/tue-bmd/zea/pull/220
  14. A unified multi-task learning framework for automated assessment of left ventricular structure and its systolic function from echocardiography. Scientific Reports. 2025. https://nature.com/articles/s41598-025-31773-w
  15. 论文引用量与期刊卷期信息(科研通文献页). https://www.ablesci.com/scholar/paper?id=EMO7PNLzr
  16. Physician’s Weekly 论文报道(含外部验证全部 MAE/AUC 数字). https://www.physiciansweekly.com/ai-algorithm-accurately-ids-two-life-threatening-heart-conditions/
  17. LVH 重构预后研究综述(含 Framingham 与 MESA 队列数据). https://www.excli.de/excli/article/view/9416/5702
  18. InVision Medical Technology 研究文献列表(EchoNet-LVH 系列论文与 2024 年外部验证摘要). https://invisionmedtech.com/evidence/research
  19. Echocardiogram Foundation Model 论文(含 EchoNet-LVH 在预训练语料中的使用). https://ar5iv.arxiv.org/html/2311.12582
  20. AI 在肥厚型心肌病与生理性肥大的鉴别诊断综述(含 Duffy 2022 性能对照表). https://www.ebiotrade.com/newsf/2026-5/20260518085325773.htm

§10.4 人工校验表

内容模块 审核者 审核方式 审核状态
§1 数据集概览与横向对比 千方病案医学编辑部 与 Stanford AIMI 官方页面及 JAMA Cardiology 论文摘要逐项核对 ✅ 已通过
§2 医学背景与 ICD-11 / SNOMED CT 映射 千方病案医学编辑部 编码经 ICD-11 与 SNOMED CT 术语体系复核 ✅ 已通过
§3 数据集规格与版本矩阵 千方病案医学编辑部 与公开论文及第三方基准论文的规格表交叉验证 ✅ 已通过
§4 数据结构与 DAIMS 字段字典 千方病案医学编辑部 依据社区转换实现与官方 CSV 列结构反推并逐字段核对 ✅ 已通过
§5 划分策略与泄漏风险 千方病案医学编辑部 与官方划分统计及第三方基准论文的划分记录对照 ✅ 已通过
§6 代码示例与八大坑点 千方病案医学编辑部 代码逻辑审阅、坑点来源与社区 issue 及文档逐一对应 ✅ 已通过
§7 质量评估与 DAIMS 24 项 千方病案医学编辑部 24 项逐项评审、状态标注与依据核对 ✅ 已通过
§8 基准数字与生态快照 千方病案医学编辑部 所有性能数字回溯至原始论文或同行评审来源 ✅ 已通过
§9 引用与 BibTeX 千方病案医学编辑部 DOI、卷期页码、PMID 与作者列表核对 ✅ 已通过
§10 AI 声明与来源列表 千方病案医学编辑部 输入来源 URL 可访问性与引用完整性核查 ✅ 已通过

§10.5 AI 生成章节标注

以下章节含 AI 生成内容,已通过人工校验:INFOBOX 全部字段汇编;§1.0 至 §1.5;§2.1 至 §2.6;§3.0 至 §3.10;§4.0 至 §4.5;§5.1 至 §5.6;§6.0 至 §6.10(含全部代码示例、八大坑点、增强安全表、模型与硬件推荐表);§7.1 至 §7.8;§8.1 至 §8.7;§9.1 至 §9.4;§10.1 至 §10.6;§C JSON-LD 结构化数据块。

所有数字均回溯至 §10.3 所列公开来源,代码示例为示意性实现,未在真实数据集上执行验证。

§10.6 最后人工审核日期

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

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


§C 结构化数据(JSON-LD)


相关数据集导航

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

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

返回 AI-Ready 数据集