FETAL_PLANES_DB — 胎儿标准切面分类基准 AI-Ready Wikipedia

12,400 张二维超声标准切面 · 1,792 名患者 · 首个比肩人类技师的切面分类基准

来源 BCNatal(巴塞罗那母胎与新生儿医学中心) url: https://zenodo.org/records/3904280发布时间: 2026-09-18最后更新: 2026-09-25 阅读 25
FETAL_PLANES_DB — 胎儿标准切面分类基准 AI-Ready Wikipedia

信息速览

数据集名称FETAL_PLANES_DB — 胎儿标准切面分类基准 AI-Ready Wikipedia
数据类型约 2.1GB ZIP,12,400 张超声切面,1,792 名患者,CC BY 4.0 开放获取,6 类切面
规模1,792 名孕妇
接入方式BCNatal(巴塞罗那母胎与新生儿医学中心) url: https://zenodo.org/records/3904280
AI 就绪度

FETAL_PLANES_DB — 胎儿标准切面分类基准 AI-Ready Wikipedia


INFOBOX

数据集名称 FETAL_PLANES_DB: Common maternal-fetal ultrasound images
英文全称 Fetal Planes Database — Common maternal-fetal ultrasound images
别名/简称 FETAL_PLANES_DB、Fetal Planes DB、胎儿切面库、Planes DB
疾病分类 母胎医学与产前筛查范畴(ICD-11:QA4Z 妊娠监督相关情况 / JB6Z 胎儿与新生儿相关情况;本数据集本身为正常解剖切面分类,不含疾病标签)
SNOMED CT 45051004 Ultrasonography of fetus (procedure) / 268445003 Ultrasound scan of antenatal (procedure) / 17533008 Fetal biometry (procedure) / 60961000 Fetal brain (body structure)(详见 §2.1b)
数据模态 二维灰阶超声(B 模式)静态图像 + 表格元数据
AI 任务类型 切面分类(6 类粗分类)、脑切面细分类(3 亚类)、零样本分类、线性探测与微调、自监督/对比学习预训练、类别不平衡条件下的生成增强
样本总数 12,400 张图像 / 1,792 名患者 / 6 类切面 / 3 个脑切面亚类
数据大小 2.1 GB(Zenodo ZIP,含 PNG 图像与 CSV 元数据)
数据格式 PNG(图像)+ CSV(元数据);镜像提供 Parquet 与 HuggingFace Datasets 格式
许可证 Creative Commons Attribution 4.0 International (CC BY 4.0)
访问级别 开放(Zenodo 直接下载);HuggingFace 镜像采用申请访问(gated)模式
DUO 标签 GRU, HMB, PUB
语言 英文(元数据标签);图像无语言属性
首发日期 2020-06-23(Zenodo v1.0);论文 2020-06-24 在线发表于 Scientific Reports
最后更新 2020-06-23(Zenodo v1.0,此后未发布新版本)
发布机构 BCNatal(巴塞罗那母胎与新生儿医学中心)/ IDIBAPS / Transmural Biotech S.L. / CIBER-ER
官方主页 https://zenodo.org/records/3904280
下载地址 https://zenodo.org/records/3904280(ZIP 直链);https://huggingface.co/datasets/shr3m/fetal-planes-db(镜像)
DOI 10.5281/zenodo.3904280(数据集)/ 10.1038/s41598-020-67076-5(论文)
引用次数 28+(Semantic Scholar 数据集条目引文,截至 2026-09;其中含 2 次高影响引文)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 官方患者不重叠划分 + 完整采集元数据 + 活跃基准生态;扣分项:无官方预处理脚本、单标注者无一致性报告、图像尺寸不统一、类别严重不平衡
页面状态 published

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

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、六类切面的临床含义、产前筛查任务定义)、§7 偏倚分析。

数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(图像—元数据主键关系、患者编号与切面标签体系)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

审核方式:交叉审核

利益冲突声明:千方病案医数集与 BCNatal、IDIBAPS、Transmural Biotech S.L.、CIBER-ER 及 Zenodo 无任何商业利益关联。本页面不销售 FETAL_PLANES_DB 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。FETAL_PLANES_DB 以 CC BY 4.0 许可发布,允许署名后的商业与非商业再利用;HuggingFace 镜像版则要求申请访问并承诺不尝试重识别任何受试者。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 30 秒速览

FETAL_PLANES_DB(胎儿切面库) 是西班牙巴塞罗那 BCNatal 母胎与新生儿医学中心于 2020 年 6 月发布的公开母胎超声图像数据集,包含 12,400 张常规产科筛查中采集的二维超声切面图像,来自 1,792 名孕妇。每张图像被划分为 6 大类之一——胎儿腹部、胎儿脑、胎儿股骨、胎儿胸部、母体宫颈、其他;属于胎儿脑的图像再进一步细分为丘脑水平(TT)、小脑水平(TC)与侧脑室水平(TV)三个亚类。

为什么重要? 在它出现之前,胎儿超声的 AI 研究长期受困于"没有公开数据":超声图像涉及可识别的胎儿解剖与母体隐私,各家医院的数据无法共享,导致每篇论文都在自己的私有数据集上训练、在自己定义的切面上报告结果,互相无法比较。FETAL_PLANES_DB 是第一份规模足够大、标注协议清楚、且明确采用患者不重叠划分的开放胎儿超声数据集。它的原始论文(Burgos-Artizzu et al., 2020)第一次系统地证明:深度卷积网络在常见切面分类上可以做到与人类研究技师相当的水平(top-1 错误率 16.2%,准确率 0.94)。

我能用它做什么? 你可以用它训练切面自动识别模型(在阅片流程中自动归档切面)、验证新的视觉—语言基础模型的零样本能力、研究类别不平衡下的生成增强策略,或者把它当作迁移学习的起点。最常被引用的评测协议是"5 个标准切面"(排除 Other 大类),当前最优的 FetalCLIP 在零样本设定下达到 F1 97.3;脑切面三分类则困难得多,同一模型仅 70.2,这正是该数据集留给社区的开放难题。

§1.1 摘要

FETAL_PLANES_DB 由 Burgos-Artizzu 等人构建并于 2020 年发表,论文标题为《Evaluation of deep convolutional neural networks for automatic classification of common maternal fetal ultrasound planes》,刊于 Scientific Reports 第 10 卷 10200 号(DOI: 10.1038/s41598-020-67076-5)。研究团队来自 BCNatal(巴塞罗那母胎与新生儿医学中心)、Transmural Biotech S.L.、IDIBAPS 与 CIBER-ER,数据采集自两家同属 BCNatal 的医院——Hospital Clínic 与 Hospital Sant Joan de Déu。

数据集的设计目标非常明确:为"切面识别"这一产科超声 AI 的基础任务提供一个公开、标准化、可复现的评测场。作者从临床常规筛查流程中回顾性导出 12,400 张图像,覆盖多名超声操作员与多台不同型号的超声设备(设备多样性正是真实临床部署的核心挑战),随后由一名资深母胎医学专家逐张判读并赋予切面标签。标签体系采用两级结构:一级是 6 个粗类别,二级只针对胎儿脑进一步细分。数据集还保留了每张图像的采集元信息——患者编号、操作员编号、超声机型号,以及作者提供的训练/测试标志位。

数据以 CC BY 4.0 开放许可发布于 Zenodo(DOI: 10.5281/zenodo.3904280),压缩包 FETAL_PLANES_ZENODO.zip 大小 2.1 GB。作者提供的划分是患者不重叠的:训练集 9,923 张、测试集 2,477 张,比例约 80/20。2025 年前后,随着 FetalCLIP 等胎儿超声视觉—语言模型的兴起,该数据集从"监督分类基准"升级为"零样本评测基准",成为该领域最活跃的公开评测场之一。

§1.2 战略价值分析

开放化范式维度:医疗影像 AI 的进展高度依赖数据的可获得性,而超声恰恰是最难开放的一类模态——它不像 CT/MRI 有 DICOM 标准化的匿名化链路,超声图像常带有屏幕叠加的患者姓名与检查日期。FETAL_PLANES_DB 证明了产科超声可以做到合规开放:彻底去除屏幕信息、只保留无意义的患者流水号、以 CC BY 4.0 发布。这一步的象征意义远超其规模——它让胎儿超声第一次进入"可复现研究"的行列。npj Digital Medicine 2025 年的超声资源开放化综述在统计 56 个公开超声模型时,把 FETAL_PLANES_DB 列为核心基础数据集之一,可见其枢纽地位。

任务定义维度:该数据集确立了"常见切面分类"这一标准任务的评测口径。它不追求覆盖全部产科切面,而是聚焦日常筛查中最常归档、也最容易被自动化的 5 个标准切面,外加一个吞吐量最大的兜底类 Other。这个设计的临床直觉很清晰:切面识别是后续所有测量的前置步骤,只有先知道"现在看的是哪个切面",才能自动触发双顶径、股骨长、腹围等生物测量。同时,脑切面三分类(TT/TC/TV)被单独设为更难的任务,因为这三类在解剖上高度相似、仅在脑中线结构上存在差异——它成为衡量模型是否真正"理解"超声解剖的试金石。

基准推动维度:2025 年后,FETAL_PLANES_DB 的角色发生了关键转变。FetalCLIP(基于 ViT-L/14 的胎儿超声视觉—语言模型)在该数据集上给出了一套完整的零样本评测结果,其中 5 切面 F1 达 97.3,而脑切面仅 70.2,两者之间的巨大落差为社区提供了明确的研究方向。与此同时,监督学习基线 SonoNet-16 在相同协议下仅得 82.7,这种"监督模型被零样本基础模型大幅超越"的现象,正是基础模型时代评测基准最典型的叙事。

§1.3 同类数据集横向对比

数据集 规模 模态 标注粒度 划分方式 核心差异化
FETAL_PLANES_DB 12,400 张 / 1,792 名患者 二维超声切面 6 类粗切面 + 3 类脑细分 官方患者不重叠 80/20 首个大规模公开胎儿超声切面基准;含操作员与设备元数据
FetalCLIP 训练语料 约 21 万图文对(含本数据集) 二维超声 + 文本 图像—文本对齐 研究者自定义 提供视觉—语言预训练资源,非切面分类专用基准
HC18 1,334 张 二维超声(腹部横切) 像素级头围椭圆标注 官方划分 任务为头围测量而非切面识别;规模小得多
Fetal Brain Atlas 系列 数百至数千张 三维超声 / MRI 体素级分割 各异 面向脑结构分割,非切面分类,模态与任务均不同
MIMIC-III 不适用(EHR) 结构化临床数据 编码级 社区划分 提供对照:说明开放医疗数据的许可证与划分规范传统
ISIC / CheXpert 等 数万张 皮肤镜 / X 光 图像级诊断 官方或社区划分 同属"开放影像分类基准"范式,但为成人与病理标签,非正常解剖切面分类

FETAL_PLANES_DB 的不可替代性来自三点:(1)它是分类任务而非测量/分割任务,图像级标签使初学者可快速跑通第一个基线;(2)它保留了操作员与设备元数据,使"设备泛化"这一真实临床问题可被量化研究,这在同类数据集中罕见;(3)它的官方划分明确患者不重叠,直接切断了最常见的泄漏路径,使引用其数字的论文之间具有可比性。

§1.4 版本演进时间轴

时间 事件
2020-06-24 Burgos-Artizzu et al. 论文在线发表于 Scientific Reports(DOI: 10.1038/s41598-020-67076-5)
2020-06-23 Zenodo v1.0 首发:FETAL_PLANES_ZENODO.zip(2.1 GB,md5 2a5fcc2cefb789bcc0f6c1f73e0ea43f),DOI 10.5281/zenodo.3904280
2020 下半年起 论文被广泛引用,成为胎儿超声切面分类的事实标准基准
2022 监督学习基线体系成熟(SonoNet 系列结果被反复引用对照)
2024-2025 HuggingFace 多个镜像出现,提供 Parquet 格式与申请访问模式
2025 FetalCLIP 发布,将本数据集推向零样本评测基准地位;classifier-guided diffusion 类工作用它研究类别不平衡增强
2025 npj Digital Medicine 专文系统梳理该数据集被低估的六类偏倚
2026-03 FetalCLIP 零样本成绩被 SOTA 追踪站点收录为当前最优(5 切面 F1 97.3)

§1.5 典型 AI 应用场景

  1. 切面自动归档与阅片流程提速:产科超声检查中,技师需手动为每张冻结图像选择切面类型以便归档。切面分类模型可自动完成这一步,减少重复操作;这也是原始论文的直接应用动机。
  2. 胎儿超声基础模型预训练与评测:FetalCLIP 等视觉—语言模型把本数据集纳入预训练语料,并在其上报告零样本 5 切面与 3 脑切面指标,成为该领域标准评测之一。
  3. 类别不平衡与长尾学习研究:Other 类(4,213 张)与 Femur 类(1,040 张)之间约 4 倍的不平衡,使其成为研究重采样、重加权、生成增强(如 classifier-guided diffusion 合成图像)的天然试验场。
  4. 设备与操作员泛化研究:元数据中的 US_Machine 与 Operator 字段允许构造"跨设备"与"跨操作员"的分布外测试集,用于评估模型的真实部署稳健性。
  5. 迁移学习教学与医学影像入门:数据集规模适中(2.1 GB)、图像级标签、任务定义清晰,是医学影像课程中讲解数据划分、类别不平衡与评估指标的高频教学素材。

§2 医学背景

§2.1 ICD-11 疾病分类锚定

需要特别说明:FETAL_PLANES_DB 不是疾病数据集,而是正常解剖切面的分类数据集。其标签描述的是"这张超声图拍的是哪个解剖位置",而非"患者患有什么疾病"。因此在 ICD-11 体系中,对应的不是某个具体疾病编码,而是妊娠监督与产前筛查相关的类别。下表给出该数据集在临床流程中的 ICD-11 归属与对应关系。

