1. 项目概述与核心挑战
在眼科领域,青光眼因其不可逆的致盲性,早期筛查的重要性不言而喻。传统的筛查依赖于眼科医生对眼底彩照的判读,但这种方式耗时耗力,且受限于专家资源的分布不均。近年来,人工智能,特别是深度学习,在医学影像分析中展现出巨大潜力,为大规模、低成本的自动化青光眼筛查提供了可能。然而,一个长期困扰AI模型落地应用的“阿喀琉斯之踵”是鲁棒性问题。简单来说,一个在实验室“干净”数据集上表现优异的模型,一旦部署到真实的筛查环境中,面对图像质量参差不齐、拍摄设备多样、患者个体差异巨大等复杂情况时,其性能往往会断崖式下跌。这些“意外”的输入数据,在学术上被称为“分布外”数据或“不可分级”图像,它们直接挑战着AI系统的可靠性与安全性。
AIROGS挑战赛正是为了攻克这一核心难题而设立的。它不仅仅是一个算法性能的“比武场”,更是一个推动AI从“实验室玩具”走向“临床工具”的关键实验。挑战赛组织者提供了一个前所未有的、高度模拟真实世界复杂性的数据集——包含来自约6万名患者、500个不同筛查中心的11.3万张眼底彩照。其精妙之处在于训练集与测试集的设计:训练集仅包含可清晰判读的图像,而测试集则混杂了相当比例的不可分级图像。这种设置迫使参赛者不能仅仅优化模型在“理想数据”上的分类精度,而必须构建能够“自知之明”的系统——即能够识别出哪些输入是可靠的、可以给出诊断建议,哪些输入质量太差或过于异常,需要“举手报告”交由人类处理。
这个挑战的价值在于,它将鲁棒性从一个模糊的“良好愿望”,转变为一个可量化、可比较、可优化的具体技术指标。最终,顶尖团队的表现与20位人类专家的集体判断相当,并且在识别不可分级图像上达到了接近完美的水平(AUC 0.99),这无疑为AI辅助青光眼筛查的临床落地注入了一剂强心针。接下来,我将深入拆解这场挑战中涌现的技术方案、设计思路以及背后的实战经验。
2. 数据集构建:真实世界复杂性的基石
一个挑战赛的成功,一半取决于其数据集的质量与设计。AIROGS数据集(Rotterdam EyePACS AIROGS dataset)的构建,堪称医学影像AI研究中的一个典范。它不仅仅追求“大”,更在“多样性”和“真实性”上做到了极致。
2.1 数据来源与标注流程
数据集源自一个真实的糖尿病视网膜病变筛查项目,这本身就保证了数据的“野生”属性——它们不是在理想实验室环境下拍摄的,而是来自基层筛查现场。总计约11.3万张图像,覆盖了500个不同的筛查中心,这意味着拍摄设备、操作人员技术水平、患者配合度都存在巨大差异。设备品牌就包括了Canon、Optovue、TopCon等多种型号,甚至还有大量“未知”来源的设备,这种异质性正是模型需要克服的第一道难关。
标注流程的严谨性是保证数据“金标准”可靠的关键。组织者并非随意找几位医生进行标注,而是设计了一套严格的筛选与质量控制体系:
- 专家筛选:所有参与标注的眼科医生和验光师都需要先通过一个包含110张立体视神经照片的标准化测试(EODAT),只有那些在识别青光眼性视神经病变上达到高准确率(>85%)和高特异性(>92%)的专家才能入选。最终,90名候选人中仅有30人通过。
- 双盲标注与仲裁:每张图像由两位互不知情的专家独立标注。选项为“需转诊青光眼”、“无需转诊青光眼”或“不可分级”。若两者意见一致,则此标签为最终标签;若不一致,则由一位通过更严格测试(准确率>95%)的青光眼专科医生进行仲裁裁决。这种设计最大限度地减少了个人主观偏差。
- 持续质量监控:标注并非一劳永逸。在整个标注过程中,组织者持续监控每位标注者的敏感性和特异性。一旦其表现低于预设阈值(敏感性<80%或特异性<95%),该标注者将被移出研究,其所有已标注图像将由其他专家重新标注。这种动态淘汰机制确保了整个标注过程的质量稳定。
注意:这种“仲裁+持续监控”的标注体系成本极高,但对于构建可靠的医学AI基准数据集至关重要。它告诉我们,高质量的数据标注远非简单的众包可以完成,尤其是在青光眼这种需要精细鉴别诊断的领域。
2.2 训练集与测试集的策略性划分
数据划分是本次挑战赛设计中最具匠心的一环,直接定义了“鲁棒性”问题的具体形态。
训练集:包含101,442张图像,全部为“可分级”图像(即“需转诊”或“无需转诊”)。其中,“需转诊青光眼”的图像仅有3,270张(占比约3.2%),存在严重的类别不平衡。最关键的是,训练集中完全剔除了“不可分级”图像。
测试集:包含11,290张图像,真实模拟了筛查现场的数据分布:
- “需转诊青光眼”:1,602张 (14.2%)
- “无需转诊青光眼”:8,134张 (72.0%)
- “不可分级”:1,554张 (13.8%)
可以看到,测试集中“需转诊”和“不可分级”的比例被有意提高了。这种划分的意图非常明确:参赛者必须在从未见过“不可分级”图像样本的情况下,开发出能够检测出这类图像的模型。这迫使模型必须从“可分级”数据中学习到什么是“正常”或“可诊断”的眼底图像特征分布,从而识别出偏离该分布的异常样本。这是一种典型的“分布外检测”或“异常检测”问题设置。
2.3 外部数据集验证
为了进一步验证模型的泛化能力,组织者在赛后使用参赛者提交的容器化算法,在三个外部公开数据集上进行了测试:
- REFUGE:用于评估青光眼筛查性能。
- GAMMA:同样用于评估青光眼筛查性能。
- DRIMDB:一个包含“好”、“坏”、“异常”类别图像的数据集,用于专门评估模型对低质量和异常图像的识别能力(即鲁棒性)。
这种“内部测试+外部验证”的评估模式,极大地增强了研究结论的可信度,证明了优秀方案并非过拟合于特定数据集,而是具备了真正的泛化能力。
3. 挑战赛机制与评估体系
AIROGS挑战赛的机制设计同样体现了其推动技术落地的务实精神,它不仅仅是一个学术竞赛,更是一个面向实际部署的“压力测试”。
3.1 容器化提交与可复现性
与传统的“提交预测结果文件”的竞赛模式不同,AIROGS要求参赛者提交一个封装好的Docker容器。这个容器内包含了训练好的完整算法流水线。组织方在云端统一的硬件环境(NVIDIA T4 GPU)上运行这些容器,对保密的测试集进行推理。
这种“容器化提交”模式带来了三大核心优势:
- 公平性与防作弊:参赛者无法接触到测试集数据,杜绝了任何针对测试集的手动调优或“窥探”行为,保证了竞赛的绝对公平。
- 可复现性与可重用性:获胜的算法不再是黑箱或一篇论文中的描述,而是一个可以立即被其他研究者下载、验证、甚至应用于新数据的可执行软件包。这极大地促进了科研成果的转化和复用。
- 贴近工程实践:容器化是现代AI项目部署的标准方式。这种要求迫使参赛者从一开始就考虑模型的工程化封装、依赖管理、输入输出接口标准化等问题,使得优秀方案能更平滑地过渡到实际应用。
3.2 四阶段渐进式评估流程
挑战赛分为四个阶段,层层递进,引导参赛者逐步完善方案:
- 训练阶段:提供训练集数据,供参赛者开发模型。
- 初步测试阶段1:提交的容器在10张训练集图像上运行,仅用于验证代码能否正确执行、输出格式是否符合要求。这是一个“技术合规性检查”。
- 初步测试阶段2:允许每个团队提交3次方案,在10%的测试集上运行并反馈全部四个评估指标。此阶段用于模型调优和策略验证。
- 最终测试阶段:每个团队仅有一次提交机会,在100%的测试集上运行,此阶段的成绩用于最终排名。这种“一击定胜负”的规则模拟了真实场景中模型部署后的不可更改性,增加了挑战的严肃性。
3.3 双维度评估指标
评估指标的设计直接决定了竞赛的导向。AIROGS采用了“筛查性能”与“鲁棒性”双维度的评估体系,各包含两个指标:
筛查性能(针对可分级图像):
- pAUCs (标准化部分AUC,90-100%特异性区间):青光眼筛查作为一项面向大规模人群的公共卫生项目,对假阳性(将健康人误判为患者)的容忍度极低,因为这会引发不必要的焦虑和医疗资源浪费。因此,评估更关注高特异性区间下的模型辨别能力。pAUCs正是衡量模型在特异性高于90%时的综合性能。
- SE@95SPS (在95%特异性下的灵敏度):这是一个非常实用的临床指标。它固定了特异性为95%(即每100个健康人,最多允许5个假阳性),然后看在此严格条件下,模型能检出多少真正的患者(灵敏度)。这直接关系到筛查项目的成本效益比。
鲁棒性(针对不可分级图像):
- κU (Cohen‘s Kappa系数):用于评估模型在判断图像“是否可分级”这个问题上,与人类专家金标准的一致性程度。Kappa系数考虑了随机一致的概率,比简单准确率更能反映模型的实际判别能力。
- AUCU:使用模型输出的“不可分级性”连续分数(如不确定性分数、重建误差等)与人类标签计算的ROC曲线下面积。它衡量模型区分“可分级”与“不可分级”图像的整体能力。
最终排名:不是简单地对某个指标排序,而是将每个团队在四个指标上分别排名,然后计算平均排名。这意味着一个均衡发展的、在筛查和鲁棒性上都表现良好的方案,会比在单一指标上极端优秀的方案更有优势。这再次强调了挑战赛对“全面实用能力”的追求。
4. 核心方案解析:从分类到“自知之明”
14支决赛队伍的方案百花齐放,但核心思路可以归结为两大任务:青光眼分类和不可分级性检测。许多团队采用了两阶段或双分支的架构。
4.1 青光眼分类的主流技术路线
几乎所有顶尖团队都采用了基于深度学习卷积神经网络或视觉变换器的方案,并围绕“视盘”这一关键区域做文章。
1. 视盘定位与裁剪这是最主流的前置步骤。青光眼的主要结构性改变体现在视盘(视神经乳头)上,如杯盘比扩大、盘沿切迹、出血等。因此,先定位并裁剪出视盘区域,可以排除图像中大量无关背景信息的干扰,让模型专注于关键病理特征。
- 实现方式:多数团队使用目标检测模型(如YOLOv5)或分割模型(如UperNet with ResNet backbone)来实现视盘定位。
- 数据挑战:模型需要足够的标注数据来训练。各团队采用的策略不同:
- PUMCH-eye团队:手动标注了40张图像的视盘,用于训练分割模型。
- RWTH-CuP团队:手动标注了多达3221张图像的视盘及周围区域,用于训练YOLOv5检测器。
- Eyelab团队:采用了半自动生成的标签。
- 实操心得:手动标注视盘是一项费时费力的工作,但高质量的定位模型是后续高性能分类的基石。在实际项目中,如果计算资源允许,使用分割模型通常能获得比检测框更精确的ROI(感兴趣区域),尤其是对于边界模糊或部分被遮挡的视盘。如果标注资源有限,可以尝试使用在大型自然图像数据集上预训练的通用检测模型进行迁移学习,或利用一些无监督/弱监督的方法进行初始定位。
2. 分类模型架构裁剪后的视盘区域(或整张图像)被送入分类网络。模型架构的选择呈现多元化:
- 卷积神经网络:ResNet (及其变种如ResNet-RS)、EfficientNet、DenseNet、Inception系列等经典CNN仍然是中流砥柱。它们经过ImageNet预训练,具有强大的特征提取能力。
- 视觉变换器:Swin Transformer、DeiT等ViT模型也被多个团队采用。Transformer模型在捕捉长距离依赖关系上具有优势,可能对分析视盘的整体结构关系有帮助。
- 集成学习:为了提升模型的泛化能力和稳定性,许多团队采用了模型集成策略,例如SACM团队集成了SeResNeXt、VGG、DenseNet、EfficientNet和Inception-V3共五个模型。集成可以有效平滑单个模型的偏差和方差。
3. 应对类别不平衡训练集中“需转诊青光眼”阳性样本仅占约3%,严重的类别不平衡会导致模型倾向于预测多数类(阴性)。各团队采用了不同策略:
- 损失函数调整:FMS-CETCV团队使用了Focal Loss。该损失函数通过降低易分类样本的权重,让模型更关注难分类的少数类样本。
- 数据层采样:UPRetina-UR等团队在训练时对阳性样本进行了过采样,即让模型更频繁地看到阳性样本。
- 加权损失:在标准交叉熵损失中,为少数类赋予更高的权重。
注意:过采样和损失加权都需要谨慎使用,过度调整可能导致模型对少数类过拟合。一种更稳健的做法是结合使用,并在验证集上密切监控模型对两类样本的召回率(灵敏度)和精确度。
4.2 不可分级性检测的创造性方案
这是本次挑战赛的精华所在,各团队“八仙过海,各显神通”,探索了多种实现模型“自知之明”的路径。大致可分为以下几类:
1. 基于视盘检测置信度的方法这是最直观的方法之一。思路是:如果一张眼底图像连视盘都找不到或找不准,那么它对于青光眼诊断来说很可能是不可分级的。
- Eyelab团队:直接使用其视盘检测模型(YOLOv5)的输出。如果模型未检测到视盘,则判定图像为不可分级。
- RWTH-CuP团队 & SACM团队:将目标检测模型的置信度分数作为不可分级性度量的一个重要组成部分。置信度低意味着模型对定位结果不确定,图像可能存在质量问题。
2. 基于分类模型不确定性的方法利用分类模型自身输出的不确定性来度量输入图像的异常程度。
- ICT_HCI团队:使用模型对“需转诊”和“无需转诊”两个类别预测概率中的较小值,作为不可分级性的似然度。逻辑是:如果模型对两个类别的预测概率都很低(即都很不确定),那么这张图很可能难以分类。
- OPTIMATeam团队:采用了证据深度学习的方法,直接建模分类模型预测的认知不确定性(Deep Dirichlet Uncertainty)。这种方法能输出一个衡量模型对自身预测把握程度的不确定性分数。
- YC团队:使用了蒙特卡洛Dropout。在推理时多次开启Dropout进行前向传播,通过多次预测结果的方差来估计模型的不确定性。方差越大,说明模型越不确定,图像越可能是分布外样本。
3. 基于重建误差的方法(异常检测思路)这类方法将“可分级”图像视为正常数据,训练一个模型(如自编码器)来学习其重建。对于训练分布内的图像(即可分级图像),模型能较好地重建;对于分布外的图像(即不可分级图像),重建误差会很大。
- Tien团队:训练了一个自编码器,使用输入图像与重建图像之间的误差作为不可分级性分数。
- SACM团队:同时使用了自编码器和变分自编码器,将两者的重建误差与视盘检测置信度结合,形成一个综合分数。
- FMS-CETCV团队:采用了一种单分类器方法,仅在可分级图像上训练一个编码器来构建“正常”特征空间,然后使用高斯描述符来检测偏离该空间的异常样本。
4. 基于合成数据与能量模型的方法
- UPF+AIML团队:创造性地通过在线对训练图像施加强烈的破坏性变换(亮度、伽马、饱和度、模糊)来模拟“不可分级”图像。然后训练一个二分类模型来区分原始图像和合成破坏图像。在推理时,此模型用于检测真实的不可分级图像。这是一种数据增强思路的逆向应用。
- SK团队:结合了基于能量的OOD检测方法和激活修正技术。能量模型为输入样本分配一个标量能量值,分布内数据能量低,分布外数据能量高。激活修正则通过限制网络层激活值的上限,来放大分布内外数据在特征空间的差异。
5. 基于测试时增强的方法
- UPRetina-UR团队:对同一张输入图像进行多种数据增强(如旋转、翻转、裁剪等),产生多个变体,分别输入模型得到多个预测结果。如果这些结果之间差异很大(方差大),则说明模型对该输入的判断不稳定,可能意味着图像不可分级或处于决策边界。
4.3 方案整合与阈值选择
大多数团队并非只采用单一方法,而是将多种信号融合。例如,RWTH-CuP团队结合了视盘检测置信度和一个专门训练的不可分级分类器的输出。SACM团队融合了检测置信度和两个重建误差。
一个关键且容易被忽视的环节是阈值选择。模型输出的是一个连续的不可分级性分数(O4),需要将其转化为二元的“可分级/不可分级”决策(O3)。各团队策略不同:
- RWTH-CuP团队:由一位医生在开发集的2万张图像上,手动观察O4分数的分布后确定一个分界阈值。这结合了算法输出和领域知识。
- UPF+AIML团队:在训练集(全部为可分级图像)上运行其不可分级检测模型,将导致0.1%的训练集图像被误判为不可分级的阈值作为决策阈值。这是一种基于“假阳性率控制”的策略。
- ICT_HCI团队:设定了一个简单的固定阈值(0.1)。
实操心得:阈值的选择没有金标准,它本质上是在敏感性和特异性之间做权衡。在临床部署中,这个阈值应该与后续的工作流程紧密结合。例如,如果不可分级图像会被发送给人类专家复审,那么可以设置一个较低的阈值(高敏感性),宁可错杀一些质量尚可的图像,也要确保所有有问题的图像都被拦截。阈值最好在一个独立的、有代表性的验证集上进行校准,并定期根据实际运行数据重新评估。
5. 实战经验与避坑指南
结合顶尖团队的方案和笔者在医学影像AI项目中的经验,以下是一些关键的实操要点和常见陷阱。
5.1 数据预处理与增强的细节
- 图像标准化:不同相机型号、拍摄参数会导致图像在颜色、对比度、亮度上存在巨大差异。在输入网络前,进行通道级的归一化(如减均值、除标准差)是标准操作。但更进阶的做法是进行更复杂的光学校正或使用专门的颜色恒常性算法,不过这需要相机参数信息。
- 针对性的数据增强:为了提升模型对真实世界扰动的鲁棒性,数据增强策略至关重要。除了常见的旋转、翻转、缩放外,应考虑加入模拟真实退化的增强:
- 运动模糊:模拟患者眨眼或眼球移动。
- 散焦模糊:模拟对焦不准。
- 亮度/对比度随机变化:模拟曝光不均。
- 添加噪声:模拟传感器噪声。
- 模拟伪影:如镜头污渍、睫毛遮挡等(需谨慎,避免引入误导性特征)。
- 处理大尺寸图像:眼底彩照通常分辨率很高(如2000x2000以上)。直接下采样会丢失细节,全尺寸输入又受限于GPU内存。常见的策略是:先定位视盘,然后以视盘为中心裁剪出一个高分辨率的区域(如512x512或1024x1024)作为分类网络的输入。这既保留了关键区域的细节,又控制了计算成本。
5.2 模型训练与优化的技巧
- 预训练与微调:使用在ImageNet等大型自然图像数据集上预训练的模型作为起点,是加速收敛和提升性能的标准做法。但要注意,眼底图像与自然图像存在域差异。一种有效的策略是先在大型的、无标签或弱标签的眼底图像数据集上进行中间预训练(又称“领域自适应预训练”),然后再在目标数据集上微调。AIROGS规则禁止使用额外的眼底图像数据训练,但在实际项目中,如果数据允许,这通常能带来显著提升。
- 优化器的选择:Adam/AdamW因其自适应学习率特性成为最流行的选择。UPF+AIML团队使用的Sharpness-Aware Minimization (SAM) 优化器值得关注,它通过同时最小化损失值和损失曲面的尖锐度,旨在寻找更平坦的极小值,这通常意味着更好的泛化能力,对于应对分布外数据可能有益。
- 长尾分布的应对:除了前述的过采样和Focal Loss,还可以尝试:
- 两阶段训练:先在不平衡数据上训练,然后在平衡数据上微调最后一层或几层。
- 解耦表征学习与分类器训练:研究发现,在长尾数据上,表征(特征提取器)的学习和分类器的学习应该解耦。可以先用任何方式(如实例平衡采样)训练特征提取器,然后固定特征提取器,用类别平衡采样重新训练分类器。
5.3 鲁棒性模块设计的核心思想
- 不确定性估计是核心:无论是基于重建误差、能量分数还是模型预测方差,其本质都是为模型输入估计一个“不确定性”或“异常度”分数。在设计时,要思考这个分数是否与人类专家判断图像质量的直觉一致。
- 多线索融合:单一线索可能不可靠。例如,一张图像可能视盘清晰可见(检测置信度高),但存在大面积出血或病变,导致分类模型不确定。因此,结合分类不确定性、检测置信度、甚至图像本身的清晰度指标(如图像梯度、信息熵)等多维度信息,往往能得到更稳健的判断。
- “可解释性”辅助“鲁棒性”:OPTIMATeam团队利用Grad-CAM可视化分类模型关注的区域,并假设如果模型关注的重点区域(视盘)图像质量差,则诊断不可信。这种将可解释性工具用于鲁棒性判断的思路非常巧妙,也增加了医生对AI系统的信任度。
5.4 常见问题与排查清单
在实际开发中,你可能会遇到以下典型问题:
| 问题现象 | 可能原因 | 排查与解决思路 |
|---|---|---|
| 模型在验证集上表现良好,但在不可分级图像检测上完全失败。 | 训练集和验证集都没有不可分级样本,模型从未学习过“异常”的概念。 | 采用无监督或自监督的异常检测方法(如自编码器重建、单分类器)。或者,像UPF+AIML团队一样,人工合成不可分级样本来训练一个二分类判别器。 |
| 视盘检测模型在部分图像上定位不准或失败。 | 1. 标注数据不足或质量不高。 2. 图像中存在极端情况(如高度近视的倾斜视盘、严重病变遮挡)。 3. 模型泛化能力不足。 | 1. 增加标注数据的多样性和数量,特别是针对困难案例。 2. 在检测模型中引入不确定性估计,对低置信度的检测结果,后续流程采用备用方案(如PUMCH-eye团队用整图分类作为后备)。 3. 尝试更强的数据增强,或使用集成多个检测模型。 |
| 分类模型对“需转诊”和“无需转诊”的预测概率都很高(即很“自信”),但其实是错的。 | 模型可能过拟合了训练集中的某些虚假相关性(如相机型号、图像亮度等与疾病无关的特征)。 | 1. 检查训练集和测试集的分布差异,确保数据划分时患者和设备ID没有泄漏。 2. 使用更激进的数据增强和正则化(如Dropout, Weight Decay)。 3. 采用集成学习来平滑预测。 4. 使用SAM等寻求平坦最小值的优化器。 |
| 不可分级性检测的阈值难以确定,调高则漏检多,调低则误拦多。 | 阈值的选择缺乏一个明确的优化目标。 | 明确业务需求:是“宁可错杀,不可放过”(高敏感性),还是“尽量不打扰正常流程”(高特异性)?在独立的验证集上绘制Precision-Recall曲线或调整F-beta分数(根据业务需求设定beta值)来选择阈值。 |
| 容器化提交时,本地推理正常,云端运行报错或结果不一致。 | 环境依赖问题(Python版本、库版本)、GPU驱动/CUDA版本差异、模型文件路径错误、内存/显存不足。 | 1. 使用Dockerfile严格固定基础镜像和所有依赖包版本。 2. 在容器内进行完整的单元测试,模拟挑战平台的输入输出。 3. 在本地使用与挑战平台尽可能相似的硬件环境进行测试(如使用GPU内存较小的卡测试显存溢出问题)。 4. 仔细阅读挑战平台提供的示例代码和规范,确保输入输出接口完全一致。 |
AIROGS挑战赛的成功举办,为医学影像AI,乃至整个可信AI领域提供了一个宝贵的范本。它清晰地指出,未来的AI系统不能只是一个在理想数据上追求高精度的“分类器”,而必须是一个具备环境感知、不确定性量化、异常识别和失败 gracefully 能力的“智能体”。对于从业者而言,从项目伊始就将鲁棒性作为核心设计目标,借鉴比赛中验证有效的多种技术路径,并结合具体的临床场景进行打磨,是开发出真正能服务于现实世界、安全可靠的AI医疗产品的必经之路。这场竞赛告诉我们,让AI变得“可靠”,其技术复杂性和重要性,丝毫不亚于让它变得“准确”。