信息速览

GAMMA — 全球首个多模态青光眼分级数据集 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | GAMMA |
| 英文全称 | Glaucoma grAding from Multi-Modality imAges(GAMMA Challenge Dataset) |
| 别名/简称 | GAMMA Challenge、GAMMA 挑战赛数据集、多模态青光眼分级数据集 |
| 疾病分类 | 青光眼(ICD-11:9C61 青光眼 / 9C60 青光眼疑似;详见 §2.1) |
| SNOMED CT | 84494001 Primary open angle glaucoma(详见 §2.1b) |
| 数据模态 | 2D 眼底彩照 + 3D OCT 体积(逐样本配对) |
| AI 任务类型 | 青光眼三级分级(主任务)、视盘/视杯分割、黄斑中心凹定位(辅助任务) |
| 样本总数 | 300 对眼底-OCT 配对样本(276 名患者;训练/预赛/决赛各 100 对) |
| 数据大小 | 官方未公布总体积(含 300 张眼底图 + 76,800 张 992×512 OCT B-scan 切片) |
| 数据格式 | PNG/JPEG(图像与 OCT 切片)、XLSX(分级标签)、二值掩膜图(视盘/视杯) |
| 许可证 | CC BY-NC-ND(署名-非商业性-禁止演绎) |
| 访问级别 | 开放(官网入口 + 飞桨 AI Studio 学习赛直接下载) |
| DUO 标签 | NRES(无访问限制)+ NPUNCU(非商业非营利,对应 CC BY-NC-ND) |
| 语言 | 英文(论文与标注文件)/ 中文(竞赛页面与教程) |
| 首发日期 | 2021-03-20(挑战赛启动并发布训练集) |
| 最后更新 | 2021-10-01(决赛阶段收官,数据集为最终版) |
| 发布机构 | 中山大学中山眼科中心 & 百度(MICCAI 2021 OMIA8 挑战赛) |
| 官方主页 | https://gamma.grand-challenge.org/ |
| 下载地址 | https://aistudio.baidu.com/competition/detail/807(任务一学习赛入口) |
| DOI | 10.48550/arXiv.2202.06511(挑战赛总结论文) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方划分 + 前 10 名源码全公开 + 官方教程;扣分项:标签为 XLSX 需自行解析、OCT 为文件夹散切片需组装 3D 体积、无官方预处理脚本 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、青光眼分级与临床任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(多模态配对结构、标签文件解析)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与中山大学中山眼科中心、百度、Grand Challenge 平台无任何商业利益关联。本页面不销售 GAMMA 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。GAMMA 采用 CC BY-NC-ND(署名-非商业性-禁止演绎)许可,禁止商业用途与衍生数据集再分发。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§0.1 内容可信度边界
本页所有规模、划分、排行榜与协议数字均可追溯至 §10.3 所列来源,其中数据集规格与排行榜以挑战赛总结论文(arXiv:2202.06511)与官方竞赛页为最终依据。两类信息被明确排除在外:(1) 各来源相互冲突且无法裁决的数字(如第三方站点的引用量快照不一致,本页一律不采信);(2) 官方论文未公布的字段(标注者间一致性系数、伦理批件编号、青光眼亚型构成),本页以"信息缺口"形式如实标注而非估计填充。
§0.2 审核链
本页遵循"AI 起草 → 人工逐项核验 → 双审核者签发"的三段链路;审核者分工、逐模块校验状态与最后审核日期分别见本页 §10.2-§10.6,与本声明构成完整的 E-E-A-T 证据链。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? GAMMA 是一个青光眼分级数据集:它把同一名患者同一只眼的两类检查——1 张眼底彩照和 1 个 3D OCT(光学相干断层扫描)体积——配成一对,共 300 对样本、对应 276 名患者。每对样本都带有由视野检查(视野平均偏差 MD 值)确定的青光眼分级标签:正常、早期青光眼或进行期青光眼(中晚期合并)。它由中山大学中山眼科中心提供,随 MICCAI 2021 的 OMIA8 研讨会挑战赛发布,是国际上第一个公开的眼底 + OCT 多模态青光眼分级数据集。
为什么重要? 临床上看青光眼,眼科医生一定会同时开眼底照相和 OCT 两项检查,因为任何单一模态都会漏诊——研究显示只用眼底或只用 OCT,约 46.3% 的青光眼病例会被漏掉。但在 GAMMA 之前,AI 领域几乎所有的青光眼算法都只学单一模态,原因很简单:没有公开的配对数据。GAMMA 填补了这一空白,让"像医生一样综合两种影像做判断"的算法第一次可以被训练和比较。
我能用它做什么? 训练多模态融合模型做三级青光眼分级;用附带标签做视盘/视杯分割和黄斑中心凹定位这两个辅助任务来增强主任务;把自己方法的成绩与挑战赛官方排行榜(10 支顶级队伍、 kappa 69.62–85.49)对比;或把它作为多任务学习、序数分类、小样本医学影像研究的基准。数据免费下载,前 10 名队伍的源码与技术报告全部公开。
§1.1 摘要
GAMMA 数据集由中山大学中山眼科中心(广州)采集,随 GAMMA 挑战赛于 2021-03-20 发布、2021-10-01 收官,与 MICCAI 2021 OMIA8(第 8 届眼科医学影像分析研讨会,法国斯特拉斯堡)联合举办。数据集包含 300 对眼底彩照-OCT 配对样本,对应 276 名中国患者(42% 女性,年龄 19–77 岁,均值 40.64±14.53 岁),青光眼与非青光眼样本各占 50%,按类别随机分为训练集、预赛集、决赛集各 100 对。眼底图由 KOWA(2000×2992 像素)与 Topcon TRC-NW400(1934×1956 像素)两台相机采集;OCT 统一由 Topcon DRI OCT Triton 采集,黄斑中心 3×3 mm 视野、每个体积 256 张 992×512 像素的 B-scan。分级金标准基于与 OCT 同日进行的视野检查 MD 值(早期 > −6 dB;中期 −12 < MD ≤ −6;晚期 ≤ −12 dB),主任务将中期与晚期合并为"进行期"。挑战赛采用加权 Cohen’s kappa 评估,总分按分级 0.4、定位 0.3、分割 0.3 加权;70 支队伍提交 1,272 个有效结果,冠军 SmartDSP(厦门大学)总分 8.88892。数据以 CC BY-NC-ND 许可公开。
从工程视角速读:数据本体是"图像文件夹 + 一个标签表"的最简结构,无需数据库、无需解密、无需审批;真正的工程量集中在三处——OCT 散切片组装成 3D 体积、XLSX 标签解析与口径对齐、两模态分辨率差异的标准化处理。本页 §6 给出了覆盖这三处的完整代码与 8 个坑点的规避方案。
§1.2 战略价值
维度一:方法学价值——多模态融合的"最小可信基准"。 在 GAMMA 之前,多模态青光眼分级研究没有公开数据可用,论文只能各自内部验证、互不可比。GAMMA 以 300 对样本的规模提供了第一个可复现的公共基准:任务定义清晰(三类分级)、评估指标统一(加权 kappa)、官方划分冻结(决赛集不公开标签)、且全部前 10 名方法附源码。这使得任何新融合策略(双分支网络、3D OCT 编码器、跨模态注意力、多任务联合优化)都能在同一口径下与 10 个已知强基线直接比较。挑战赛论文的消融研究进一步给出了架构层面的结论:3D OCT 分支 + DENet 眼底分支的双分支结构配合序数集成策略表现最佳,聚焦视盘/视杯区域亦有增益——这些结论直接构成后续研究的出发点。
维度二:临床价值——对齐真实诊疗流程的分级任务。 与多数只有"有病/没病"二分类的眼科数据集不同,GAMMA 的标签体系是疾病分级(grading):早期青光眼与进行期青光眼的临床处置完全不同(随访观察 vs 强化降眼压治疗)。标签以视野 MD 值为金标准、带可靠性质量控制(固视丢失、假阳性/假阴性率阈值),且挑战赛论文明确指出临床不对称性——把进行期误判为早期比反向错误更危险。这使该数据集天然适合研究序数分类、代价敏感学习与临床导向的评估设计,而不只是又一个二分类玩具任务。
维度三:生态价值——源码全公开的"透明基准"。 10 支决赛队伍全部提交了源码与技术报告,并在官方技术材料页集中公开。这意味着后来者复现的不是"论文里描述的方法",而是"当年真实排名的方法";挑战赛论文还基于这些源码做了统一的消融研究(同样的训练设置下比较各架构组件),把"什么有效"从经验传闻变成了可核实的结论。对于需要快速起步的团队,从冠军/季军代码出发做增量创新,远比从零搭建可靠。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注 | 与 GAMMA 的差异化 |
|---|---|---|---|---|
| GAMMA | 300 对样本 / 276 名患者 | 眼底彩照 + 3D OCT(逐样本配对) | 三级分级 + OD/OC 分割 + 中心凹定位 | 唯一的多模态配对分级基准;三类任务联合 |
| DRISHTI-GS | 101 幅眼底图(训练 50 + 测试 51) | 眼底彩照 | 视盘/视杯分割 + 临床备注 | 单模态、以分割为主,无分级标签体系 |
| RIM-ONE | 485 幅(DL 统一版) | 眼底彩照 | 正常/疑似/青光眼标签 + 视盘分割 | 单模态、专家交叉标注,但无 OCT 配对 |
| IDRiD | 516 张眼底彩照 | 眼底彩照 | 糖尿病视网膜病变分级 + 病灶分割 | 疾病对象不同(DR 而非青光眼) |
| OCTA-500 | 500 名受试者 / 500 只眼 | 6×6 mm 与 3×3 mm OCTA | 青光眼/糖尿病视网膜病变标签 | OCT 血管成像、无眼底配对与三级分级 |
(DRISHTI-GS、RIM-ONE、IDRiD、OCTA-500 数字来自千方病案医数集对应条目的 INFOBOX。)
§1.4 版本时间轴
| 时间 | 事件 | 说明 |
|---|---|---|
| 2021-03-20 | 挑战赛正式启动,发布训练集(100 对) | 预赛阶段开放提交,官方页面与论文口径一致 |
| 2021-05-20 | AI Studio 竞赛平台赛程开启 | 平台页显示比赛时间 2021/05/20–2021/10/01,报名 566 队 |
| 2021-09(预赛 30 天窗口内) | 70 支队伍提交 1,272 个有效结果 | 每队每日最多 5 次提交,10 支队伍晋级决赛 |
| 2021-09-27 | OMIA8 直播颁奖 | 冠军 SmartDSP(厦门大学),总分 8.88892 |
| 2021-10-01 | 决赛收官,数据集定版 | 之后竞赛转入飞桨 AI Studio 学习赛,数据永久可下载 |
| 2022-02-14 起 | 挑战赛总结论文多次修订(arXiv:2202.06511) | 后被 Medical Image Analysis 接收(2023) |
| 持续 | AI Studio 学习赛三任务开放提交 | 社区可随时下载数据并在线评测 |
| 2026 | 后续方法(如 IMO)继续以 GAMMA 为基准报告 | 基准地位延续 |
§1.5 典型应用场景
- 多模态青光眼分级模型研发:以眼底 + OCT 双分支网络输出正常/早期/进行期三级预测,对标官方排行榜(见 §8.1)。
- 多任务学习:联合主分级任务与 OD/OC 分割、中心凹定位辅助任务——挑战赛官方总分即按 0.4/0.3/0.3 加权三任务,官方明确鼓励用辅助任务提升分级性能。典型做法是共享编码器 + 三头输出,分割头在训练期提供结构化监督、推理期可卸载。
- 序数分类与代价敏感学习:分级标签有序、临床误判代价不对称,适合研究序数回归与阈值校准。
- 医学影像小样本方法研究:每类仅 100 对训练数据的量级,是检验少样本策略、自监督预训练、数据增强与知识蒸馏的合适试验台。
- 教学与复现训练:规模小(体量轻)、标注齐全、前 10 名源码公开,适合作为医学影像多模态课程的完整实战案例。
场景之外的边界提醒:GAMMA 不适合用作生成式模型训练(影像量与许可 ND 条款双重限制)、不适合人群流行病学推断(患病率为设计值)、也不适合作为青光眼亚型(开角/闭角)分类资源——这些边界与它的强项一样明确。
§2 医学背景
§2.1 ICD-11 编码映射
GAMMA 的标签体系对应 ICD-11 第 09 章"视觉系统疾病"中"青光眼或青光眼疑似"区块(9C60–9C6Z):
| 数据集标签 | 临床概念 | ICD-11 编码 | ICD-11 术语 |
|---|---|---|---|
| normal | 非青光眼对照(来自近视队列) | 无诊断编码(对照样本) | — |
| early-glaucoma | 早期青光眼(视野 MD > −6 dB) | 9C61 | Glaucoma(青光眼) |
| progressive-glaucoma | 中期 + 晚期青光眼(MD ≤ −6 dB) | 9C61 | Glaucoma(青光眼) |
| (上位区块) | 青光眼筛查/疑似场景 | 9C60 | Glaucoma suspect(青光眼疑似) |
| (细分参考) | 常见成人型青光眼亚型 | 9C61.0 | Primary open-angle glaucoma(原发性开角型青光眼) |
说明:GAMMA 官方论文公布了受试者来自青光眼与近视两个队列,但未公布青光眼亚型(开角型/闭角型等)构成;上表 9C61.0 仅为最常见成人亚型的参考编码,套用前请回归原始临床资料核对。编码经 ICD-11 MMS 第 09 章检索核实。
§2.1b SNOMED CT 映射
| 数据集标签 | ICD-11 | SNOMED CT 码 | SNOMED 术语 |
|---|---|---|---|
| early-glaucoma / progressive-glaucoma(成人型青光眼) | 9C61 | 84494001 | Primary open angle glaucoma(原发性开角型青光眼) |
| normal(对照) | — | —(健康对照无 disorder 编码) | — |
注意:SNOMED CT 映射仅收录可经第三方术语库交叉核实的编码。GAMMA 论文未逐样本提供青光眼亚型诊断,若研究需要亚型级 SNOMED 编码,应回到原始临床报告而非依赖本表推断。
§2.2 疾病简介与流行病学
青光眼是一组以视神经乳头(视盘)形态学改变和对应视野缺损为特征的眼病,是全球首位不可逆性致盲眼病。其核心危险因素为眼内压升高导致的视网膜神经纤维层(RNFL)与视神经节细胞损伤;由于早期通常无症状,患者往往在不可逆视野缺损发生后才就医,因此筛查与早期发现具有明确的公共卫生价值。流行病学系统综述估计,全球 40–80 岁人群青光眼患病率约 3.5%,患者总数 2020 年约 7,600 万、2040 年预计超过 1.1 亿(Tham et al., 2014, Ophthalmology);其中原发性开角型青光眼在非洲人群更常见,闭角型在亚洲人群更常见——这是理解 GAMMA 以中国人群为基础的意义所在。
在诊断链条上,眼底彩照与 OCT 是两种最经济、最常用的青光眼筛查工具:眼底图上可观察视盘、视杯与血管走行(如垂直杯盘比 vCDR),OCT 则定量测量 RNFL 与神经节细胞复合体厚度。临床指南推荐两者联合筛查;文献报告仅用眼底或仅用 OCT 将漏诊约 46.3% 的青光眼病例。这正是 GAMMA 强调"多模态"的临床依据。GAMMA 的分级金标准来自视野检查的平均偏差(MD)值——视野计测量中央视野各点位对光敏感度并与年龄匹配的正常值比较,MD 负值越大代表视野缺损越严重。
以 MD 阈值定义分级还有一层方法学意义:它把"疾病严重度"锚定在功能性指标(视野缺损)上,而非医生对影像的主观印象,避免了"影像分级标准因医生而异"的经典问题。代价是分级间接依赖视野检查的测量可靠性——GAMMA 通过可靠性门槛(固视丢失 <2/13、假阳性 <15%、假阴性 <25%)过滤低质量视野报告,这一点在使用者自定义亚组分析或软标签时同样应当考虑。
§2.3 临床任务定义
- 筛查(screening):从大量无症状人群中检出青光眼疑似者。GAMMA 的三类输出可直接支持这一场景,正常/青光眼两类概率即可转化为筛查规则。
- 分级(grading):GAMMA 的主任务。以视野 MD 阈值定义疾病严重度:早期(MD > −6 dB)、中期(−12 < MD ≤ −6 dB)、晚期(MD ≤ −12 dB);挑战赛主任务将中期与晚期合并为进行期(progressive),形成正常/早期/进行期三类分类。分级直接对接临床决策:早期患者以随访与局部用药为主,进行期患者需强化治疗。
- 分割(segmentation):辅助任务一——在眼底图上分割视盘(OD)与视杯(OC)区域,是 vCDR 等结构指标自动化的基础。
- 定位(localization):辅助任务二——在眼底图上定位黄斑中心凹坐标,用于确定解剖参照并辅助分级。
- 任务协同:官方总分为三任务 0.4/0.3/0.3 加权,制度上鼓励"分割与定位反哺分级"的多任务设计——临床逻辑上,视盘/视杯形态与中心凹位置正是医生分级判读的解剖锚点。
§2.4 患者人群画像
| 维度 | 描述 |
|---|---|
| 来源机构 | 中山大学中山眼科中心(广州),单一中心 |
| 采集/发布时间 | 具体采集起止未公布;挑战赛 2021-03-20 至 2021-10-01 举办,数据随赛发布 |
| 年龄 | 19–77 岁,均值 40.64±14.53 岁(非青光眼 35.97±11.29;早期 43.47±15.49;中期 47.98±17.38;晚期 46.24±14.47) |
| 性别 | 女性 42% |
| 族群 | 中国患者 |
| 就医队列 | 青光眼样本来自青光眼队列,非青光眼对照来自近视队列 |
| 眼别构成 | 早期 64 人(14 双眼/30 左眼/20 右眼);中期 35 人(8/15/12);晚期 27 人(2/8/17);非青光眼 150 人(0 双眼/57 左眼/93 右眼) |
人群构成速读:这是一个"青壮年为主、性别接近均衡、疾病组与对照组年龄存在自然错位"的队列。两点值得注意:非青光眼对照组(均值 36.0 岁)明显比青光眼组年轻(43.5–48.0 岁),模型可能学到年龄相关的混淆信号;对照组全部来自近视队列,而高度近视的眼底形态本身易与青光眼混淆——这既是挑战(模型必须区分"近视样视盘"与真实青光眼)也是价值(对照选择更贴近真实筛查中的人群结构)。
§2.5 临床价值
GAMMA 支持构建的临床工具链覆盖"筛查—分级—随访"三环节。在筛查端,多模态模型对单模态漏诊问题(约 46.3%)的改善有直接临床意义;在分级端,早期/进行期的区分决定治疗强度,模型输出可辅助分诊与随访频率设定;在方法学端,附带的结构标注(视盘/视杯掩膜、中心凹坐标)允许模型输出与眼科医生诊断逻辑对齐的可解释中间量(如自动 vCDR),提升临床可信度。需要强调:基于该数据集的模型输出仅是筛查辅助,不能替代视野检查等临床金标准。
从转化路径看,GAMMA 上游衔接设备端的标准化采集(暗室、坐姿、统一视野),下游衔接分级决策的量化输出——它训练的不是"黑箱打分器",而是可以拆解为"分割出视盘视杯 → 定位中心凹 → 综合分级"的可审计管线。挑战赛把三个任务捆绑成总分加权的设计,正是在制度层面鼓励这种可解释的多任务结构,而非鼓励端到端的不可解释竞争。
§2.6 标注金标准
| 任务 | 金标准定义 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|---|
| 青光眼分级 | 视野报告 MD 阈值:早期 > −6 dB;中期 −12 < MD ≤ −6;晚期 ≤ −12 dB | 基于设备输出值规则化判定,非医生目测 | 视野检查报告(与 OCT 同日,可靠性标准:固视丢失 <2/13、假阳性 <15%、假阴性 <25%) | 客观仪器金标准 |
| 中心凹定位 | 眼底图上中心凹 (x, y) 坐标 | 4 名眼科医生独立以十字标记定位,1 名资深医生(>10 年经验)审核融合 | 4 名临床眼科医生(平均 8 年经验,5–10 年)+ 1 名资深医生 | 人工多标注者融合 |
| 视盘/视杯分割 | 眼底图上二值掩膜 | 4 人独立勾画初始区域,资深医生取标注交集作为最终金标准 | 同上 | 人工多标注者融合 |
金标准组合的含义:分级是"仪器金标准"(客观、可复现、但继承视野测量误差),分割/定位是"共识金标准"(主观、依赖标注者配置、但协议透明)。两类标准混用时注意:模型的分级上限受视野噪声限制,而分割上限受"交集协议"限制——两者都不应以 100% 为隐含目标。
§3 数据集规格
§3.0 版本抉择矩阵
GAMMA 数据本体只有一版(2021 年挑战赛最终版),但存在三个获取渠道,内容一致、分发方式不同:
| 你的需求 | 推荐渠道 | 体量/形式 | 理由 |
|---|---|---|---|
| 快速复现排行榜 / 课程教学 | 飞桨 AI Studio 学习赛(任务一 807 / 任务二 806 / 任务三 805) | 在线数据集挂载,含官方实践教程 | 无需申请,注册即可下载,配套 PaddlePaddle 代码示例 |
| 严格对齐挑战赛原始协议(含技术报告与前 10 名源码) | Grand Challenge 官方站点 | 官方入口 + 技术材料页 | 官网集中提供 10 支队伍的技术报告与源码链接 |
| 快速 Python 原型 / HuggingFace 生态 | HuggingFace 镜像(如 ydydt/GAMMA) | datasets 库可直接加载 |
第三方镜像便于 pipeline 集成;建议回溯核对官方原件 |
注意:三个渠道的数据均为 CC BY-NC-ND 许可;第三方镜像的整理格式可能与官方目录结构有差异,正式实验建议以官方/学习赛渠道为准。
§3.1 模态详情
眼底彩照(2D):以黄斑或视盘-黄斑中点为中心拍摄,保证视盘与黄斑同时在视野内;在标准暗室中采集、患者坐姿;图像质量经人工核查。两个来源设备:KOWA 相机(分辨率 2000×2992 像素)与 Topcon TRC-NW400 相机(分辨率 1934×1956 像素),因此数据集中眼底图存在两种原生分辨率。
OCT 体积(3D):全部由 Topcon DRI OCT Triton 采集,以黄斑为中心,en-face 视野 3×3 mm,每个体积含 256 张二维横断面 B-scan,单张尺寸 992×512 像素。OCT 切片在官方数据包中以逐张切片文件(文件夹内多张图)形式存放,使用时需按序组装为 256×992×512 的 3D 体积(见 §6.3 与坑点 1)。这一"文件夹散切片"的分发方式与大多数 OCT 数据集的单一文件(.vol/.npy)不同,是 GAMMA 最独特的工程特征,也是坑点最密集的区域。
配对关系:每对样本 = 同一患者同一只眼同日的 1 张眼底图 + 1 个 OCT 体积;标注中还包含与 OCT 同日的视野报告(用于分级金标准,但原始视野报告文件不在发布数据中)。
两模态互补性(官方论文对生物标志物的描述归纳):
| 模态 | 可见/可测量的青光眼证据 | 在数据集中的角色 |
|---|---|---|
| 眼底彩照 | 视盘形态、视杯扩大、垂直杯盘比(vCDR)、盘沿出血、血管走行改变 | 主输入 + OD/OC 分割/中心凹定位标注载体 |
| OCT 体积 | 视网膜神经纤维层(RNFL)与节细胞复合体的横断面形态与厚度 | 主输入(3D 体数据) |
| 视野检查(MD 值) | 功能性视野缺损程度 | 分级金标准依据(不随数据发布原文件) |
两模态在信息上部分冗余、部分互补:结构性损伤(OCT 可见)常早于功能性缺损(视野异常),这解释了为什么官方消融中"3D OCT 分支 + 眼底分支"的组合优于任何单模态路线。
§3.2 按子集样本数
| 子集 | 配对样本数 | 发布时间 | 标签可用性 |
|---|---|---|---|
| 训练集(training) | 100 对 | 2021-03-20 挑战赛启动 | 分级标签 + 中心凹坐标 + OD/OC 掩膜全量提供 |
| 预赛集(preliminary) | 100 对 | 预赛阶段 | 挑战期间不公开标签,经平台提交评分 |
| 决赛集(final) | 100 对 | 决赛阶段 | 挑战期间不公开标签,最终排名依据 |
| 合计 | 300 对(276 名患者) | — | — |
每套内部按原始四类(非青光眼/早期/中期/晚期)各取约 1/3 随机分层,故每套约 50 正常 / 26 早期 / 14 中期 / 10 晚期(按论文公布的样本级比例 50%/26%/28.67%/19.33% 推算)。
§3.3 数据格式
| 内容 | 格式 | 说明 |
|---|---|---|
| 眼底彩照 | JPG/PNG 位图 | 两种原生分辨率(2000×2992 与 1934×1956)混存 |
| OCT 体积 | 每体积一个文件夹,内含 256 张切片图 | 单张 992×512;需自行组装 3D 体积 |
| 分级标签 | XLSX 表格(如 glaucoma_grading_training_GT.xlsx) | 样本 ID → 类别;需 pandas/openpyxl 解析 |
| OD/OC 掩膜 | 二值掩膜图 | 对应眼底图分辨率 |
| 中心凹坐标 | 坐标表(x, y) | 像素坐标,注意与图像分辨率绑定 |
| 原始视野报告 | 未随数据发布 | 分级金标准的依据文件;使用者只能通过标签间接感知 |
| 官方文档 | 官网/学习赛页面 | 任务定义、评估框架与目录约定 |
§3.4 存储大小
官方未公布数据包总体积。可估算量级:300 张眼底图(约 2,000×3,000 像素级 JPG)+ 76,800 张 OCT B-scan(992×512)——千方病案医数集建议预留 10 GB 以上磁盘空间进行下载、解压与预处理缓存(此为工程预留建议,非官方数字)。
存储规划提示:预处理缓存(OCT 逐样本 .npy,float32)会显著放大占用——单样本体积 256×992×512×4 字节 ≈ 508 MB(未压缩 float32),100 对即约 50 GB。建议缓存用 uint8(约 127 MB/样本,共约 13 GB)并在训练时在线归一化,或直接缓存 float16。这一量级评估是本页根据官方尺寸参数推算的工程参考,实际以下载为准。
§3.5 标注方式
- 分级:规则化判定(视野 MD 阈值),非医生目测分类——标签确定性高,但继承了视野检查本身的测量误差与可靠性门槛。
- 分割与定位:人工标注。4 名眼科医生独立标注初始结果,1 名资深医生(10 年以上青光眼经验)审核融合;分割任务取多名标注者交集作为金标准,定位任务由资深医生从 4 个候选标记中筛选后平均。
§3.5b 标注协议的设计含义
"交集即金标准"的分割协议意味着最终掩膜偏向多标注者一致的确定性区域,视杯边界等高歧义地带会被收紧——用该掩膜训练的分割模型可能系统性地低估歧义边界,评价其在临床上的保守性时需记住这一点。"资深医生筛选后平均"的定位协议则允许个别离群标注被剔除,中心凹这一强解剖先验结构上标注方差天然较小。
§3.6 标注者资质与一致性
参与标注的临床眼科医生共 4 名(青光眼领域平均 8 年经验,范围 5–10 年),融合裁决者 1 名(10 年以上经验)。官方论文公布了上述资质与融合协议,但未公布标注者间一致性系数(如 Dice、ICC)的具体数值;使用者在自行复现标注相关实验时应注意这一信息缺口。这一配置在同类挑战赛数据集中属于标准偏高水准(4 人独立 + 1 人裁决高于常见的 2-3 人配置),标注可靠性预期良好,只是缺少可引用的一致性数字。
§3.7 采集周期
官方论文未公布影像采集的具体起止日期。可确认的时间锚点:视野报告与 OCT 检查同日完成;数据集于 2021 年随挑战赛发布(2021-03-20 训练集、2021-10-01 收官)。这一信息缺口对多数使用场景影响有限(影像数据的"新旧"主要由设备与协议而非采集年份决定),但做时间趋势类研究时应将"发布时间 ≠ 采集时间"写入局限性。
§3.8 地域覆盖
中国广州,中山大学中山眼科中心,单一中心采集;受试者为中国患者。该数据集不包含多中心、多种族数据,外推到其他人群时需谨慎(见 §7.3)。
§3.9 设备规格
| 设备 | 类型 | 关键参数 |
|---|---|---|
| Topcon DRI OCT Triton | 频域 OCT | 黄斑中心 3×3 mm en-face 视野;256 张 B-scan/体积;单张 992×512 像素 |
| KOWA 眼底相机 | 彩色眼底照相 | 分辨率 2000×2992 像素 |
| Topcon TRC-NW400 眼底相机 | 彩色眼底照相 | 分辨率 1934×1956 像素 |
| 视野计(型号未公布) | 标准自动视野检查 | 提供 MD 值;可靠性标准:固视丢失 <2/13、假阳性 <15%、假阴性 <25% |
§3.10 深度溯源链
原始临床检查(眼底照相 + OCT + 同日视野)→ 中山大学中山眼科中心脱敏整理 → 4+1 名医生标注(定位/分割)与 MD 阈值规则(分级)→ 百度 GAMMA 挑战赛组织方质检与打包 → Grand Challenge / AI Studio 公开发布 → 挑战赛总结论文(arXiv:2202.06511;Medical Image Analysis 2023)对数据集与标注协议做最终文献级描述。本页所有规格数字均可回溯至该论文与官方站点。
可核查的数字锚点速查:300 对样本与 276 名患者、42% 女性、年龄 19–77 岁(均值 40.64±14.53)、青光眼内 52%/28.67%/19.33% 的三级占比、三套各 100 对的划分、OCT 参数(3×3 mm、256×992×512)、两台眼底相机分辨率、70 队 1,272 个有效结果、€4,000 奖金池——以上全部直接来自挑战赛论文与官方竞赛页,引用时无需二次推导。
§4 数据结构
§4.0 目录树
以下为训练集核心结构(据官方站点与飞桨官方实践文档整理;辅助标注文件的实际文件名以下载包内 README 与文件清单为准):
Glaucoma_grading/
├── training/
│ ├── multi-modality_images/ # 100 对配对样本
│ │ ├── 0001/ # 每样本一个文件夹(按样本 ID)
│ │ │ ├── fundus.jpg # 眼底彩照(两种分辨率之一)
│ │ │ └── oct/ # OCT 体积(文件夹散切片)
│ │ │ ├── slice_0001.png # 992×512 B-scan
│ │ │ ├── ... # 共 256 张,注意按序组装
│ │ │ └── slice_0256.png
│ │ └── ...
│ ├── glaucoma_grading_training_GT.xlsx # 分级标签(样本 ID → 类别)
│ ├── (中心凹坐标标注文件) # (x, y) 像素坐标
│ └── (视盘/视杯掩膜目录) # 二值掩膜,对应眼底图分辨率
└── testing/ # 预赛/决赛集:挑战期间仅含图像
└── multi-modality_images/
└── ...
§4.1 DAIMS 字段字典
| 字段 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| sample_id | 文本 | 样本唯一标识(配对键) | 0001 |
关联眼底-OCT-标签 | 无 | 无 | 训练集 100 个 |
| fundus_image | 图像 | 黄斑/视盘-黄斑中点中心眼底彩照 | 2000×2992 JPG | 眼底分支输入、OD/OC 分割 | 相机间分辨率差异 | 无 | 2 种原生分辨率 |
| oct_volume | 3D 图像 | 256 张 992×512 B-scan 组成的体积 | (256, 992, 512) | OCT 分支输入 | 切片顺序依赖文件名 | 无 | 固定尺寸 |
| grade | 整数标签 | 主任务三类分级 | 0(normal) |
分类目标 | 视野测量误差传导 | 无 | {0, 1, 2} = normal/early/progressive |
| grade_4way | 整数标签 | 原始四类(早期/中期/晚期细分) | 1(early) |
亚组分析、序数建模 | 同上 | 无 | |
| fovea_x | 整数 | 中心凹 x 像素坐标 | 1023 |
定位任务、解剖参照 | 标注者间离散(4+1 融合) | 无 | 图像宽度内 |
| fovea_y | 整数 | 中心凹 y 像素坐标 | 1498 |
同上 | 同上 | 无 | 图像高度内 |
| od_mask | 二值图像 | 视盘掩膜 | 0/255 PNG | OD 分割、ROI 裁剪 | 标注者间勾画差异 | 无 | 眼底图分辨率 |
| oc_mask | 二值图像 | 视杯掩膜 | 0/255 PNG | OC 分割、vCDR 计算 | 同上(视杯边界更难) | 无 | 眼底图分辨率 |
| md_value | 连续量(隐含) | 视野平均偏差(金标准依据) | -4.2 dB |
软标签/回归扩展 | 视野计测量误差 | 原始 MD 数值未随数据发布 | 阈值:−6 / −12 dB |
§4.2 标签分布
| 类别 | 全库样本数(300 对) | 占比 | 主任务映射 |
|---|---|---|---|
| 非青光眼(normal) | 150 | 50.00% | normal |
| 早期青光眼(early) | 78 | 26.00%(青光眼内 52%) | early-glaucoma |
| 中期青光眼(intermediate) | 43 | 14.33%(青光眼内 28.67%) | progressive-glaucoma |
| 晚期青光眼(advanced) | 29 | 9.67%(青光眼内 19.33%) | progressive-glaucoma |
(样本数由论文公布百分比 × 150 推算取整;每套 100 对按四类各 1/3 分层,实际分布可能 ±1-2 浮动。)
分布含义:主任务三类(normal/early/progressive ≈ 50%/26%/24%)本身接近均衡,训练时无需过采样;真正的稀缺性藏在 progressive 内部——晚期样本仅 29 个(全库),做亚组分析或四级还原实验时要预期该子集上的高方差。
§4.3 关键统计
- 眼底图:2 种分辨率混存(KOWA 2000×2992;TRC-NW400 1934×1956),横纵比约 2:3。
- OCT 体积:固定 (256, 992, 512),物理尺寸 3×3 mm 黄斑区,层间间距约 0.012 mm(3 mm / 256,推算值)。
- 患者-样本比:276 名患者贡献 300 个样本,即 24 只"额外眼"来自双眼受试者。
- 年龄-疾病关系:青光眼各亚组均值年龄(43.5–48.0 岁)均高于非青光眼组(36.0 岁)。
- 眼别构成:左眼(OS)146 个样本、右眼(OD)154 个样本(由各亚组 OS/OD 分布加总推算),两侧大致均衡。
- 标签密度:每套 100 对内三类齐全(约 50/26/24),无需重采样即可直接训练三分类头。
§4.4 数据层级
患者(276 名)
└── 眼(每眼一次检查;部分患者双眼入库)
└── 检查(同日:眼底照相 + OCT + 视野)
├── 眼底图 ×1(PNG/JPG)
├── OCT 体积 ×1(256 × 992 × 512)
└── 标注(分级 + 中心凹坐标 + OD/OC 掩膜)
关键层级事实:样本(配对)是最小发布单位;患者是层级根。同一患者最多贡献 2 个样本,官方划分按样本(类别分层)而非按患者(见 §5.3 泄漏风险)。
层级对实验设计的三个约束:(1) 任何按"样本"独立同分布假设设计的统计检验,在双眼样本上都存在相关性违背,严格做法是在患者层做聚类稳健标准误;(2) 数据增强应保证双眼样本即使落入同一折也不共享泄漏的验证信息;(3) 讨论有效样本量时应以患者数(276)而非样本数(300)为上界。
§4.5 缺失值与信息性缺失
GAMMA 的 300 对样本为完整配对:每对均含眼底图、OCT 体积与分级标签,无样本级缺失,数据集中也未定义信息性缺失编码。需要注意的三类"结构性缺失":(1) OD/OC 掩膜与中心凹坐标属于训练集标注,预赛/决赛集在挑战期间无公开标签;(2) 原始 MD 数值与视野报告文件未随数据发布,仅可通过类别间接推断;(3) OCT 与眼底之间无像素级配准文件,两模态共享的解剖区域(视盘、黄斑)需靠解剖先验自行对齐。
工程上的等价处理:把"结构性缺失"当作特征工程的一部分显式建模——用 has_mask(是否训练集)指示数据来源、用设备指纹字段标记分辨率家族,比事后甄别"为什么这个样本没有掩膜"更可维护。
§4.6 标签文件使用速查
| 使用者需求 | 建议路径 | 注意事项 |
|---|---|---|
| 读取三级分级标签 | pd.read_excel(gt_file, engine="openpyxl") |
首次读取先打印列名与 value_counts() 核实口径(坑点 3、坑点 8) |
| 取中心凹坐标 | 官方坐标标注文件(训练集) | 坐标绑定原图分辨率;resize 后需同步缩放(坑点 8) |
| 获取 OD/OC 掩膜 | 官方掩膜目录(训练集) | 二值图;注意与眼底图逐样本断言尺寸一致 |
| 还原 MD 数值 | 不可得 | 原始 MD 未发布;只能按类别边界推断(< −6 / < −12 dB) |
| 区分双眼样本 | 自行建立患者分组 | 官方未公布患者 ID 映射;双眼样本推断需谨慎(§5.3) |
§5 划分与使用建议
§5.1 官方划分
官方三套划分(训练/预赛/决赛)各 100 对,按原始四类别分层随机分配(约 50/26/14/10),已冻结多年并被排行榜复用。使用官方划分的结果可与排行榜直接比较;任何自定义划分的结果都不可与官方数字混排。
划分的两个使用要点:(1) 预赛集在挑战期间充当"可见验证集",如今做研究时可将其并入训练(并在论文中声明),或沿用"训练/预赛/决赛"三段式以保持与榜单的可比性——两种做法都合法,但必须二选一并声明,不可混用;(2) 决赛集自始至终未公布标签,任何声称"在 GAMMA 测试集上达到 X"的结果都应能追溯到挑战赛平台的官方评估或其论文记录。
§5.2 社区惯例划分
由于官方训练集仅 100 对,社区通行做法是在训练集内部按 8:2 再切训练/验证(PaddlePaddle 官方实践教程即采用该比例),测试仍用官方测试集。这带来一个必须理解的口径问题:训练集内部验证分数通常显著高于决赛测试分数(官方预赛 kappa 峰值 93.43 vs 决赛 85.49,见坑点 5)。
| 划分方案 | 训练/验证/测试 | 适用目的 | 可比性 |
|---|---|---|---|
| 官方划分(冻结) | 100 / (预赛集作验证) / 100 | 与排行榜直接对比 | 可与官方榜单混排 |
| 训练集内 8:2 + 官方测试 | 80 / 20 / 100 | 模型开发与超参搜索 | 测试集分数可与官方比较,验证分数不可 |
| 训练集内 5 折患者分组 CV | 80 / 20 / 100(5 次) | 泛化性稳健估计 | 需单列口径,不与榜单混排 |
| 自定义随机划分 | 自定 | 不推荐 | 与任何既有结果均不可比 |
§5.3 泄漏风险 ⭐
- 双眼患者跨集合:官方按"类别随机三等分"划分,论文未声明按患者分组。276 名患者中 24 名提供双眼数据,若双眼分别落入训练集与测试集,则同一患者的高相似度影像将跨集合泄漏,测试分数被系统性高估。建议:报告官方划分结果时明确标注"样本级划分";做泛化性声明时自建患者级分组验证。
- 预赛集过拟合:挑战期间预赛集分数每日可见(每队每日 5 次提交),重复调参会形成对预赛集的隐式过拟合——决赛分数整体回落即是证据。
- 辅助任务标签仅训练集可用:若用训练集掩膜预训练分割分支再上测试集,注意这属于合法的"训练信息"使用,但不可在论文中把含辅助标签的结果与纯端到端结果直接混排。
§5.4 交叉验证建议
在训练集 100 对上做 5 折交叉验证(患者分组 GroupKFold 优先);分层抽样保持三类比例;每折内固定增强策略与早停准则。由于数据量小,建议同时报告 5 折均值±标准差,并与官方排行榜分开陈述。
实操细节:患者分组要求样本-患者映射,而官方未公布患者 ID——若你无法建立可信映射,退而求其次至少做类别分层 KFold,并在论文中如实声明分组缺失;另一条稳妥路线是把"训练集内 CV 分数 + 官方测试集分数"两个数字并列报告,让读者自行判断稳定性。
§5.5 外部验证建议
单模态外部集(如 RIM-ONE、DRISHTI-GS)可评估仅眼底分支的跨数据集泛化,但注意这些数据集没有 OCT 配对与三级分级体系,需将任务退化为筛查二分类再做对照。扫描仪与人群差异(Triton OCT、中国人群)意味着跨设备、跨族群泛化目前缺乏公开证据,任何此类声明都需要新实验支撑。若研究目标是"多模态筛查系统",更稳妥的外部化路径是前瞻性小规模采集而非硬套既有公开集——后者在任务定义上天然不可对齐。
§6 AI 就绪指南
§6.0 云端快速启动
GAMMA 的官方实验环境是百度飞桨 AI Studio:注册账号后进入三个学习赛页面(任务一 807 / 任务二 806 / 任务三 805),可免费挂载官方数据集并获得 GPU 算力,配套官方实践教程(含数据划分与基线模型代码)。适合零环境配置快速跑通;若你的技术栈是 PyTorch,也可在本地或任意云 GPU 上按 §6.1-§6.4 操作——数据一次下载后与框架无关。
云端路线的五分钟检查单:(1) 注册并进入任务一学习赛页;(2) 挂载官方数据集后确认目录结构与 §4.0 一致;(3) 运行官方教程的读取单元格,确认 100 对样本与标签文件可解析;(4) 查看排行榜页记录当前基线 kappa;(5) 再决定迁移到本地 PyTorch 还是留在 PaddlePaddle 生态。
§6.1 快速上手
# ============================================================
# GAMMA 最小可用加载示例(任务一:三级分级)
#
# 目录结构预期(data_root 指向解压后的数据根目录):
# data_root/
# ├── Glaucoma_grading/training/multi-modality_images/ # 100 对样本
# │ └── <sample_id>/ (fundus 图 + oct 切片文件夹)
# └── Glaucoma_grading/training/glaucoma_grading_training_GT.xlsx
#
# data_root 拼接关系:所有路径 = os.path.join(data_root, 相对路径)
# 最小可用子集:训练集 100 对(含全部三类标签)即可跑通端到端流程
# ============================================================
import os
import pandas as pd
from pathlib import Path
data_root = Path("data/") # ← 改成你的解压目录
img_dir = data_root / "Glaucoma_grading/training/multi-modality_images"
gt_file = data_root / "Glaucoma_grading/training/glaucoma_grading_training_GT.xlsx"
# 1) 读取官方分级标签(XLSX;pandas 依赖 openpyxl)
gt = pd.read_excel(gt_file)
print(gt.head()) # 列结构以实际文件为准:样本 ID + 类别
print(gt["type"].value_counts(normalize=True)) # 检查三类比例(约 50/26/24)
# 2) 检查一个样本的配对结构
sample_dirs = sorted(os.listdir(img_dir))
sid = sample_dirs[0]
oct_slices = sorted(os.listdir(img_dir / sid / "oct"))
print(f"样本 {sid}: OCT 切片数 = {len(oct_slices)}") # 预期 256
# 3) 组装一个 OCT 体积(详见 §6.3 与坑点 1 的自然排序问题)
import numpy as np
from PIL import Image
vol = np.stack([np.array(Image.open(img_dir / sid / "oct" / s).convert("L"))
for s in oct_slices]) # (256, 992, 512)
print(vol.shape, vol.dtype, vol.min(), vol.max())
§6.2 数据获取
| 渠道 | 入口 | 步骤 | 大小/格式 |
|---|---|---|---|
| AI Studio 学习赛(推荐) | 任务一:aistudio.baidu.com/competition/detail/807;任务二 806;任务三 805 | 注册 → 进入学习赛 → 同意协议 → 数据集挂载/下载 | 官方打包,含训练集标签 |
| Grand Challenge 官方站点 | gamma.grand-challenge.org | 浏览数据说明 → 按官方指引获取;技术材料页下载前 10 名源码 | 官方原始分发 |
| HuggingFace 镜像 | huggingface.co/datasets/ydydt/GAMMA | 直接 load_dataset 或下载文件 |
第三方整理格式,正式实验前回官方对账 |
三个渠道的数据本体一致,但目录组织可能不同——选定渠道后,把该渠道的目录结构写入你项目常量(data_root 约定),避免中途换渠道导致路径断裂;技术报告与源码只在官方技术材料页有完整集合。
# AI Studio 环境内通常直接挂载官方数据集;本地使用时从上述入口下载 zip 后:
unzip Glaucoma_grading.zip -d data/
# 校验:训练集应含 100 个样本文件夹 + 1 个 GT xlsx
find data/Glaucoma_grading/training/multi-modality_images -maxdepth 1 -type d | wc -l # ≈ 101(含自身)
使用 HuggingFace 镜像时的对账脚本(镜像格式可能与官方不一致,先核对再开工):
# pip install datasets
from datasets import load_dataset
import collections
ds = load_dataset("ydydt/GAMMA") # 第三方镜像,仅作快速原型
print(ds) # 查看划分/字段与官方是否一致
# 对账清单:(1) 样本总数应为 300(或按划分 100/100/100);
# (2) 三类标签集合应为 {0,1,2} 或等价命名;
# (3) OCT 数据形态是否保留了 256 张切片(而非被压成单图)
for split in ds:
labels = collections.Counter(ds[split]["type"] if "type" in ds[split].column_names
else ds[split].get("label", []))
print(split, labels)
# 正式实验请回官方/学习赛渠道核对原件(见坑点 7 与 §3.0)
无申请流程、无 DUA、无审批排队——GAMMA 属于"开放下载即用"级别,这是它相对 PhysioNet 系数据集的最大工程优势;限制全部体现在 CC BY-NC-ND 许可上(见坑点 7)。
下载后的合规与版本自检三步:记录下载来源与日期(便于论文可复现声明);核对样本数与官方口径一致(训练 100 对、每对 OCT 256 张切片);保留原始压缩包的 MD5/SHA256,预处理脚本以原始包为唯一输入,保证"脚本即数据"的可重建性。
§6.3 预处理全流程
预处理分四步:OCT 散切片组装 → 眼底图标准化 → 标签解析与映射 → 特征空间归一化。
# ============================================================
# GAMMA 预处理管线(PyTorch 生态)
# ============================================================
import re
import numpy as np
import pandas as pd
from PIL import Image
from pathlib import Path
def natural_key(fname: str):
"""坑点 1:OCT 切片文件名必须按自然数字序排序,字典序会打乱层序。"""
nums = re.findall(r"\d+", Path(fname).stem)
return [int(n) for n in nums] if nums else [fname]
def load_oct_volume(sample_dir: Path) -> np.ndarray:
"""读取一个样本的 OCT 文件夹 → (256, 992, 512) uint8 体积。"""
files = sorted(sample_dir.glob("*"), key=lambda p: natural_key(p.name))
assert len(files) == 256, f"OCT 切片数异常: {len(files)}"
return np.stack([np.asarray(Image.open(f).convert("L")) for f in files])
def preprocess_oct(vol: np.ndarray) -> np.ndarray:
"""OCT 标准化:uint8 → float32,逐体积 z-score。"""
vol = vol.astype(np.float32) / 255.0
return (vol - vol.mean()) / (vol.std() + 1e-8)
def preprocess_fundus(img: Image.Image, size=512) -> Image.Image:
"""眼底标准化:短边缩放 + 中心裁剪(保留原生纵横比,不做拉伸)。"""
w, h = img.size
scale = size / min(w, h)
img = img.resize((round(w * scale), round(h * scale)), Image.BILINEAR)
left = (img.width - size) // 2
top = (img.height - size) // 2
return img.crop((left, top, left + size, top + size))
# 标签映射:官方三类 {0: normal, 1: early-glaucoma, 2: progressive-glaucoma}
LABEL_MAP = {0: 0, 1: 1, 2: 2} # 若 GT 中已有 0/1/2 直接透传
# 若你拿到的是四类细分,映射为:normal→0, early→1, intermediate→2, advanced→2
# (可选)预处理缓存:一次性把 OCT 组装为 .npy,后续 epoch 零重复解码
cache_dir = Path("cache/oct"); cache_dir.mkdir(parents=True, exist_ok=True)
for sid in sorted(os.listdir(img_dir)):
out = cache_dir / f"{sid}.npy"
if not out.exists():
np.save(out, preprocess_oct(load_oct_volume(img_dir / sid / "oct")))
# ------------------------------------------------------------
# 数据审计脚本:开训前跑一遍,把坑点 1/2/3/8 的前提全部断言掉
# ------------------------------------------------------------
from collections import Counter
def audit_dataset(img_dir: Path, gt_file: Path) -> None:
gt = pd.read_excel(gt_file)
label_col = [c for c in gt.columns if "type" in c.lower()][0]
dist = Counter(int(v) for v in gt[label_col])
assert set(dist) <= {0, 1, 2}, f"标签口径异常(应为三类): {dist}" # 坑点 3
ids = set(gt.iloc[:, 0].astype(str))
sizes = {}
for sid in sorted(os.listdir(img_dir)):
assert sid in ids, f"GT 缺少样本 {sid}"
sdir = img_dir / sid
fundus = next(sdir.glob("fundus*"))
sizes[sid] = Image.open(fundus).size # 坑点 8:分辨率混存
n = len(list((sdir / "oct").glob("*")))
assert n == 256, f"{sid} OCT 切片数 {n} != 256" # 坑点 1
res_dist = Counter(sizes.values())
print(f"样本数 = {len(sizes)};标签分布 = {dict(dist)}")
print(f"眼底分辨率分布 = {dict(res_dist)} ← 两台相机混存,坐标/掩膜须逐样本对齐")
§6.4 PyTorch DataLoader 完整代码
# ============================================================
# GAMMA 多模态 Dataset:每样本返回 (眼底图, OCT 体积, 标签)
# 依赖:torch, torchvision, pandas, numpy, PIL
# ============================================================
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
class GAMMADataset(Dataset):
def __init__(self, img_dir: str, gt_file: str, fundus_size=512,
n_slices=64, train=True):
"""
n_slices: 训练时从 256 张 B-scan 中均匀采样的切片数
(256 张全量喂 3D 网络显存吃紧;64 张均匀采样是常见折中)
"""
self.img_dir = Path(img_dir)
self.samples = sorted(os.listdir(img_dir))
self.gt = pd.read_excel(gt_file).set_index("data_id") # 列名以实际文件为准
self.n_slices = n_slices
self.train = train
self.fundus_tf = transforms.Compose([
transforms.Lambda(lambda im: preprocess_fundus(im, fundus_size)),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
def __len__(self):
return len(self.samples)
def __getitem__(self, idx):
sid = self.samples[idx]
sdir = self.img_dir / sid
# --- 眼底分支 ---
fundus = Image.open(next(sdir.glob("fundus*"))).convert("RGB")
fundus = self.fundus_tf(fundus) # (3, 512, 512)
# --- OCT 分支 ---
vol = load_oct_volume(sdir / "oct") # (256, 992, 512)
if self.train: # 训练时随机相位起点均匀采样
start = np.random.randint(0, 256 // self.n_slices)
idxs = np.arange(start, 256, 256 // self.n_slices)[: self.n_slices]
else:
idxs = np.linspace(0, 255, self.n_slices).astype(int)
vol = preprocess_oct(vol[idxs]) # (64, 992, 512)
vol = torch.from_numpy(vol).unsqueeze(0) # (1, 64, 992, 512)
vol = torch.nn.functional.interpolate(
vol, size=(64, 512, 512), mode="trilinear",
align_corners=False) # 与眼底空间粗对齐
# --- 标签 ---
label = int(self.gt.loc[sid, "type"]) # 0/1/2
return fundus, vol, torch.tensor(label, dtype=torch.long)
train_set = GAMMADataset(
img_dir="data/Glaucoma_grading/training/multi-modality_images",
gt_file="data/Glaucoma_grading/training/glaucoma_grading_training_GT.xlsx",
train=True)
train_loader = DataLoader(train_set, batch_size=4, shuffle=True,
num_workers=4, pin_memory=True)
fundus, vol, label = next(iter(train_loader))
print(fundus.shape, vol.shape, label) # (4,3,512,512) (4,1,64,512,512) (4,)
配套的最小训练/评估骨架(可直接与 §6.9 的评估函数衔接):
import torch.nn as nn
from torch.optim import AdamW
from sklearn.model_selection import StratifiedKFold
import numpy as np
def build_model() -> nn.Module:
"""双分支示意:眼底 ResNet50 + OCT 轻量 3D CNN → 拼接 → 3 类分类头。"""
import torchvision
fundus_branch = torchvision.models.resnet50(weights=None) # 小数据建议 ImageNet 预训练
fundus_branch.fc = nn.Identity()
oct_branch = nn.Sequential( # (1,64,512,512)
nn.Conv3d(1, 16, 3, stride=(1, 2, 2), padding=1), nn.BatchNorm3d(16), nn.ReLU(),
nn.MaxPool3d((2, 2, 2)),
nn.Conv3d(16, 32, 3, stride=(1, 2, 2), padding=1), nn.BatchNorm3d(32), nn.ReLU(),
nn.AdaptiveAvgPool3d(1), nn.Flatten())
class DualBranch(nn.Module):
def __init__(self):
super().__init__()
self.fundus = fundus_branch
self.oct = oct_branch
self.head = nn.Sequential(
nn.Linear(2048 + 32, 256), nn.ReLU(),
nn.Dropout(0.3), nn.Linear(256, 3))
def forward(self, f, v):
return self.head(torch.cat([self.fundus(f), self.oct(v)], dim=1))
return DualBranch()
def run_one_fold(train_idx, val_idx, labels_all, epochs=30, lr=1e-4):
model = build_model().cuda()
opt = AdamW(model.parameters(), lr=lr, weight_decay=1e-4)
lossf = nn.CrossEntropyLoss()
best_kappa = -1.0
for ep in range(epochs):
model.train()
for f, v, y in train_loader:
f, v, y = f.cuda(), v.cuda(), y.cuda()
opt.zero_grad()
loss = lossf(model(f, v), y)
loss.backward(); opt.step()
# 每个 epoch 在折内验证集上以加权 kappa 选模(用 §6.9 的 gamma_report)
return model
要点:100 对训练样本上,模型容量远超数据量——务必使用 ImageNet 预训练的眼底分支、较强 weight decay 与早停;OCT 分支从头训练时保持轻量(如上例)或先做重建/分割代理任务预训练。
§6.5 实战坑点 ⭐
⚠️ 坑点 1:OCT 散切片排序错乱,3D 体积组装失序(分类:工程陷阱)
问题:官方 OCT 体积以文件夹内逐张切片图形式存放。用
sorted(os.listdir(...))的字典序排序时,slice_10会排在slice_2之前,组装出的体积层序错乱,3D 卷积学到的是被随机打乱的解剖结构。
症状:3D 分支训练 loss 下降缓慢且抖动;可视化体积的 en-face 投影呈马赛克/条纹状而非连续视网膜形态;2D 分支正常但融合模型不优于单模态。
解决:
- 简单方法:排序键改为自然数字序
sorted(files, key=lambda p: int(re.findall(r"\d+", p.stem)[-1])),并对每个样本断言切片数 = 256。- 进阶方法:首次读取后把体积缓存为单个
.npy/.pt文件(见 §6.3),彻底消除重复解析与排序风险;缓存时写回 shape 元信息便于校验。- SOTA 方法:构建数据集卡记录每样本切片数、尺寸与层序校验位(首末切片均值单调性检查),在 MLOps 流水线中作为数据单元测试强制执行。
参考:PaddlePaddle 官方实践教程(OCT 以文件夹存放);GAMMA 论文 §2.1(每体积 256 张 992×512 B-scan)。
⚠️ 坑点 2:双眼样本跨集合造成患者级泄漏(分类:数据泄漏)
问题:300 个样本来自 276 名患者——24 名受试者贡献双眼数据。官方划分按"类别随机三等分"以样本为单位进行,论文未声明按患者分组;同一患者双眼可能分别落入训练集与测试集,双眼眼底/OCT 高度相似,测试分数被系统性高估。
症状:官方划分上 kappa 很高,但换任何外部数据(或患者级重划分)后性能骤降;消融实验间差异不稳定。
解决:
- 简单方法:与排行榜比较时只使用官方划分,并在论文中明确声明"样本级划分";不对外推性做超出数据的声明。
- 进阶方法:自建患者 ID 映射(样本 ID → 患者),用
GroupKFold(按患者分组)在训练集内做交叉验证,报告患者级与样本级两种口径的差距。# GroupKFold 示例:patient_map 为自行维护的 {sample_id: patient_key} 字典 from sklearn.model_selection import GroupKFold import numpy as np ids = np.array(sorted(patient_map)) # 100 个训练样本 ID groups = np.array([patient_map[i] for i in ids]) for tr, va in GroupKFold(n_splits=5).split(ids, groups=groups): train_ids, val_ids = ids[tr], ids[va] # 同患者绝不跨折 assert not (set(groups[tr]) & set(groups[va])) # 折间分组互斥校验
- SOTA 方法:同时报告官方划分(可比性)+ 患者级分组验证(泛化性)双口径;把双眼一致性(同患者两眼预测熵相关性)作为模型校验指标。
参考:GAMMA 论文 §2.1(276 名患者 / 300 样本、划分协议);本页 §5.3。
⚠️ 坑点 3:三类主任务标签与四类内部体系混用(分类:标签理解)
问题:数据库内部分级体系为四类(正常/早期/中期/晚期),挑战赛主任务把中期+晚期合并为进行期(progressive),实际预测三类。误把训练 GT 当四类处理、或自行"还原"四类后仍按三类 kappa 评估,会导致标签错位与指标口径错误。
症状:kappa 计算报维度/标签集错误;混淆矩阵出现 3×4 形状;复现的排行榜分数对不上。
解决:
- 简单方法:统一映射
{0: normal, 1: early, 2: progressive};加载后立即断言set(labels) ⊆ {0,1,2}。- 进阶方法:保留四类细分信息做亚组分析(中期 28.67% vs 晚期 19.33%),在三类模型上增加一个辅助的四类头,主损失仍按三类计算。
- SOTA 方法:利用分级的有序性做序数回归(cumulative link / CORAL 损失)——挑战赛官方消融显示序数集成策略是最优组件之一。
参考:GAMMA 论文 §2.1 与 §4.2(MD 阈值、类别合并决策与消融)。
⚠️ 坑点 4:只看整体 kappa,忽略临床上不对称的误判代价(分类:评估误用)
问题:把进行期青光眼误判为"早期"在临床上远比反向错误危险(延误强化治疗),但整体 weighted kappa 不区分错误方向。挑战赛论文明确指出了这一临床不对称性。
症状:两个整体 kappa 相近的模型,在真实分诊中安全性截然不同;评审或医生质疑"为何选这个模型"时无法回答。
解决:
- 简单方法:总是同时报告混淆矩阵与每类 recall,重点盯
progressive→early单元格。- 进阶方法:在模型选择准则中加入代价敏感项(如
cost = 5×P(prog→early) + 1×P(early→prog)),对相似 kappa 的模型取代价更低者。- SOTA 方法:对 softmax 概率做决策阈值校准(在验证集上最小化临床代价),或训练序数模型使错误倾向"高估严重度"而非低估。
参考:GAMMA 论文 §4.1(各队混淆矩阵与临床意义讨论,Figure 6)。
⚠️ 坑点 5:对预赛排行榜的隐式过拟合——预赛分数虚高(分类:偏倚陷阱)
问题:挑战期间预赛集分数每日可见(每队每天最多 5 次提交),针对预赛结果的重复调参构成对评估集的隐式过拟合。决赛冻结模型后,全队列 kappa 普遍大幅回落:MedIPBIT 93.43 → 80.48,DIAGNOS-ETS 91.70 → 75.36,仅 SmartDSP 保持相对稳健(93.38 → 85.49)。
症状:本地/预赛验证分数在 93% 以上,决赛测试或新数据上骤降 7-16 个百分点;模型选择随预赛噪声波动。
解决:
- 简单方法:把预赛提交当作"快照验证"而非调参信号——用训练集内部 CV 做所有选择。
- 进阶方法:仅在训练集 100 对上做 5 折患者分组 CV;每类模型只提交 1-2 次预赛做 sanity check。
- SOTA 方法:把"预赛-决赛差值"作为模型稳定性指标系统报告;选模时偏好该差值小的架构(如挑战赛中的双分支 + 序数集成路线)。
参考:GAMMA 论文 Table 3(预赛/决赛 kappa 对照);本页 §5.2-§5.3。
⚠️ 坑点 6:两模态分辨率/视野差异大,粗暴融合丢信息(分类:预处理陷阱)
问题:眼底图是约 2,000×3,000 的广视野 2D 投影(两台相机、两种原生分辨率),OCT 是 3×3 mm 黄斑局部 3D 体数据——空间尺度、维度、信息密度完全不同。把 OCT 压成单图或与眼底 resize 到同尺寸后简单拼接,会破坏 OCT 的层状结构信息;而完全放弃任一模态则面临约 46.3% 的临床漏诊背景。
症状:融合模型与单模态基线几乎持平甚至更差;不同随机种子下方差巨大;OCT 分支过拟合快于眼底分支。
解决:
- 简单方法:双分支独立 backbone(眼底 2D CNN + OCT 2D 切片池化/3D CNN)+ 后期特征融合,两分支各自归一化。
- 进阶方法:利用官方 OD/OC 掩膜在训练时裁剪视盘 ROI 喂眼底分支——挑战赛消融显示聚焦 OD/OC 区域对分级有增益。
- SOTA 方法:3D Net + DENet 双分支结构配合序数集成(挑战赛消融最优组合);跨模态注意力/联合分割-分级的多任务框架(如 IMO,GAMMA 上 mDice 93.33%、precision 81.48%)。
参考:GAMMA 论文 §4.2(架构消融,Table 5);单模态漏诊数据(论文引用 Anton et al., 2021)。
⚠️ 坑点 7:CC BY-NC-ND 的 NoDerivs 与非商业限制(分类:工程陷阱/合规)
问题:GAMMA 许可为 CC BY-NC-ND(署名-非商业性-禁止演绎):“ND” 禁止再分发修改版数据集(包括重新打包的预处理数据、增强后再发布版本),“NC” 禁止商业使用。这给"发布预处理后数据集"和"商业化模型"两条常见路径设置了红线。
症状:把预处理后的数据打包上传到模型仓库被平台下架;企业项目落地前法务审查不通过;论文配套数据链接被投诉。
解决:
- 简单方法:论文/项目仅发布代码与模型权重,不发布任何形式的衍生数据;数据获取一律引导回官方渠道并注明出处。
- 进阶方法:预处理做成"脚本即数据"——公开可复现的下载 + 预处理 pipeline(含 MD5 校验),读者一键重建你环境中的数据。
- SOTA 方法:如需商业化或衍生发布,在立项前联系发布机构(中山大学中山眼科中心/挑战赛组织方)获取书面授权,并把授权范围写入项目合规文档。
参考:GAMMA 论文 §2.1(license 声明);gamma.grand-challenge.org 官方页面。
⚠️ 坑点 8:XLSX 标签解析与多设备坐标/分辨率陷阱(分类:工程陷阱)
问题:官方分级标签是 XLSX 表格(
glaucoma_grading_training_GT.xlsx),而非 CSV/JSON;眼底图混存两种原生分辨率(2000×2992 与 1934×1956);中心凹坐标是绑定原图分辨率的像素坐标——跨设备样本直接混用坐标或 resize 图像而不同步缩放坐标,会造成定位任务标注系统性错位。
症状:KeyError/ParserError(未装 openpyxl 或列名对不上);定位模型误差在两种设备子集上呈现双峰分布;掩膜与图像尺寸不匹配报错。
解决:
- 简单方法:
pd.read_excel(..., engine="openpyxl");构建sample_id → (W, H)分辨率字典,掩膜/坐标加载后逐样本断言尺寸一致。- 进阶方法:把坐标归一化到 [0,1](x/W, y/H)再入库;增强中的几何变换用同一变换矩阵同步作用图像与坐标/掩膜。
- SOTA 方法:在数据集卡中记录每样本设备来源与分辨率,评估时按设备分层报告(定位任务的设备间差异即可见化)。
参考:PaddlePaddle 官方实践教程(GT 文件路径与读取方式);GAMMA 论文 §2.1(设备与分辨率)。
§6.6 数据增强策略
| 操作 | 安全性 | 说明 |
|---|---|---|
| 随机水平翻转(眼底) | ✅ 安全 | 视盘颞侧解剖关系对称,左右眼均可翻转;注意翻转后中心凹坐标同步取 x’ = W − x |
| 小角度旋转(±10°) | ✅ 安全 | 模拟拍照眼位;掩膜与坐标需同一变换 |
| 亮度/对比度抖动 | ✅ 安全 | 模拟暗室采集差异;避免过度曝光白化病变区 |
| 随机相位起点均匀采样 B-scan | ✅ 安全 | 256 张中采 64 张的随机起点,等效切片维度增强 |
| 随机擦除/遮挡视盘或视杯区域 | ❌ 危险 | OD/OC 区域是分级核心证据,擦除直接破坏标签依据 |
| 垂直翻转 | ❌ 危险 | 破坏视网膜上下解剖关系(视盘-黄斑轴位置) |
| 大角度旋转(>20°) | ❌ 危险 | 偏离标准采集眼位分布,引入分布外样本 |
| OCT 层序随机打乱 | ❌ 危险 | 层序即解剖,打乱等价于坑点 1 的错误 |
| 强噪声/椒盐污染 | ❌ 危险 | 眼底与 OCT 均为质量控制后的影像,强噪声无临床对应场景 |
| 色彩通道随机交换 | ❌ 危险 | 眼底彩照的色彩是病变判读线索,交换破坏模态语义 |
增强总原则:GAMMA 训练集只有 100 对,增强是必需的,但每一项增强都必须通过"眼科医生看了会不会觉得照片还是合法采集状态"的直觉测试——任何让影像偏离标准暗室坐姿采集分布的变换,都会把模型推向分布外。
§6.7 模型推荐
| 模型/策略 | 任务 | 预期表现 | 适用阶段 |
|---|---|---|---|
| ResNet50 双分支(眼底 + OCT 切片池化) | 分级 | 复现入门基线,5 折 CV 稳定 | 起步 |
| EfficientNet + ResNet 双模态(官方教程路线) | 分级 | PaddlePaddle 官方教程同款,工程参考完整 | 起步 |
| 3D ResNet OCT 分支 + 2D 眼底分支(Res-3D 型) | 分级 | 挑战赛亚军 Voxelcloud 与第 8 名 DIAGNOS-ETS 路线 | 进阶 |
| DENet 眼底分支 + 3D OCT 分支 + 序数集成(Res-DEN 型) | 分级 | 挑战赛消融最优组合;季军 EyeStar 路线 | 进阶/SOTA |
| DualRes 双分支 + 多任务(分级 + 分割 + 定位) | 全任务 | 冠军 SmartDSP 所在路线;官方总分按 0.4/0.3/0.3 加权 | SOTA |
| U-Net 系(视盘/视杯分割) | 辅助任务 | 决赛分割任务分数普遍 9+/10 | 数据预处理/多任务 |
| 联合分割-分级框架(IMO 型,跨模态特征对齐 + 迭代精修) | 联合任务 | GAMMA 上 mDice 93.33%、precision 81.48%(2026 报告) | SOTA 追踪 |
选型补充:所有挑战赛路线的共同骨架是"双分支 + 后融合",差异在 OCT 侧是否真 3D、是否多任务、是否序数集成。小数据(100 对)下建议先跑通单分支眼底基线确认训练管线,再逐个叠加 OCT 分支与辅助任务——挑战赛论文的消融正是按这个顺序验证每个组件的边际收益。
§6.8 硬件需求
| 配置 | 显存 | 能做什么 |
|---|---|---|
| 最低(RTX 3060 级 12 GB) | 12 GB | 眼底分支训练;OCT 2D 切片采样(64 张)+ 轻量 3D 网络 |
| 推荐(A100 40 GB / V100 32 GB) | 32-40 GB | 双分支端到端训练(batch 4-8)、3D 卷积全量切片、多任务训练 |
| 训练时长参考 | — | 100 对训练样本量级,单卡数小时内可完成一轮完整 CV;瓶颈在数据解码(务必缓存 OCT 体积) |
配置建议总结:GAMMA 的算力门槛是"研究生笔记本级",真正的资源约束是磁盘 IO 与数据解析工程——把 §6.3 的缓存做扎实,12 GB 消费级显卡即可完成全部主任务实验;3D 全量切片(256 张无采样)训练是唯一需要 32 GB+ 显存的场景,且对比挑战赛消融结论,均匀采样的性价比更高。
§6.9 评估指标代码
挑战赛主任务指标为加权 Cohen’s kappa;官方总分按三任务 0.4/0.3/0.3 加权。
from sklearn.metrics import cohen_kappa_score, confusion_matrix
import numpy as np
def gamma_report(y_true, y_pred):
"""主任务:三级分级的官方口径评估。"""
kappa = cohen_kappa_score(y_true, y_pred, weights="quadratic") # 官方 weighted kappa
cm = confusion_matrix(y_true, y_pred, labels=[0, 1, 2])
per_class_recall = cm.diagonal() / cm.sum(axis=1)
# 坑点 4 的临床代价:progressive(2)→early(1) 误判从严
prog_to_early = cm[2, 1] / max(cm[2].sum(), 1)
print(f"weighted kappa = {kappa:.4f}")
print(f"per-class recall (N/E/P) = {np.round(per_class_recall, 4)}")
print(f"progressive→early 误判率 = {prog_to_early:.4f} ← 临床最危险方向")
return kappa
def gamma_total_score(score_g: float, score_f: float, score_m: float) -> float:
"""官方三任务总分口径:分级 0.4 + 中心凹定位 0.3 + 视盘/视杯分割 0.3。"""
return 0.4 * score_g + 0.3 * score_f + 0.3 * score_m
def cv_summary(kappas):
"""5 折 CV 汇报口径:均值±标准差 + 最差折(小数据集必报最差折)。"""
kappas = np.asarray(kappas)
print(f"CV kappa = {kappas.mean():.4f} ± {kappas.std():.4f};最差折 = {kappas.min():.4f}")
return kappas
# 官方总分口径(如你同时跑了三个任务):
# Score = 0.4 * Score_grading + 0.3 * Score_fovea + 0.3 * Score_segmentation
§6.10 MLOps 笔记
- 数据版本:数据本体单版(2021 挑战赛最终版),但预处理缓存(OCT
.npy、归一化参数)需要 DVC/Hash 版本化,避免"同一代码不同缓存"的不可复现。 - 数据单元测试:把坑点 1(层序)、坑点 2(患者分组)、坑点 3(标签集合)、坑点 8(尺寸一致性)写成 CI 级断言(参考 §6.3 的 audit_dataset)。
- 实验追踪:每条 run 记录划分口径(官方 / CV)、n_slices、增强开关与随机种子——小数据集上这些因素对 kappa 的影响大于架构差异。
- 模型注册:以"整体 kappa + prog→early 误判率"双指标入库,防止单指标选模引入临床风险。
- 监控与漂移:上线筛查场景需监控眼底设备来源占比与 OCT 质量分布(本数据仅含 Triton 单一 OCT 设备,跨设备漂移风险天然存在)。
- 可复现交付:遵循坑点 7 的"脚本即数据"原则——交付物 = 原始包校验和 + 下载脚本 + 预处理 pipeline + 随机种子 + 训练配置,他人一键重建你的训练集;禁止交付衍生数据本体。
- 算力调度:100 对样本的完整 5 折 CV 在单卡 A100 上数小时内完成,无需分布式;瓶颈是数据解码,务必用缓存 + 多 worker。
- 结果通报模板:kappa(均值±标准差,CV 口径)/ 官方测试集 kappa / prog→early 误判率 / 与预赛-决赛回落规律的对照——四件套齐了再发。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 疾病患病率偏倚 | 按设计 50% 样本为青光眼,约为真实筛查场景患病率的数十倍;模型在均衡测试集上的准确率会高估实际人群表现 | 高 | 部署前用真实患病率重校准阈值;报告 PPV/NPV 而非仅 accuracy |
| 对照队列偏倚 | 非青光眼对照来自近视队列而非健康体检人群,近视眼底形态与普通人群不同 | 中 | 在青光眼 vs 非青光眼分析中注明对照性质;谨慎外推到非近视人群 |
| 单中心/单族群 | 全部样本来自广州单一中心的中国患者 | 高 | 跨中心/跨族群验证前不做泛化声明 |
| 设备单一性 | OCT 全部来自 Topcon DRI OCT Triton;眼底两台相机但型号有限 | 中 | 训练时加入设备分层评估;避免对未见过扫描仪的隐式假设 |
| 双眼相关性 | 24 名患者贡献双眼样本,眼间相关性使有效样本量低于 300 | 中 | 患者级分组验证(坑点 2) |
| 标签粒度偏倚 | MD 阈值把连续严重度离散为三类,边界样本(MD ≈ −6 dB)标签易受视野测量波动影响 | 低-中 | 软标签/序数建模;亚组分析边界带样本 |
§7.2 标注质量
分级标签由同日视野报告按 MD 阈值规则化生成,并设有可靠性门槛(固视丢失 <2/13、假阳性 <15%、假阴性 <25%),属于客观仪器金标准,主观性低;其误差主要继承视野检查本身的测量变异。分割与定位标注采用 4 名医生(平均 8 年经验)独立标注 + 1 名资深医生(>10 年)融合的协议,分割取标注者交集——协议透明,但官方未公布标注者间一致性数值(如 Dice/ICC),也未公布医生-机器分割一致性基线,属于可核实信息边界内的缺口。
对使用者的三点落地含义:(1) 分级标签的噪声下限由视野测量决定,模型逼近 100% kappa 不可能也不必要,报告中位数水平(80% 上下)即可视为接近标签噪声 ceiling;(2) 复现分割任务时,应把官方掩膜视为"保守交集"而非"解剖真值",边界评估(如 HD95)会比面积指标(Dice)显示更大差距;(3) 若计划自建标注做对照,建议复制"4+1 融合"协议而非单标注者协议,否则两套标签不可比。
§7.3 泛化性
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨设备(其他 OCT 扫描仪) | 高——数据仅含 Triton 一种 OCT;层间距、噪声特性、分辨率差异直接冲击 3D 分支 | 数据集规格(§3.9);无跨设备实验报告 |
| 跨人群(非中国族群) | 高——单一族群数据;青光眼亚型分布(开角/闭角)存在族群差异 | §2.2 流行病学;论文未公布亚型构成 |
| 跨患病率(真实筛查) | 中-高——50% 设计患病率 vs 人群筛查约 3.5% 基率 | §7.1 患病率偏倚行 |
| 患者级新个体 | 中——官方划分为样本级,双眼泄漏可能使患者级泛化被高估 | §5.3、坑点 2 |
| 跨疾病谱(高度近视/其他视神经病变) | 未知——对照来自近视队列,但疾病谱窄;高度近视眼底易被误判 | 官方论文未系统评估 |
| 跨采集协议(非暗室/非标准坐姿) | 中-高——训练数据全部来自标准化暗室采集 | §3.1 采集条件;社区无相关泛化报告 |
| 跨病灶谱(合并其他眼底病变) | 未知——样本未按合并症筛选说明,合并症分布未公布 | 官方论文未公布;引用时不得隐含"纯净人群"假设 |
§7.4 伦理
GAMMA 作为公开挑战赛数据集发布,图像与标签均不含直接身份信息(姓名、ID、日期),属于已脱敏的科研数据。官方论文详述了标注协议与数据构成,但未在检索可及范围内公布伦理批件编号与知情同意细节;使用者应遵守发布机构政策与所在机构伦理要求,并遵循 CC BY-NC-ND 许可。青光眼数据涉及不可逆致盲疾病,任何临床部署前必须完成独立前瞻验证。
伦理审查建议:将本数据集用于研究时,按所在机构惯例提交豁免或全案审查申请,材料中写明数据来源(公开挑战赛数据、CC BY-NC-ND)、无再标识尝试的承诺与商用排除;若研究涉及模型部署或前瞻采集,则超出本数据集许可范围,需另行设计合规路径。
§7.5 公平性
数据集性别构成(女性 42%)接近均衡,年龄跨度 19–77 岁覆盖青壮年至老年。公平性维度的已知缺口:单一族群(中国患者),无法评估跨种族公平性;亚型构成未公布,闭角型青光眼占比不明——而闭角型在亚洲人群高发且眼底表现不同,若样本集中于开角型,模型对闭角型的表现完全没有证据支撑。
公平性审计建议:使用时按性别分层报告 kappa(数据支撑可行),按年龄段(如 <40 / 40–60 / >60)分层报告(样本量小需合并折统计);族群与亚型维度无数据支撑,任何相关结论都应标注为"本数据集无法回答"。若模型将部署于非中国人群,跨族群验证是发布前的硬性前置项。
§7.6 数据漂移
数据采集窗口早于 2021 年发布,此后无版本迭代。漂移风险主要来自设备代际(新型 OCT 扫描仪、超广角眼底相机)与采集协议变化(不同视野计、不同 photographers)。建议在长期使用中维护"设备/协议指纹"(分辨率、层间距、图像统计量)做漂移监测。
可操作的漂移哨兵指标:眼底图原生分辨率分布(新设备会引入新尺寸)、OCT 体数据统计量(均值/方差的批次级漂移)、视盘 ROI 内像素强度分布(采集曝光变化)。三者皆可从 §6.3 的 audit_dataset 扩展得到,按月或按批次输出对比即可。
§7.7 DAIMS 24 项评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 图像文件 + 单表标签,无嵌套序列结构 |
| 2 | 唯一标识 | ✅ | sample_id 贯穿眼底/OCT/标签三层配对 |
| 3 | 特殊字符 | ✅ | 文件命名纯英文数字,无空格/Unicode 陷阱 |
| 4 | 重复行 | ✅ | 300 对样本一一对应,无重复记录 |
| 5 | 缺失编码 | ✅ | 无样本级缺失;无信息性缺失编码需求 |
| 6 | 标签标识 | ✅ | 官方 GT XLSX 列名明确(样本 ID + 类别) |
| 7 | 罕见类分组 | ✅ | 官方识别中期/晚期样本过少问题并合并为 progressive |
| 8 | 偏倚评估 | ✅ | 论文公布完整人口学与分层比例 |
| 9 | 数据字典 | ⚠️ | 无官方字段字典;列语义需从 GT 文件与 README 自行推断 |
| 10 | 信息性缺失解释 | ✅ | 不适用(无信息性缺失设计) |
| 11 | 设备记录 | ⚠️ | 论文记载设备型号,但未逐样本标注设备来源 |
| 12 | 共线性 | ✅ | 不适用(非表格回归场景) |
| 13 | 编码映射 | ✅ | 标签可映射 ICD-11 9C61 / SNOMED 84494001(本页 §2.1b) |
| 14 | 时间戳处理 | ✅ | 不适用(静态影像,无时序字段) |
| 15 | 划分建议 | ✅ | 官方三划分冻结且被排行榜复用 |
| 16 | 泄漏讨论 | ⚠️ | 双眼患者跨集合风险官方未讨论(本页 §5.3 补齐) |
| 17 | 标签分布 | ✅ | 四类/三类比例官方公布(50%/26%/14.33%/9.67%) |
| 18 | 测量偏倚 | ✅ | 视野同日采集 + 明确可靠性标准(固视/假阳/假阴阈值) |
| 19 | 外部验证建议 | ✅ | 本页 §5.5 与 §7.8 给出路径 |
| 20 | 版本记录 | ⚠️ | 无正式版本号体系;挑战赛三阶段即事实版本 |
| 21 | 预处理脚本 | ❌ | 官方未提供预处理脚本;社区教程仅部分覆盖(OCT 组装/增强需自研) |
| 22 | 合规要求 | ✅ | CC BY-NC-ND 明确且无歧义 |
| 23 | 多模态对齐 | ⚠️ | 同日配对但无跨模态像素级配准文件 |
| 24 | 去标识化 | ✅ | 公开挑战赛数据,无直接身份信息 |
DAIMS 评分:19.5 / 24
评分解读:GAMMA 在"小而完整"的数据集里属于高质量梯队——配对完整性、标签可追溯性、官方划分与合规清晰度都是满分项;失分集中在工程配套(无预处理脚本、无官方字段字典)与结构性问题(设备未逐样本记录、多模态无配准、泄漏未讨论)。这些失分项全部可通过社区工程实践弥补,而非数据本身的质量缺陷;换言之,扣分项决定的是"你需要补哪些工程功课",而不是"数据能不能信"。
对你意味着什么:(1) 可以放心把它当作排行榜基准与多模态方法试验台,标签可信、口径统一;(2) 上手第一天就把 OCT 体积缓存、患者分组 CV、标签断言三件事做完(§6.3/§6.10),可规避全部已知工程坑;(3) 发论文时,任何跨设备/跨人群/真实患病率的外推声明都需要补充实验,否则只陈述官方划分口径下的结果;(4) 商业化与衍生数据再发布被 ND 条款禁止,立项前先过合规(坑点 7);(5) 若你的研究依赖逐样本设备元数据或跨模态配准,需要自行构建并声明,官方不提供。
§7.8 外部验证矩阵
官方论文未报告跨数据集的外部验证;下表仅收录有同行评审或官方论文支撑的评估记录:
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| GAMMA 决赛测试集(官方 held-out) | 中山眼科中心/百度 | 三级分级 | kappa 69.62–85.49(10 队) | 相对预赛普遍回落(MedIPBIT −12.95;DIAGNOS-ETS −16.34) | 评估集更换即暴露排行榜过拟合;SmartDSP 最稳(−7.89) |
| 多模态 vs 单模态(官方消融) | 挑战赛组织方 | 三级分级 | 设计良好的多模态模型显著优于任一单模态 | — | 单模态漏诊约 46.3% 的临床背景下,融合收益被官方消融证实 |
| IMO 联合分割-分级(2026) | 独立研究团队 | 分割 + 分级联合 | mDice 93.33%、precision 81.48% | 同一 GAMMA 基准上报告 | 多任务联合优化与跨模态特征对齐是当前演进方向 |
使用该矩阵时的纪律:前两行数字来自不同评估任务与不同方法代际,彼此不可横向比较,仅供"该基准上已报告过什么"的参考;表中未收录的"跨数据集"条目(如把 GAMMA 模型直接套到 RIM-ONE)因缺乏同行评审支撑而不录入——如果你完成了此类实验并发表,它将成为本表的第一条真外部验证记录。
§8 基准性能与生态
§8.1 排行榜(决赛测试集,主任务三级分级)
下表为 GAMMA 挑战赛决赛(模型冻结后)官方结果;kappa 为分级主任务指标,总分 = 0.4×分级 + 0.3×中心凹定位 + 0.3×视盘/视杯分割:
| 排名 | 模型/队伍 | kappa(决赛) | 总分(三任务) | 机构 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|---|
| 1 | SmartDSP | 85.49 | 8.88892 | 厦门大学 | DualRes 双分支 + 多任务 + 序数集成 | Wu et al., 2022, arXiv:2202.06511(Table 3/4) | 官方技术材料页 |
| 2 | Voxelcloud | 85.00 | 8.83127 | 上海交大/西交利物浦/VoxelCloud | Res-3D(3D ResNet OCT 分支) | 同上 | 官方技术材料页 |
| 3 | EyeStar | 84.77 | 8.72345 | A*STAR IHPC(新加坡) | Res-DEN(DENet 眼底分支) | 同上 | 官方技术材料页 |
| 4 | IBME | 82.56 | 8.70783 | 中国医学科学院北京协和医学院 | DualRes 双分支 | 同上 | 官方技术材料页 |
| 5 | MedIPBIT | 80.48 | 8.70561 | 北京理工大学 | DualRes 双分支(预赛 kappa 第一 93.43) | 同上 | 官方技术材料页 |
| 6 | HZL | 84.01 | 8.68781 | 港理工/南科大 | 单网络多任务学习策略 | 同上 | 官方技术材料页 |
| 7 | WZMedTech | 79.46 | 8.65384 | 南方医科大/天津医科大/新疆大学 | DualRes 双分支 | 同上 | 官方技术材料页 |
| 8 | DIAGNOS-ETS | 75.36 | 8.59884 | ETS Montreal/DIAGNOS(加拿大) | Res-3D;中心凹定位任务第一(9.596625) | 同上 | 官方技术材料页 |
| 9 | MedICAL | 72.90 | 8.43841 | 南方科技大学 | DualRes 双分支 | 同上 | 官方技术材料页 |
| 10 | FATRI_AI | 69.62 | 8.27601 | 随芯(上海) | 眼底+OCT 拼接单网络(SinCat) | 同上 | 官方技术材料页 |
(kappa 与总分均为挑战赛决赛阶段官方口径,出自 Wu et al., 2022 的 Table 3 与 Table 4;各队技术报告与源码见官方技术材料页。)
数值可比性说明:上表 10 支队伍在同一个冻结的决赛测试集上评分,kappa 数字彼此可比;但"总分"混合了三个任务且权重特定于该挑战赛,不可与任何其他数据集/论文报告的数字直接比较。预赛 kappa(最高 MedIPBIT 93.43)与决赛 kappa 不可混排——决赛在未见的最终测试集上评估,回落幅度本身就是过拟合诊断信号(坑点 5)。
解读榜单的三个视角:(1) 头部拥挤——前 4 名总分差距不到 0.19,说明在 100 对训练量下架构间的边际收益有限,工程细节与集成策略贡献更大;(2) 预赛冠军≠决赛冠军——MedIPBIT 预赛第一(93.43)决赛滑至第 5 名 kappa,验证了"少提交、稳选模"的价值;(3) 全能性定价——总分冠亚季军(SmartDSP/Voxelcloud/EyeStar)都是三任务均衡强队,官方 0.4/0.3/0.3 的加权实际上奖励了可解释的多任务路线。
§8.2 SOTA 总结与选型建议
自 2021 年挑战赛以来,GAMMA 上的方法论共识逐步收敛:双分支结构(眼底 2D + OCT 3D)优于任何单模态与简单拼接;序数集成利用分级有序性是最有效的训练策略之一;OD/OC 区域聚焦有稳定增益。要冲击或超越榜单水平,优先顺序建议:先做对患者分组的稳健 CV(否则分数不可信),再上 3D OCT 分支与序数损失,最后叠加多任务联合训练。2026 年的 IMO 框架(联合分割-分级、跨模态特征对齐、迭代精装修复)代表当前演进方向。
选型决策树:(1) 目标是复现排行榜 → 从 DualRes 双分支起步,对照官方技术材料;(2) 目标是方法创新 → 序数建模与跨模态对齐是挑战赛消融与后续论文共同指向的增量空间;(3) 目标是临床落地 → 把 §6.9 的代价敏感评估作为一票否决项,而非锦上添花;(4) 目标是小样本方法研究 → GAMMA 的 100 对训练量恰好是该方向最标准的试验台之一。
§8.3 评测协议
- 主任务:三级分类,指标为加权 Cohen’s kappa(0=随机水平,1=完全一致)。
- 总分:
Score = 0.4×Score_grading + 0.3×Score_fovea + 0.3×Score_segmentation。 - 提交纪律:预赛阶段每队每日最多 5 次提交,预赛历时 30 天;70 队合计提交 1,272 个有效结果;决赛阶段禁止修改模型。
- 公平性约束:参赛队不得使用任何其他私有数据集开发方法(官方论文明确)。
- 复现要求:10 支决赛队伍全部提交源码与技术报告,这是该挑战赛生态远超同期多数赛事的核心资产。
- 训练集使用边界:训练集 100 对是唯一的带标签训练资源;用官方掩膜/坐标做辅助任务监督属于协议允许范围,用外部青光眼数据预训练则违反当时参赛规则(如今作为学术对比实验需在论文中声明)。
§8.4 相关数据集
| 数据集 | 关系 | 规模 | 任务 |
|---|---|---|---|
| REFUGE | GAMMA 的前作挑战赛(同系列、单模态眼底) | 眼底 + 少量 OCT | 青光眼筛查 + OD/OC 分割 |
| DRISHTI-GS | 同疾病、单模态 | 101 幅眼底图 | 视盘/视杯分割 |
| RIM-ONE(DL 统一版 485 幅) | 同疾病、单模态 | 485 幅 | 筛查标签 + 视盘分割 |
| IDRiD | 同模态(眼底)、不同疾病 | 516 张 | 糖尿病视网膜病变分级/病灶分割 |
| OCTA-500 | 相近模态(OCTA)、无眼底配对 | 500 名受试者 | 青光眼/DR 标签 |
选库决策参考:研究"分级"用 GAMMA(唯一三级多模态);研究"分割"可选 DRISHTI-GS/REFUGE;研究"跨模态自监督预训练"可将 GAMMA 与 OCTA-500 组合(注意任务与设备差异);做系统综述时五者共同覆盖"单模态筛查—多模态分级—血管成像"的证据链。
§8.5 关键论文 Top 5
以下五篇覆盖"任务定义 → 官方总结 → 可复现方案 → 最新演进"的完整阅读链条,按建议阅读顺序排列:
- Wu, J., Fang, H., Li, F., Fu, H., Lin, F., et al., 2022, “GAMMA Challenge: Glaucoma grAding from Multi-Modality imAges”, arXiv:2202.06511(DOI 10.48550/arXiv.2202.06511);期刊版发表于 Medical Image Analysis(2023,PII S1361841523001986) — 数据集与挑战赛的权威总结:协议、标注、10 队方法与消融全收录。
- Wu, J., Fang, H., Li, F., Fu, H., Xu, Y., 2021, “Learning to screen Glaucoma like the ophthalmologists”, OMIA8 @ MICCAI 2021 — 挑战赛任务设计理念:模仿医生"眼底 + OCT 联合判读"的筛查路径。
- Orlando, J. I. et al., REFUGE Challenge 系列论文(GAMMA 前作;见 GAMMA 论文参考文献) — 单模态眼底青光眼挑战赛的基准协议,GAMMA 沿用并扩展其评估思路。
- M. F. Marcos, 2023, “Glaucoma Grading Using Multimodal Imaging and Multilevel CNN”(IEEE,配套代码开源:MarcosMF86/IEEE_GlaucomaGradingUsingMultimodalImaging) — 公开可复现的多层级 CNN 融合方案:OD 分割 → ROI 裁剪 → 2D/3D 多层级集成 + Grad-CAM 解释。
- IMO 作者团队(代码仓库 warren-wzw/IMO),2026, “Joint Segmentation and Grading with Iterative Optimization for Multimodal Glaucoma Diagnosis”, arXiv:2603.14188 — 联合分割-分级 SOTA:跨模态特征对齐 + 扩散式迭代精修解码器,GAMMA 上 mDice 93.33%、precision 81.48%。
§8.6 社区活跃度
GAMMA 的社区资产集中在官方渠道:竞赛虽于 2021-10-01 收官,但随即转入飞桨 AI Studio 学习赛,三个任务页面长期开放,数据持续可下载,并有官方 PaddlePaddle 实践教程维护。10 支决赛队伍的源码与技术报告在官方技术材料页集中提供。HuggingFace 存在多个社区镜像(如 ydydt/GAMMA),GitHub 上有独立复现与后续方法仓库(MarcosMF86、warren-wzw/IMO 等)。截至 2026-09,该基准仍是眼底 + OCT 多模态分级方向论文的标准比较对象。
活跃度信号盘点(截至 2026-09):官方学习赛三任务页持续接受提交;挑战赛总结论文经 arXiv(2022-02-14 首发)多轮修订后被 Medical Image Analysis 接收(2023),是后续论文的标配引用;国内高校(厦门大学、北京理工大学、上海交大等)与国际机构(A*STAR、ETS Montreal)的参赛方法全部留有技术报告,构成罕见的方法学档案。相对而言,非官方社区(论坛讨论、第三方维护)规模有限——遇到问题优先查阅官方论文与技术材料页。
§8.7 生态快照
§9 相关资源与引用
§9.1 官方与社区资源
- 官方主页:gamma.grand-challenge.org — 数据描述、三项任务定义与获取入口。
- 技术材料页:gamma.grand-challenge.org/technical-materials — 前 10 名队伍技术报告与源码。
- AI Studio 原竞赛页:aistudio.baidu.com/competition/detail/90 — 赛程、奖金池(€4,000)、报名规模与总排行榜存档。
- AI Studio 学习赛:任务一 807、任务二 806、任务三 805 — 当前获取数据与持续评测的入口。
- 官方实践教程:PaddlePaddle 多模态青光眼分级实践 — 数据读取、8:2 划分与双分支基线全流程。
- HuggingFace 社区镜像:ydydt/GAMMA — 数据卡含规模、分级阈值与结构描述。
- 引用次数类动态指标:本页不收录(各来源快照冲突且无法裁决),引用影响力请以 Google Scholar 实时数据为准。
§9.2 BibTeX 引用块
@article{wu2022gamma,
title = {GAMMA Challenge: Glaucoma grAding from Multi-Modality imAges},
author = {Wu, Junde and Fang, Huihui and Li, Fei and Fu, Huazhu and Lin, Fengbin
and Li, Jiongcheng and Huang, Lexing and Yu, Qinji and Song, Sifan
and Xu, Xinxing and Xu, Yanyu and Wang, Wensai and Wang, Lingxiao
and Lu, Shuai and Li, Huiqi and Huang, Shihua and Lu, Zhichao
and Ou, Chubin and Wei, Xifei and Liu, Bingyuan and Kobbi, Riadh
and Tang, Xiaoying and Lin, Li and Zhou, Qiang and Hu, Qiang
and Bogunovic, Hrvoje and Orlando, Jos{\'e} Ignacio
and Zhang, Xiulan and Xu, Yanwu},
journal = {arXiv preprint arXiv:2202.06511},
year = {2022},
doi = {10.48550/arXiv.2202.06511}
}
@article{wu2023gammaMIA,
title = {GAMMA challenge: Glaucoma grading from multi-modality images},
author = {Wu, Junde and Fang, Huihui and Li, Fei and Fu, Huazhu and others},
journal = {Medical Image Analysis},
year = {2023},
note = {ScienceDirect PII S1361841523001986}
}
@misc{wu2021learning,
title = {Learning to screen Glaucoma like the ophthalmologists},
author = {Wu, Junde and Fang, Huihui and Li, Fei and Fu, Huazhu and Xu, Yanwu},
year = {2021},
howpublished = {OMIA8 Workshop @ MICCAI 2021; ResearchGate publication 363843646}
}
§9.3 引用指南
使用 GAMMA 数据集时,请在论文中同时引用挑战赛总结论文(wu2022gamma 或其期刊版 wu2023gammaMIA)并注明数据发布机构(中山大学中山眼科中心)。依据 CC BY-NC-ND 许可:署名(Attribution)为强制要求;非商业(NonCommercial)与禁止演绎(NoDerivs)分别约束商业化与衍生数据再分发(详见坑点 7)。引用排行榜数字时必须注明口径(预赛/决赛、kappa/总分),避免与自定义实验结果混排。
方法学写作的引用惯例:比较对象为 10 支决赛队伍时,统一引用挑战赛总结论文(所有队伍的方法细节集中在其中);单独深入某队方法时,再引用该队官方技术报告(官方技术材料页提供)。若使用 HuggingFace 或其他第三方镜像获取数据,建议同时核对官方原件并在文中注明实际下载渠道与日期。
§10 AI 使用声明卡
§10.1 AI 模型列表
本页面的撰写与整理由大语言模型辅助完成,用于资料汇总、结构组织与文本生成;所有事实性内容均锚定 §10.3 所列来源。
§10.2 AI 参与范围
AI 参与:章节框架组织、中英文资料汇总与转写、代码示例编写、表格整理。AI 不参与:来源真实性判断的最终裁定、医学结论的临床审核、发布决策——上述均由人工完成(§10.4)。
具体到章节:§1-§8 的全部正文、表格与代码由 AI 按本页 §10.3 来源整理生成;§2.1b 的 SNOMED 映射与 §7 的 DAIMS 评分判断为编辑部分析性内容,经逐项复核;§10.3 来源清单由编辑从检索记录中核定。所有版本间的冲突信息(如引用量快照不一致)一律未采用而非择一采信。
§10.3 输入来源列表
- GAMMA Grand Challenge 官方站点(Home 页)— https://gamma.grand-challenge.org/
- GAMMA Grand Challenge 技术材料页 — https://gamma.grand-challenge.org/technical-materials/
- Wu, J. et al., 2022, “GAMMA Challenge: Glaucoma grAding from Multi-Modality imAges”, arXiv:2202.06511(v2/v3/v4 修订版)— https://arxiv.org/abs/2202.06511
- Wu, J. et al., 2023, GAMMA challenge(期刊版), Medical Image Analysis — https://www.sciencedirect.com/science/article/abs/pii/S1361841523001986
- Baidu AI Studio 竞赛页(赛程/奖金/报名数/榜单)— https://aistudio.baidu.com/competition/detail/90/0/introduction
- Baidu AI Studio 学习赛任务一页 — https://aistudio.baidu.com/competition/detail/807
- PaddlePaddle 官方实践教程(数据结构与划分实践)— https://www.paddlepaddle.org.cn/documentation/docs/zh/2.5/practices/cv/glaucoma_classification.html
- HuggingFace 数据集镜像 ydydt/GAMMA — https://huggingface.co/datasets/ydydt/GAMMA
- OMIA8(第 8 届眼科医学影像分析研讨会)官方页面 — MICCAI 2021 研讨会站点
- 厦门大学 SmartDSP 实验室 GAMMA 夺冠新闻 — http://xmu-smartdsp.github.io/news/news20210930.html
- Wu, J. et al., 2021, “Learning to screen Glaucoma like the ophthalmologists” — https://www.researchgate.net/publication/363843646
- MarcosMF86 GitHub 仓库(多层级 CNN 复现)— https://github.com/MarcosMF86/IEEE_GlaucomaGradingUsingMultimodalImaging
- IMO 论文与代码仓库 — https://ar5iv.labs.arxiv.org/html/2603.14188 ;https://github.com/warren-wzw/IMO
- ICD-11 第 09 章编码检索(eMedCodes/FindACode)— https://www.emedcodes.com/browse/icd11/chapter/9.html
- MalaCards Open-Angle Glaucoma 词条(SNOMED CT 交叉引用)— https://www.malacards.org/card/open_angle_glaucoma
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、人群统计、金标准) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §3 数据集规格(模态参数、子集划分、设备规格) | 千方病案医学编辑部 | 与 arXiv 论文及官方站点逐项比对 | ✅ 已验证 |
| §4 数据结构(目录树、DAIMS 字段字典) | 千方病案医学编辑部 | 与官方教程及论文 §2.1 交叉比对 | ✅ 已验证 |
| §5 数据划分策略与泄漏分析 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §6 代码示例与坑点 | 千方病案医学编辑部 | 逻辑审查 + 与官方教程/技术材料比对 | ✅ 已通过 |
| §7 质量评估与 DAIMS 评分 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §8 排行榜与引用表述 | 千方病案医学编辑部 | 与论文 Table 3/4 及官方榜单快照比对 | ✅ 已验证 |
| §9 资源链接与 BibTeX | 千方病案医学编辑部 | 逐链接可达性核对与文献字段核对 | ✅ 已验证 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema v3.9 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
除 §10 本声明卡外,本页各章节正文与代码示例均由 AI 辅助生成初稿,经 §10.4 所列人工校验后发布;无纯人工原创章节。AI 生成的推算性内容(如样本数由百分比推算、层间距由物理尺寸推算、缓存体积估算)已在正文相应位置逐一标注"推算"字样,与直接来源的数字明确区分。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)。审核覆盖:全文事实核验、代码逻辑审查、结构化数据(frontmatter schema_org 与 §C JSON-LD)一致性比对,以及 §10.3 来源清单与正文引用的一一对应检查。
页面状态:published(全部内容已完成审核并发布)
附录:结构化数据(JSON-LD)
---
## 相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- [cataract-101](https://www.qianfanghub.com/ai-ready-dataset/cataract-101/263) — 共享标签:医学影像 / 多模态 / 眼科影像
- [refuge](https://www.qianfanghub.com/ai-ready-dataset/refuge/62) — 共享标签:医学影像 / 眼科影像 / 青光眼
- [fives](https://www.qianfanghub.com/ai-ready-dataset/fives/741) — 共享标签:医学影像 / 眼科影像 / 青光眼
- [drions-db](https://www.qianfanghub.com/ai-ready-dataset/drions-db/775) — 共享标签:医学影像 / 眼科影像 / 青光眼
- [rim-one](https://www.qianfanghub.com/ai-ready-dataset/rim-one/291) — 共享标签:医学影像 / 眼科影像 / 青光眼
- [drishti-gs](https://www.qianfanghub.com/ai-ready-dataset/drishti-gs/301) — 共享标签:医学影像 / 眼科影像 / 青光眼
- [justraigs](https://www.qianfanghub.com/ai-ready-dataset/justraigs/746) — 共享标签:医学影像 / 眼科影像 / 青光眼
- [origa-light](https://www.qianfanghub.com/ai-ready-dataset/origa-light/763) — 共享标签:医学影像 / 眼科影像 / 青光眼
- [refuge2](https://www.qianfanghub.com/ai-ready-dataset/refuge2/766) — 共享标签:医学影像 / 眼科影像 / 青光眼
- [riga](https://www.qianfanghub.com/ai-ready-dataset/riga/768) — 共享标签:医学影像 / 眼科影像 / 青光眼
> 导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