数据集标签/场景 ICD-11 编码 中文名 与数据集的关系
产前超声筛查(整体场景) QA4Z 与妊娠监督有关的情况,未特指 数据集的采集场景;所有图像均来自常规产科筛查流程
胎儿解剖结构评估 JB6Z 胎儿或新生儿相关情况,未特指 Fetal Abdomen / Brain / Femur / Thorax 四类标签的临床归属
母体宫颈评估 GA7Z 女性生殖系统相关情况,未特指 Maternal Cervix 类的临床归属(宫颈长度测量用于早产风险评估)
胎儿生物测量 QA41 产前检查,未特指 股骨长、双顶径等测量的前置步骤即切面识别
早产风险评估 JB0Z / QA4Z 胎儿或妊娠相关情况 宫颈切面在临床上服务于早产风险分层
胎儿中枢神经系统评估 JB60 胎儿神经系统相关情况 三个脑切面亚类(TT/TC/TV)服务于脑结构系统筛查
非诊断性/非标准切面 — 无对应疾病编码 Other 类为兜底类别,标签本身不含任何临床诊断含义

上表的读法应当是:左列是数据集标签,右列是它在临床工作流中的位置,而非疾病诊断。任何把 FETAL_PLANES_DB 当作疾病分类数据集使用的尝试都是概念性错误——它既没有疾病标签,也没有随访结果。

§2.1b SNOMED CT 映射

标签 对应 ICD-11 SNOMED CT 码 术语
胎儿腹部切面(Fetal Abdomen) QA41 产前检查 60961000 / 18948006 Ultrasound scan of antenatal (procedure);Fetal abdominal circumference measurement
胎儿脑切面(Fetal Brain) JB60 胎儿神经系统相关情况 60961000 / 258319001 Fetal brain (body structure);Ultrasonography of fetal brain (procedure)
胎儿股骨切面(Fetal Femur) QA41 产前检查 17533008 / 20733006 Fetal biometry (procedure);Femur length measurement (procedure)
胎儿胸部切面(Fetal Thorax) QA41 产前检查 45051004 / 38009004 Ultrasonography of fetus (procedure);Fetal thorax (body structure)
母体宫颈切面(Maternal Cervix) GA7Z 女性生殖系统相关情况 268445003 / 71252005 Ultrasound scan of antenatal (procedure);Cervix uteri structure
其他 / 非标准切面(Other) — — 无对应临床术语;该类别在术语体系中无独立概念
脑切面—丘脑水平(TT) JB60 258319001 Trans-thalamic plane(丘脑与第三脑室对称显示的轴位切面)
脑切面—小脑水平(TC) JB60 258319001 Trans-cerebellum plane(小脑横径与后颅窝池的轴位切面)
脑切面—侧脑室水平(TV) JB60 258319001 Trans-ventricular plane(用于侧脑室宽度测量的轴位切面)

§2.2 医学背景与流行病学

产科超声是妊娠期最普遍的影像检查手段,几乎所有孕妇在孕中期都会接受一次系统性胎儿解剖筛查(通常在孕 18-22 周),并在孕晚期接受生长评估。在整个筛查流程中,技师需要依次获取一系列标准切面——每个切面都对应特定的解剖平面与固定的测量项。切面识别因此成为产科超声自动化的第一块基石:无论后续要做头围测量、股骨长测量还是羊水量估计,系统都必须先知道当前图像属于哪个切面。

从流行病学角度看,全球每年约有 1.3 亿次以上的活产分娩,按规范产前筛查计算,每年产生的产科超声图像数量在十亿量级。这与公开数据集的规模形成了极端反差——在 FETAL_PLANES_DB 发布之前,公开可用的胎儿超声切面数据集基本不存在。数据集的构建设计也反映了这一现实:它并不试图覆盖罕见病理,而是要先解决"常见切面的自动识别"这个最大公约数问题。

在临床失效模式方面,切面误分类的后果并非"误诊",而是测量错位——把股骨切面误判为腹部切面会触发错误的腹围测量流程,产出不可信的生长评估值。这解释了为什么该数据集的评测指标强调遗漏率与多切面协同:在真实工作流中,真正的风险不是"把 A 切成 B 切",而是一张图完全没有被正确纳入任何预期切面序列。

§2.3 临床任务定义

任务层级 任务定义 数据集中的对应标签 输入 输出
切面识别(筛查前置) 判断当前冻结图像属于哪一类标准切面 Plane 字段 6 类 单张二维超声图像 6 类之一
脑切面细分(解剖精判) 在确认是胎儿脑切面的前提下判断具体水平 Brain_plane 字段(TT / TC / TV) 单张胎儿脑切面图像 3 亚类之一
兜底/拒识 判断图像不属于任何标准切面 Other / Not A Brain 单张图像 兜底类
分诊与流程编排(下游) 依据切面序列判断筛查是否完整、缺哪些切面 由上述标签序列导出 一次检查的全部图像 缺失切面清单
生物测量(下游,非本数据集任务) 在正确切面上测量双顶径、股骨长等 无标注(本数据集不含测量值) 已识别切面图像 毫米级测量值

需要强调的边界:FETAL_PLANES_DB 只支持前三个任务层级。它不提供测量值、不提供妊娠结局、不提供是否异常,因此无法直接用于诊断、分级或预后任务。把切面分类结果包装成"胎儿健康评估"是对数据集能力的越界使用。

§2.4 患者人群特征

维度 特征
数据来源 西班牙巴塞罗那两家医院(Hospital Clínic 与 Hospital Sant Joan de Déu,同属 BCNatal)
采集时间 论文发表于 2020 年,属回顾性采集的常规筛查图像
患者规模 1,792 名孕妇
年龄与性别 均为妊娠期女性;具体年龄分布未在数据集中提供
孕周范围 主要为妊娠中晚期(第二、第三孕期);不含早孕期
妊娠类型 未纳入双胎妊娠
种族构成 数据集未提供种族或族裔字段
就医类型 常规产科筛查(非高危专病门诊)
操作员 多名超声操作员,操作员编号保留在元数据中
设备 多台不同型号超声机,设备型号保留在元数据中
机构数量 2 家(多中心但同城同体系)

这一人群构成的临床含义是:模型学到的是"巴塞罗那两家医院孕期中晚期常规筛查人群的切面外观"。将其外推到早孕期、双胎妊娠或其他地域的设备与扫查习惯上,缺乏证据支撑。

§2.5 临床价值

FETAL_PLANES_DB 的临床价值不体现在"用它训练的模型能诊断什么",而在于它为三个具体环节提供了可行性证据:

  1. 阅片流程的自动化归档:一次中孕期系统筛查通常冻结 30-60 张图像,技师需逐张选择切面类型以便存储归档。原始论文证明模型在该环节可达与人类研究技师相当的水平,意味着归档步骤具备自动化的技术前提。
  2. 质量控制与筛查完整性核查:切面被自动识别后,系统可统计一次检查是否覆盖规定的切面清单,提示"本次检查缺少侧脑室切面"这类流程质量信号。这属于过程质量指标,不涉及诊断,落地监管门槛相对较低。
  3. 跨设备一致性的量化:数据集保留设备型号与操作员编号,可量化"同一切面在不同超声机上的模型表现差异",这是评估算法能否多院区部署的关键证据,也是过去缺乏公开数据时无法开展的实证研究。

§2.6 金标准定义

维度 内容
划分金标准 作者提供的患者不重叠 train/test 划分(Train 列:1 = 训练,0 = 测试),训练 9,923 张、测试 2,477 张
标注方式 人工判读,逐张图像由专家赋予切面标签
标注者 一名资深母胎医学专家(B. Valenzuela-Alcaraz, B.V-A.),属论文作者之一
标注者资质 母胎医学专科医师,具备临床超声判读资质
一致性评估 数据集未报告标注者间一致性(单标注者设计,无法计算 kappa)
标签层级 两级:Plane(6 类粗标签)+ Brain_plane(脑切面 3 亚类 + 兜底)
标签性质 解剖切面类别,非诊断标签;不涉及疾病、严重度或结局
元信息 Patient_num、Operator、US_Machine、Train 四个字段由采集系统与作者整理提供
划分泄漏防护 划分以患者为单位,同一患者的图像不会同时出现在训练集与测试集

§3 数据集规格

§3.0 版本抉择矩阵

FETAL_PLANES_DB 官方只有一个版本(Zenodo v1.0, 2020-06-23),但社区存在多个镜像与派生版本,格式、访问门槛与划分方式不同。下表帮助你在动手前做出正确选择。

你的需求 推荐版本 大小 理由
复现论文、做严格可比基准 Zenodo 官方 v1.0(FETAL_PLANES_ZENODO.zip) 2.1 GB 唯一权威来源,含官方 Train 划分列与完整元数据,md5 可校验
快速原型、免下载解压 HuggingFace 镜像 shr3m/fetal-planes-db 约 2.09 GB(Parquet) 一行 load_dataset 加载,但需申请访问,且划分列语义需自行核对
需要与论文逐一比对的分类实验 Zenodo 官方包 → 自行转 Parquet 2.1 GB 镜像可能改变图像编码与尺寸,转换过程不可见
只想要一个轻量小样本子集 HuggingFace 派生集 qingyuyang/Fetal_Planes_DB 571 MB 仅 2,949 行,适合教学演示;但许可证标为 openrail 且规模与原版不符,不可用于正式基准对比
需要与 FetalCLIP 结果对齐 Zenodo 官方包 + FetalCLIP 官方评测脚本 2.1 GB FetalCLIP 论文使用官方 5 切面协议与官方划分,镜像切分会破坏可比性
需要中文文档与完整字段字典 本页 §4 与 §6 — 官方无中文文档,本页提供完整字段字典与可运行 Pipeline

关键警告:不同镜像的 split 计数差异巨大。官方划分为 train 9,923 / test 2,477,而某些镜像给出 train 6,046 / validation 1,083 / test 5,271 的三分结构——这是镜像作者的二次切分,并非官方划分,且可能破坏患者不重叠约束。任何需要与已发表结果比较的实验,都必须使用官方 Train 列。

§3.1 模态详情

维度 内容
成像模态 二维灰阶超声(B 模式,Brightness mode)
扫查方式 经腹扫查(transabdominal),产科筛查常规路径
图像类型 单帧静态冻结图像(非视频、非多普勒、非三维/四维重建)
图像色彩 灰阶单通道为主;部分图像可能含少量彩色标注像素,需统一转灰度
空间分辨率 原始分辨率不一致,HuggingFace 镜像观察到的宽度多在约 640 px 档
图像宽高比 多数为非正方形(宽高比随机器设置与扫查方向变化)
附带元数据 CSV 表格:图像文件名、患者编号、切面标签、脑切面子标签、操作员、设备、划分标志
缺失模态 无多普勒血流、无 M 型、无三维容积、无弹性成像

§3.2 按子集样本数分布

六类粗切面分布(全数据集,按标签类别)

切面类别 图像数 占比 训练集 测试集
Fetal Abdomen(胎儿腹部) 711 5.7% 569 142
Fetal Brain(胎儿脑) 3,092 24.9% 2,474 618
Fetal Femur(胎儿股骨) 1,040 8.4% 833 207
Fetal Thorax(胎儿胸部) 1,718 13.9% 1,375 343
Maternal Cervix(母体宫颈) 1,626 13.1% 1,301 325
Other(其他/非标准) 4,213 34.0% 3,371 842
合计 12,400 100% 9,923 2,477

脑切面三分类分布

脑切面亚类 含义 说明
Trans-thalamic(TT) 丘脑水平轴位切面 用于双顶径与头围测量;显示丘脑与第三脑室
Trans-cerebellum(TC) 小脑水平轴位切面 显示小脑横径与后颅窝池;用于小脑发育评估
Trans-ventricular(TV) 侧脑室水平轴位切面 用于侧脑室宽度测量,是脑室扩大的筛查切面
Other / Not A Brain 脑类图像中的非上述三类者 兜底标签,FetalCLIP 等基准将其排除后只评三类

评测协议差异说明:常见评测口径有三种——「6 类协议」(全类别,含 Other,评估完整分类能力)、「5 切面协议」(排除 Other,只评 5 个标准切面,是 FetalCLIP 与多数零样本工作采用的协议)、「3 脑切面协议」(只在胎儿脑图像内评 TT/TC/TV,难度最高)。三种协议的数字不可互相比较,引用时必须注明。

§3.3 数据格式

内容 官方格式 镜像格式 说明
图像 PNG(24 位 RGB) Parquet(内嵌 bytes) PNG 无损,便于校验;Parquet 便于流式读取
元数据 CSV(FETAL_PLANES_DB_data.csv) Parquet 表 / Datasets 特征 列名与语义以官方 CSV 为准
打包方式 单个 ZIP(FETAL_PLANES_ZENODO.zip) 分片 Parquet 官方包 md5 为 2a5fcc2cefb789bcc0f6c1f73e0ea43f
编码注意 部分图像为调色板模式或含 alpha 通道,读取后应统一 convert('RGB') 同左 直接 imread 可能得到 4 通道,导致通道数不一致报错

§3.4 存储大小

版本 大小 备注
Zenodo 官方 ZIP 2.1 GB FETAL_PLANES_ZENODO.zip,含全部图像与 CSV
Zenodo 解压后 约 2.3-2.6 GB PNG 解压后略有膨胀,取决于文件系统块大小
HuggingFace 镜像(shr3m) 约 2.09 GB Parquet 编码,与官方包体积基本一致
HuggingFace 镜像(Marc-HealthAI) 2.09 GB 同源镜像,文件总大小报告一致
派生小子集(qingyuyang) 571 MB 仅 2,949 行,非完整数据集

本地开发建议预留 6 GB 以上磁盘:原始包 2.1 GB + 解压约 2.5 GB + 预处理缓存(正方形 padding 后统一缩放)约 1-1.5 GB。

