信息速览

RETOUCH(视网膜 OCT 积液分割挑战)— 跨厂商积液分割基准 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | RETOUCH |
| 英文全称 | RETOUCH – The Retinal OCT Fluid Detection and Segmentation Benchmark and Challenge |
| 别名/简称 | RETOUCH Challenge、Retinal OCT Fluid Challenge、RETOUCH 数据集 |
| 疾病分类(ICD-11) | 9B76 年龄相关性黄斑变性;9B74 视网膜血管阻塞(含视网膜静脉阻塞继发黄斑水肿) |
| SNOMED CT | 367651003(年龄相关性黄斑变性) |
| 数据模态 | 频域 OCT 体积扫描(Zeiss Cirrus、Heidelberg Spectralis、Topcon 三厂商)+ 体素级积液分割标注 |
| AI 任务类型 | 语义分割(IRF/SRF/PED)+ 检测(积液存在概率分类) |
| 样本总数 | 112 个 OCT 体积(训练 70:Cirrus 24 / Spectralis 24 / Topcon 22;测试 42:每厂商 14),官方 Details 页 |
| 数据格式 | ITK MetaImage(oct.mhd + oct.raw;reference.mhd + reference.raw) |
| 许可证 | 自定义数据共享协议(Data Sharing Agreement,注册后开放) |
| 访问级别 | 注册后开放(在官网注册、同意挑战规则并签署数据共享协议后下载) |
| DUO 标签 | GRU(通用研究使用;具体限制以官方数据共享协议为准) |
| 语言 | 英文(文档、标注说明与提交格式) |
| 首发日期 | 2017-04-10(训练集 Cirrus 与 Spectralis 部分发布) |
| 最后更新 | 2019-02-11(在线挑战重开,官网至今仍接受提交) |
| 发布机构 | 维也纳医科大学(MUV)、Radboud University Medical Center(RUNMC)、Erasmus MC |
| 官方主页 | https://retouch.grand-challenge.org/ |
| 下载地址 | https://retouch.grand-challenge.org/(注册后下载训练集与测试集图像) |
| DOI | 10.1109/TMI.2019.2901398 |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 有官方划分、统一 MetaImage 格式与官方评测服务;扣分项:标注仅覆盖部分 B 扫描、测试集标注不公开、无官方预处理脚本 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、积液类型与临床任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典(MetaImage 双文件结构、体素标签编码)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
本页面的数据规格、协议细节与基准数字均以 RETOUCH 官方渠道(官网 Details/Workshop 页)与同行评审论文为最终依据;两处来源冲突时以官方论文为准。分析性内容(坑点、选型建议、DAIMS 评分)为编辑部综合判断,逐条给出证据链接。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。RETOUCH 要求数据使用者在 retouch.grand-challenge.org 注册账号、同意挑战规则并签署数据共享协议(Data Sharing Agreement)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? RETOUCH 是 2017 年与 MICCAI 大会同期举办的一场国际挑战赛留下的公开数据集,专门用于「教 AI 看懂眼底 OCT 图像里的积液」。它包含 112 个经医生逐体素手工标注的三维 OCT 眼底扫描,来自三家不同厂商的扫描仪(Zeiss Cirrus、Heidelberg Spectralis、Topcon),每一体素被标记为视网膜内积液(IRF)、视网膜下积液(SRF)、色素上皮脱离(PED)或背景。
为什么重要? 积液的出现与多少直接决定抗 VEGF 注射治疗要不要打、什么时候打。但在 RETOUCH 之前,几乎没有一个既覆盖三类积液、又覆盖多种设备的公开基准,算法之间无法公平比较。RETOUCH 首次把「跨厂商、跨疾病、跨中心」三重差异放进同一个评测框架,成为跨设备域泛化研究的经典试验场。
我能用它做什么? 训练积液自动分割/检测模型并用官方服务器获得与全球选手可比的成绩;研究「在 A 厂商设备上训练、到 B 厂商设备上还准不准」的域泛化问题;或者把它作为医疗影像多类别小目标分割的教学数据集。注意:测试集标注不公开,本地上不了「官方成绩」,验证集需要自己划。
§1.1 摘要
RETOUCH(REtinal OCT Fluids Challenge)由维也纳医科大学(MUV)与荷兰 Radboud University Medical Center(RUNMC)、Erasmus MC 联合组织,作为 MICCAI 2017 大会 OMIA 研讨会的卫星挑战于 2017 年 4 月启动,2017 年 9 月 14 日在加拿大魁北克公布结果,此后于 2019 年 2 月 11 日转为长期在线挑战并持续接受提交。挑战数据集共 112 个频域 OCT 黄斑体积,约 60% 作为训练集(70 体积,Cirrus 24 / Spectralis 24 / Topcon 22)公开分发,约 40% 作为测试集(42 体积,每厂商 14 体积)只发图像不发标注。病例约一半为新生血管性年龄相关性黄斑变性(nAMD)、一半为视网膜静脉阻塞(RVO)继发黄斑水肿;为考察算法的疾病无关泛化能力,疾病类型不向参赛者披露。
参考标准由 MUV 的 4 名评级者与 RUNMC 的 2 名评级者人工逐体素标注,共覆盖 11,334 个 B 扫描;训练集为单次标注,测试集由两个中心独立双标注后按严格共识合并。挑战设两个任务:积液检测(输出每例 IRF/SRF/PED 存在概率,按 AUC 评估)与积液分割(逐体素标签,按 Dice 系数 DSC 与绝对体积差 AVD 评估),最终排名取两任务平均。8 支队伍完成正式参赛,冠军为 Simon Fraser University 的全卷积网络方法;相关论文发表于 IEEE Transactions on Medical Imaging(Bogunović et al., 2019)。
关键数字一览(全部有源可溯,详见对应章节):
| 项目 | 数值 |
|---|---|
| OCT 体积总数 | 112(训练 70 + 测试 42) |
| 患者数 | 112(每例 1 个体积) |
| 设备分布(训练) | Cirrus 24 / Spectralis 24 / Topcon 22 |
| 设备分布(测试) | 每厂商 14 体积 |
| 积液类别 | IRF(1)、SRF(2)、PED(3)、背景(0) |
| 已人工标注 B 扫描 | 11,334 |
| 评级者 | MUV 4 名 + RUNMC 2 名 |
| 参赛队伍 | 64 支下载数据、9 篇提交、8 支正式参赛 |
§1.2 战略价值
维度一:跨厂商域泛化的稀缺基准。 不同厂商 OCT 设备的扫描协议、层间距与斑点噪声模式差异显著——解剖结构相似,但「图像风格」完全不同,这构成典型的域偏移(domain shift)。RETOUCH 是第一个把三种主流厂商设备的数据放进同一标注体系与评测框架的积液数据集,使「在部分厂商上训练、在全部厂商上测试」的受控实验成为可能。跨厂商泛化至今仍是该数据集上被研究最多的问题(domain shift 实证)。
维度二:治疗监测定量的临床代理任务。 抗 VEGF 药物治疗以积液的存在与数量为核心决策依据,「积液体积变大了多少」直接影响给药节奏。RETOUCH 的评估体系同时考察分割质量(DSC)与体积定量准确性(AVD),并把三类积液分开评分,与临床决策链条高度对齐——这使其不只是分割竞赛,而是「AI 定量能否替代人工测量」的临床方法学试验场(挑战论文结论:检测已进入评级者间变异范围、分割融合优于单一方法)。
维度三:方法学研究的公共参照系。 由于 8 支 2017 参赛队的方法、代码与成绩全部公开(Workshop 页逐队列表),RETOUCH 成为少数能做「历史纵向比较」的基准:2017 年 U-Net 变体 avg Dice 0.55–0.78 → 2021 年 nnU-Net 0.81 → 2023–2025 年增强变体 0.82–0.83,方法学演进的每一步都能在同一测试协议下量化。对新方法论文而言,这份数据意味着「既能和 2017 年的参赛队比,也能和最新的 nnU-Net 系比」。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 设备覆盖 | 积液标注 | 标注粒度 | 差异化定位 |
|---|---|---|---|---|---|
| RETOUCH | 112 个体积 | 3 厂商(Cirrus/Spectralis/Topcon) | IRF + SRF + PED | 体素级 + 检测标签 | 双任务官方评测、跨厂商域泛化首选 |
| OPTIMA/OCSC(2015) | 30 个体积 | 4 厂商 | 仅 IRF(囊样积液) | 体素级 | RETOUCH 的前身,规模小一个数量级 |
| OCT2017(Kermany) | 84,484 张 B 扫描 | 以 Spectralis 为主 | 无(图像级 4 分类) | 图像级标签 | 大规模疾病分类,非积液定位 |
| Duke DME | 10 个 Spectralis 体积 | 单厂商 | 仅 IRF | 体素级(每体积 11 个 B 扫描标注) | 小而精的单设备基准 |
§1.4 版本时间轴
| 时间 | 事件 |
|---|---|
| 2017-04-03 | 挑战注册开放 |
| 2017-04-10 | 训练集第一部分发布(Cirrus 与 Spectralis) |
| 2017-06-12 | 训练集第二部分发布(Topcon) |
| 2017-08-01 | 测试集发布(仅图像) |
| 2017-09-03 | 测试集结果提交截止 |
| 2017-09-14 | MICCAI 2017(魁北克)OMIA 联合研讨会公布挑战结果,8 支队伍参赛,SFU 夺冠 |
| 2019-02-11 | 在线挑战重开,长期接受提交至今 |
| 2019-08 | 挑战论文正式发表于 IEEE Transactions on Medical Imaging 38(8):1858–1874 |
RETOUCH 没有采用 v1.x 式版本号,以上时间轴即官方「版本」事实;数据内容自 2017 年发布后未再扩充或修订。两条时间线的区分对引用很重要:数据「发布于 2017 年」(做方法学对比时用),论文「发表于 2019 年」(做文献引用时用);在线挑战 2019 年重开只影响「能否提交成绩」,不影响数据内容。
§1.5 典型应用场景
- 积液分割算法基准测试:用 70 个训练体积开发模型,向官方评测服务器提交测试集结果,获得与 2017 年 8 支参赛队及后续 SOTA 方法直接可比的 DSC/AVD 成绩。
- 提交格式:ZIP 内含
detection.csv与segmentation/目录,逐体 MetaImage,标签 0/1/2/3(见 §6.2)。
- 提交格式:ZIP 内含
- 跨厂商域泛化研究:按设备切分训练/测试集(如 Cirrus+Spectralis 训练 → Topcon 测试),量化域偏移影响,检验风格迁移、对抗增强等泛化方法。
- 关键约束:疾病类型不公开,域泛化实验自然聚焦「设备维度」而非「疾病维度」。
- 液体定量方法学验证:利用 AVD 指标研究「分割误差如何传导为体积测量误差」,为治疗监测类产品的方法学文档积累证据。
- AVD 以物理单位(体积)计分,与临床「积液量变化触发再治疗」的决策口径一致。
- 医学影像教学:三类积液 + 三厂商噪声风格 + 体素级真值,是讲解 OCT 影像解剖与标注协议的高质量教具。
- ITK-SNAP 打开单个训练目录即可叠加可视化,无需写代码。
- 半监督/弱监督算法研究:未标注 B 扫描与单评级者训练标签天然构成「标注稀疏 + 标签噪声」研究场景。
- 注意区分「未标注」与「确认无积液」(见 §4.5 与坑点 2)。
§2 医学背景
§2.1 疾病与编码映射(ICD-11)
| 标注/临床概念 | ICD-11 编码 | ICD-11 中文名 | 说明 |
|---|---|---|---|
| 新生血管性年龄相关性黄斑变性(nAMD) | 9B76 | 年龄相关性黄斑变性 | RETOUCH 约半数病例的源疾病 |
| 视网膜静脉阻塞(RVO)继发黄斑水肿 | 9B74 | 视网膜血管阻塞 | 另约半数病例的源疾病 |
| 视网膜内积液(IRF) | 继发征象(随源疾病编码) | — | 影像征象,不独立编码,对应视网膜内囊样腔隙 |
| 视网膜下积液(SRF) | 继发征象(随源疾病编码) | — | 影像征象,指感光细胞层与 RPE 之间的积液 |
| 色素上皮脱离(PED) | 继发征象(随源疾病编码) | — | 影像征象,指 RPE 层与 Bruch 膜脱离 |
§2.1b SNOMED CT 映射
| 标签/概念 | ICD-11 | SNOMED CT 码 | 术语 |
|---|---|---|---|
| 年龄相关性黄斑变性 | 9B76 | 367651003 | Age-related macular degeneration (disorder) |
| 视网膜内积液 | 随源疾病 | — | Intraretinal fluid(影像所见概念,多归入囊样黄斑病变描述) |
| 视网膜下积液 | 随源疾病 | — | Subretinal fluid(影像所见概念) |
| 色素上皮脱离 | 随源疾病 | — | Pigment epithelial detachment (of retina) |
注:IRF/SRF/PED 为 OCT 影像征象术语,SNOMED CT 中缺少与 RETOUCH 标注协议一一对应的标准编码,故本表只给出源疾病的标准码;征象行仅提供规范英文术语,供 NLP 抽取与报告结构化使用。
§2.2 疾病简介与流行病学
黄斑水肿与积液。 视网膜积液(fluid)是多种眼底疾病的共同终末通路:血管渗漏导致细胞外液积聚,在 OCT 断层图像上表现为低反射腔隙。按解剖位置分三类:**视网膜内积液(IRF)**是视网膜各层内的囊样腔隙,提示活动性渗漏、与视力预后负相关最密切;**视网膜下积液(SRF)**位于感光细胞层与视网膜色素上皮(RPE)之间,常见于中心性浆液性脉络膜视网膜病变、nAMD 与 RVO;**色素上皮脱离(PED)**是 RPE 与 Bruch 膜之间的液性或纤维血管性隆起,在 nAMD 中常提示 1 型脉络膜新生血管。
三类积液的影像与临床特征对比(标注协议的医学基础):
| 特征 | IRF(标签 1) | SRF(标签 2) | PED(标签 3) |
|---|---|---|---|
| 解剖位置 | 视网膜各层内部的囊样腔隙 | 感光细胞层与 RPE 之间 | RPE 与 Bruch 膜之间 |
| OCT 形态 | 圆形/卵圆形低反射囊腔,可融合 | 平滑弧形低反射带,常伴 RPE 隆起 | 大面积弧形隆起,下缘为 Bruch 膜 |
| 常见疾病 | nAMD、RVO、糖尿病黄斑水肿 | nAMD、CSC、RVO | nAMD(1 型 CNV)、PCV |
| 临床意义 | 与视力预后负相关最密切 | 提示活动性渗漏,可自行吸收 | 提示 1 型 CNV,治疗应答模式不同 |
| 分割难度 | 小目标、边界模糊、易漏检 | 体积中等、边界较清晰 | 目标大但需与 SRF/纤维血管成分区分 |
疾病背景。 RETOUCH 的病例约一半为 nAMD、一半为 RVO 继发黄斑水肿(挑战论文)。年龄相关性黄斑变性是全球主要致盲原因之一,据文献估计欧洲 AMD 患者超过 3,400 万人(nnUNet_RASPP 论文引述);视网膜静脉阻塞则是第二大视网膜血管疾病,分支静脉阻塞患病率随年龄显著上升。
治疗与影像的角色。 抗 VEGF 药物玻璃体腔注射是 nAMD 与 RVO 继发黄斑水肿的标准治疗。治疗决策遵循「以积液为导向」的 protocol:OCT 上任何一类积液出现或加重即触发再治疗。因此,积液的自动检测(有没有)与分割(有多少)直接对应临床「是否再治疗」与「随访间隔」两个决策,这正是 RETOUCH 双任务设计的临床出处。
§2.3 临床任务定义
| 任务 | 临床问题 | RETOUCH 对应设计 | 评估 |
|---|---|---|---|
| 筛查/检测 | 这只眼有没有积液?要不要治疗? | Task 1:输出每例 IRF/SRF/PED 存在概率(0.0–1.0) | ROC 曲线下面积 AUC(每类积液一个 AUC) |
| 诊断/定量 | 积液在哪个位置、体积多大、变化多少? | Task 2:逐体素分割为 IRF/SRF/PED/背景 | Dice 系数(DSC)+ 绝对体积差(AVD) |
| 治疗监测(研究场景) | 随访间积液量变化多少? | 由 Task 2 体积测量派生(数据集本身为单时点) | AVD 及其临床换算 |
| 设备适配(工程场景) | 模型能否跨厂商稳定工作? | 三厂商子集分设备评分 | 分厂商 DSC/AUC 对比 |
§2.4 患者人群
| 维度 | 内容 | 来源 |
|---|---|---|
| 数据来源中心 | 奥地利维也纳医科大学(MUV);荷兰 Erasmus MC 与 Radboud University Medical Center(ERASMUS/RUNMC) | 挑战论文 |
| 疾病构成 | 约一半 nAMD、一半 RVO 继发黄斑水肿;疾病类型不向参赛者披露 | 挑战论文 |
| 设备构成 | Cirrus 24 / Spectralis 24 / Topcon 22(训练集) | 官方 Details 页 |
| 样本单位 | 112 个体积对应 112 名患者(每人 1 个体积) | 挑战论文 |
| 时点设计 | 单时点回顾性收集,无纵向随访 | 数据集构成 |
| 年龄/性别/种族分布 | 官方未随数据发布 | — |
§2.5 临床价值
对算法开发者而言,RETOUCH 的价值在于其评估体系与临床决策「同构」:检测任务对应再治疗触发的敏感性要求(漏掉积液的代价高于误报),分割任务对应剂量与随访决策对体积定量的精度要求(AVD 直接衡量「测得准不准」)。挑战论文的结论具有明确的临床含义:2017 年参赛算法的积液检测能力已进入人工评级者间变异范围,可支撑「液体引导」随访策略;而分割质量仍有明显改进空间——多方法融合优于任何单一方法,说明单模型尚未饱和(PubMed)。这也是该数据集在发表 8 年后仍被新算法反复测评的原因。
两类任务的容错要求不同也值得注意:检测任务容许把「少量积液」报成「存在」(临床宁可信其有),因此 AUC 达到 1.00 的方法多;分割任务要求体素级精确,小 IRF 囊腔的漏检直接拉低 Dice,因此分割成绩提升缓慢——这也是 2017–2025 年间检测先饱和、分割仍在演进的结构性原因(见 §8.2)。
§2.6 金标准描述
| 属性 | 内容 |
|---|---|
| 参考标准形式 | 逐体素分割掩码:IRF=1、SRF=2、PED=3、其余=0,与 OCT 体积同尺寸的 MetaImage 文件 |
| 标注方式 | 人工逐体素标注(2D 逐层标注后构成 3D 体),标注覆盖共 11,334 个 B 扫描 |
| 标注者 | MUV:4 名评级者,由 1 名眼科住院医师监督、2 名视网膜专科医师培训;RUNMC:2 名评级者,由视网膜专科医师监督 |
| 一致性机制 | 训练集:单次标注(Cirrus/Spectralis 由 MUV 完成,Topcon 由 RUNMC 完成);测试集:两中心独立双标注,采用严格共识合并——仅当两中心一致时才判定某体素/某扫描存在积液,分歧体素被屏蔽并排除出评估 |
| 性质 | 专家人工标注,非算法自动生成;测试集真值不公开 |
金标准的一个重要细节:测试集的「严格共识」意味着真值集合比任何单一中心的标注都小——评级者分歧的体素被整体屏蔽,既不计入真值也不计入预测评估。这一设计抬高了测试真值的可靠性,但也意味着模型在这些边界区域的表现不影响官方成绩(见坑点 5 的本地/官测错位问题)。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐使用 | 获取方式 | 理由 |
|---|---|---|---|
| 训练/验证自己的模型 | 训练集(70 体积,含标注) | 注册 + 签协议后直接下载 | 标注公开,可自由划分与交叉验证 |
| 与 2017 参赛队及 SOTA 可比的成绩 | 官方测试集(42 体积)+ 在线评测 | 下载测试图像 → 官网提交结果 | 测试标注不公开,仅官方评测可复现排行榜 |
| 复现 MMIS-Net/nnU-Net 论文数字 | 训练集 5 折交叉验证(MMIS-Net 惯例)或官方测试集 | 同上 | 两条路线数字不可直接互比,见 §8.1 |
| 教学/演示 | 训练集任选几个体积 | 同上 | 单文件对即自包含(mhd + raw),SNAP 可视化即可开讲 |
§3.1 模态详情
RETOUCH 全部为频域 OCT(SD-OCT)黄斑体积扫描,无其他模态。三个厂商子集在扫描协议上刻意保持临床常规(非统一化协议):Cirrus 与 Spectralis 为立方体体积扫描,Topcon 含 T-2000 与 T-1000 两种机型。全部体积的视野约为 6×6 mm²,B 扫描(xz 断层)沿 z 维堆叠。图像以原始强度存储,保留了各厂商典型的斑点噪声与信号衰减特征——这正是域泛化研究的价值所在。标注为同尺寸体素掩码,与图像逐体素对齐。
三厂商的「图像风格」差异可以从三个层面理解:
| 层面 | 表现 | 对建模的影响 |
|---|---|---|
| 几何层面 | B 扫描数 49(Spectralis)vs 128(Cirrus/Topcon T-2000),层间距差异近 3 倍 | 重采样策略决定 3D 感受野的真实物理尺寸 |
| 强度层面 | 各厂商增益与噪声分布不同,直方图形态迥异 | 归一化统计量不可跨厂商混用 |
| 纹理层面 | 斑点噪声颗粒度与相关性模式不同 | 卷积特征对「噪声纹理」敏感,是域偏移主要来源 |
§3.2 按子集样本数
| 子集 | 体积数 | Cirrus | Spectralis | Topcon | 标注可得性 |
|---|---|---|---|---|---|
| 训练集(TRAIN001–TRAIN070) | 70 | 24 | 24 | 22 | 公开(单次标注) |
| 测试集(TEST001–TEST042) | 42 | 14 | 14 | 14 | 不公开(双中心共识标注,仅官方评测) |
| 合计 | 112 | 38 | 38 | 36 | — |
注意训练/测试的设备分布并不完全一致(测试集严格每厂商 14、训练集 24/24/22),这是组织者在 112 体积总量约束下的近似平衡;自己做留厂商实验时,可用的「目标域」训练体积数为 24 或 22(见 §5.2)。
§3.3 数据格式
| 文件 | 内容 | 格式 | 说明 |
|---|---|---|---|
oct.mhd |
图像头文件 | ITK MetaImage(MetaIO),ASCII 可读 | 含 DimSize(维度)与 ElementSpacing(层间距)等字段 |
oct.raw |
图像体数据 | 二进制体素强度 | 体素按 x→y→z 顺序连续存储,B 扫描沿 z 维 |
reference.mhd |
标注头文件 | ITK MetaImage,ASCII 可读 | 与对应 oct.mhd 同尺寸、同 spacing |
reference.raw |
标注体数据 | 二进制体素标签 | 取值 0(背景)/1(IRF)/2(SRF)/3(PED) |
MetaImage 头文件中与读取直接相关的关键字段:
| 头文件字段 | 含义 | 读取时的用途 |
|---|---|---|
DimSize |
三维体素数 [x, y, z] | reshape 与内存分配 |
ElementSpacing |
体素物理间距(mm) | 重采样与真实体积(AVD)计算 |
ElementType |
体素数据类型(如 MET_UCHAR) | 决定 raw 文件的解析宽度 |
ElementByteOrderMSB |
字节序 | 跨平台二进制读取 |
Origin / Direction |
物理原点与方向 | 多体积配准(本数据集内极少用到) |
MetaIO 格式文档见 itk.org/Wiki/MetaIO;推荐读取工具:SimpleITK(Python)、ITK-SNAP(itksnap.org,GUI 可视化)。
§3.4 存储大小
官方未统一披露数据集总大小。单个体积的存储量由 oct.mhd 头文件(ASCII,不足 1 KB)与 oct.raw 体数据构成,大小 = 各维像素数乘积 × 单体素字节数(详见 §3.9 各厂商维度);标注文件结构与图像一致。实际下载包以官网注册后提供的压缩包为准。
以 Cirrus 子集为例做量级估算(128×512×1024 ≈ 6,700 万体素):若体素为 8-bit,单体积图像约 64 MB;Spectralis(49×512×496 ≈ 1,240 万体素)约为其 1/5。位深以各 mhd 头文件 ElementType 为准,请勿跨子集假设一致。
§3.5 标注方式
人工逐体素标注(manual voxel-wise annotation)。评级者在专用标注软件中逐 B 扫描勾画积液边界并赋予类别标签,构成三维体素掩码。这不是自动预标注后的人工修正流水线——挑战论文与官方 Details 页均明确参考标准来自人工标注。标注直接表达「积液的存在、数量与类型」,具有直接临床解释意义。
标注工作流的三个要点:①逐层 2D 勾画、三维组装——评级者在每个含积液的 B 扫描上逐层勾画,掩码沿 z 维堆叠为体;②监督结构分层——MUV 的 4 名评级者由住院医师监督并受视网膜专科医师培训,RUNMC 的 2 名评级者由视网膜专科医师直接监督;③双标注仅用于测试集——训练集从效率出发采用单次标注,测试集从公信力出发采用双中心共识,两者的标签「口味」差异见坑点 5。
§3.6 标注者资质与一致性
| 中心 | 评级者 | 监督/培训 | 负责范围 |
|---|---|---|---|
| MUV(维也纳) | 4 名评级者 | 1 名眼科住院医师监督,2 名视网膜专科医师培训 | 训练集 Cirrus 与 Spectralis 子集的标注;测试集双标注之一 |
| RUNMC(奈梅亨) | 2 名评级者 | 视网膜专科医师监督 | 训练集 Topcon 子集的标注;测试集双标注之一 |
一致性保障机制有三层:其一,评级者均接受视网膜专科医师的系统培训;其二,测试集采用双中心独立标注 + 严格共识(两中心一致才计入真值,分歧体素屏蔽并排除出评估),这是测试集真值质量高于训练集的结构性原因;其三,检测任务的论文结论「算法检测性能进入评级者间变异范围」本身即以人工评级者间差异为参照系。
§3.7 采集周期
官方未披露原始扫描的起止年份。可核实的时间线为数据发布时间:训练集于 2017 年 4 月 10 日(Cirrus/Spectralis)与 2017 年 6 月 12 日(Topcon)分两批发布,测试集于 2017 年 8 月 1 日发布。数据为回顾性收集的常规临床扫描(两中心各自行扫描协议)。
§3.8 地域覆盖
| 国家 | 中心 | 角色 |
|---|---|---|
| 奥地利 | Medical University of Vienna(MUV) | 数据采集、标注、挑战组织 |
| 荷兰 | Erasmus MC(鹿特丹)+ Radboud University Medical Center(奈梅亨) | 数据采集(ERASMUS)、标注与组织(RUNMC) |
§3.9 设备规格
| 厂商/机型 | B 扫描数(z 维) | 每层像素(x×y) | 轴向分辨率 | 视野 | 备注 |
|---|---|---|---|---|---|
| Zeiss Cirrus | 128 | 512×1024 | ≈2 µm | 6×6 mm² | 训练 24 体积 |
| Heidelberg Spectralis | 49 | 512×496 | ≈3.9 µm | 6×6 mm² | 训练 24 体积 |
| Topcon T-2000 | 128 | 512×885 | 2.6–3.5 µm | 6×6 mm² | 训练集 Topcon 子集的主力机型 |
| Topcon T-1000 | — | 512×650 | 2.6–3.5 µm | 6×6 mm² | 与 T-2000 混合出现,官方未逐体积披露机型 |
三厂商在 B 扫描数量(49 vs 128)、层内分辨率与噪声纹理上差异显著:Spectralis 层数少但轴向分辨率较低、噪声呈现致密纹理;Cirrus 体素最多、轴向采样最细;Topcon 噪声风格最稀疏。这组「结构相似、纹理迥异」的并置正是 RETOUCH 区别于单厂商数据集的核心资产。
对工程实践的直接推论:① 任何固定输入尺寸的 2D 模型都要面对「同一物理视野对应 49–128 层」的采样密度差异;② 3D 模型的 patch 大小必须以物理尺度(mm)而非体素数设定;③ Topcon 子集内部混有两种机型(T-2000/T-1000),层内尺寸 885 与 650 列两种,读取代码不能写死列数。
§3.10 深度溯源链
患者(nAMD 或 RVO 继发黄斑水肿)→ MUV / ERASMUS 临床常规 SD-OCT 扫描(Cirrus/Spectralis/Topcon)→ 回顾性筛选出积液阳性病例 → MUV(4 名评级者)与 RUNMC(2 名评级者)人工逐体素标注 → 测试集经两中心独立双标注与严格共识合并 → 打包为 MetaImage 格式发布于 grand-challenge.org 平台 → 论文(Bogunović et al., IEEE TMI 2019)对数据与协议作最终学术背书。
溯源链中每一步的「可信度凭据」:
- 采集环节:两中心均为有 OCT 阅读与科研积累的临床中心(MUV 的 OPTIMA 实验室为挑战前身 OCSC 的组织者)。
- 筛选环节:病例均为积液阳性体积(任务相关性强,无凑数样本)。
- 标注环节:6 名评级者全部接受视网膜专科医师培训/监督,非众包标注。
- 合并环节:测试集严格共识机制在 Details 页公开可查。
- 发布环节:grand-challenge.org 平台托管,注册 + 协议双重控制。
- 背书环节:IEEE TMI 同行评审论文,全部规格数字可回溯到论文正文与表格。
§4 数据结构
§4.0 目录树
数据解压后的目录结构如下(以官方下载包为准):
RETOUCH/
├── Training set/
│ ├── TRAIN001/
│ │ ├── oct.mhd # 图像头文件(ASCII,含维度与 spacing)
│ │ ├── oct.raw # 图像体数据(二进制体素强度)
│ │ ├── reference.mhd # 标注头文件(与图像同尺寸)
│ │ └── reference.raw # 标注体数据(0/1/2/3 体素标签)
│ ├── TRAIN002/
│ │ └── ...
│ ├── ...
│ └── TRAIN070/
│ └── ...
└── Test set/
├── TEST001/
│ ├── oct.mhd # 测试集仅含图像,无 reference 文件
│ └── oct.raw
├── TEST002/
│ └── ...
├── ...
└── TEST042/
└── ...
每个训练体积是自包含的四文件组;测试体积只含图像两件套。目录名(TRAIN001…TEST042)即官方体 ID,提交结果时须按此 ID 命名。
§4.1 DAIMS 字段字典
| 字段/文件 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| 目录名(volume_id) | 文本 | 官方体标识符,全局唯一 | TRAIN042 |
主键、结果提交 ID | 无 | — | TRAIN001–TRAIN070 / TEST001–TEST042 |
| oct.mhd: DimSize | 整型三元组 | 体素维度 [x, y, z] | [512, 1024, 128] |
网格尺寸推导、reshape | 无 | — | 见 §3.9 |
| oct.mhd: ElementSpacing | 浮点三元组 | 体素物理间距(mm) | [0.0117, 0.0059, 0.0470] |
各向同性重采样、真实体积计算 | 厂商协议决定 | — | 约 0.002–0.12 mm 量级 |
| oct.raw | uint 强度体 | OCT 强度(原始未校准) | 值域随厂商而定 | 网络输入 | 斑点噪声、信号衰减 | 无显式编码 | 0–255 或 0–65535(读 header ElementBitDepth 确认) |
| reference.raw | uint 标签体 | 积液类别掩码 | 2(SRF 体素) |
分割监督信号 | 单评级者噪声(训练集) | 未标注 B 扫描全 0(≠无积液,见 §4.5) | 0/1/2/3 |
| reference.mhd: DimSize | 整型三元组 | 与图像 DimSize 完全一致 | 同图像 | 逐体素对齐校验 | 无 | — | 同图像 |
| oct.mhd: ElementType | 字符串 | 体素数据类型声明 | MET_UCHAR |
确定字节读取宽度 | 无 | — | MetaIO 类型枚举 |
| oct.mhd: ElementByteOrderMSB | 布尔 | 字节序声明 | False |
跨平台读取 | 无 | — | True/False |
注意:oct.raw 与 reference.raw 的字节序与位深以 mhd 头文件中的 ElementByteOrderMSB、ElementType 为准,不要假设所有厂商子集位深一致(见坑点 3)。
§4.2 标签分布
官方未发布逐类体素统计。已核实的分布事实:
- 标签体系为 4 类:背景(0)、IRF(1)、SRF(2)、PED(3),逐体素互斥标注;
- 共 11,334 个 B 扫描包含非零标注,其余 B 扫描全为背景(未标注或确认无积液,两种情形在文件层面不可区分);
- 三类积液的形态差异导致显著类别不均衡:IRF 常为分散小囊腔(单个体素团小),PED 可为大面积弧形隆起(单个体素团大),SRF 介于两者之间——后续文献报告的 Dice 分数普遍呈「PED 与 IRF 高、SRF 居中」之外的复杂格局,详见 §8.1 分类别成绩;
- 体积内部前景占比极低(积液体素通常仅占体积的百分之几量级),训练时须使用 Dice/Tversky 类区域损失或加权交叉熵(见 §6.6)。
三厂商子集的类别表现特点(来自官方测试集逐类成绩的横向证据,见 §8.1):IRF 类各方法成绩差异最大(2017 年 0.49–0.85),说明小囊腔分割是方法间拉开差距的主战场;PED 类则对「后处理与体积偏置」敏感(AVD 普遍高于 IRF/SRF 一个量级);SRF 类成绩居中且方法间相对一致。这一格局提示:如果你的方法在小目标(IRF)上有创新,RETOUCH 是能把它「测出来」的基准。
自行统计逐类体素分布的最小代码(对训练集跑一遍即可得到你自己的官方级统计):
# 统计训练集逐类体素占比(标签 0-3)
import os
import numpy as np
import SimpleITK as sitk
data_root = "/path/to/RETOUCH/Training set" # ← 数据根目录
counts = np.zeros(4, dtype=np.int64) # 背景/IRF/SRF/PED
for cid in sorted(os.listdir(data_root)):
msk = sitk.GetArrayFromImage(
sitk.ReadImage(os.path.join(data_root, cid, "reference.mhd")))
counts += np.bincount(msk.ravel(), minlength=4)
print("voxel counts:", counts.tolist())
print("per-class ratio:", (counts / counts.sum()).round(5).tolist())
§4.3 关键统计
| 统计项 | 数值 | 来源 |
|---|---|---|
| OCT 体积总数 | 112(70 训练 + 42 测试) | 官方 Details 页 |
| 患者数 | 112(每人 1 体积) | 挑战论文 |
| 已标注 B 扫描数 | 11,334 | 挑战论文 |
| 标签类别数 | 4(背景 + 3 类积液) | 官方 Details 页 |
| 参与标注的评级者 | 6 名(MUV 4 + RUNMC 2) | 官方 Details 页 |
| 参赛队伍 | 8 支正式参赛(64 支队伍下载数据,9 篇论文提交) | 挑战论文 |
| 评估指标 | 分割:DSC + AVD;检测:AUC | 官方 Details/Workshop 页 |
| 在线挑战状态 | 2019-02-11 重开后持续开放提交 | 官网主页 |
§4.4 数据层级
患者(patient, n=112,每人 1 个体积)
└── OCT 体积(volume, n=112:TRAIN001–TRAIN070 / TEST001–TEST042)
└── B 扫描切片(B-scan,z 维逐层;全数据集共 11,334 层含标注)
└── 体素(voxel,逐点标签 0/1/2/3,逐体素互斥)
层级含义对建模的影响:体积是最小独立样本单位(同体积切片高度相关);B 扫描是 2D 方法的自然输入单位;体素是 3D 方法的监督信号单位。任何划分(训练/验证/测试)都必须以体积为单位进行,否则产生切片级泄漏(见坑点 1)。
各层级的「数量级感」也值得记住:患者/体积层只有 112 个样本——统计功效低,任何「按体积」的分析(如分厂商对比)都要警惕小样本波动;B 扫描层有 11,334 个标注样本——2D 方法的数据量在此层;体素层有数十亿采样点——但这不是独立样本,有效样本量远小于表观体素数,这就是体素级随机划分会灾难性高估性能的统计学根源。
§4.5 缺失值与信息性缺失
RETOUCH 不存在表格意义的缺失字段——它是纯影像数据集。但它有影像数据集特有的信息性缺失,必须在建模前理解:
| 现象 | 表面样子 | 实际含义 | 处理建议 |
|---|---|---|---|
| 未标注 B 扫描 | reference.raw 对应层全 0 | 可能「确认无积液」,也可能「未被标注」——文件层面不可区分 | 训练时把全 0 层当背景会引入假阴性监督;建议只用含标注的 11,334 层做 2D 训练,或按体积做 3D 训练时容忍部分层噪声 |
| 测试集无 reference 文件 | TEST 目录只有图像 | 官方有意扣留,用于防测试集调参 | 本地无法计算测试 DSC,必须提交官方评测 |
| 疾病类型缺失 | 每例无 AMD/RVO 标签字段 | 官方刻意不披露(域泛化设计) | 无法按疾病分层抽样或分组评估 |
这些「缺失」都不需要修复,但都需要在实验设计里显式承认:把未标注层当背景的模型请单独标注这一假设;把疾病混淆归入「不可控变量」写入 limitations。读者/审稿人对「显式承认的缺失」宽容得多。
§5 划分与使用建议
§5.1 官方划分
官方把 112 体积按约 60%/40% 分为训练集(70)与测试集(42),且在每个厂商内保持平衡(训练 24/24/22,测试每厂商 14)。划分已固定多年,社区默认沿用:训练集用于模型开发,测试集只用于向官方提交。任何把测试集图像用于训练或模型选择的做法都是对本基准的破坏。
官方划分的两个隐含设计:① 按厂商平衡意味着「官方测试成绩」天然是三厂商的平均表现,单厂商优异的算法不占便宜;② 测试集 42 体积的规模适中,足以让排名稳定,又不至于让提交行为本身构成显著的测试集探索。
§5.2 社区惯例划分
由于测试集无标注,发表非官方成绩的论文普遍采用两种做法:其一,在训练集上做 5 折交叉验证(如 MMIS-Net 论文在训练集上以 5 折交叉验证评估),按体积划分折;其二,把训练集按固定比例(如 80/20)切为内部训练/验证集,以验证集调参与报告。两条路线的数字互不可比,也都不等于官方测试集成绩(见 §8.1)。
| 划分方式 | 训练/验证比例 | 适用场景 | 注意事项 |
|---|---|---|---|
| 官方划分 + 官方评测 | 70 训练 / 42 测试 | 发表官方可比成绩 | 提交次数无奖励,最后提交计分 |
| 训练集 5 折交叉验证 | 56/14 每折 | 论文方法学比较(MMIS-Net 口径) | 折内必须按体积分组 |
| 内部固定切分 | 如 56/14(80/20) | 快速迭代 | 验证集偏小,方差大,建议多随机种子 |
| 留厂商验证 | 48 训练 / 22 测试(去一厂商) | 域泛化研究 | 成绩显著低于同厂商验证属正常 |
§5.3 划分策略建议与泄漏风险
- 按体积划分,绝不按 B 扫描划分:相邻 B 扫描的解剖与积液形态高度相似,切片级随机划分会让验证集「记住」训练切片,Dice 虚高。
- 按厂商分层:RETOUCH 的核心难度是跨厂商泛化。建议内部验证集固定厂商配比,或干脆做留厂商(leave-one-vendor-out)验证以直接测量域偏移代价。
- 无同患者多体积泄漏:112 体积对应 112 名患者,不存在同一患者跨划分的问题;泄漏风险全部来自切片级划分与测试集信息渗漏。
- 禁止在测试集上模型选择:官方明确「多次提交时以最后一次为准」,且结果不即时反馈细节;在本地对测试集做任何形式的调参(哪怕只看 AUC)都构成测试集过拟合。
§5.4 交叉验证建议
推荐 5 折分组交叉验证(按体积分组、按厂商分层),每折统计三类积液各自的 DSC/AVD 并报告均值±标准差;同时报告「合并三类的平均 Dice」以便与文献表格(如 MMIS-Net 论文表 3)逐行对照。2D 方法可额外报告「每 B 扫描」粒度的指标,但主指标必须落在体积粒度。
最小实现要点(sklearn 一行完成分组切分):
# 按体积分组的 5 折划分骨架
from sklearn.model_selection import GroupKFold
case_ids = [f"TRAIN{i:03d}" for i in range(1, 71)]
gkf = GroupKFold(n_splits=5)
for tr_idx, va_idx in gkf.split(case_ids, groups=case_ids):
train_ids = [case_ids[i] for i in tr_idx] # 训练折体积
valid_ids = [case_ids[i] for i in va_idx] # 验证折体积(与训练折零交集)
# 将 train_ids / valid_ids 传入 §6.4 的 Dataset 构造参数 case_ids 即可
pass
§5.5 外部验证建议
用 RETOUCH 训练的模型上临床场景前,建议依次验证:同设备内部留出集 → 跨厂商(RETOUCH 内部留厂商)→ 外部机构数据(其他人群/设备)。文献已证明三厂商间噪声模式差异足以造成显著性能下降(域偏移实证),跨厂商成绩是外部验证的最低门槛而非终点。
- 第一阶梯(内部):训练集内分组交叉验证,确认方法本身有效。
- 第二阶梯(域内泛化):留厂商验证或官方测试集提交,确认跨设备稳健。
- 第三阶梯(域外泛化):外部机构、其他人群的真实扫描(前瞻性更好),注意 Ethics/IRB 与协议限制。
- 第四阶梯(临床前瞻):对接治疗决策的前瞻性研究,超出本数据集能支撑的范围。
§6 AI 就绪指南
§6.0 环境准备
RETOUCH 无云端一键环境,本地准备即可覆盖全部需求:
| 环境/依赖 | 版本建议 | 用途 |
|---|---|---|
| Python | 3.9–3.11 | 全部脚本 |
| SimpleITK | ≥2.2 | MetaImage 读取与重采样 |
| numpy / scipy | 最新稳定 | 数组处理与插值 |
| PyTorch | ≥2.0 | 训练(§6.4) |
| ITK-SNAP | 最新版 | 图形界面可视化(非必需) |
存储预估:预留 5–10 GB 即可容纳数据与中间产物;显存需求见 §6.8。
§6.1 快速上手
代码预期目录结构:
data_root/Training set/TRAIN001…TRAIN070/每目录含oct.mhd/oct.raw/reference.mhd/reference.raw四文件(即解压后原样目录)。data_root为你存放 RETOUCH 数据的任意路径,代码中所有路径均由os.path.join(data_root, ...)拼接。最小可用子集:任意 1 个训练目录(4 文件)即可跑通下面的读取示例。
# pip install SimpleITK numpy
import SimpleITK as sitk
import numpy as np
import os
data_root = "/path/to/RETOUCH/Training set" # ← 改成你的数据根目录
case_id = "TRAIN001" # 最小可用子集:单个训练目录
img = sitk.ReadImage(os.path.join(data_root, case_id, "oct.mhd"))
msk = sitk.ReadImage(os.path.join(data_root, case_id, "reference.mhd"))
img_arr = sitk.GetArrayFromImage(img) # 返回 [z, y, x] 数组(z = B 扫描维)
msk_arr = sitk.GetArrayFromImage(msk)
print("image shape (z,y,x):", img_arr.shape) # 例如 Spectralis: (49, 496, 512)
print("spacing (x,y,z) mm:", img.GetSpacing())
print("label values:", np.unique(msk_arr)) # 0=背景 1=IRF 2=SRF 3=PED
print("labeled B-scans:", np.unique((msk_arr > 0).sum(axis=(1, 2)) > 0).sum())
可视化推荐 ITK-SNAP(itksnap.org):File → Open Image 载入 oct.mhd,再 Add Existing Segmentation 载入 reference.mhd,即可叠加查看三类积液标注。
三个常见读取错误,遇到时优先排查:① GetArrayFromImage 返回的数组轴序是 [z, y, x](SimpleITK 惯例),与 DimSize 的 [x, y, z] 相反;② 测试集目录没有 reference.mhd,遍历代码要按目录是否存在标注文件分支;③ Topcon 体积存在 885 与 650 两种列数,写死输入尺寸会崩溃。
§6.2 数据获取
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 访问 retouch.grand-challenge.org | 官方主页,挑战至今仍开放提交 |
| 2 | 注册账号(grand-challenge.org 通用账号) | 免费注册 |
| 3 | 阅读并同意挑战规则 | 页面 How to Participate 节 |
| 4 | 签署数据共享协议(Data Sharing Agreement) | 研究用途;商业使用另行联系组织者 |
| 5 | 下载训练集(含标注)与测试集(仅图像) | MetaImage 文件打包分发 |
| 6 | 结果提交:打包 detection.csv + segmentation/ 目录为 ZIP 上传 |
官方评测服务返回 DSC/AVD/AUC 成绩 |
提交包格式(官方规定):detection.csv 每行对应一个测试体 ID 及其 IRF/SRF/PED 存在概率(0.0–1.0);segmentation/ 目录内为逐体分割结果 MetaImage(如 TEST001.mhd/raw),标签编码与参考标准一致(0/1/2/3)。
下载完成后的完整性自检:
# 快速完整性检查:训练集 70 个体积应各含 4 个文件且图像/掩码维度一致
import os
import SimpleITK as sitk
root = "/path/to/RETOUCH/Training set" # ← 数据根目录
bad = []
for cid in sorted(os.listdir(root)):
d = os.path.join(root, cid)
files = set(os.listdir(d))
if files != {"oct.mhd", "oct.raw", "reference.mhd", "reference.raw"}:
bad.append((cid, "missing files")); continue
img = sitk.ReadImage(os.path.join(d, "oct.mhd"))
msk = sitk.ReadImage(os.path.join(d, "reference.mhd"))
if img.GetSize() != msk.GetSize() or img.GetSpacing() != msk.GetSpacing():
bad.append((cid, "image/mask mismatch"))
print("broken cases:", bad if bad else "none — 70 cases OK")
§6.3 预处理全流程
推荐流水线:读取 MetaImage → 按厂商记录 spacing → 重采样到统一体素间距 → 强度归一化(按厂商分别统计)→ 裁剪或填充到统一尺寸。以下代码可直接运行:
<details>
<summary>预处理代码(点击展开,约 60 行)</summary>
# pip install SimpleITK numpy scipy
import SimpleITK as sitk
import numpy as np
import os
TARGET_SPACING = (0.01, 0.01, 0.05) # 目标各向同性度 (x,y,z) mm,可按显存调整
def load_case(data_root, case_id):
"""读取单个体积对,返回 SimpleITK 图像与掩码。"""
d = os.path.join(data_root, case_id)
img = sitk.ReadImage(os.path.join(d, "oct.mhd"))
msk = sitk.ReadImage(os.path.join(d, "reference.mhd"))
return img, msk
def resample(img, target_spacing, is_label=False):
"""重采样到目标 spacing;标签用最近邻,图像用线性插值。"""
old = img.GetSpacing()
size = np.array(img.GetSize())
new_size = np.round(size * np.array(old) / np.array(target_spacing)).astype(int)
rst = sitk.ResampleImageFilter()
rst.SetOutputSpacing(target_spacing)
rst.SetSize([int(v) for v in new_size])
rst.SetOutputOrigin(img.GetOrigin())
rst.SetOutputDirection(img.GetDirection())
rst.SetInterpolator(sitk.sitkNearestNeighbor if is_label else sitk.sitkLinear)
return rst.Execute(img)
def normalize(img_arr, mask_arr):
"""强度标准化:只统计视网膜区域(前景掩码膨胀近似),减少背景拉伸。"""
roi = mask_arr > 0 if mask_arr.sum() > 0 else np.ones_like(img_arr, bool)
# 用图像自身的 1-99 分位截断 + z-score,避免极端暗点/亮点主导
lo, hi = np.percentile(img_arr[img_arr > 0], (1, 99))
x = np.clip(img_arr.astype(np.float32), lo, hi)
x = (x - x.mean()) / (x.std() + 1e-8)
return x, roi
# 逐例处理示例
data_root = "/path/to/RETOUCH/Training set" # ← 数据根目录,与 §6.1 一致
for case_id in sorted(os.listdir(data_root))[:3]: # 演示前 3 例
img, msk = load_case(data_root, case_id)
img_r = resample(img, TARGET_SPACING, is_label=False)
msk_r = resample(msk, TARGET_SPACING, is_label=True)
x, _ = normalize(sitk.GetArrayFromImage(img_r), sitk.GetArrayFromImage(msk_r))
y = sitk.GetArrayFromImage(msk_r).astype(np.int64)
print(case_id, "image:", x.shape, "mask:", y.shape,
"labels:", np.unique(y).tolist())
</details>
要点:① 各厂商 spacing 差异大,必须重采样,否则网络学到的「层厚」实为设备参数;② 强度归一化的统计量要按厂商分开记录,推理时按厂商路由(但注意测试集不披露机型,工程上用「每个体积自身统计量」更稳,见坑点 3);③ 标签重采样必须用最近邻插值,线性插值会产生 1.5 这种非法标签。
预处理决策速查表:
| 决策点 | 推荐做法 | 理由 |
|---|---|---|
| 目标 spacing | 统一到中间值(如 0.01×0.01×0.05 mm) | 兼顾显存与几何保真 |
| 插值方式 | 图像线性、标签最近邻 | 避免非法标签值 |
| 强度归一化 | 每体积自身 1–99 分位截断 + z-score | 测试集无机型标签,逐例统计最稳 |
| ROI 处理 | 保留全幅(OCT 体积本身紧凑) | 积液可出现在视野任意位置,勿激进裁剪 |
| 验证对齐 | 逐例断言图像与掩码 DimSize/spacing 一致 | 防止错位监督 |
§6.4 PyTorch DataLoader
<details>
<summary>完整可运行 Dataset + DataLoader 代码(点击展开,约 70 行)</summary>
# pip install torch SimpleITK numpy
import os
import numpy as np
import SimpleITK as sitk
import torch
from torch.utils.data import Dataset, DataLoader
class Retouch2DDataset(Dataset):
"""RETOUCH 2D B-scan 分割数据集。
预期目录结构(data_root 之下):
TRAIN001/oct.mhd oct.raw reference.mhd reference.raw (共 70 个训练目录)
data_root 由构造参数传入,所有路径用 os.path.join(data_root, case_id, fname) 拼接。
输出:image (1,H,W) float32 已 z-score;mask (H,W) int64 取值 0-3。
仅返回含积液标注的 B 扫描(非零切片),避免全 0 切片的假阴性监督(见坑点 2)。
"""
def __init__(self, data_root, case_ids=None, min_label_pixels=16):
self.root = os.path.join(data_root, "Training set")
self.case_ids = case_ids or sorted(os.listdir(self.root))
self.min_label_pixels = min_label_pixels
self.index = self._build_index()
def _build_index(self):
idx = []
for cid in self.case_ids:
msk = sitk.GetArrayFromImage(
sitk.ReadImage(os.path.join(self.root, cid, "reference.mhd")))
for z in range(msk.shape[0]):
if (msk[z] > 0).sum() >= self.min_label_pixels:
idx.append((cid, z))
return idx
def __len__(self):
return len(self.index)
def __getitem__(self, i):
cid, z = self.index[i]
d = os.path.join(self.root, cid)
img = sitk.GetArrayFromImage(sitk.ReadImage(os.path.join(d, "oct.mhd")))
msk = sitk.GetArrayFromImage(sitk.ReadImage(os.path.join(d, "reference.mhd")))
x = img[z].astype(np.float32)
lo, hi = np.percentile(x[x > 0], (1, 99)) if (x > 0).any() else (0, 1)
x = np.clip(x, lo, hi)
x = (x - x.mean()) / (x.std() + 1e-8)
y = msk[z].astype(np.int64)
return torch.from_numpy(x[None]), torch.from_numpy(y)
if __name__ == "__main__":
data_root = "/path/to/RETOUCH" # ← 数据根目录(其下应有 Training set/)
ds = Retouch2DDataset(data_root)
print("dataset size:", len(ds))
loader = DataLoader(ds, batch_size=8, shuffle=True, num_workers=4)
x, y = next(iter(loader))
print("batch image:", x.shape, x.dtype, "| batch mask:", y.shape, y.dtype)
print("mask labels in batch:", torch.unique(y).tolist())
</details>
3D 方式建议直接使用 nnU-Net(把 oct.mhd 当 *_0000.nii.gz 之外的原始格式处理时,先转换为 NIfTI 或让 nnU-Net v2 的 MetaImage 读取器接管),其自动配置的 spacing、patch size 与损失函数在 RETOUCH 上已被反复验证(见 §6.7)。
设计决策说明:① 上述 Dataset 采用 2D B 扫描粒度,是因为 2D 训练显存友好、单卡即可完成,且 11,334 个标注切片提供了足够的样本量;② min_label_pixels 过滤把「仅边缘几个像素的偶然标注」排除,降低监督噪声;③ 每切片独立 z-score 而非数据集级统计,是规避「测试集无厂商标签」的稳妥折中;④ 若切换到 3D,仅需把索引改为体 id、读取整卷并按 patch 采样,标签通道建议 one-hot(4 类)。
§6.5 坑点清单(8 个)
⚠️ 坑点 1:按 B 扫描随机划分训练/验证集导致切片级泄漏(分类:数据泄漏)
问题:RETOUCH 中同一体积的相邻 B 扫描解剖结构与积液形态高度相似。若按切片(2D 样本)随机划分训练/验证集,验证集切片几乎总有「孪生切片」在训练集里,验证 Dice 会虚高数个百分点,完全失去指导意义。
症状:验证集 Dice 0.9+ 且方差极小,但跨体积或跨厂商评估时性能骤降;同一篇论文里「验证成绩」远好于别人在官方训练集 5 折交叉验证的成绩。
解决:
- 简单方法:任何划分都按目录名(体积)分组——
GroupShuffleSplit(sklearn)按TRAIN0xx前缀分组随机切分。- 进阶方法:按体积分组 + 按厂商分层,保证每折内 Cirrus/Spectralis/Topcon 配比一致;2D 训练的验证指标只在「体积粒度」上聚合(先对体积内切片平均,再对体积平均)。
- SOTA 方法:直接采用社区惯例的 5 折分组交叉验证(MMIS-Net 等论文的评测口径),或留厂商验证(leave-one-vendor-out)以同时度量域偏移。
参考:基于 RETOUCH 的域泛化研究(含按体积处理的讨论);外部验证类论文强调按患者/体积划分防泄漏快速自检:把验证集 Dice 按「体积」重聚合后若下降超过 3 个百分点,基本可以确认存在切片级泄漏。
⚠️ 坑点 2:把未标注 B 扫描当作「无积液」背景层训练(分类:标签理解)
问题:官方只对 11,334 个 B 扫描做了标注;一个体积内其余层在
reference.raw中全为 0。全 0 有两种互斥含义——「确认无积液」或「未被标注」,文件层面无法区分。把未标注层当背景训练会给模型注入系统性假阴性监督(真有积液但标签为 0)。
症状:模型对边界模糊的小 IRF 囊腔召回率异常低;可视化时发现模型「明明看见了」积液却不输出;训练损失震荡、验证集三类积液 Dice 不均衡地偏低。
解决:
- 简单方法:2D 训练只用含非零标注的切片(如 §6.4 代码中
min_label_pixels过滤);3D 训练对全 0 切片的监督权重降权。- 进阶方法:半监督框架——把未标注切片当作无标签样本参与一致性正则(mean-teacher / 伪标签),只让已标注切片提供监督信号。
- SOTA 方法:按「标注协议已知层」重建 3D 监督掩码:对 Topcon 128 层与 Spectralis 49 层分别统计有标注层的分布,训练时对「协议未标注区域」使用 masked loss(不回传梯度)。
参考:官方 Details 页参考标准说明;挑战论文(IEEE TMI 38(8):1858–1874)验证方法:统计每个训练体积中有标注切片的数量分布——若呈「大量 0 标注层 + 集中标注层」的块状分布,则说明未标注层是协议性跳过而非逐层确认。
⚠️ 坑点 3:三厂商维度、spacing 与噪声风格不同,混合训练前不做域对齐(分类:预处理陷阱)
问题:Cirrus(128×512×1024)、Spectralis(49×512×496)、Topcon(128×512×885/650)的体素数相差近 3 倍,物理 spacing 与斑点噪声纹理也截然不同。不重采样直接混合训练,网络把「设备参数」当「解剖特征」学;不区分厂商的强度归一化会被某一厂商的强度分布主导。
症状:训练集损失收敛但某一厂商子集的验证 Dice 显著塌陷(常差 10+ 个百分点);拼接成 batch 时报尺寸错误;模型在训练过的厂商上正常、换厂商后把视网膜层错分为积液。
解决:
- 简单方法:全部体积重采样到统一目标 spacing(§6.3 代码),强度用每体积自身 1–99 分位截断 + z-score。
- 进阶方法:按厂商维护归一化统计量并在推理时按厂商路由;训练时加入厂商平衡采样,保证每个 batch 内三厂商占比接近。
- SOTA 方法:跨厂商域泛化技术——直方图匹配到参考厂商、风格迁移/对抗域适应,或直接用 nnU-Net 的自动配置(其 spacing 策略按数据集统计而非逐厂商,已被验证跨厂商稳健);文献实证三厂商「结构相似、噪声模式显著不同」是主要域偏移来源,针对噪声纹理的增强(斑点噪声模拟)收益明确。
参考:域偏移实证研究;多厂商 OCT 预处理实践(直方图匹配、去噪、ROI 裁剪)排查顺序建议:先固定模型只换预处理(定位预处理敏感性),再固定预处理只换厂商子集训练(量化域差距),最后引入域适应技术。
⚠️ 坑点 4:本地无法复现「官方测试集成绩」,误把训练集交叉验证分数当 SOTA 对标(分类:评估误用)
问题:测试集标注不公开,本地永远算不出测试集 DSC/AUC。很多论文报告的是训练集 5 折交叉验证或内部划分成绩,与官方排行榜数字不可直接比较——官方测试集真值还是双中心严格共识标注,比单评级者的训练标签更「严」也更干净。
症状:照着 MMIS-Net 论文表 3 的官方测试集数字(如 avg Dice 0.83)评估自己「训练集交叉验证 avg Dice 0.80」,误以为自己差 3 个点;实际上两个数字的评估集、标注协议都不同。
解决:
- 简单方法:引用文献时逐条核对「成绩来源」——官方测试集还是训练集交叉验证;本 Wiki §8.1 已按口径分列。
- 进阶方法:提交官方评测获得可比数字(ZIP:
detection.csv+segmentation/),并遵守「多次提交以最后一次为准」的规则。- SOTA 方法:同时报告官方测试集成绩与本地 5 折交叉验证成绩,并公开划分脚本,让两类数字各归其位。
参考:官方 Details 页提交与评测说明;MMIS-Net 论文表 3 口径一句话准则:看到任何「RETOUCH Dice = 0.XX」的数字,先问三个问题——训练集还是测试集?单标注还是共识标注?谁评测的?
⚠️ 坑点 5:训练集单评级者标签噪声 vs 测试集双中心共识的结构性偏移(分类:偏倚陷阱)
问题:训练集是单次标注(MUV 或 RUNMC 一方完成),测试集真值是两中心独立标注后的严格共识(分歧体素直接屏蔽)。两个划分的标签「口味」不同:训练标签可能把分歧区域标成某一类,测试评估却完全忽略这些区域。模型在训练分布上学到的决策边界与被评估的体素集合不一致。
症状:测试集成绩系统性低于本地验证成绩;模型在「评级者容易分歧的边界区域」上的预测不影响官方分数(被屏蔽),但会影响你的本地指标,造成「本地差、官测好」的错位。
解决:
- 简单方法:本地评估时对类别边界带做形态学腐蚀,近似「共识区域」评估口径。
- 进阶方法:训练用软标签或 label smoothing,容忍单评级者的边界不确定性;对体积/边界不确定区域做边界注意力加权。
- SOTA 方法:多评级者建模(如概率标签融合),或融合多模型预测——挑战论文已证明「融合自动方法优于任何单一方法」,说明在单标签噪声下集成是有效降噪手段。
参考:挑战论文结论(PubMed 30835214);官方 Details 页标注协议注意「屏蔽」的双向含义:分歧体素既不要求你预测对,也不惩罚你预测错——它们不在评估集合里;但你的本地指标没有这层排除,两边数字天然不可比。
⚠️ 坑点 6:三类积液形态与体素量级差异极大,直接交叉熵训练丢失小目标(分类:标签理解)
问题:IRF 是分散的小囊腔(前景团小而碎),PED 是大面积弧形隆起(前景团大而整),SRF 居中;积液总体素占体积比例极低。逐像素交叉熵会让网络偏向预测「全背景」而获得看似很低的训练损失。
症状:训练 loss 很低但三类 Dice 全为 0 或接近 0;预测图里 PED(大面积类)相对占优而 IRF 小囊腔全部漏检;类间 Dice 方差巨大。
解决:
- 简单方法:换用 Dice loss / Tversky loss 或加类别权重(按各类体素占比倒数加权)。
- 进阶方法:Dice + 交叉熵复合损失(nnU-Net 默认配方);对 IRF 等小目标类单独上采样或使用 patch 级聚焦采样(前景中心裁剪)。
- SOTA 方法:挑战历史经验——领先队伍普遍按流体类型分设网络并对概率图做级联精修,或统一 one-hot 标签空间后用多任务头;近年 MMIS-Net 用统一模型 + 相似性融合块在三类上同时超越分网络策略。
参考:MMIS-Net(arXiv 2508.13936);挑战方法综述(级联与分类别网络经验)训练前做一次逐类体素占比统计(§4.2 方法)并写成文档——它是选择损失函数权重、采样策略和解释失败案例的事实依据。
⚠️ 坑点 7:多网络级联 + 按厂商路由的推理工程复杂度(分类:工程陷阱)
问题:复现 2017 年领先方法时常发现其架构是「每类积液一个网络 + 层分割分支 + 后处理级联」(SFU、RMIT、UCF 等队皆如此),推理时需加载多个网络并串联多步后处理;不同厂商子集还可能需要不同预处理参数。复现成本和部署出错率都被工程复杂度放大。
症状:推理脚本分支多、参数散落;漏掉某厂商的专属预处理导致该子集成绩塌陷;部署时多模型串联的显存与时延翻倍。
解决:
- 简单方法:把每厂商预处理参数显式写入配置文件(YAML),推理路径与训练路径共用同一份配置,杜绝两套逻辑。
- 进阶方法:蒸馏——用级联大模型的输出作为单模型训练目标,得到一个网络覆盖三厂商三类积液的部署友好版本。
- SOTA 方法:直接采用 nnU-Net(自动配置 + 单模型)或 MMIS-Net(统一标签空间 + 单模型多 lesion)作为基线,避免复刻历史级联架构;文献明确指出级联多网络「增加训练与推理复杂度」。
参考:MMIS-Net 对类定义不一致与多网络复杂度的处理;挑战八队方法概览(表 II)经验法则:复现历史方法只为教学与研究对照;一切新工程以单模型为默认架构,除非有证据表明级联带来的增益超过其工程成本。
⚠️ 坑点 8:忽视官方「双任务平均排名」协议,用单一指标复现排行榜(分类:评估误用)
问题:RETOUCH 官方排名不是「平均 Dice」:分割任务分数 = 流体类型 × 设备 × 误差度量(DSC、AVD)共 18 项排名之和,检测任务分数 = 3 类积液 AUC 排名之和,最终排名 = 两任务平均(平局时分割优先)。只优化/只报告平均 Dice 的方法,在官方口径下可能排名完全不同——尤其 AVD 对体积定量误差敏感,Dice 高不代表 AVD 好。
症状:自报「平均 Dice 超过某参赛队」但官方口径下检测 AUC 拖后腿;优化中只盯着 Dice,提交后 AVD 排名垫底。
解决:
- 简单方法:训练与汇报时同时计算 DSC、AVD 与三类 AUC(§6.9 提供代码),逐厂商 × 逐类别列表,不做跨指标平均。
- 进阶方法:把「18 项排名和 + 3 项 AUC 排名和」写成评估脚本,在训练集交叉验证上模拟官方聚合口径做模型选择。
- SOTA 方法:多任务联合训练(分割头 + 逐体积存在性分类头),对齐官方双任务结构;提交前用官方评测做最终确认。
参考:官方 Workshop 页评估框架;官方 Details 页提交格式复现对照建议:先用官方协议在自己的验证集上「模拟排名」(逐项 18+3 排名求和),再与官方提交结果对照一次,校准两套口径后再做后续模型选择。
§6.6 数据增强
| 策略 | 是否安全 | 说明 |
|---|---|---|
| 水平翻转(x 维镜像) | ✅ | OCT 断层左右镜像基本保真;注意视盘侧位置改变,谨慎用于高度解剖先验的模型 |
| 小角度旋转(±10°) | ✅ | 模拟头位与扫描角度差异 |
| 尺度抖动(±10%) | ✅ | 模拟 spacing 重采样残差 |
| 斑点噪声模拟、高斯噪声 | ✅ | 直接针对跨厂商域偏移(Topcon/Spectralis 噪声纹理差异),域泛化收益明确 |
| 直方图/对比度抖动(温和) | ✅ | 模拟增益差异;截断在 1–99 分位内 |
| 大幅强度反转/负片 | ❌ | 破坏积液「低反射」核心特征,积液与空气/玻璃体的对比关系被摧毁 |
| 90°/任意角度旋转 | ❌ | 破坏 OCT 的轴向-横向各向异性与重力方向先验(积液沉积形态) |
| 大幅弹性形变 | ❌ | 可把 IRF 囊腔拉伸成 SRF 形态,篡改类别语义 |
| 沿 z 维随机丢层 | ❌ | 破坏 3D 上下文与「未标注层」的结构含义 |
| 沿 z 维平移/重排切片 | ❌ | 破坏视网膜分层结构与积液的层间连续性 |
| 对标签做形态学增广 | ❌ | 会改变积液体积,与 AVD 评估的物理含义冲突 |
一个实用的增强组合基线:水平翻转 + 小角度旋转 + 尺度抖动 + 斑点噪声模拟,概率各 0.3–0.5;在这个基线上,跨厂商验证成绩通常比「无增强」提升数个百分点,而进一步加大强度反而开始伤害 PED 大目标(过度形变改变积液解剖形态)。
§6.7 模型推荐
| 模型 | 类型 | 在 RETOUCH 上的证据 | 推荐度 |
|---|---|---|---|
| nnU-Net(v2) | 自配置 2D/3D U-Net | 官方测试集 avg Dice 0.81(IRF 0.85/SRF 0.78/PED 0.82),无需调参即可强基线 | ⭐⭐⭐⭐⭐ 首选 |
| nnUNet_RASPP | nnU-Net + 残差 + 空洞空间金字塔 | 测试集 mean Dice 82.3%,三类检测 AUC 100% | ⭐⭐⭐⭐ |
| MMIS-Net | 多 lesion 统一模型 | 测试集 avg Dice 0.83,三类 AUC 全 1.00,当前公开报告最优 | ⭐⭐⭐⭐⭐ |
| 2D U-Net 变体(参赛队基线) | 2D FCN | 2017 年 8 队普遍架构,测试集 avg Dice 0.55–0.78 | ⭐⭐⭐ 教学基线 |
| SegFormer 等轻量 Transformer | 2D 语义分割 | 已在 OCT 积液分割文献中验证可用(需按体积划分防泄漏) | ⭐⭐⭐ 备选 |
§6.8 硬件需求
| 场景 | 显存 | 建议 GPU | 说明 |
|---|---|---|---|
| 2D B 扫描训练(§6.4 方式) | ≥8 GB | 单卡 RTX 3060/4060 | 批 8–16,几十分钟内可见收敛趋势 |
| 3D patch 训练(nnU-Net 默认) | ≥11 GB | RTX 3090/4090 或 A10 | nnU-Net 自动定 patch;全量 5 折约数小时–1 天 |
| 推理(单体积) | ≥4 GB | 任意现代 GPU | 单体积秒级 |
| CPU-only | — | — | 仅适合读取与可视化(§6.1),不建议训练 |
规模换算参考:11,334 个标注 B 扫描 × 约 512×500 像素 ≈ 30 亿像素的 2D 训练集——单卡数个 epoch 即可遍历;3D 路线按 patch 训练,等效样本更多,nnU-Net 默认配置(5 折 × 1000 epoch)在单卡上通常数小时到一天内完成。
§6.9 评估指标代码
<details>
<summary>Dice / AVD / AUC 计算代码(点击展开,约 45 行)</summary>
# pip install numpy scikit-learn
import numpy as np
from sklearn.metrics import roc_auc_score
LABELS = {1: "IRF", 2: "SRF", 3: "PED"}
def dice_per_class(pred, gt, label):
p, g = (pred == label), (gt == label)
denom = p.sum() + g.sum()
return 1.0 if denom == 0 else 2.0 * (p & g).sum() / denom
def avd_per_class(pred, gt, label, voxel_mm3):
"""绝对体积差(AVD):|预测体积 - 真值体积|,单位 mm³。"""
v_p = (pred == label).sum() * voxel_mm3
v_g = (gt == label).sum() * voxel_mm3
return abs(v_p - v_g)
def evaluate_volume(pred, gt, spacing_xyx_mm):
"""对单个体积输出三类积液的 Dice 与 AVD。spacing 需与重采样后的物理间距一致。"""
voxel_mm3 = float(np.prod(spacing_xyx_mm))
out = {}
for k, name in LABELS.items():
out[name] = {
"dice": dice_per_class(pred, gt, k),
"avd_mm3": avd_per_class(pred, gt, k, voxel_mm3),
}
return out
def detection_auc(prob_matrix, gt_matrix):
"""Task 1 检测 AUC。
prob_matrix: (N, 3) 每测试体积的 IRF/SRF/PED 存在概率
gt_matrix: (N, 3) 对应 0/1 真值(需官方或自建验证集)
"""
return {name: roc_auc_score(gt_matrix[:, i], prob_matrix[:, i])
for i, name in enumerate(LABELS.values())}
实现说明:① dice_per_class 在「预测与真值均为空」时返回 1.0(该类无积液且模型也未误报,视为完美),这与官方评分对空类的处理习惯一致;② AVD 的物理单位依赖 spacing——若你在重采样后评估,请传入重采样后的 spacing,否则体积差会被系统性放大或缩小;③ 检测概率建议直接取分割掩码的「逐体积最大存在概率」(任一体素预测为该类即存在),亦可训练独立分类头。
</details>
§6.10 MLOps 笔记
- 数据版本:RETOUCH 无版本号,用下载日期 + 文件哈希作为数据版本戳,写入实验跟踪系统(MLflow/W&B)。
- 厂商感知监控:线上/复现实验按三个厂商子集分别监控 Dice,任何一子集滑坡优先排查预处理路由(坑点 3、7)。
- 评测双轨制:内部 5 折交叉验证用于迭代,官方评测(限制提交频率)用于里程碑确认;两类数字分表存储。
- 复现包:发布模型时附「重采样 spacing + 归一化策略 + 厂商路由表」三件套,否则别人拿到的成绩与你差好几个点。
- 泄漏检查自动化:把「按体积分组划分」写成单元测试(断言训练/验证体积 id 集合不相交),进入 CI。
- 提交记录台账:官方「以最后一次提交为准」的规则意味着误提交会被计分——把每次提交的模型版本、数据版本与假设记录在案。- 合规留痕:数据共享协议签署记录、禁止再分发的条款写入项目 README 与数据治理台账。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解建议 |
|---|---|---|---|
| 地域偏倚 | 全部病例来自奥地利与荷兰两个国家 | 中 | 外部验证须覆盖其他人群 |
| 设备分布偏倚 | 三厂商体积近乎均衡(24/24/22),与真实临床设备占有率不一致 | 中 | 按真实场景设备占比重加权评估 |
| 标注噪声偏倚 | 训练集为单评级者标注,边界区域不确定性高于测试集的共识标注 | 中 | 软标签/集成(坑点 5) |
| 疾病构成隐藏 | AMD/RVO 标签不公开,无法疾病分层分析 | 低(对建模)/中(对分析) | 研究疾病特异性时联系组织者或用其他数据集 |
| 选择偏倚 | 入选病例均为积液阳性体积,无纯正常对照 | 中 | 检测任务的阴性样本来自「无某类积液」而非「完全健康眼」 |
§7.2 标注质量
RETOUCH 的标注质量机制在同类数据集中属第一梯队:6 名受训评级者、视网膜专科医师监督、测试集双中心独立标注 + 严格共识合并(分歧体素屏蔽排除)。共识机制的代价是测试真值「偏保守」——评级者分歧区域不参与评估;收益是测试集标签噪声显著低于训练集。挑战论文以评级者间变异为参照系的结论(检测进入变异范围、分割未饱和)是对标注可靠性的最直接背书。
| 机制 | 训练集 | 测试集 |
|---|---|---|
| 标注次数 | 单次标注 | 两中心独立双标注 |
| 合并方式 | 不适用(单方完成) | 严格共识(一致才计入) |
| 分歧处理 | 无二次仲裁信息 | 分歧体素屏蔽、排除出评估 |
| 相对噪声水平 | 较高(单评级者) | 较低(共识) |
§7.3 泛化性评估
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨厂商(Cirrus↔Spectralis↔Topcon) | 高——噪声纹理差异显著,域偏移明确 | 域泛化实证研究(arXiv 2311.05861);挑战论文跨设备分析 |
| 跨疾病(nAMD↔RVO) | 中——疾病类型不公开,无法直接测量;积液形态分布随疾病变化 | 挑战论文设计说明 |
| 跨中心 | 低——仅两中心,同质性较高,但外部单中心部署仍需验证 | 数据来源构成 |
| 跨时点(治疗随访) | 中——数据为单时点体积,纵向变化分布未覆盖 | 数据集构成 |
| 严重病变极端形态(大 PED、大量 SRF) | 中——中位数形态覆盖良好,极端形态样本少 | 类别分布与参赛队逐类成绩波动 |
使用建议:把上表的「高风险场景」写进你的模型卡片(model card)的 Out-of-Scope Uses 一节;如果产品只部署在单一厂商设备上,跨厂商风险可以降级,但跨时点风险仍然保留(固件与协议会演化)。
§7.4 伦理与合规
数据由 MUV 与荷兰两中心在临床常规诊疗中回顾性收集,经机构流程批准后以去标识化影像形式共享;获取须注册并签署数据共享协议,协议限制再分发与商业用途(以官方协议文本为准)。OCT 体积不含直接身份信息、日期或面部特征。使用者须在自己机构内遵守原始协议;基于该数据训练的临床产品需独立的前瞻性验证与监管审批。
需要注意的合规边界:数据共享协议是「人对组织」的签署关系,团队内新增成员使用数据通常要求其所在机构/团队在协议覆盖范围内;论文发表不受限(挑战本身鼓励发表),但原始数据的再分发不被允许——对外共享你基于数据训练的模型权重前,建议先核对协议条款或联系组织者确认。
§7.5 公平性
三厂商设备近乎均衡的设计缓解了「高端设备独占」的常见偏倚,但设备本身的可得性差异(Spectralis 与 Cirrus 在欧洲临床占主导)仍使数据对低资源地区设备类型覆盖有限;疾病类型隐藏虽服务于泛化目标,也使跨疾病亚组的公平性审计无法在该数据集内完成。
对公平性敏感的应用(如设备可及性评估、跨医疗体系部署),建议把「设备指纹 → 性能差异」作为独立审计项报告,而不是只报三厂商平均分——平均分掩盖了「某厂商子集系统性变差」这类公平性问题。
§7.6 数据漂移
数据为 2017 年前后的固定采集,扫描仪固件与扫描协议随厂商更新持续演化(如 Spectralis 自动真追踪、Cirrus 角度协议变化),部署环境中的「新设备/新固件」分布与本数据存在漂移风险。建议部署侧按设备指纹(维度 + spacing 指纹即可识别厂商)持续监控分厂商性能。
§7.7 DAIMS 数据集评估
以下按 DAIMS 24 项检查表逐项评估 RETOUCH 的 AI 就绪质量。判定口径:✅ 表示该维度有官方机制或数据本身满足要求;⚠️ 表示可用但需要使用者补足元信息或自行实现;❌ 表示官方未提供且需完全依赖社区方案。
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 每体积一个自包含目录,四文件组即全部内容 |
| 2 | 唯一标识 | ✅ | TRAIN001–TRAIN070 / TEST001–TEST042 全局唯一 |
| 3 | 特殊字符 | ✅ | 目录名与文件名均为 ASCII 安全字符 |
| 4 | 重复行 | ✅ | 影像数据无重复记录问题;112 体积对应 112 患者无重复 |
| 5 | 缺失编码 | ⚠️ | 未标注 B 扫描与确认无积液层在文件层面不可区分(全 0) |
| 6 | 标签标识 | ✅ | 0/1/2/3 标签体系官方文档明确(IRF/SRF/PED/背景) |
| 7 | 罕见类分组 | ⚠️ | 无官方逐类体素统计;三类形态差异大需自行统计(§4.2) |
| 8 | 偏倚评估 | ✅ | 挑战论文含跨设备/跨中心/跨疾病系统分析 |
| 9 | 数据字典 | ⚠️ | MetaIO 头文件字段有通用文档,但官方无 RETOUCH 专属字段字典 |
| 10 | 信息性缺失解释 | ⚠️ | 「未标注≠无积液」「疾病类型隐藏」需读论文/协议方可获知 |
| 11 | 设备记录 | ✅ | 按厂商/机型明确记录并按子集分组(§3.9) |
| 12 | 共线性 | ✅ | 影像数据集不适用表格特征共线性问题,无风险 |
| 13 | 编码映射 | ✅ | 标签值↔积液类型映射官方明确(0/1/2/3) |
| 14 | 时间戳处理 | ✅ | 影像不含时间戳字段,无时区/格式歧义 |
| 15 | 划分建议 | ✅ | 官方 70/42 划分明确且按厂商平衡(§5.1) |
| 16 | 泄漏讨论 | ⚠️ | 无同患者泄漏,但切片级泄漏与测试集渗漏风险需自行防范(§5.3) |
| 17 | 标签分布 | ⚠️ | 官方未发布逐类体素分布统计 |
| 18 | 测量偏倚 | ⚠️ | 单评级者(训练)与双中心共识(测试)协议差异构成测量协议偏移 |
| 19 | 外部验证建议 | ⚠️ | 官方未提供外部验证指引;本 Wiki §5.5 与 §7.8 给出建议 |
| 20 | 版本记录 | ⚠️ | 无版本号,仅发布时间线可考(§1.4) |
| 21 | 预处理脚本 | ❌ | 官方不提供预处理/训练脚本,需社区方案(§6.3) |
| 22 | 合规要求 | ✅ | 注册 + 数据共享协议机制明确(§6.2) |
| 23 | 多模态对齐 | ✅ | 图像与标注同尺寸同 spacing,逐体素严格对齐 |
| 24 | 去标识化 | ✅ | OCT 影像不含直接标识符;访问受协议控制 |
DAIMS 评分:18.5 / 24
评分解读:14 项 ✅、9 项 ⚠️、1 项 ❌。RETOUCH 在数据组织(标识、对齐、标签编码、设备记录)上近乎满分,是影像数据集中工程结构最规整的一批;失分集中在「元信息透明度」——逐类分布、字段字典、版本管理、缺失语义等需要使用者自行补课;唯一 ❌ 是官方不提供预处理脚本。
扣分明细(9 个 ⚠️ 的共同主题):其一,「文件之外的知识」依赖论文与协议文档(缺失语义、疾病隐藏、版本缺位),只看数据文件无法获得;其二,「官方未发布的统计」需要使用者重建(逐类分布、划分建议之外的泄漏指引、外部验证指引)。这两类失分都不是「数据本身有缺陷」,而是「元数据未随数据分发」。
对你意味着什么:如果你要快速开始,结构规整意味着「下载即用」——SimpleITK 两行读数、ITK-SNAP 可视化、nnU-Net 直接接管;如果你要做严肃发表,必须自己补齐三件事:①按厂商/逐类的分布统计(§4.2 的方法),②防止切片级泄漏的分组划分脚本(§5.3),③训练标签噪声的缓解策略(坑点 5)。预处理脚本缺失不是障碍——§6.3 的流水线 + nnU-Net 已覆盖绝大多数需求,但你要为「元信息不透明」付出的真实成本是:与文献对比成绩时逐条核对评估口径(坑点 4)。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 跨厂商泛化(RETOUCH 内部,三厂商互相迁移) | Brunel University London 等 | 三类积液分割 | mean Dice 82.3%(nnUNet_RASPP,官方测试集) | 相对挑战时期最好成绩(0.78)提升 4.3 个百分点 | nnU-Net 系自动配置跨厂商稳健,三厂商间一致性好 |
| 统一多 lesion 模型(RETOUCH 官方测试集) | MMIS-Net 作者团队 | 三类积液分割 + 检测 | avg Dice 0.83;三类检测 AUC 1.00 | 相对 2017 冠军 SFU(0.78)提升 5 个百分点 | 单模型统一标签空间可超越分类别级联架构 |
| 检测任务跨队伍(官方测试集) | 2017 挑战 8 队 + 后续 SOTA | 三类积液存在性检测 | AUC:MMIS-Net/nnU-Net/SFU 均达 1.00;2017 各队 0.84–1.00 | 检测先于分割饱和 | 检测性能已达评级者间变异范围,分割仍是主战场 |
注:RETOUCH 官方测试集长期不公开标注,上表「外部验证」均为在其官方测试集或官方口径下的同行评审结果;真正跨数据集(如迁移到 OPTIMA/ADAM)的系统性验证文献尚无统一结论,故不列。
对使用者的操作含义:把「跨厂商泛化」当作外部验证的第一道门槛(RETOUCH 内部即可完成),把「跨机构、跨人群」当作第二道(需要外部数据),把「前瞻性临床验证」当作第三道(超出本数据集范围)。文献证据显示第一道门槛在 nnU-Net 系方法上已能稳定通过——这既是好消息(方法稳健),也是坏消息(仅通过第一道门槛不再是卖点)。
§8 基准性能与生态
§8.1 排行榜与关键结果
以下数字来自官方测试集(隐藏标注,经官方评测或论文汇总口径),分属不同评估协议,不能互相直接比较:2017 年参赛队的成绩出自官方 Workshop 排行榜;MMIS-Net/nnUNet_RASPP/nnU-Net 的成绩出自后续论文在官方测试集上的复评与汇总(MMIS-Net 论文表 3/4)。
| 排名 | 模型/队伍 | 平均 Dice(IRF/SRF/PED) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | MMIS-Net | 0.83(0.85/0.81/0.83) | 2025 | 多 lesion 统一模型 + 相似性融合块 + 统一 one-hot 标签空间 | MMIS-Net for Retinal Fluid Segmentation and Detection, arXiv:2508.13936, 2025. https://arxiv.org/abs/2508.13936 | 未公开 |
| 2 | nnUNet_RASPP | 0.82(0.84/0.80/0.83) | 2023 | nnU-Net + 残差连接 + 空洞空间金字塔池化;三类检测 AUC 100% | Ndipenocha N, Miron A, Wang Z, Li Y. nnUNet_RASPP for Retinal OCT Fluid Detection, Segmentation and Generalisation over Variations of Data Sources. arXiv:2302.13195, 2023. https://arxiv.org/abs/2302.13195 | 未公开 |
| 3 | nnU-Net | 0.81(0.85/0.78/0.82) | 2021 | 自配置框架(自动 spacing/patch/损失);三类检测 AUC 1.00 | Isensee F, Jaeger PF, Kohl SAA, Petersen J, Maier-Hein KH. nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation. Nature Methods, 18(2):203–211, 2021. DOI: 10.1038/s41592-020-01008-z | GitHub |
| 冠军 | SFU(2017 挑战第 1 名) | 0.78(0.81/0.75/0.74) | 2017 | 全卷积网络(FCN),双任务 | Lu D, Heisler M, Lee S, Ding G, Sarunic MV, Beg MF. Retinal Fluid Segmentation and Detection in Optical Coherence Tomography Images using Fully Convolutional Neural Network. MICCAI 2017 OMIA/RETOUCH Workshop. Workshop 页 | 未公开 |
| — | 2017 其余 7 队 | 0.55–0.77 | 2017 | U-Net 变体(2D/2.5D/3D)、Faster R-CNN、CNN+图割等 | 逐队引用见 官方 Workshop 页(Helios/MABIC/NJUST/RetinAI/RMIT/UCF/UMN) | 未公开 |
| 参考 | UMN | 0.72(0.69/0.70/0.77) | 2017 | CNN + 后处理 | 同上(Workshop 页 UMN 条目) | 未公开 |
| 参考 | RetinAI | 0.70(0.73/0.67/0.71) | 2017 | U-Net + 层分割 | 同上(Workshop 页 RetinAI 条目) | 未公开 |
| 参考 | MABIC | 0.71(0.77/0.66/0.71) | 2017 | U-Net + x-U-Net | 同上(Workshop 页 MABIC 条目) | 未公开 |
| 参考 | NJUST | 0.58(0.56/0.53/0.64) | 2017 | 3D Faster R-CNN 系 | 同上(Workshop 页 NJUST 条目) | 未公开 |
不可直接比较的原因:① 2017 年队伍成绩出自官方评测的当期排行榜,后续论文数字出自对同一测试集的复评,评测代码实现细节可能随时间变化;② 各论文的自报成绩(如 nnUNet_RASPP 的 82.3%)与其在汇总表中的复评数字存在口径差异;③ 检测任务(AUC)与分割任务(DSC/AVD)在官方协议下按排名和聚合,单一平均 Dice 不等于官方排名。
从表中还能读出两条方法论规律:其一,2017→2025 年的进步集中在分割(0.78→0.83),检测(AUC)早已双双触顶 1.00,说明「有没有积液」这个问题基本解决、「积液有多少」仍未解决;其二,各类别的改进不均衡——IRF 类从 2017 年最好 0.81 提升到 0.85,PED 类提升明显而 SRF 类相对停滞,方法创新应优先瞄准 SRF 与体积定量(AVD)。
§8.2 SOTA 总结与选型建议
2025 年前后,RETOUCH 官方测试集上的分割成绩已推进到 avg Dice 0.83、三类检测 AUC 全部 1.00 的水平;检测任务实质饱和,分割任务未饱和(PED 的 AVD 误差仍是短板——MMIS-Net 论文中 PED AVD 0.071 显著高于 IRF/SRF 的 0.018/0.015)。实践选型:工程落地与论文基线首选 nnU-Net(无调参成本、跨厂商稳健);追求刷点用 MMIS-Net 思路(统一标签空间 + 融合块);教学与快速原型用 2D U-Net + §6.4 DataLoader。
选型的三个常见误区:① 用「历史参赛队的 Dice」推断 nnU-Net 的水平(复评口径不同);② 检测 AUC 饱和后仍把 AUC 当主要创新点宣传;③ 只优化分割 Dice 不看 AVD,体积定量场景(治疗监测)下恰恰是 AVD 决定可用性。
§8.3 评测协议
官方协议要点(Details 页与 Workshop 页):① Task 1 检测:detection.csv,每测试体输出 IRF/SRF/PED 存在概率,每类积液在全部测试体积上构造 ROC 并计算 AUC;② Task 2 分割:逐体 MetaImage 结果,标签 0/1/2/3;每「流体类型 × 设备 × 误差度量(DSC、AVD)」组合一个排名,18 项排名求和为分割分数;③ 检测分数 = 3 类 AUC 排名之和;④ 最终排名 = 两任务分数平均,平局时分割优先;⑤ 多次提交以最后一次为准。
协议设计的用意也值得理解:按流体类型×设备逐项排名强迫参赛方法在所有「切片」上都强,而不是靠单一设备或单一类别夺冠;双任务平均惩罚「只做分割不做检测」的偏科;平局分割优先体现组织者「定量比定性更难也更有临床价值」的判断。提交文件格式对照:
| 任务 | 文件 | 内容 | 命名要求 |
|---|---|---|---|
| Task 1 检测 | detection.csv(置于 ZIP 根目录) |
每测试体 ID + IRF/SRF/PED 存在概率(0.0–1.0) | 固定文件名 |
| Task 2 分割 | segmentation/ 文件夹 |
每测试体一个 MetaImage 对(mhd + raw) | 与测试体 ID 同名,如 TEST001.mhd/raw |
§8.4 相关数据集
| 数据集 | 规模 | 任务 | 与 RETOUCH 的关系 |
|---|---|---|---|
| OPTIMA/OCSC(MICCAI 2015) | 30 个体积、4 厂商 | 仅 IRF 分割 | RETOUCH 的直接前身,挑战论文以其为基线对比 |
| OCT2017(Kermany et al.) | 84,484 张 B 扫描 | 图像级 4 分类 | 大规模但无体素标注,适合预训练后迁移到 RETOUCH |
| Duke DME | 10 个 Spectralis 体积 | IRF 分割 | 单厂商小数据,常用作补充微调或域适应目标域 |
| ARIA、RIM-ONE 等眼底数据集 | 各异 | 视盘/分割 | 模态不同(眼底彩照/OCT 局部),仅作跨模态参考 |
选型提示:预训练→微调路线可考虑 OCT2017 做骨干预训练、RETOUCH 做积液微调;域适应研究可把 Duke DME 或 OPTIMA 当目标域;不要用与 RETOUCH 测试集同源的数据(两中心公开扫描)充当「外部验证」,那只是内部重排。
组合使用示例:研究「单厂商标注能否换来跨厂商性能」时,可用 Duke DME(单厂商)做源域微调、RETOUCH 训练集做目标域评估,再与「RETOUCH 全量训练」的上限对照——这类「小数据跨域」实验设计正是 RETOUCH 与相关数据集组合的典型用法。
§8.5 关键论文 Top 6
- Bogunović H, Venhuizen F, Klimscha S, Apostolopoulos S, Bab-Hadiashar A, Bagci U, et al. RETOUCH – The Retinal OCT Fluid Detection and Segmentation Benchmark and Challenge. IEEE Transactions on Medical Imaging, 38(8):1858–1874, 2019. DOI: 10.1109/TMI.2019.2901398 — 数据集与挑战的官方论文,全部协议细节的权威出处。
- 一句话贡献:确立「三厂商 × 三类积液 × 双任务」的基准范式,并给出检测进入评级者间变异、分割未饱和的核心结论。
- Lu D, Heisler M, Lee S, Ding G, Sarunic MV, Beg MF. Retinal Fluid Segmentation and Detection in OCT Images using Fully Convolutional Neural Network. MICCAI 2017 OMIA/RETOUCH Workshop. — 2017 挑战冠军方法(SFU 队)。
- 一句话贡献:证明全卷积网络在双任务协议下可以同时拿下检测与分割的领先位置。
- Isensee F, Jaeger PF, Kohl SAA, Petersen J, Maier-Hein KH. nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation. Nature Methods, 18(2):203–211, 2021. DOI: 10.1038/s41592-020-01008-z — 无调参强基线,RETOUCH 上 avg Dice 0.81。
- 一句话贡献:展示自动配置框架不加修改即可逼近 RETOUCH SOTA,说明数据集工程规范性对「开箱即用」方法友好。
- Ndipenocha N, Miron A, Wang Z, Li Y. nnUNet_RASPP for Retinal OCT Fluid Detection, Segmentation and Generalisation over Variations of Data Sources. arXiv:2302.13195, 2023. — nnU-Net 增强变体,mean Dice 82.3%、检测 AUC 100%。
- 一句话贡献:用残差 + 空洞金字塔增强 nnU-Net,并系统评估跨厂商泛化一致性。
- MMIS-Net for Retinal Fluid Segmentation and Detection. arXiv:2508.13936, 2025. — 当前公开报告的测试集最优(avg Dice 0.83),并系统汇总历史成绩(表 3/4)。
- 一句话贡献:以统一标签空间单模型超越分类别级联架构,其汇总表是 RETOUCH 成绩溯源的最好入口。
- Methodological Challenges of Deep Learning in Optical Coherence Tomography for Retinal Diseases: A Review. Journal of Vision, 2019. — 把 RETOUCH 放入 OCT 深度学习方法学脉络的系统综述,含数据增强与跨厂商讨论。
- 一句话贡献:从方法学综述视角论证「为什么需要多厂商、多疾病基准」,适合作为引言背景引用。
§8.6 社区活跃度
- 在线挑战持续开放:自 2019-02-11 重开后,官网明示仍接受提交(截至 2026-09);grand-challenge.org 平台提供评测与排行榜基础设施。
- 文献生命力:挑战论文发表于 IEEE TMI(医学影像顶刊),2019 年至今持续被域泛化、多 lesion 分割、nnU-Net 系列等方向论文作为标准测评集引用。
- 生态工具:ITK-SNAP 与 SimpleITK 提供 MetaImage 一等公民支持;openmedlab 等中文社区维护了数据集导读(Awesome-Medical-Dataset/RETOUCH)。
- 组织方活跃度:挑战由维也纳医科大学 OPTIMA 实验室(Christian Doppler 实验室体系)与 Radboud UMC 诊断影像组长期维护,两团队在 OCT AI 领域持续产出(挑战论文作者团队即后续 OPTIMA-cyst 等系列工作的核心)。
- 复现门槛:数据免费(协议签署后),评测免费,无算力门槛(2D 路线单卡可跑)——对独立研究者与学生群体友好。
- 结果可见性:官方排行榜历史成绩与参赛方法论文(每队附 PDF 链接)长期公开,是学习「同题不同解」的稀有资源。
§8.7 生态快照
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| RETOUCH 官网 | 官方平台 | https://retouch.grand-challenge.org/ | 注册、下载、提交评测的唯一入口 |
| Details 页 | 官方文档 | https://retouch.grand-challenge.org/Details | 格式、标注协议、提交格式的权威说明 |
| Workshop 页 | 官方文档 | https://retouch.grand-challenge.org/Workshop | 2017 八队结果与评估框架细节 |
| 挑战论文预印本 | 论文 PDF | https://optima.meduniwien.ac.at/wp-content/uploads/2021/12/2019_HBogunovic_RETOUCH_IEEETransactions_preprint.pdf | 数据规格与设备参数的最全来源 |
| MetaIO 格式规范 | 官方文档 | https://www.itk.org/Wiki/MetaIO | mhd 头字段与 raw 字节布局的唯一权威说明 |
| ITK-SNAP | 可视化工具 | https://www.itksnap.org/ | 图形界面直接叠加查看 OCT 与标注 |
| nnU-Net | 训练框架 | https://github.com/MIC-DKFZ/nnUNet | 当前最省力的强基线训练路径 |
| MMIS-Net 论文 | 论文 | https://arxiv.org/abs/2508.13936 | 历史成绩汇总表(表 3/4)与新 SOTA 方法 |
| openmedlab 数据集导读 | 社区资源 | https://github.com/openmedlab/Awesome-Medical-Dataset/blob/main/resources/RETOUCH.md | 中文社区维护的目录结构与引用模板 |
§9 相关资源与引用
§9.1 官方资源
- 挑战主页(注册/下载/提交):https://retouch.grand-challenge.org/
- 数据与评估细节:https://retouch.grand-challenge.org/Details
- MICCAI 2017 结果页:https://retouch.grand-challenge.org/Workshop
- 官方论文 PubMed 条目:PMID 30835214
- MetaImage(MetaIO)格式规范:https://www.itk.org/Wiki/MetaIO
- ITK-SNAP 可视化工具:https://www.itksnap.org/
§9.2 BibTeX 引用块
@article{bogunovic2019retouch,
title = {RETOUCH: The Retinal OCT Fluid Detection and Segmentation Benchmark and Challenge},
author = {Bogunovic, Hrvoje and Venhuizen, Freerk and Klimscha, Sophie and Apostolopoulos, Stefanos and Bab-Hadiashar, Alireza and Bagci, Ulas and Beg, Mirza Faisal and Bekalo, Loza and Chen, Qiang and Ciller, Carlos and others},
journal = {IEEE Transactions on Medical Imaging},
volume = {38},
number = {8},
pages = {1858--1874},
year = {2019},
publisher = {IEEE},
doi = {10.1109/TMI.2019.2901398}
}
@article{isensee2021nnunet,
title = {nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation},
author = {Isensee, Fabian and Jaeger, Paul F. and Kohl, Simon A. A. and Petersen, Jens and Maier-Hein, Klaus H.},
journal = {Nature Methods},
volume = {18},
number = {2},
pages = {203--211},
year = {2021},
doi = {10.1038/s41592-020-01008-z}
}
@article{lu2017sfu,
title = {Retinal Fluid Segmentation and Detection in Optical Coherence Tomography Images using Fully Convolutional Neural Network},
author = {Lu, Donghuan and Heisler, Morgan and Lee, Sieun and Ding, Gavin and Sarunic, Marinko V. and Beg, Mirza Faisal},
journal = {MICCAI 2017 OMIA/RETOUCH Workshop},
year = {2017}
}
@article{ndipenocha2023nnunetraspp,
title = {nnUNet\_RASPP for Retinal OCT Fluid Detection, Segmentation and Generalisation over Variations of Data Sources},
author = {Ndipenocha, Nchongmaje and Miron, Alina and Wang, Zidong and Li, Yongmin},
journal = {arXiv preprint arXiv:2302.13195},
year = {2023}
}
@article{mmisnet2025,
title = {MMIS-Net for Retinal Fluid Segmentation and Detection},
author = {{MMIS-Net authors}},
journal = {arXiv preprint arXiv:2508.13936},
year = {2025}
}
§9.3 引用指南
使用 RETOUCH 数据集时,请引用官方论文(Bogunović et al., 2019)作为数据出处;若方法建立在本 Wiki 的预处理或评估建议之上,可另行引用本页面。向官方排行榜提交结果无需额外引用,但发表基于官方测试集成绩的论文时应在方法节说明评估协议(§8.3)。
三种常见场景的引用组合:①用数据发表方法论文:引 Bogunović 2019(数据)+ 你对标的 SOTA 论文(如 Isensee 2021 或 MMIS-Net 2025);②做域泛化研究:追加引域偏移实证文献(arXiv 2311.05861);③做数据集综述:追加引 OPTIMA/OCSC 以呈现基准演进脉络。BibTeX 直接复制 §9.2 代码块即可,作者列表保留「et al.」前的完整姓名以符合期刊要求。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 模型 | 版本 | 提供方 | 用途 |
|---|---|---|---|
| CodeBuddy Code(fast-model) | 2026-09 | 腾讯 | 本条目的检索整理、结构化写作与代码示例生成 |
§10.2 AI 参与范围
AI 负责文献检索、事实汇总、正文撰写、代码示例与表格整理;全部关键数字均要求有可溯来源并经编辑部交叉审核;医学判断、合规判断与最终发布决定由人工审核者承担。
未由 AI 承担的工作:数据集的下载与运行验证(本条目代码示例基于公开 API 编写并由审核者审阅逻辑,未在原始数据上端到端执行);ICD-11/SNOMED 编码的临床合规性判断;数据共享协议的法律效力解释。
§10.3 输入来源列表
- Bogunović H, et al. RETOUCH – The Retinal OCT Fluid Detection and Segmentation Benchmark and Challenge. IEEE Trans Med Imaging, 38(8):1858–1874, 2019. DOI: 10.1109/TMI.2019.2901398(PubMed 30835214;预印本 PDF)
- RETOUCH 官网主页(含 Publication 与 Important Dates):https://retouch.grand-challenge.org/
- RETOUCH 官网 Details 页(格式/标注/划分/提交/评估):https://retouch.grand-challenge.org/Details
- RETOUCH 官网 Workshop 页(2017 八队结果与排名规则):https://retouch.grand-challenge.org/Workshop
- MMIS-Net for Retinal Fluid Segmentation and Detection. arXiv:2508.13936, 2025(论文页,历史成绩汇总表 3/4)
- Ndipenocha N, Miron A, Wang Z, Li Y. nnUNet_RASPP for Retinal OCT Fluid Detection, Segmentation and Generalisation over Variations of Data Sources. arXiv:2302.13195, 2023(论文页)
- Domain Generalization by Learning from Privileged Medical Imaging Information. arXiv:2311.05861(ar5iv 全文,域偏移实证)
- Precision Segmentation of Subretinal Fluids in OCT Using Multiscale Attention-Based U-Net Architecture(PMC39451407,跨数据集预处理与挑战方法综述)
- Automated Segmentation of Subretinal Fluid from OCT: A Vision Transformer Approach with Cross-Validation(PMC12329092,按患者划分防泄漏实践)
- Methodological Challenges of Deep Learning in Optical Coherence Tomography for Retinal Diseases: A Review. Journal of Vision, 2019(全文,OPTIMA/RETOUCH 对比与数据增强综述)
- openmedlab/Awesome-Medical-Dataset:RETOUCH 条目(GitHub,目录结构与 BibTeX)
- RETOUCH Call for Participation(VisionScience 邮件列表存档,2017 时间线与组织者名单)
- MetaIO 格式官方文档(itk.org/Wiki/MetaIO)与 ITK-SNAP(itksnap.org)
- Isensee F, et al. nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation. Nature Methods, 18(2):203–211, 2021. DOI: 10.1038/s41592-020-01008-z(§6.7/§8.1 中 nnU-Net 基线成绩与方法描述的来源)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| frontmatter 与 schema_org | 千方病案医学编辑部 | 逐字段比对宪法模板与来源 | ✅ 已通过/已验证 |
| §1 概览与 §2 医学背景 | 千方病案医学编辑部 | 对照挑战论文与 ICD-11 编码核对 | ✅ 已通过/已验证 |
| §3 规格与 §4 数据结构 | 千方病案医学编辑部 | 对照官方 Details 页与论文表 I 核对 | ✅ 已通过/已验证 |
| §5 划分与 §6 就绪指南(含 8 坑点) | 千方病案医学编辑部 | 代码沙箱运行验证 + 坑点溯源核对 | ✅ 已通过/已验证 |
| §7 质量评估(含 DAIMS 24 项) | 千方病案医学编辑部 | 逐项核查状态判定依据 | ✅ 已通过/已验证 |
| §8 基准生态与 §9 引用 | 千方病案医学编辑部 | 逐条引用链接可达性核验 | ✅ 已通过/已验证 |
| §10 声明卡与 §C JSON-LD | 千方病案医学编辑部 | 模板一致性与 JSON 语法校验 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
本条目全部章节由 AI 起草(CodeBuddy Code,fast-model),其中 §1.0 速览、§6 就绪指南与 8 个坑点、§7.7 DAIMS 评分为 AI 依据来源文献的分析性综合;§2 医学背景、§7 偏倚与伦理、§8 排行榜数字为 AI 逐源摘录并经人工比对。
§10.6 最后人工审核日期
2026-09-05(与 §0.3 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- drive — 共享标签:医学影像 / 医学问答与基准 / 眼科影像 / 医学图像分割 / 评测基准
- fitzpatrick-17k — 共享标签:医学影像 / 医学问答与基准 / 皮肤影像 / 评测基准
- monuseg — 共享标签:医学影像 / 医学问答与基准 / 医学图像分割 / 评测基准
- cvc-clinicdb — 共享标签:医学影像 / 医学问答与基准 / 医学图像分割 / 评测基准
- cvc-colondb — 共享标签:医学影像 / 医学问答与基准 / 医学图像分割 / 评测基准
- ddi — 共享标签:医学影像 / 医学问答与基准 / 皮肤影像 / 评测基准
- chase-db1 — 共享标签:医学影像 / 眼科影像 / 医学图像分割 / 皮肤影像
- hrf — 共享标签:医学影像 / 眼科影像 / 医学图像分割 / 皮肤影像
- dermacon-in — 共享标签:医学影像 / 医学问答与基准 / 皮肤影像 / 评测基准
- rim-one — 共享标签:医学影像 / 眼科影像 / 医学图像分割 / 皮肤影像
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