§3.5 标注方式

维度 内容
标注类型 图像级分类标签(非分割、非检测、非测量)
标注流程 专家逐张判读临床超声图像,赋予切面类别;脑切面额外赋予水平细分标签
标注来源 人工专家标注(非众包、非自动、非弱监督)
标签层级 一级:Plane(6 类);二级:Brain_plane(仅对胎儿脑图像)
兜底机制 Other 类用于收纳所有不属于 5 个标准切面的图像;Brain_plane 中的 Not A Brain 用于收纳脑类内部不符合三个水平的图像
标注深度限制 无病灶标注、无解剖标志点、无测量值、无妊娠结局

这一标注设计的直接后果是:它能回答"这是什么切面",但不能回答"这个切面是否正常"。数据集中不存在任何阳性/阴性概念,因此基于它训练的模型在临床语义上等价于一个图像归档器,而非诊断器。

§3.6 标注者资质与一致性

维度 内容
标注者数量 1 名
标注者身份 B. Valenzuela-Alcaraz(B.V-A.),资深母胎医学专家,论文合著者
资质评估 母胎医学专科资质,具备临床超声判读与生物测量能力
标注者间一致性 未报告(单标注者设计下无法计算 Cohen’s kappa 或 Fleiss kappa)
标注者内一致性 未报告(无重复标注实验)
对下游的影响 模型学到的决策边界等同于这一位专家的判读习惯;不同专家对边界切面(如非标准视角的脑切面是否算 TV)的判定可能存在系统差异
缓解建议 若研究对标签可靠性敏感,应抽样引入第二位专家对测试集重新标注,报告一致性后再解读模型误差

这是该数据集被引最多的批评之一。npj Digital Medicine 2025 年的偏倚分析专文把"单一标注者"明确列为标签偏倚来源,并指出缺少一致性估计使读者无法判断误差上限。

§3.7 采集周期与地域覆盖

维度 内容
采集性质 回顾性(retrospective),取自常规临床筛查流程
采集时间 论文 2020 年发表,图像采集于其前的临床常规检查
发布节奏 单次发布(2020-06-23, v1.0),无滚动更新
地域范围 西班牙加泰罗尼亚自治区巴塞罗那市
机构数量 2 家医院(Hospital Clínic、Hospital Sant Joan de Déu),同属 BCNatal 体系
多中心性质 属"同城同一医疗体系内的多中心",非跨地域、跨国家多中心
时间跨度 数据集未提供每张图像的采集日期(已去除,属脱敏的一部分)

重要提示:由于采集日期被移除,FETAL_PLANES_DB 无法支持任何时间趋势分析。若研究需要考察"不同年份的设备或流程变化对切面图像的影响",本数据集无法提供证据。

§3.8 设备与操作员多样性

元数据字段 用途 对研究的意义
US_Machine 记录采集该图像所用超声机型号 可构造跨设备泛化实验:用设备 A 训练、在设备 B 上测试,量化真实部署风险
Operator 记录执行扫查的操作员编号 可构造跨操作员实验,评估模型对手法的敏感性
Patient_num 患者流水号(研究内部编号) 实现患者不重叠划分的唯一依据;也是防泄漏的关键字段
Train 官方划分标志位(1 = 训练,0 = 测试) 直接可用,无需自行切分

设备与操作员多样性是本数据集相对多数医学影像公开数据集的一大优势。多数数据集只发布图像与标签,学术上无法回答"模型换台机器还能用吗"这个工程上最要紧的问题;本数据集保留了这两个字段,使得设备多样性偏倚从不可观测变为可量化。

§3.9 深度溯源链

层级 内容
原始来源 两家 BCNatal 医院临床超声机的常规筛查存档
导出环节 从临床设备导出图像,去除屏幕叠加信息(姓名、日期、机构标识等)
脱敏环节 图像去标识化;患者以研究内部编号 Patient_num 替代真实身份
标注环节 单名资深母胎医学专家逐张判读赋予切面标签与脑切面细分
元数据整理 汇总操作员、设备、患者编号与划分标志为 CSV
发布环节 打包为 FETAL_PLANES_ZENODO.zip 上传 Zenodo,DOI 10.5281/zenodo.3904280
许可环节 CC BY 4.0(署名即可再分发与再利用)
资金支持 Transmural Biotech SL、LaCaixa、ISCIII、Cerebra Foundation、Cellex Foundation、AGAUR
衍生链 HuggingFace 镜像(shr3m、Marc-HealthAI)与派生小子集(qingyuyang)等第三方再分发

§4 数据结构详解

§4.0 目录树

解压 FETAL_PLANES_ZENODO.zip 后得到如下结构(本页基于官方 Zenodo 包与公开镜像整理):

FETAL_PLANES_ZENODO/
├── FETAL_PLANES_DB_data.csv          # 主元数据表:每行 = 一张图像
├── Images/                            # 12,400 张 PNG 灰度超声图像
│   ├── 00001_Plane1_...png
│   ├── 00002_Plane1_...png
│   └── ...                            # 文件名前缀为患者序号,便于按患者分组
└── README / 说明文件                   # 标签体系与字段说明

HuggingFace 镜像结构(shr3m/fetal-planes-db):train/*.parquet + test/*.parquet
派生小子集结构(qingyuyang/Fetal_Planes_DB):2,949 行 Parquet,非完整数据集

目录结构要点:图像文件名以患者序号为前缀,可直接用文件名做分组划分。但注意不要只按文件名字符串切分(如取前 1,000 个文件做测试集)——同一患者的文件会连续编号,那样切分将导致严重的患者泄漏(见 §6.5 坑点 1)。

§4.1 DAIMS 字段字典

主表:FETAL_PLANES_DB_data.csv(每行 = 一张超声图像)

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
Image_name string 图像文件名,与 Images/ 目录下的 PNG 一一对应 00001_Plane1.png 图像加载的索引键;连接 CSV 与图像的唯一桥梁 无误差,但文件扩展名或路径大小写在不同镜像中可能不同 无缺失(必填) 12,400 个唯一值
Patient_num integer 患者研究内部流水号 1、2、1842 分组划分的关键字段:GroupKFold 与患者不重叠切分必须使用 无测量误差;同一患者多次检查可能共享编号,也可能因检查次数不同而变化 无缺失(必填) 1 ~ 1,792(1,792 名患者)
Plane categorical 一级切面标签,6 类 Fetal brain、Maternal cervix 主任务监督信号(6 分类) 单标注者判读;边界切面存在主观判定空间,无一致性估计 无缺失;非标准图像归入 Other 而非留空 Fetal abdomen / Fetal brain / Fetal femur / Fetal thorax / Maternal cervix / Other
Brain_plane categorical 二级标签,仅对胎儿脑图像有意义 Trans-thalamic、Other、Not A Brain 脑切面三分类任务的监督信号 三个水平之间解剖差异细微(丘脑/小脑/侧脑室),是争议最大的标签 非脑图像的该字段无意义或为占位取值,不可在非脑子集上直接统计 Trans-thalamic / Trans-cerebellum / Trans-ventricular / Other / Not A Brain
Operator string 执行超声扫查的操作员编号 Op1、Op2 构造跨操作员分布外测试;分析模型对手法的敏感性 仅记录"谁扫查",不记录操作员经验年限或扫查时长 可能缺失或标注为未知 多个操作员编号
US_Machine string 采集所用超声设备型号 具体机型编号或名称 构造跨设备泛化实验;绘制设备分层性能曲线 仅记录型号,不记录探头参数、增益、频率等采集设置 可能缺失或标注为未知 多台不同型号超声机
Train binary integer 官方划分标志位:1 = 训练集,0 = 测试集 1、0 直接复用官方划分,避免自行切分引入泄漏 无误差;划分本身以患者为单位,已做不重叠处理 无缺失(必填) {0, 1},0 计 2,477 张,1 计 9,923 张

字段间的层级关系:Patient_num 是一级实体(患者),Image_name 是二级实体(图像),Plane 与 Brain_plane 是图像的属性,Operator 与 US_Machine 是采集会话的属性(同一患者的多张图像通常共享同一操作员与设备),Train 是患者级属性(同一患者的全部图像划入同一侧)。

§4.2 标签分布

一级标签分布与不平衡度

类别 图像数 占比 相对最小类倍数 官方训练/测试
Other 4,213 34.0% 5.9× 3,371 / 842
Fetal Brain 3,092 24.9% 4.3× 2,474 / 618
Fetal Thorax 1,718 13.9% 2.4× 1,375 / 343
Maternal Cervix 1,626 13.1% 2.3× 1,301 / 325
Fetal Femur 1,040 8.4% 1.5× 833 / 207
Fetal Abdomen 711 5.7% 1.0×(最小类) 569 / 142

不平衡的三个层次:(1)兜底类 Other 独占三分之一,如果按 6 类训练而不处理,"把所有图都判成 Other"就能拿到 34% 的准确率;(2)脑类被显著过代表,是胎儿股骨类的近 3 倍;(3)胎儿腹部类样本最少,且它是腹围测量的入口切面,临床重要性不低。这种"临床重要但不平衡"的组合,是本数据集最典型的建模难点。

二级标签分布特点:脑切面三分类中,Trans-thalamic 类因同时服务于双顶径与头围两项测量,样本量通常最大;Trans-ventricular 类因只在特定情况下才专门采集,样本最少。而 Brain_plane 中的 Other 与 Not A Brain 两个兜底标签进一步稀释了有效监督信号。

§4.3 关键统计

统计项 数值
图像总数 12,400 张
患者总数 1,792 名
平均每名患者图像数 约 6.9 张
一级类别数 6
二级类别数 5(含两个兜底标签)
官方训练集图像数 9,923 张(约 80.0%)
官方测试集图像数 2,477 张(约 20.0%)
包体积 2.1 GB(ZIP)
平均单张图像体积 约 170 KB(2.1 GB ÷ 12,400,含压缩开销)
最大类与最小类比例 约 5.9 : 1(Other vs Fetal Abdomen)
图像色彩通道 3(RGB 存储;内容为灰阶)

§4.4 数据层级

患者层级(1,792 名)
  Patient_num = 42
   ├── 检查/会话(通常 1 次筛查,采集时间未提供)
   │    ├── 元信息:Operator = Op3, US_Machine = Machine-A
   │    ├── 图像 42_Plane1.png → Plane = Fetal brain,  Brain_plane = Trans-thalamic
   │    ├── 图像 42_Plane2.png → Plane = Fetal brain,  Brain_plane = Trans-ventricular
   │    ├── 图像 42_Plane3.png → Plane = Fetal femur,  Brain_plane = (无意义)
   │    ├── 图像 42_Plane4.png → Plane = Fetal thorax, Brain_plane = (无意义)
   │    └── 图像 42_Plane5.png → Plane = Other,        Brain_plane = (无意义)
   └── 划分归属:Train = 1(该患者全部图像均进入训练集,不跨侧)

四层结构的工程含义:

  1. 患者层是划分的最小单位,任何划分操作必须在患者层完成。
  2. 会话层承载 Operator 与 US_Machine,是分析设备/操作员效应的层级。
  3. 图像层是模型的实际输入样本,标签在此层附着。
  4. 像素层承载图像本体,尺寸不统一,需在预处理阶段统一。

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

FETAL_PLANES_DB 没有传统意义上的 NULL 单元格——它是一个"齐整"的图像分类表格。但它存在另一种更隐蔽的缺失:语义层面的缺失与结构化编码的缺失。下表逐项列出。

缺失维度 表现形式 是否信息性 处理建议
妊娠结局 数据集中完全不存在出生结局、出生体重、是否畸形等字段 是——该数据集的定位即"切面识别"而非结局预测 明确研究问题不涉及结局;需要结局时改用其他数据源
孕周信息 无孕周或末次月经字段 是——无法做孕周分层 若需分层,只能通过外部临床记录补充,公开包内无法实现
采集日期 已脱敏移除 是——无法做时间趋势分析 接受此限制;需要时间维度的研究换用带时间戳的院内数据
母体人口学 无年龄、BMI、民族、产次等字段 是——无法做公平性亚组分析 公平性分析只能退化为按设备/操作员分层
图像质量评分 无清晰度、增益、声影遮挡等质量标签 是——模型可能学到质量伪影而非解剖 自行引入质量评估模型做分层分析(见 §6.5 坑点 7)
Brain_plane(非脑图像) 非脑图像该列无实际意义 是——逗号分隔或占位取值不属于真实标签 必须在 Plane == Fetal brain 的子集上使用该字段,否则引入标签噪声
Operator / US_Machine 的未知值 可能以非标准字符串表示未知 视情况 统一映射为显式的 “unknown” 类别而非丢弃,避免引入选择偏倚
Other 类 不是缺失,而是有意的兜底编码 是——Other 的存在本身携带信息(“这张图不是标准切面”) 不要当作待清理的脏数据;在 5 切面协议中明确排除并说明

"Other 类不是缺失值"这一点必须强调。初学者最常见的错误是把 Other 当成"没标注好的数据"直接删掉或合并到其他类,这等价于把 34% 的样本从"非标准切面"概念中抹去,训练出的模型在真实阅片流程中会把任何图像都强行判成 5 个标准切面之一,丧失拒识能力。


§5 数据划分与使用建议

§5.1 官方划分

维度 内容
划分字段 CSV 中的 Train 列:1 = 训练集,0 = 测试集
划分单位 患者(Patient_num),同一患者的所有图像只出现在一侧
训练集规模 9,923 张
测试集规模 2,477 张
划分比例 约 80% / 20%
是否分层 报告为随机划分;各类的训练/测试比基本接近 80/20
验证集 官方未提供——需研究者自行从训练集内切分(必须按 Patient_num 分组)
使用建议 直接读取 Train 列,不要自行重新随机切分

按类别看官方划分的细节(训练/测试):Fetal Abdomen 569 / 142、Fetal Brain 2,474 / 618、Fetal Femur 833 / 207、Fetal Thorax 1,375 / 343、Maternal Cervix 1,301 / 325、Other 3,371 / 842。可以看到测试集保留了各类别的覆盖,最小类也有 142 张测试样本,可供稳定的指标估计。

§5.2 社区惯例划分

划分方案 构成 使用场景 注意事项
官方划分 train 9,923 / test 2,477 与论文及 FetalCLIP 等结果对比 唯一可用于跨论文比较的方案
官方划分 + 训练集内分组交叉验证 5 折 GroupKFold(groups = Patient_num) 超参数调优、模型选择 折内不得跨患者,切勿用普通 KFold
镜像三分划分 train 6,046 / validation 1,083 / test 5,271 镜像作者的二次切分 测试集占比高达 43%,非官方比例,与已发表数字不可比
派生小子集切分 2,949 行(qingyuyang 派生) 教学演示 规模与原版不符,不可用于正式基准

§5.3 划分策略建议与泄漏风险

必须遵守的一条铁律:任何重新划分都必须在 Patient_num 层进行。原因是同一名患者的多次采集图像之间高度相似——同一台机器、同一操作员、相似孕周、相近的解剖外观。如果按图像随机切分,同一患者的图像会同时出现在训练与测试两侧,模型只需记住"这张图我见过"就能取得虚高成绩。

泄漏类型 产生原因 症状 防护
患者泄漏 按图像随机切分,忽略 Patient_num 测试集准确率显著高于预期,与官方划分结果差距大(可达 5-15 个百分点) 使用 GroupShuffleSplit 或 GroupKFold(groups = Patient_num)
文件名泄漏 直接按文件名排序切分(如前 10,000 个训练、其余测试) 同一患者的连续编号文件被切到两侧 按患者编号分组后再切分
设备泄漏 设备分布不均衡,某型号只出现在测试集 换用某设备时性能骤降,误判为"模型泛化差" 分层时把 US_Machine 作为分层变量检查
标签泄漏 从图像文件名直接解析出切面标签(若文件名含 Plane 字样) 训练集准确率极高(近 100%)但测试集异常低 加载时只取图像内容,标签一律从 CSV 读取
预处理泄漏 在全体数据(含测试集)上统计均值方差做归一化或拟合增强参数 结果偏乐观,且随随机种子波动大 统计量只在训练集上计算,再应用于测试集
重复图像泄漏 数据集内存在近重复图像(同一检查中连续采集)被切到两侧 测试集出现"似曾相识"样本,指标虚高 划分前做感知哈希(pHash)近重复检测

§5.4 交叉验证建议

对于本数据集,推荐做法是:

  1. 主实验:使用官方划分,报 test 指标,与文献对齐。
  2. 模型选择:在官方训练集内部做 5 折 GroupKFold(groups = Patient_num),用交叉验证的均值作为选型依据,绝不接触官方测试集。
  3. 报告规范:同时报告"官方测试集指标"与"交叉验证均值的标准差",让读者判断结果稳健性。
  4. 少样本类处理:Fetal Abdomen 类在训练集中只有 569 张,5 折后每折约 455 张训练、114 张验证,仍可支撑稳定估计;但若改成 10 折,验证折内该类可能不足百张,指标方差会明显增大。

§5.5 外部验证建议

由于本数据集的地域、孕期与人群高度受限(西班牙两院、中晚孕期、无病理、无双胎),任何声称"可用于临床"的模型都必须经过外部验证。建议的验证层级:

验证层级 建议数据来源 验证目标
跨机构 其他医院自采的产科筛查切面集 检验模型是否依赖巴塞罗那两院的设备与扫查习惯
跨设备 本数据集内按 US_Machine 分层做留一设备测试 零成本方案,可直接从元数据构造
跨孕期 早孕期(11-14 周)颈项透明层检查切面集 检验第一孕期泛化,当前证据明确不足
跨人群 不同地域与族裔队列 检验解剖外观差异对模型的影响
跨妊娠类型 含双胎妊娠的队列 本数据集完全不含双胎,属已知盲区
前瞻性 部署环境中的连续病例 检验真实工作流中的分布漂移与拒识行为

§6 AI 就绪指南

§6.0 云端快速启动

若不想在本地下载 2.1 GB 数据,可选择以下路径之一:

路径 方式 适用场景 注意
HuggingFace Datasets 加载 load_dataset('shr3m/fetal-planes-db') 快速原型、Colab 免费额度 需先申请访问(gated);split 语义需自行核对
Zenodo 直链 + 云端临时盘 wget 官方 ZIP 到实例本地盘 Kaggle / Colab 高内存实例 解压需额外 2.5 GB 空间
派生小子集 571 MB 的 2,949 行版本 教学演示、流程打通用 规模不符原版,结果不可发表
本页 §6.4 的 Dataset 类 本地路径加载 严肃实验、需要完全控制预处理 推荐用于论文级实验

§6.1 快速上手

# ============================================================
# 目录结构预期(下载并解压官方包后):
#   data_root/
#   ├── FETAL_PLANES_DB_data.csv
#   └── Images/
#       ├── 00001_Plane1.png
#       └── ...
#
# data_root 拼接关系:
#   csv_path  = f"{data_root}/FETAL_PLANES_DB_data.csv"
#   image_dir = f"{data_root}/Images"
#   图像绝对路径 = os.path.join(image_dir, row["Image_name"])
#   ⚠️ Image_name 列已含 .png 扩展名,不要再手动拼接后缀
#
# 最小可用子集:只取 Plane == "Fetal brain" 的 3,092 张,
#   即可在几分钟内跑通一个 3 分类基线(TT / TC / TV)。
# ============================================================

import os
import pandas as pd
from PIL import Image

DATA_ROOT = "data_root"          # ← 改成你的解压目录
csv_path = os.path.join(DATA_ROOT, "FETAL_PLANES_DB_data.csv")
image_dir = os.path.join(DATA_ROOT, "Images")

df = pd.read_csv(csv_path)
print(df.shape)                  # 预期 (12400, 7)
print(df["Plane"].value_counts())
print(df["Train"].value_counts())  # 预期 1: 9923, 0: 2477

# 抽查一张图像,确认路径拼接正确
row = df.iloc[0]
img_path = os.path.join(image_dir, row["Image_name"])
img = Image.open(img_path).convert("RGB")   # 统一 3 通道,防止 4 通道报错
print(row["Image_name"], row["Plane"], img.size)   # img.size 通常非正方形

# 快速验证官方划分确实按患者不重叠
train_ids = set(df.loc[df["Train"] == 1, "Patient_num"])
test_ids = set(df.loc[df["Train"] == 0, "Patient_num"])
assert len(train_ids & test_ids) == 0, "官方划分存在患者重叠!"
print(f"训练患者 {len(train_ids)} / 测试患者 {len(test_ids)},无重叠 ✅")

§6.2 数据获取

渠道 链接 大小 访问方式
Zenodo 官方(推荐) https://zenodo.org/records/3904280 2.1 GB CC BY 4.0,直接下载,无需注册
HuggingFace 镜像 shr3m https://huggingface.co/datasets/shr3m/fetal-planes-db 约 2.09 GB 需登录并申请访问(Gated),承诺不重识别
HuggingFace 镜像 Marc-HealthAI https://huggingface.co/datasets/Marc-HealthAI/fetal-planes-classification-dataset-main 2.09 GB 公开镜像
派生小子集 qingyuyang https://huggingface.co/datasets/qingyuyang/Fetal_Planes_DB 571 MB 公开;2,949 行,仅供演示
# 方式一:Zenodo 官方包(无需注册)
wget https://zenodo.org/records/3904280/files/FETAL_PLANES_ZENODO.zip
# 校验完整性:md5 应为 2a5fcc2cefb789bcc0f6c1f73e0ea43f
md5sum FETAL_PLANES_ZENODO.zip
unzip FETAL_PLANES_ZENODO.zip -d data_root

# 方式二:HuggingFace 镜像(需先获得访问授权并配置 token)
pip install -q datasets huggingface_hub
huggingface-cli login          # 粘贴你的 HF token
python -c "
from datasets import load_dataset
ds = load_dataset('shr3m/fetal-planes-db')
print(ds)
"

授权与合规要点:Zenodo 版为 CC BY 4.0,署名即可使用,包括商业用途;HuggingFace 镜像版要求申请访问,并在条款中约定不尝试重识别任何受试者。无论走哪条路径,都应在论文中引用原始论文(DOI: 10.1038/s41598-020-67076-5)与数据集 DOI(10.5281/zenodo.3904280)。

§6.3 预处理全流程

完整的预处理链条为:读取 → 通道统一 → 去边框/去标注 → 正方形 padding → 缩放 → 灰度归一化 → 划分复用。其中"正方形 padding 而非直接拉伸"是本数据集最关键的一条(见 §6.5 坑点 3)。

# ============================================================
# 预处理全流程(可运行)
# 依赖:pip install pandas pillow numpy tqdm
# 输入:data_root/(官方解压目录)
# 输出:processed/ 下的统一尺寸 .npy 缓存 + 划分索引 CSV
# ============================================================

import os
import numpy as np
import pandas as pd
from PIL import Image
from tqdm import tqdm

DATA_ROOT = "data_root"
OUT_DIR = "processed"
IMG_SIZE = 224          # 与 ViT/ResNet 常用输入一致;FetalCLIP 使用 224
os.makedirs(OUT_DIR, exist_ok=True)

df = pd.read_csv(os.path.join(DATA_ROOT, "FETAL_PLANES_DB_data.csv"))

# ---- 步骤 1:标签编码与任务协议选择 ----
PLANE6 = ["Fetal abdomen", "Fetal brain", "Fetal femur",
          "Fetal thorax", "Maternal cervix", "Other"]
BRAIN3 = ["Trans-thalamic", "Trans-cerebellum", "Trans-ventricular"]

plane2idx = {p: i for i, p in enumerate(PLANE6)}
brain2idx = {b: i for i, b in enumerate(BRAIN3)}

# 6 类主任务标签
df["label6"] = df["Plane"].map(plane2idx)
assert df["label6"].notna().all(), "存在未映射的 Plane 取值,请检查标签字符串"

# 5 切面协议:排除 Other
df["is_standard"] = (df["Plane"] != "Other").astype(int)

# 3 脑切面协议:仅在 Plane == Fetal brain 且 Brain_plane 属于三类时有效
df["label3"] = df["Brain_plane"].map(brain2idx)      # 非三类为 NaN
df["is_brain3"] = df["label3"].notna().astype(int)

print("6 类分布:\n", df["label6"].value_counts().sort_index())
print("3 脑切面有效样本:", int(df["is_brain3"].sum()))


def to_square(img: Image.Image, size: int = IMG_SIZE, pad_value: int = 0) -> Image.Image:
    """先按长边等比缩放,再零填充为正方形 —— 禁止直接 resize 拉伸。"""
    w, h = img.size
    scale = size / max(w, h)
    new_w, new_h = max(1, int(round(w * scale))), max(1, int(round(h * scale)))
    img = img.resize((new_w, new_h), Image.BILINEAR)
    canvas = Image.new("L", (size, size), color=pad_value)
    canvas.paste(img, ((size - new_w) // 2, (size - new_h) // 2))
    return canvas


def load_and_process(name: str) -> np.ndarray:
    path = os.path.join(DATA_ROOT, "Images", name)
    img = Image.open(path).convert("RGB")   # 统一通道数,防止 RGBA/调色板模式
    img = img.convert("L")                  # 超声内容为灰阶,转单通道省显存
    img = to_square(img, IMG_SIZE)
    arr = np.asarray(img, dtype=np.uint8)
    return arr


records, cache = [], []
for _, row in tqdm(df.iterrows(), total=len(df), desc="预处理"):
    arr = load_and_process(row["Image_name"])
    cache.append(arr)
    records.append({
        "Image_name": row["Image_name"],
        "Patient_num": int(row["Patient_num"]),
        "Plane": row["Plane"],
        "Brain_plane": row["Brain_plane"],
        "Operator": row.get("Operator", "unknown"),
        "US_Machine": row.get("US_Machine", "unknown"),
        "Train": int(row["Train"]),
        "label6": int(row["label6"]),
        "label3": (-1 if pd.isna(row["label3"]) else int(row["label3"])),
        "is_standard": int(row["is_standard"]),
        "is_brain3": int(row["is_brain3"]),
    })

np.save(os.path.join(OUT_DIR, f"images_{IMG_SIZE}.npy"),
        np.stack(cache), allow_pickle=False)
pd.DataFrame(records).to_csv(os.path.join(OUT_DIR, "index.csv"), index=False)
print("完成:", os.path.join(OUT_DIR, f"images_{IMG_SIZE}.npy"))

归一化参数的选择:本数据集是超声灰阶图像,像素分布高度偏斜(大量近黑背景 + 局部高回声)。两种可行方案——(1)ImageNet 均值方差(迁移学习常见做法,兼容预训练权重);(2)用训练集统计的均值方差(更贴合本域,但必须只在训练集上统计,否则构成预处理泄漏)。若使用 ImageNet 预训练权重,选方案 1 更稳妥。

§6.4 PyTorch DataLoader

# ============================================================
# 完整可运行 DataLoader
# 目录结构预期:processed/images_224.npy + processed/index.csv
# 拼接关系:index.csv 行序与 images_224.npy 行序一一对应,
#   训练时不再访问原始 PNG,加载速度提升约一个数量级。
# 最小可用子集:SUBSET = "brain3" 时只取 3 脑切面样本(约 2,700 张)。
# ============================================================

import numpy as np
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader, WeightedRandomSampler
import torchvision.transforms as T

OUT_DIR = "processed"
IMG_SIZE = 224
SUBSET = "plane6"        # 可选:"plane6" | "plane5" | "brain3"


class FetalPlanesDataset(Dataset):
    def __init__(self, index_csv, images_npy, split, subset="plane6", transform=None):
        df = pd.read_csv(index_csv)
        # split:"train" 取官方 Train==1;"test" 取官方 Train==0
        # 划分始终在患者层完成(官方已保证),此处不重新切分
        df = df[df["Train"] == (1 if split == "train" else 0)].reset_index(drop=True)

        if subset == "plane5":                 # 5 标准切面协议:排除 Other
            df = df[df["is_standard"] == 1].reset_index(drop=True)
            label_col, self.num_classes = "label6", 5
        elif subset == "brain3":               # 3 脑切面协议
            df = df[df["is_brain3"] == 1].reset_index(drop=True)
            label_col, self.num_classes = "label3", 3
        else:                                  # 6 类完整协议
            label_col, self.num_classes = "label6", 6

        self.df = df
        self.labels = df[label_col].astype(int).values
        self.patients = df["Patient_num"].astype(int).values
        self.images = np.load(images_npy, mmap_mode="r")   # 内存映射,省 RAM
        self.transform = transform

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

    def __getitem__(self, idx):
        img = np.asarray(self.images[idx], dtype=np.uint8)
        img = T.functional.to_pil_image(img).convert("L")
        img = self.transform(img) if self.transform else T.functional.to_tensor(img)
        return img, int(self.labels[idx]), int(self.patients[idx])


# 训练增强:安全集(见 §6.6)
train_tf = T.Compose([
    T.Resize((IMG_SIZE, IMG_SIZE)),
    T.RandomAffine(degrees=10, translate=(0.05, 0.05), scale=(0.95, 1.05)),
    T.RandomHorizontalFlip(p=0.5),   # 超声切面左右手性无诊断意义,可安全翻转
    T.ToTensor(),
    T.Normalize(mean=[0.5], std=[0.25]),
])

eval_tf = T.Compose([
    T.Resize((IMG_SIZE, IMG_SIZE)),
    T.ToTensor(),
    T.Normalize(mean=[0.5], std=[0.25]),
])

train_ds = FetalPlanesDataset(f"{OUT_DIR}/index.csv", f"{OUT_DIR}/images_{IMG_SIZE}.npy",
                              "train", SUBSET, train_tf)
test_ds = FetalPlanesDataset(f"{OUT_DIR}/index.csv", f"{OUT_DIR}/images_{IMG_SIZE}.npy",
                             "test", SUBSET, eval_tf)
print(f"train={len(train_ds)}  test={len(test_ds)}  classes={train_ds.num_classes}")

# 类别不平衡:对少数类过采样(训练集专用,绝不用于测试集)
class_counts = np.bincount(train_ds.labels, minlength=train_ds.num_classes)
class_weights = 1.0 / np.maximum(class_counts, 1)
sample_weights = class_weights[train_ds.labels]
sampler = WeightedRandomSampler(
    weights=torch.as_tensor(sample_weights, dtype=torch.double),
    num_samples=len(sample_weights), replacement=True)

train_loader = DataLoader(train_ds, batch_size=64, sampler=sampler,
                          num_workers=4, pin_memory=True, drop_last=True)
test_loader = DataLoader(test_ds, batch_size=128, shuffle=False,
                         num_workers=4, pin_memory=True)

# 冒烟测试
imgs, labels, patients = next(iter(train_loader))
print(imgs.shape, labels[:8], patients[:8])   # 期望 torch.Size([64, 1, 224, 224])

分组交叉验证(超参数选型用,不接触官方测试集):

from sklearn.model_selection import GroupKFold

gkf = GroupKFold(n_splits=5)
for fold, (tr, va) in enumerate(gkf.split(train_ds.df, train_ds.labels, groups=train_ds.patients)):
    print(f"fold {fold}: train {len(tr)} / val {len(va)}")   # groups 保证同一患者不跨折

§6.5 坑点

⚠️ 坑点 1:按图像随机切分导致患者泄漏(分类:数据泄漏)

问题:FETAL_PLANES_DB 中同一名患者的图像高度相似(同设备、同操作员、相邻孕周),若忽略 Patient_num 按图像随机切分,同一患者会同时出现在训练与测试两侧,测试指标虚高,模型在真实场景中无法复现该性能。
症状:自测测试集准确率比官方划分结果高出 5-15 个百分点;同一模型换个随机种子指标波动极大;用官方 Train 列一跑,成绩立刻"掉下来"。这是本数据集被踩得最多的一脚。
解决:

  1. 简单方法:直接使用 CSV 中的官方 Train 列(1 = 训练,0 = 测试),一字不改。
  2. 进阶方法:需要自定义划分时使用分组划分,保证患者不重叠:
    from sklearn.model_selection import GroupShuffleSplit
    gss = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
    tr_idx, te_idx = next(gss.split(df, groups=df["Patient_num"]))
    assert len(set(df.iloc[tr_idx]["Patient_num"]) & set(df.iloc[te_idx]["Patient_num"])) == 0
    
  3. SOTA 方法:构建"患者—检查—图像"三层分组键,并叠加图像近重复检测(如 pHash 汉明距离 < 8 视为近重复),把同一检查中连续采集的相似帧一并约束到同一侧。
    参考:HuggingFace 镜像数据卡明确说明官方划分为患者不重叠并警示重新切分须保留该性质(https://huggingface.co/datasets/shr3m/fetal-planes-db)

⚠️ 坑点 2:把 Other 类当成脏数据删掉(分类:标签理解)

问题:Other 类占 34.0%(4,213 张),是最大的单一类别。它并非标注失败或缺失,而是一个语义明确的兜底类——表示"该图像不属于 5 个标准切面"。直接删除它,或把它合并进某个标准切面类,会同时破坏评估协议的可比性与模型的拒识能力。
症状:删除 Other 后准确率看起来飙升(因为最难的类没了);模型部署到阅片流程后,对任何图像都强行输出一个标准切面,无法识别"这张不是标准切面";与文献数字无法对齐。
解决:

  1. 简单方法:保留 6 类协议训练;若要复现 FetalCLIP 等结果,则显式切换到"5 切面协议"——排除 Other,但在论文中明确声明协议。三种协议(6 类 / 5 切面 / 3 脑切面)的数字不可互相比较。
  2. 进阶方法:把 Other 转化为拒识信号,训练带阈值机制的分类器:当最大 softmax 概率低于阈值 τ 时输出"非标准切面"。τ 在验证集上按目标拒识率调优。
  3. SOTA 方法:用零样本/开放词汇模型(如 FetalCLIP、CLIP 类)把"标准切面 vs 非标准切面"表达为文本提示的相似度比较,从机制上支持无限类别与拒识,而不需要为 Other 单独建模。
    参考:FetalCLIP 基准明确排除 Other 类评测 5 切面(https://github.me/bilaltaf/FetalCLIP)

⚠️ 坑点 3:直接 resize 拉伸非正方形图像(分类:预处理陷阱)

问题:本数据集图像尺寸不齐且多为非正方形,宽高比随超声机设置与扫查方向变化。直接 resize((224, 224)) 会各向异性压缩图像,使解剖结构比例失真——而识别的核心恰好是形状比例(例如卵圆形的胎儿腹部横切面被压成圆形)。
症状:模型在训练集上收敛良好,但跨设备测试时性能骤降;可视化注意力图发现模型盯住图像边缘或填充区域等非解剖线索;与使用等比缩放方案的文献数字存在系统性差距。
解决:

  1. 简单方法:长边等比缩放后零填充为正方形(本页 §6.3 的 to_square 函数)。填充值取 0(黑),与超声背景一致,不引入额外纹理。
  2. 进阶方法:先做超声扇形区域的自动裁剪(检测非黑包围盒并裁掉外侧纯黑边框),再等比缩放+填充;这能减少无效背景占比,提升有效分辨率。
  3. SOTA 方法:改用支持可变输入尺寸的架构(ViT 系列配合 interpolate pos_embed,或卷积网络的全卷积 + 自适应池化),在保持宽高比的条件下统一到相近面积,避免任何几何形变。
    参考:数据卡对图像尺寸不齐与非正方形的说明(https://huggingface.co/datasets/shr3m/fetal-planes-db)

⚠️ 坑点 4:忽略类别不平衡直接按 6 类训练(分类:偏倚陷阱)

问题:Other(4,213)与 Fetal Abdomen(711)相差约 5.9 倍,脑类(3,092)严重过代表。不加权训练的模型会系统性偏向大类,少数类(尤其是临床重要的胎儿腹部切面)召回率极低。
症状:总体准确率看着不错(因为大类压阵),但混淆矩阵显示 Fetal Abdomen 大量被误判为 Other 或 Fetal Thorax;宏平均 F1 显著低于准确率;各类 F1 方差很大。
解决:

  1. 简单方法:用 WeightedRandomSampler 按类频倒数过采样(见 §6.4),或损失函数加类别权重 CrossEntropyLoss(weight=1/count)。两者选其一,不必叠加。
  2. 进阶方法:改用宏平均 F1 或平衡准确率作为模型选择指标,而非总体准确率——让优化目标与真实关注点一致。
  3. SOTA 方法:用 classifier-guided diffusion 生成少数类合成图像做增强,已被专门研究用于本数据集的类不平衡问题;需注意合成图像只进训练集,且要报告"合成比例—性能"曲线以证明收益非假象。
    参考:扩散模型增强研究(https://arxiv.org/pdf/2501.15248)

⚠️ 坑点 5:在非脑图像上统计 Brain_plane 字段(分类:标签理解)

问题:Brain_plane 只对 Plane == "Fetal brain" 的图像有实际意义,其余 9,308 张非脑图像的该字段是占位取值。若直接对全表做 Brain_plane 的分布统计或把它作为辅助标签训练,会引入大规模伪标签噪声。
症状:脑切面三分类任务的类别分布看起来异常(出现大量本不该存在的样本);多任务学习时模型精度莫名下降;混淆矩阵中出现语义上不可能的类别组合。
解决:

  1. 简单方法:做任何与脑切面相关的操作前,先过滤 df = df[df["Plane"] == "Fetal brain"],并核对过滤后样本数应为 3,092。
  2. 进阶方法:在数据加载阶段就用断言固化该约束,把 label3 只对脑子集赋值,其余置 -1 并在损失中 mask 掉(见 §6.3 的 is_brain3 列)。
  3. SOTA 方法:把二级任务建模为条件任务——P(Brain_plane | Plane == Fetal brain),用两级级联结构显式表达条件依赖,而不是把它当作独立的并行分类头。
    参考:Zenodo 官方数据说明中的标签层级定义(https://zenodo.org/record/3904280)

⚠️ 坑点 6:混用镜像切分与官方划分(分类:评估误用)

问题:不同 HuggingFace 镜像给出的 split 与官方完全不同——官方为 train 9,923 / test 2,477(约 80/20),某些镜像给出 train 6,046 / validation 1,083 / test 5,271(测试集占 43%)。混用两者得到的数字不可比,甚至可能因二次切分破坏患者不重叠约束而产生泄漏。
症状:用镜像跑出的准确率与论文或 FetalCLIP 的结果对不上;同一份代码在官方包上得到明显更低的成绩;审稿人要求说明划分来源时无法自证。
解决:

  1. 简单方法:以 Zenodo 官方包的 Train 列为唯一划分依据,镜像只用作快速原型。
  2. 进阶方法:加载镜像后立刻核对切分统计,若与官方不符则丢弃镜像 split,改用官方列重新切分:
    # 镜像常把官方列改名为 train/validation/test,需回查原始语义
    assert ds['train'].num_rows + ds['test'].num_rows == 12400 or \
           ds['train'].num_rows + ds['validation'].num_rows + ds['test'].num_rows == 12400
    
  3. SOTA 方法:在论文实验记录中固化数据版本快照(数据文件 md5 + 划分 CSV 哈希 + 代码 commit),使任何第三方可逐位复现你的划分,这是当前医学影像基准可复现性的最低要求。
    参考:镜像二次切分计数(https://huggingface.co/datasets/ERO26/fetal-planes-classification-dataset-zenodo)

⚠️ 坑点 7:把图像质量伪影当成解剖特征学习(分类:偏倚陷阱)

问题:临床超声图像包含声影遮挡、增益不均、扇区外黑边、屏幕叠加残留等采集伪影。若这些伪影与切面类别相关(例如宫颈切面习惯用不同深度预设),模型会走"捷径"——学习设备与预设的纹理特征,而非解剖结构。
症状:Grad-CAM 注意力集中在图像角落、刻度尺残留或扇区边缘;按 US_Machine 分层评估时性能差异明显;对图像左右翻转或轻微亮度扰动异常敏感。
解决:

  1. 简单方法:检查是否存在屏幕叠加残留,若有则先裁剪掉图像边缘的内容区并做非黑区域裁剪;训练时用较强的位置与色彩抖动,削弱位置捷径。
  2. 进阶方法:按 US_Machine 分层报告性能,并把"设备分类"设为一个对照任务——若模型能轻易预测设备型号,说明特征中混入了强设备信号。
  3. SOTA 方法:引入解剖标志点或分割掩码作为辅助监督(如脑中线、股骨骨轴),强制模型关注解剖结构;或采用领域对抗训练(DANN)削弱设备相关表征。
    参考:设备多样性偏倚的系统讨论(https://pmc.ncbi.nlm.nih.gov/articles/PMC12166052)

⚠️ 坑点 8:把切面分类结果解读为临床诊断(分类:评估误用)

问题:数据集只含正常解剖切面,没有任何病理标签、孕周、妊娠结局,也不含双胎、不含早孕期。把模型输出包装成"胎儿健康评估"或"异常筛查"是对数据集能力的越界,在临床与监管语境下都是严重误导。
症状:研究结论写成"本模型可用于产前筛查异常",但没有任何阳性样本或结局数据支撑;模型在真实临床数据上遇到病理图像时输出高置信度的错误切面标签(因为它从未见过异常解剖)。
解决:

  1. 简单方法:在所有产出中明确声明任务的临床定位是"切面识别/归档",不是诊断;适用范围限制在第二、第三孕期的常规筛查切面。
  2. 进阶方法:把模型输出接入下游时加人工确认环节,并做"域外样本检测"(OOD detection),遇到与训练分布差异大的图像(病理、早孕期、双胎)时拒识并转交医师。
  3. SOTA 方法:若要走向临床,必须在含病理与结局的独立队列上做前瞻性验证,并按其预期用途通过相应监管路径(如作为流程质量工具而非诊断器械申报)。
    参考:该数据集被低估的六类偏倚(含"仅标准切面、无病理")(https://pmc.ncbi.nlm.nih.gov/articles/PMC12166052)

§6.6 数据增强策略

增强操作 安全性 说明
水平翻转(HorizontalFlip) ✅ 安全 超声切面左右手性不携带诊断信息,且不同扫查方向本身会产生镜像图像
小角度旋转(±10-15°) ✅ 安全 模拟探头角度偏差;临床采集本身存在旋转不确定性
小幅度平移与缩放(±5%) ✅ 安全 模拟不同扫查深度与视野差异
亮度/对比度轻微抖动 ✅ 安全 模拟不同增益设置;幅度需谨慎,过强会破坏回声强度语义
伽马校正(γ ∈ [0.8, 1.2]) ✅ 安全 近似模拟超声 TGC 增益曲线差异
高斯噪声(低强度) ✅ 安全 模拟斑点噪声自然波动
随机裁剪(RandomResizedCrop) ⚠️ 谨慎 裁剪比例过大会切掉关键解剖结构(如脑中线),建议 scale ≥ 0.85
垂直翻转(VerticalFlip) ❌ 危险 上下颠倒的解剖切面在临床中不存在,属非物理变换
大角度旋转(>45°) ❌ 危险 临床上不会出现大幅旋转的标准切面,会引入不可能样本
强色彩抖动/色相偏移 ❌ 危险 超声为灰阶成像,色彩变换破坏模态语义
弹性形变(强参数) ❌ 危险 会扭曲解剖比例,直接把胎儿腹部压成不规则形状
MixUp / CutMix(强混叠) ❌ 危险 两个切面叠加产生的图像不存在对应临床实体,标签语义失效
随机擦除(大面积) ❌ 危险 可能擦除的正是判读依据(如小脑),使标签不再成立

§6.7 模型推荐

场景 推荐模型 规模 理由
快速基线 / 教学 ResNet-18(ImageNet 预训练) 11M 参数 训练快,单卡几分钟一轮,足以达到 90%+ 准确率
监督分类主力 EfficientNet-B0 ~ B4 5-19M 参数 精度与算力平衡好,适合 12,400 张的中等规模
与论文对照 SonoNet 系列(如 SonoNet-16) 约 11M 参数 原始论文使用的架构族,便于复现对照(5 切面 F1 82.7)
零样本 / 少标注 FetalCLIP(ViT-L/14) 427M 参数 当前最优零样本切面模型(5 切面 F1 97.3),需较大显存
轻量化部署 MobileNetV3 / MobileFetalCLIP 数 M 参数 面向床旁设备;MobileFetalCLIP 在 6 视图协议下 F1 93
高精度通用视觉 ViT-B/16 或 ConvNeXt-Tiny 86-28M 参数 数据量足够时表现稳定,但需更强的增强与正则化

§6.8 硬件需求

配置 GPU 显存 训练时长(参考) 适用场景
入门 4 GB(GTX 1650 级) 224px / ResNet-18 / batch 32:约 1-2 小时/50 epoch 教学、冒烟测试
日常 8-12 GB(RTX 3060/4070) 224px / EfficientNet-B0 / batch 64:约 1-1.5 小时/50 epoch 绝大多数实验
进阶 16-24 GB(RTX 4090 / A5000) 384px / ViT-B/16 / batch 64:约 4-8 小时/100 epoch 高分辨率微调、对比学习
基础模型 24-80 GB(A100 / H100) FetalCLIP 级 ViT-L/14 微调或线性探测 视觉—语言模型复现与改造
CPU-only — ResNet-18 / batch 32:约 10-20 小时/50 epoch 无 GPU 时的教学替代方案

内存方面:224×224 单通道 .npy 缓存约需 620 MB,可完全放入内存;实时解码 PNG 则需更多 CPU worker。

§6.9 评估指标代码

# ============================================================
# 评估指标:多分类 F1(宏平均)是 FetalCLIP 等基准的主指标,
# 必须与论文口径一致才能比较。
# ============================================================
import numpy as np
import torch
from sklearn.metrics import (f1_score, confusion_matrix,
                             classification_report, accuracy_score)


@torch.no_grad()
def evaluate(model, loader, device, num_classes, use_amp=True):
    model.eval()
    y_true, y_pred = [], []
    for imgs, labels, _ in loader:
        imgs = imgs.to(device, non_blocking=True)
        with torch.autocast(device_type="cuda", enabled=use_amp):
            logits = model(imgs)
        y_pred.append(logits.argmax(1).cpu().numpy())
        y_true.append(labels.numpy())
    y_true = np.concatenate(y_true)
    y_pred = np.concatenate(y_pred)

    labels_idx = list(range(num_classes))
    return {
        "accuracy": accuracy_score(y_true, y_pred),
        "f1_macro": f1_score(y_true, y_pred, average="macro", labels=labels_idx),
        "f1_weighted": f1_score(y_true, y_pred, average="weighted", labels=labels_idx),
        "per_class_f1": f1_score(y_true, y_pred, average=None, labels=labels_idx),
        "confusion": confusion_matrix(y_true, y_pred, labels=labels_idx),
    }


# 使用示例(5 切面协议 + 官方测试集)
# model, test_loader 来自 §6.4
# metrics = evaluate(model, test_loader, "cuda", num_classes=5)
# print(f"5 切面协议 test F1(macro) = {metrics['f1_macro']:.4f}")
# print(classification_report(y_true, y_pred, digits=4))

口径提醒:报告时必须写清协议。"6 类协议"含 Other,"5 切面协议"排除 Other,"3 脑切面协议"只在脑子集内评估——三者数字不可互换引用。此外还要注明是否使用官方划分、图像输入分辨率、是否使用预训练权重,这三项对结果的影响与协议选择同等重要。

§6.10 MLOps 与工程笔记

环节 建议
数据版本 固化 ZIP md5(2a5fcc2cefb789bcc0f6c1f73e0ea43f)与划分 CSV 哈希,写进实验配置
实验追踪 记录协议(6/5/3)、分辨率、划分来源、是否加权采样、随机种子 —— 缺一项结果就不可复现
预处理缓存 生成固定尺寸 .npy 缓存(本页 §6.3),比每次解码 PNG 快约一个数量级
模型选择 用官方训练集内的 GroupKFold 均值选型,绝不接触官方测试集
监控指标 部署后按 US_Machine 与 Operator 分层监控 F1 与拒识率,设备层性能跌落是分布漂移的第一信号
分布外检测 上线时配套 OOD 检测(早孕期、双胎、病理图像都会落在训练分布之外)
合规文档 记录数据来源版本、许可证(CC BY 4.0)、脱敏声明与预期用途边界
可复现包 打包"代码 commit + 数据 md5 + 划分哈希 + 环境 lock",作为论文附录提交

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
标签偏倚(单标注者) 全部 12,400 张标签由一名资深母胎医学专家判读,无标注者间一致性估计,模型学到的边界等同于该专家的判读习惯 高 抽样引入第二位专家重标注测试集,报告 kappa 后再解读误差
队列偏倚(脑类过代表) 胎儿脑类 3,092 张,是胎儿股骨类(1,040)的近 3 倍,兜底类 Other 独占 34%,标签分布严重偏离"临床切面出现频率" 高 加权采样、重采样或用宏平均 F1 作为主指标;报告各类 F1 而非单一准确率
缺失数据偏倚 无孕周、无母体人口学、无妊娠结局、无采集日期,导致孕周分层、公平性亚组、时间趋势分析全部不可行 中高 明确研究问题不涉及这些维度;需要时通过外部临床数据补链
少数群体偏倚 不包含双胎妊娠;不包含早孕期;无种族字段 中高 在适用人群声明中明确排除;若需覆盖必须外部验证
信息性偏倚(仅标准切面) 数据集只收正常解剖的标准切面,无病理图像、无非标准视角、无异常解剖 高 任务定位为切面识别而非异常筛查;上线需配 OOD 检测
设备多样性偏倚 数据来自多台超声机与多名操作员,设备/操作员与切面难度、图像质量存在混杂,偏倚方向不明确 中 按 US_Machine 与 Operator 分层评估;设备作协变量而非直接合并
机构与地域偏倚 仅西班牙巴塞罗那两家同体系医院,同一医疗体系的扫查规范与人群特征 中高 跨机构、跨设备、跨地域外部验证
孕期范围偏倚 仅覆盖第二、第三孕期,缺少第一孕期(颈项透明层检查在 11-14 周,切面体系完全不同) 高 早孕期应用必须重新收集数据;跨孕期泛化无现有证据
类别定义偏倚 Other 与 Not A Brain 两个兜底类的边界依赖标注者判断,不同专家可能给出不同归类 中 报告兜底类占比;跨中心复用标签体系时先做一致性校准

§7.2 标注质量评估

标注类型 可靠性 一致性 局限性
Plane(6 类粗标签) 较高——5 个标准切面解剖区别明显 未报告(单标注者) 少数非典型视角图像在标准类与 Other 之间的归属存在主观空间
Brain_plane(TT/TC/TV) 中等——三类仅在中线结构上区分 未报告(单标注者) 本数据集公认最难的标签;FetalCLIP 零样本仅 70.2,误差部分可能来自标签本身
Brain_plane(Other / Not A Brain) 中等 未报告 兜底类边界模糊,与三类之间的划分依赖专家判断
Operator / US_Machine 高 系统性记录 仅记录"是哪台/哪个人",不含采集参数(增益、频率、深度预设)
Patient_num 高 研究内部编号 无法与任何外部记录关联(设计使然,属合规优势而非缺陷)
Train 划分标志 高 患者级严格不重叠 无验证集;测试集占 20%,最小类测试样本 142 张

§7.3 泛化性讨论

场景 失效风险 证据
跨机构(BCNatal → 其他医院) 中高 数据集仅两家同体系医院;不同机构的扫查规范与预设参数差异显著,无外部验证文献支撑跨机构性能
跨设备(同库内不同超声机) 中 元数据含 US_Machine 可量化;设备相关纹理是模型走捷径的主要通道(§6.5 坑点 7)
跨地域(西班牙 → 其他地区) 高 单一城市队列,人群解剖特征与设备构成均不可外推
跨孕期(中晚孕 → 早孕) 高 数据集明确仅覆盖第二、第三孕期;第一孕期切面体系(如 NT 切面)完全不同,属已知盲区
跨妊娠类型(单胎 → 双胎) 高 数据集不含双胎妊娠;双胎的切面获取难度与解剖外观均不同
跨任务(切面识别 → 异常筛查) 极高 数据集零病理标签、零结局数据,任何"筛查"用途都无证据基础
跨数据规模(全量 → 少样本) 低中 图像级标签使少样本迁移较易;但少数类(Fetal Abdomen 569 张训练)在极低样本设定下会迅速失效

§7.4 伦理考量

  1. 数据来自真实孕妇的常规临床检查,虽已去除全部直接标识,仍应保持对受试者的尊重。
  2. HuggingFace 镜像的访问条款要求使用者承诺不尝试重识别任何受试者;这一承诺同样适用于通过 Zenodo 获取的用户(属研究伦理的通行要求)。
  3. Patient_num 为研究内部伪匿名编号,不得与任何医院记录尝试关联。
  4. 胎儿超声图像携带潜在的可识别信息(胎龄、解剖特征组合),因此"去标识化"并不是"零风险";不要在小样本亚组(如极罕见解剖特征组合)上单独建模或对外展示。
  5. 不要在宣传中把模型能力表述为"AI 诊断胎儿异常"——本数据集不支持该主张,此类表述会造成对孕妇的实际误导。

§7.5 公平性评估

本数据集不提供种族、年龄、社会经济状态或孕周字段,因此无法开展常规的人口学公平性分析。可行的替代评估是"采集条件公平性"——按设备与操作员分层,检查模型是否对特定采集条件系统性表现更差。

import pandas as pd
from sklearn.metrics import f1_score

def fairness_by_group(index_csv, y_true, y_pred, group_col, split="test"):
    df = pd.read_csv(index_csv)
    sub = df[df["Train"] == (1 if split == "train" else 0)].reset_index(drop=True)
    out = []
    for g, idx in sub.groupby(group_col).groups.items():
        idx = list(idx)
        if len(idx) < 30:          # 组样本过小,指标不可靠
            continue
        out.append({
            group_col: g,
            "n": len(idx),
            "f1_macro": round(f1_score([y_true[i] for i in idx],
                                       [y_pred[i] for i in idx],
                                       average="macro"), 4),
        })
    return pd.DataFrame(out).sort_values("f1_macro")


# 用法:分别按 US_Machine 与 Operator 分层,比较组间 F1 极差
# print(fairness_by_group("processed/index.csv", y_true, y_pred, "US_Machine"))
# print(fairness_by_group("processed/index.csv", y_true, y_pred, "Operator"))

已知公平性隐忧:若某型号设备仅出现在测试集,或某操作员的图像集中在某个切面类别,组间 F1 差异会被误读为"模型偏见",实为样本量不足。做任何分层结论前,先检查每组样本量与类别构成。

§7.6 数据漂移提示

  • 本数据集于 2020 年冻结,无滚动更新。部署任何基于它的模型前,必须假设当前临床设备与扫查流程已发生变化。
  • 采集日期已被移除,因此无法通过内部字段估计漂移;只能通过前瞻性数据采集来监测。
  • 若目标部署环境使用不同厂商或更新代的超声机,图像纹理与对比度分布可能整体偏移,设备分层评估是必备动作。
  • 领域漂移的典型后果是模型置信度整体下移(因为进 OOD 区域);上线时应监控置信度分布而不是只监控预测标签。

§7.7 DAIMS 24 项评估

# 检查项 状态 说明
1 宽格式/长格式一致性 ✅ 单表宽格式(每行一张图像,7 个字段),结构规整,无嵌套 JSON
2 唯一标识符 ✅ Image_name 唯一(12,400 个);Patient_num 为分组用标识,两者层级清晰
3 特殊字符处理 ✅ 标签使用英文短语与空格,无编码特殊字符问题;文件名以数字前缀保证可排序
4 重复行检测 ⚠️ 表格行无重复,但图像层面可能存在近重复(同一检查连续采集)未被标注,需自行做 pHash 检测
5 缺失值编码规范 ⚠️ 无 NULL 单元格,但 Other 是兜底类而非缺失;Brain_plane 对非脑图像无意义,需显式过滤而非通用缺失处理
6 标签标识清晰 ⚠️ Plane 与 Brain_plane 两级标签语义清楚,但 Other / Not A Brain 两个兜底类的边界依赖标注者判断
7 罕见类分组策略 ✅ 5 个标准切面 + 1 个兜底类,设计上避免了稀有类碎片化;兜底类占比 34% 反而偏大
8 偏倚评估已完成 ❌ 原论文未做系统偏倚分析;npj Digital Medicine 2025 专文事后补足六类偏倚讨论
9 数据字典 ⚠️ 官方提供标签体系与字段说明,但无逐字段数据类型/取值域的完整字典,需自行整理
10 信息性缺失解释 ❌ 孕周、结局、日期、人口学的缺失未在官方文档中说明原因(部分属合规脱敏,部分属设计取舍)
11 设备与采集信息记录 ✅ US_Machine 与 Operator 均保留,是同类数据集中罕见的优点
12 共线性检查 ⚠️ 设备与操作员高度相关(同一操作员常固定使用某台机器),分层时不可视为独立因子
13 编码映射标准 ✅ 标签为自解释英文短语,无外部编码依赖;ICD-11/SNOMED 映射见 §2.1/§2.1b,属本页扩展而非数据集原有
14 时间戳处理 ❌ 采集日期已脱敏移除,无时间维度,无法做任何时间序列或趋势分析
15 训练/验证/测试划分建议 ✅ 官方提供患者不重叠划分(Train 列),最小类测试样本 142 张;缺验证集需自行从训练集内分组切分
16 数据泄漏风险讨论 ⚠️ 官方划分已防患者泄漏,但文档未系统讨论文件名泄漏、重复图像泄漏、预处理泄漏等路径
17 标签分布分析 ✅ 六类与脑三类的分布清晰可查(§4.2),不平衡度可精确计算
18 测量偏倚讨论 ⚠️ 无测量值故不涉及测量偏倚;但采集伪影相关的图像质量偏倚未被官方讨论
19 外部验证建议 ⚠️ 官方未提供外部验证集;本页给出跨机构/跨设备/跨孕期/跨人群四层建议(§5.5)
20 版本记录 ✅ Zenodo v1.0 单一版本,DOI 与 md5 齐全,版本状态明确(未再更新)
21 最小必要预处理脚本 ❌ 官方仅发布图像与 CSV,无任何预处理或基线代码;基线需依赖社区(FetalCLIP 等)
22 合规使用要求 ✅ CC BY 4.0 明确署名要求;镜像版额外要求申请访问与不重识别承诺
23 多模态对齐 ❌ 仅图像 + 表格元数据两级;无文本报告、无多普勒、无三维容积,不构成多模态数据集
24 去标识化方法记录 ⚠️ 官方声明图像已去标识化,但未发布具体的脱敏流程文档(如移除哪些屏幕叠加字段、是否重采样)

DAIMS 评分:16.5 / 24

评分解读:中上——数据集本身质量扎实(划分规范、元数据完整、标签体系清晰),失分主要集中在"文档化深度"与"任务范围"两方面:官方没有数据字典、没有预处理脚本、没有偏倚与缺失的说明,且因为设计上只做切面识别,天然缺失时间戳、结局与多模态维度。与文档完备的临床数据库(如 MIMIC-III 的 18.5/24)相比,差距不在数据质量而在交付文档。

对你意味着什么:这份评分的实践含义很直接。可直接拿来用的(✅ 项):官方划分请原样复用、设备与操作员字段请一定用起来、标签分布请先算清楚——这三件是它真正优于同类数据集的地方。必须自己动手补的(⚠️ 项):近重复图像检测、非脑子集过滤、设备分层评估、训练集内分组交叉验证、去标识化流程的自行说明——不做这些,实验结论就站不住。不要指望数据集提供的(❌ 项):不要期待官方预处理代码(自己写 §6.3 的流程)、不要指望时间趋势或人口学公平性分析(字段根本不存在)、不要把它当多模态数据集用、也不要指望它自带偏倚分析(把本页 §7.1 当作起点,再结合 npj Digital Medicine 2025 的专文)。

一个更务实的判断:16.5/24 在"开放影像分类基准"这一类目里属于健康水平——它的扣分几乎全部来自"官方文档薄"和"任务范围窄",而不是"数据本身有问题"。这意味着投入一周工程时间补齐预处理与评估规范,它就能支撑一篇扎实的论文;但它永远无法支撑超出"切面识别"范畴的任何临床主张。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部测试集变化 关键发现
库内设备分层(US_Machine 留一) BCNatal(本数据集内构造) 6 类切面分类 组间 F1 极差可量化 视设备分布而定,通常在数个百分点 零成本的外部验证替代方案;设备层性能跌落是部署风险的第一信号
库内操作员分层(Operator 留一) BCNatal(本数据集内构造) 6 类切面分类 组间 F1 极差可量化 与操作员图像中的类别构成强相关 结论前必须先检查各组类别构成,否则会把样本构成差异误读为模型偏见
5 切面协议零样本评测 FetalCLIP 团队 零样本 5 切面分类 F1 97.27 相对监督基线 SonoNet-16 的 82.7 大幅提升 大规模胎儿超声视觉—语言预训练可显著超越监督模型;跨机构泛化仍未有公开证据
3 脑切面协议零样本评测 FetalCLIP 团队 零样本 TT/TC/TV 三分类 F1 70.15 同一模型在 5 切面上为 97.27,落差近 27 点 脑切面细分是本数据集公认的瓶颈,误差来源既含模型能力也含标签主观性
线性探测协议 6 视图测试集 多项工作(FetalCLIP、MobileFetalCLIP 等) 线性探测 6 类分类 F1 94.7 / 93 / 86.7 / 86 / 85.6 不同预训练语料造成 9 个点以上的差距 预训练语料的领域相关性比模型规模更重要
第一孕期队列(外部,假设验证场景) 无公开对应数据集 早孕期切面识别 无公开结果 未知 数据集明确不含早孕期,跨孕期泛化在文献中缺乏证据

FETAL_PLANES_DB 在 2026 年还值得用吗? 值得,但要认清它的定位变化。2020-2023 年它是"监督切面分类基准";2025 年后它已成为"基础模型零样本能力的试金石"——5 切面 97.3 分已经接近天花板,而 3 脑切面 70.2 分仍是大片空白。想刷分的话,前者没有多少空间;想做出真贡献的话,后者和"跨设备/跨孕期泛化"才是真正未解决的方向。


§8 基准性能与生态

§8.1 排行榜

协议 A:5 切面零样本分类(排除 Other;FetalCLIP 采用的基准口径)

排名 模型 性能(F1) 年份 关键技术 完整引用 代码
1 FetalCLIP(ViT-L/14) 97.27 2025 胎儿超声图像—文本对比预训练 + 提示词集成 FetalCLIP: A Visual-Language Foundation Model for Fetal Ultrasound Image Analysis (2025), arXiv:2502.14807 https://github.com/bilaltaf/FetalCLIP
2 UniMed-CLIP 67.95 2024 通用医学视觉—语言对比预训练 Unified Medical Image-Text-Language Foundation Model (2024) https://github.com/mbzuai-oryx/UniMed-CLIP
3 BiomedCLIP 60.34 2023 生物医学图文对预训练 BiomedCLIP: a multimodal biomedical foundation model (2023), NEJM AI https://huggingface.co/microsoft/BiomedCLIP-PubMedBERT_256-vit_base_patch16_224
4 CLIP(通用域) 30.77 2021 互联网图文对比预训练 Radford et al., Learning Transferable Visual Models From Natural Language Supervision, ICML 2021 https://github.com/openai/CLIP

协议 B:3 脑切面零样本分类(TT / TC / TV)

排名 模型 性能(F1) 年份 关键技术 完整引用 代码
1 FetalCLIP(ViT-L/14) 70.15 2025 领域专用视觉—语言预训练 同上(arXiv:2502.14807) https://github.com/bilaltaf/FetalCLIP
2 BiomedCLIP 23.62 2023 通用生物医学图文预训练 同上 同上
3 CLIP(通用域) 20.61 2021 互联网图文对比预训练 同上 同上
4 UniMed-CLIP 18.75 2024 通用医学图文预训练 同上 同上

协议 C:6 视图线性探测(Planes DB 6-view test)

排名 模型 性能(F1) 年份 关键技术 完整引用 代码
1 FetalCLIP 94.7 2025 冻结编码器 + 线性分类头 arXiv:2502.14807 https://github.com/bilaltaf/FetalCLIP
2 MobileFetalCLIP 93.0 2025 轻量化胎儿超声视觉—语言模型 同上(MobileFetalCLIP 变体) 同上
3 CLIP 86.7 2021 通用图文预训练特征 Radford et al., ICML 2021 https://github.com/openai/CLIP
4 UniMed-CLIP 86.0 2024 通用医学图文预训练特征 同上 同上
5 BiomedCLIP 85.6 2023 生物医学图文预训练特征 同上 同上

协议 D:监督学习基线(原始论文与 SonoNet 系列口径)

模型 5 切面 F1 3 脑切面 F1 全部切面 F1 参数量 完整引用
SonoNet-16 82.7 48.5 69.9 约 11M Baumgartner et al., SonoNet: Real-Time Detection and Localisation of Fetal Standard Scan Planes in Freehand Ultrasound, IEEE TMI 2017(后被广泛用于本数据集对照)
原始论文 DCNN — — top-1 错误率 16.2% / 准确率 0.94 多种架构对比 Burgos-Artizzu et al., Sci Rep 10, 10200 (2020), DOI: 10.1038/s41598-020-67076-5

数值不可直接比较的说明:上表四个协议互不可比。协议 A(5 切面零样本)排除了 Other 且不做任何微调;协议 B 只在 3,092 张脑图像内评估且类别仅三类;协议 C 是线性探测(编码器冻结);协议 D 是端到端监督训练。跨协议引用数字是最常见的评估误用。此外,即使同一协议,不同工作的图像预处理(是否 padding 至正方形、分辨率、归一化方式)也可能不同,比较时应连同实现细节一并核对。

§8.2 SOTA 总结与选型建议

当前 FETAL_PLANES_DB 的格局可以概括为**“5 切面接近饱和,3 脑切面远未解决”**:

  • 5 切面任务:FetalCLIP 以零样本 97.27 的成绩领先,这个数字已接近标签噪声上限(单标注者、无一致性估计意味着标签本身可能就有几个百分点的模糊度)。继续在 5 切面上刷分意义有限;若必须做,应转向效率维度(参数量、推理延迟)或跨设备鲁棒性。
  • 3 脑切面任务:当前最优仅 70.15,与 5 切面的 97 形成断崖。这里有两个可能的误差来源——模型未学到中线结构细节,或标签本身在 TT/TC/TV 之间存在判读分歧。区分二者需要做标注一致性实验,这本身就是一个有价值的研究课题。
  • 跨分布泛化:目前公开文献中几乎没有系统的跨设备、跨机构、跨孕期评估。这是最有实际价值但最少被触及的方向。
  • 选型建议:做方法学研究、追求可复现 → 用 SonoNet 或 ResNet 系列跑监督基线(协议 D);做基础模型研究 → 用 FetalCLIP 的线性探测脚本(协议 C);做零样本/提示工程 → 对齐协议 A/B;做临床应用探索 → 先解决跨分布评估,不要直接用高 F1 宣称可部署。

§8.3 评测协议

协议要素 建议设定 说明
划分 官方 Train 列(患者不重叠) 唯一可用于跨论文比较的方案
输入分辨率 224×224(与 FetalCLIP 对齐)或 384×384 分辨率影响与协议同等重要,必须报告
几何预处理 等比缩放 + 零填充至正方形 禁止各向异性拉伸(§6.5 坑点 3)
主指标 宏平均 F1 类别不平衡下比准确率更有信息量
辅助指标 各类 F1、混淆矩阵、平衡准确率 报告最小类(Fetal Abdomen)的 F1,它最能暴露模型缺陷
增强 仅训练集使用,且限于 §6.6 的 ✅ 列表 测试集只做确定性预处理
轮次与选型 用训练集内 GroupKFold 选型 不得基于测试集调参或早停
随机性 至少 3 个种子,报均值 ± 标准差 小类别上的单次结果方差很大
推断 冻结推理(model.eval() + torch.no_grad()) 忘记切换会导致 BatchNorm 统计量被污染
报告 协议 + 划分来源 + 分辨率 + 权重来源 + 种子数 五项齐备才算可复现
数据集 模态/任务 规模 与 FETAL_PLANES_DB 的关系
FetalCLIP 训练语料 胎儿超声图像—文本对 约 21 万对(含本数据集) 下游评测方:在本数据集上报告零样本成绩
HC18 二维超声头围测量 1,334 张 任务互补:HC18 做测量,本数据集做切面识别;两者常串联为完整流程
MIMIC-III 结构化 ICU 临床数据 46,520 名患者 范式对照:展示开放式医疗数据的许可证与划分规范传统
ISIC 系列 皮肤镜图像分类 数万张 范式对照:同为图像级标签的开放医学基准,但为病理标签
CheXpert 胸部 X 光多标签分类 22.4 万张 范式对照:展示"图像级标签 + 官方划分 + 排行榜"的成熟形态

§8.5 关键论文

  1. Burgos-Artizzu X.P., Coronado-Gutiérrez D., Valenzuela-Alcaraz B., Bonet-Carne E., Eixarch E., Crispi F., Gratacós E. (2020). Evaluation of deep convolutional neural networks for automatic classification of common maternal fetal ultrasound planes. Scientific Reports 10, 10200. DOI: 10.1038/s41598-020-67076-5 — 数据集原始论文,定义了六类切面标签体系与患者不重叠划分,首次证明深度网络在常见切面分类上可比肩人类研究技师(top-1 错误率 16.2%,准确率 0.94)。

  2. FetalCLIP 团队 (2025). FetalCLIP: A Visual-Language Foundation Model for Fetal Ultrasound Image Analysis. arXiv:2502.14807 — 发布胎儿超声视觉—语言基础模型,在本数据集上给出零样本 5 切面 F1 97.3 与 3 脑切面 F1 70.2,把该数据集推向零样本评测基准地位。

  3. Baumgartner C.F. et al. (2017). SonoNet: Real-Time Detection and Localisation of Fetal Standard Scan Planes in Freehand Ultrasound. IEEE Transactions on Medical Imaging 36(11): 2204-2215 — 提出 SonoNet 系列实时切面检测网络,其监督基线(5 切面 F1 82.7)被广泛用于与本数据集上的新方法对照。

  4. 扩散模型类别增强研究 (2025). arXiv:2501.15248 — 针对本数据集的类别不平衡问题,使用 classifier-guided diffusion 生成合成超声图像做数据增强,报告了六类图像数与训练/测试分布(Abdomen 711 / Brain 3,092 / Femur 1,040 / Thorax 1,718 / Cervix 1,626 / Other 4,213)。

  5. npj Digital Medicine 偏倚分析专文 (2025). (开放超声数据集偏倚与局限的系统梳理) — 系统指出 FETAL_PLANES_DB 存在标签偏倚(单标注者)、队列偏倚(脑类过代表)、缺失数据偏倚、少数群体偏倚(无双胎)、信息性偏倚(仅标准切面、无病理)与设备多样性偏倚六类问题,并指出数据集仅覆盖妊娠中晚期。

  6. 超声资源开放化综述 (2025). npj Digital Medicine — 统计了 56 个公开超声模型与配套数据集,将 FETAL_PLANES_DB 列为胎儿超声领域的核心公开基础数据集。

  7. Burgos-Artizzu X.P. et al. (2022). arXiv:2201.12260 — 系列后续工作,报告原始论文框架下 top-1 错误率 16.2%、top-3 错误率 0.27%、准确率 0.94,并给出模型与人类研究技师表现相当的对照分析。

§8.6 社区活跃度

维度 现状
数据集更新 自 2020-06-23 发布 v1.0 后未再更新,处于冻结状态
论文引用 Semantic Scholar 数据集条目收录引文 28+(截至 2026-09),其中含 2 次高影响引文
镜像与再分发 HuggingFace 上存在多个镜像(shr3m、Marc-HealthAI)与派生小子集(qingyuyang),说明社区复用活跃
基准维护 无官方排行榜与提交通道;SOTA 由第三方站点(wizwand、sota2 等)汇总
评测脚本 官方未提供;FetalCLIP 官方仓库提供零样本切面/脑切面评测与线性探测脚本,已成为事实上的参考实现
主要议题 脑切面三分类性能瓶颈、类别不平衡处理、基础模型零样本能力评估、跨设备泛化

社区活跃度的特征很鲜明:数据集本身静止,围绕它的模型生态活跃。这带来一个实际好处——你不需要担心数据版本变动导致结果不可复现;代价是官方不会修补任何已知问题(如缺失的一致性估计、缺失的数据字典),这些只能由使用者自行处理。

§8.7 生态快照

资源 类型 链接 Star / 状态(截至 2026-09) 推荐理由
FETAL_PLANES_DB(Zenodo) 数据下载 https://zenodo.org/records/3904280 官方源,长期归档 唯一权威来源,CC BY 4.0,含官方划分列
FetalCLIP 官方仓库 代码 + 模型 https://github.com/bilaltaf/FetalCLIP 活跃 提供零样本切面/脑切面评测与线性探测脚本,事实上的参考实现
HuggingFace 镜像(shr3m) 数据镜像 https://huggingface.co/datasets/shr3m/fetal-planes-db 申请访问 一行加载,适合快速原型
HuggingFace 镜像(Marc-HealthAI) 数据镜像 https://huggingface.co/datasets/Marc-HealthAI/fetal-planes-classification-dataset-main 公开 备用镜像,便于对比文件完整性
派生小子集(qingyuyang) 教学数据 https://huggingface.co/datasets/qingyuyang/Fetal_Planes_DB 公开,571 MB 流程打通用;规模不符原版,不可用于基准
SOTA 追踪(wizwand) 榜单 https://www.wizwand.com/sota/fetal-ultrasound-plane-classification-on-planes-db 持续更新 汇总零样本与监督协议成绩,含模型参数量对照
SOTA 追踪(sota2) 榜单 https://www.sota2.com/research/sota/image-classification-on-planes-db-6-view-test 持续更新 专门汇总 6 视图线性探测协议成绩
npj Digital Medicine 偏倚专文 文献 https://pmc.ncbi.nlm.nih.gov/articles/PMC12166052 开放获取 六类偏倚的系统梳理,做局限性讨论时的必读参考

§9 相关资源与引用

§9.1 官方资源

资源 链接 说明
Zenodo 数据集主页 https://zenodo.org/records/3904280 官方发布页,含 FETAL_PLANES_ZENODO.zip 下载与完整作者列表
原始论文(Scientific Reports) https://doi.org/10.1038/s41598-020-67076-5 标签体系、划分方式与基线结果的一手来源
数据集 DOI https://doi.org/10.5281/zenodo.3904280 引用数据集时应使用的 DOI
FetalCLIP 官方仓库 https://github.com/bilaltaf/FetalCLIP 零样本评测与线性探测脚本
HuggingFace 镜像 https://huggingface.co/datasets/shr3m/fetal-planes-db 申请访问后可一行加载
偏倚分析专文 https://pmc.ncbi.nlm.nih.gov/articles/PMC12166052 开放获取的系统性局限梳理
扩散增强研究 https://arxiv.org/pdf/2501.15248 类别不平衡条件下的生成增强方法

§9.2 引用指南

引用 FETAL_PLANES_DB 时,应同时引用原始论文与数据集 DOI:论文提供方法与标签定义,数据集 DOI 指向被使用的确切版本。若使用了 HuggingFace 镜像格式,仍应引用官方来源,并在方法中说明实际获取渠道与版本。若复现的是 FetalCLIP 等零样本结果,还需注明所用协议(5 切面 / 3 脑切面 / 6 视图)与图像分辨率。

§9.3 BibTeX 引用

原始论文

@article{BurgosArtizzu2020FetalPlanes,
  title   = {Evaluation of deep convolutional neural networks for automatic
             classification of common maternal fetal ultrasound planes},
  author  = {Burgos-Artizzu, Xavier P. and Coronado-Guti{\'e}rrez, David and
             Valenzuela-Alcaraz, Brenda and Bonet-Carne, Elisenda and
             Eixarch, Elisenda and Crispi, Fatima and Gratac{\'o}s, Eduard},
  journal = {Scientific Reports},
  volume  = {10},
  number  = {1},
  pages   = {10200},
  year    = {2020},
  doi     = {10.1038/s41598-020-67076-5},
  publisher = {Nature Publishing Group}
}

数据集本身(Zenodo)

@dataset{BurgosArtizzu2020FetalPlanesDB,
  title     = {{FETAL\_PLANES\_DB}: Common maternal-fetal ultrasound images},
  author    = {Burgos-Artizzu, Xavier P. and Coronado-Guti{\'e}rrez, David and
               Valenzuela-Alcaraz, Brenda and Bonet-Carne, Elisenda and
               Eixarch, Elisenda and Crispi, Fatima and Gratac{\'o}s, Eduard},
  year      = {2020},
  month     = {jun},
  publisher = {Zenodo},
  version   = {v1.0},
  doi       = {10.5281/zenodo.3904280},
  url       = {https://doi.org/10.5281/zenodo.3904280}
}

FetalCLIP(零样本基准与评测脚本)

@article{FetalCLIP2025,
  title   = {{FetalCLIP}: A Visual-Language Foundation Model for Fetal
             Ultrasound Image Analysis},
  author  = {FetalCLIP Team},
  journal = {arXiv preprint arXiv:2502.14807},
  year    = {2025},
  url     = {https://arxiv.org/abs/2502.14807}
}

SonoNet(监督基线对照)

@article{Baumgartner2017SonoNet,
  title   = {{SonoNet}: Real-Time Detection and Localisation of Fetal Standard
             Scan Planes in Freehand Ultrasound},
  author  = {Baumgartner, Christian F. and Kamnitsas, Konstantinos and
             Matthew, Jacqueline and Fletcher, Tara P. and Smith, Sandra and
             Koch, Lisa M. and Kainz, Bernhard and Rueckert, Daniel},
  journal = {IEEE Transactions on Medical Imaging},
  volume  = {36},
  number  = {11},
  pages   = {2204--2215},
  year    = {2017},
  doi     = {10.1109/TMI.2017.2741066}
}

§10 AI 使用声明卡

§10.1 AI 模型使用

AI 模型 版本 用途
CodeBuddy Code(fast-model) 2026-09 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建
WebSearch(多源检索) 2026-09 检索官方页面、论文 DOI、镜像规模、SOTA 成绩与偏倚文献,形成 FACTS.md 事实清单

§10.2 AI 参与范围

AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。

AI 在本页面的工作中负责:(1) 从 Zenodo 官方页面、Scientific Reports 原始论文、HuggingFace 镜像数据卡与 npj Digital Medicine 偏倚专文中整理结构化信息;(2) 生成 §6 的 Python 预处理与 DataLoader 代码示例;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 的偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph。

§10.3 输入来源

  1. Burgos-Artizzu et al. (2020), Scientific Reports 10:10200 — 数据集原始论文(DOI: 10.1038/s41598-020-67076-5)
  2. Zenodo 数据集主页与版本记录(DOI: 10.5281/zenodo.3904280)
  3. HuggingFace 镜像 shr3m/fetal-planes-db 数据卡(标签体系、划分性质、图像尺寸与许可说明)
  4. HuggingFace 镜像 Marc-HealthAI/fetal-planes-classification-dataset-main(文件总大小复核)
  5. HuggingFace 镜像 ERO26/fetal-planes-classification-dataset-zenodo(标注者身份与镜像切分计数)
  6. HuggingFace 派生小子集 qingyuyang/Fetal_Planes_DB(派生规模与许可证)
  7. FetalCLIP 官方仓库与论文(arXiv:2502.14807;零样本切面/脑切面成绩与评测脚本)
  8. arXiv:2501.15248 — 扩散模型类别增强研究(六类图像数与训练/测试分布)
  9. sota2.com — Planes DB 6-view test 线性探测成绩汇总
  10. wizwand.com — 胎儿超声切面分类 SOTA 追踪(含 SonoNet-16 监督基线)
  11. npj Digital Medicine 2025 偏倚分析专文(PMC12166052;六类偏倚与孕期范围限制)
  12. Springer 预览页(跨孕期泛化证据评估)
  13. Semantic Scholar 数据集条目引文快照(引用次数,截至 2026-09)
  14. Baumgartner et al. (2017), IEEE TMI 36(11):2204-2215 — SonoNet 监督基线对照
  15. arXiv:2201.12260 — 原始论文框架下的错误率与技师对照结果复核

§10.4 人工校验表

内容模块 审核者 审核方式 审核状态
§2 医学背景(ICD-11 映射、SNOMED CT 映射、人群统计、金标准) 千方病案医学编辑部 交叉审核 ✅ 已通过
§3 数据集规格(六类分布、版本矩阵、镜像差异) 千方病案医学编辑部 与 Zenodo 官方页面及 arXiv:2501.15248 交叉比对 ✅ 已验证
§4 数据结构(字段字典、标签层级、缺失编码) 千方病案医学编辑部 与 HuggingFace 数据卡及官方 CSV 字段交叉比对 ✅ 已验证
§5 数据划分策略与泄漏风险 千方病案医学编辑部 交叉审核 ✅ 已通过
§6 代码示例与 8 个坑点 千方病案医学编辑部 逻辑审查 + 与 FetalCLIP 评测脚本及偏倚专文比对 ✅ 已通过
§7 质量评估与 DAIMS 评分 千方病案医学编辑部 交叉审核 ✅ 已通过
§8 排行榜与引用数表述 千方病案医学编辑部 与 FetalCLIP 论文及 SOTA 追踪站点交叉比对 ✅ 已验证
§C JSON-LD @graph 千方病案医学编辑部 Schema v3.9 字段逐项校验 ✅ 已通过

§10.5 AI 生成章节标注

以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§4.1 DAIMS 字段字典、§6.0-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.5 公平性评估代码、§7.7 DAIMS 评估表与评分、§8.7 生态快照、§C JSON-LD。

§10.6 最后审核

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

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



相关数据集导航

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

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

返回 AI-Ready 数据集