ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

深度学习医学图像分析:MIA文献透视进展与可复现性挑战

深度学习医学图像分析:MIA文献透视进展与可复现性挑战 翻了翻手头积攒下来的几十篇MIAMedical Image Analysis相关文献又对比了2024年各大顶会和期刊上真正让人眼前一亮的工作一个感受特别强烈深度学习在医学图像分析里已经不是“能不能用”的问题而是“怎么稳定、可信地用到临床上”的问题。数据规模越来越大网络结构越来越复杂AI辅助诊断系统也开始进医院但与此同时一个被反复讨论却又很难根治的问题始终挥之不去——再现性。这篇内容就围绕“MIA文献阅读”这个视角梳理一下2024年前后深度学习在医学图像分析里的最新进展、临床应用现状以及我踩过无数次坑之后对“再现性”这件事的完整理解。如果你正在做医学影像AI相关的课题、准备复现一篇论文的模型或者想评估某个AI辅助诊断系统能不能接入自己单位的影像流程这篇内容应该能帮你少走不少弯路。1. 从MIA文献看2024深度学习在医学图像分析里到底卷到了什么程度MIA这个领域的投稿量和方向热度的变化本身就是深度学习渗透医学成像的最直接证据。我自己的体感是2020年以前大家还在为“一个U-Net能不能同时完成分割和分类”这种问题争论到2024年文献里出现的已经是多模态大模型、通用分割模型、自监督预训练这类话题了。这里把几个明显的发展趋势拆开说。1.1 数据规模和任务形态的变化医学图像分析最核心的资产就是数据。这几年的明显变化是比赛和数据集的规模已经不是当年几百例、单一中心的小打小闹了。BraTS脑肿瘤分割、CAMELYON病理切片、RSNA肺结节检测这些公开数据集已经把整个领域的基础打得很扎实。2024年前后的文献里大量工作开始采用多中心、跨设备、跨扫描协议的数据来做训练和验证这一点非常关键因为单纯把一个模型在自己单中心数据上做到高精度已经很难被MIA这类期刊接受审稿人一定要求你证明泛化性。任务形态也在从单一任务转向复合任务。很多工作已经不只是做“分割”或者“分类”而是把检测、分割、分类、配准放在一个端到端的框架里联合建模。比如一篇典型的肺结节文献既要在CT序列里检出结节又要给出结节的良恶性概率还要同时完成节段位置标注。这种复合任务形态对模型的设计要求高了很多也让“多任务学习”重新回到大家视线。1.2 从有标注到弱标注、无标注另一个值得关注的变化是医学图像标注本身的人力成本极高所以自监督预训练和弱监督方法在文献里的占比越来越大。2024年最典型的一类做法是先在大量无标注的医学图像上用对比学习或者掩码重建任务做预训练再在下游任务上微调。这类方法的合理性在于医学影像本身有很强的结构性先验比如CT的HU值分布、解剖结构的空间一致性这些信息通过自监督任务可以有效建模。我自己在复现这类方法时的体会是自监督预训练带来的增益通常在小样本下游任务上最明显。如果你手头只有几百例标注数据预训练权重比随机初始化通常能带来好几个百分点的Dice或AUC提升。但前提是你得把预训练任务设计得跟医学图像特性匹配直接拿ImageNet上的预训练模型搬到CT影像上效果反而不一定好因为域的差异太大了。1.3 临床应用这条线的真实进度从文献延伸到医院里的真实应用2024年的状态比前几年要务实得多。FDA批准和各地监管机构放行的AI辅助诊断产品主要集中在这几个方向眼底照片的糖尿病视网膜病变筛查、胸部X光片的结核和骨折检测、CT肺结节筛查、乳腺钼靶的密度评估和病灶检出。这些产品有个共同特点都是单病种、单模态、任务边界非常清晰决策路径短容易做质控和审核。真正复杂的场景比如多病种同时筛查、多模态影像联合诊断、或者跨科室的影像病理检验综合分析目前更多还停留在研究阶段离产品化还有距离。这也解释了为什么MIA文献里实验室性能很高但大家真正关心的落地问题、工作流集成问题、医生接受度问题在论文里往往是一笔带过。2. 2024年前后真正改变技术路线的几个关键突破技术路线的变化是文献阅读里最有趣的部分。深度学习的网络结构迭代速度很快但真正能沉淀下来、被广泛复用的架构其实不多。以下四个方向是我认为近两年对医学图像分析影响最深的。2.1 nnU-Net为什么依然是分割任务的默认基线如果你跑过几个医学图像分割比赛一定会发现nnU-Net这个“老汉骨架”几乎无处不在。它本质上不是一个具体的网络结构而是一套完整的自适应配置框架会根据数据集的spacing、图像尺寸、模态数自动决定下采样次数、卷积核大小、训练策略、损失函数权重。为什么2024年的文献里仍然大量把它作为baseline因为它足够稳。我自己做过对比实验在很多中大规模医学分割任务上精心调过的nnU-Net能打赢不少2022、2023年发表的复杂新架构。新方法如果连nnU-Net都打不过就很难说服审稿人它的设计是有价值的。但这并不意味着新架构没有意义。nnU-Net的强是基于“把传统U-Net的每一个部件都调到最优”它的上限受限于U-Net结构本身的设计空间。当你想引入新的注意力机制、跨尺度交互、或者非局部建模时框架的价值就体现出来了。我的建议是医学图像分割实验一定要先跑通nnU-Net拿到一个可靠、可复现的baseline再在这个基础上去验证你提出的新模块。2.2 SAM和MedSAM通用分割模型对医学图像的降维打击与适配问题SAMSegment Anything Model发布之后医学图像分割领域经历了一波“用它来试试看”的热潮。SAM在自然图像上的零样本分割能力确实很强但直接迁移到医学图像上效果并不稳定尤其在低对比度组织边界、小目标结构、或者有明显伪影的图像上。原因也简单SAM的训练数据里几乎没有医学图像而且医学图像是单通道灰度图与SAM预期的三通道RGB输入差异太大。针对这个问题MedSAM这类微调版本出现了。核心做法是把SAM的权重在大量医学图像分割数据上做继续训练让模型学到医学图像特有的边界先验和器官形状先验。实测下来微调过的SAM在很多器官分割任务上确实能比从头训练的U-Net收敛更快、few-shot能力更强但也暴露出新问题它对图像尺寸和输入分布的敏感度很高换一个扫描协议可能就要重新预处理。对我来说SAM这类模型最大的价值是作为预训练权重和交互式分割工具而不是直接替代专门的医学分割模型。用SAM来做粗分割拿到候选区域再用专业模型精修边界这个流程在标注辅助场景下很实用。2.3 Mamba架构三维医学图像长程依赖建模的低成本选择2024年最让我意外的技术路线是Mamba在医学图像里的快速渗透。Mamba基于状态空间模型对长序列的建模能力接近Transformer但计算复杂度从平方级降到线性级。这个特性对三维医学图像特别友好因为一个高分辨率的3D patch展开后的token数量是巨大的Transformer往往因为显存限制只能处理浅层或局部patchMamba却能直接建模全局关系。文献里的VM-UNet、U-Mamba这类工作就是把Mamba的全局建模能力和U-Net的多尺度结构结合起来。我在复现U-Mamba时注意到它在大尺寸三维数据上的显存占用确实比Swin Transformer低不少训练速度和推理速度也更有优势。但也要客观说Mamba在部分中等规模数据集上的精度增益并不稳定有时跟强baseline的差距很小。我个人的判断是Mamba代表着一种新的效率与精度平衡点尤其适合体素级密集预测任务。未来几年它在医学图像里的应用大概率还会增加但目前生态还不够成熟权重初始化、训练稳定性、超参敏感性都需要自己花时间调。2.4 扩散模型从生成到跨模态合成与伪影去除扩散模型这几年的发展已经远远超出“图像生成”这个单一范畴。在医学图像领域扩散模型的典型应用有这几类低剂量CT去噪、MRI超分辨与伪影去除、跨模态合成比如从MRI合成CT用于放疗计划、以及数据增强。数据增强这个方向我觉得尤其值得关注。医学图像数据集普遍规模偏小类别不平衡问题又很严重用扩散模型合成特定病变的样本可以显著提升分类和分割模型在罕见病上的表现。我自己做过一个肺结节分类的对比实验在原数据上加上10%的扩散模型合成结节样本良性/恶性分类的AUC提升了大约3-5个百分点而且模型对边界模糊结节的鲁棒性也好了不少。当然扩散模型在医学图像里的应用也有伦理和质控问题。合成样本不能直接用于临床诊断也不能替代真实数据。在论文里使用时必须明确标注合成样本的比例和生成条件否则在人眼和算法双重校验下很容易被审稿人或临床合作方质疑数据真实性。3. 临床应用这条线从论文里的AUC到科室里的真实体验文献里的性能指标看着很高动不动AUC 0.95以上、Dice 0.90以上但真正把深度学习模型部署到影像科、体检中心里遇到的挑战比论文里描述的复杂得多。下面几条是我在跟临床科室合作过程中反复体会到的。3.1 部署形态决定了模型怎么设计医院里AI辅助诊断系统的部署形态主要有三种嵌入PACS工作站的“阅片助手”、独立工作站上的离线分析服务、以及云端托管的多中心协同平台。这三种形态对模型的要求差异很大。嵌入PACS的形态最典型的场景是急诊CT和体检筛查。医生在阅片的同时系统自动对CT序列做一次预分析把可疑肺结节、骨折、脑出血等位置在界面上标出来医生再人工复核。这类场景对速度和稳定性要求极高一个序列必须在几十秒内出结果且不能因为个别case报错影响整个阅片流程。所以这类模型的输入图像尺寸往往受限后处理逻辑也要足够稳健。独立工作站的形态则更多用于科研和进阶分析比如放疗科的靶区勾画、骨科的关节三维重建。这类场景允许离线运行可以跑更大规模、更复杂的模型但在可交互性上有更高要求医生可能需要在模型输出上手动修改所以“分割人工编辑”的闭环设计非常关键。云端协同平台则要处理多中心数据接入、隐私合规、模型统一管理等问题。技术上涉及联邦学习、数据脱敏、DICOM协议适配已经不只是深度学习模型本身的问题而是一个系统工程。3.2 域漂移问题为什么换个扫描仪模型就不灵了很多研究团队拿公开数据集训练出一个0.95 AUC的肺结节检测模型满怀信心地到医院做验证结果真实场景里掉到了0.85甚至更低。这里面最大的问题就是域漂移domain shift。域漂移的来源可太多了不同厂商的CT设备重建算法不同同一厂商不同代际的扫描仪也有区别扫描参数管电压、管电流、层厚、重建核直接影响图像的纹理和噪声分布患者的体位摆放、屏气状态也会改变图像形态。这些问题在公开数据集里被“清洗”得很好但真实临床数据完全没有这个条件。我自己的经验是要缓解域漂移不能只在模型层面想办法预处理环节就要下功夫。首先是做好体素间距重采样统一到一个标准spacing其次是窗宽窗位的标准化不同组织的显示窗差很多模型输入前要按任务统一再有就是对数据做适当的增强尤其是模拟不同噪声水平和分辨率的变化增加模型跨设备的鲁棒性。最后如果能拿到少量目标设备的真实数据做微调哪怕是几十例效果都比纯用公开数据训练好很多。3.3 医生真正关心的不是AUC而是“为什么”临床医生使用AI辅助诊断系统时最明显的诉求是你给我标出来有问题的地方还要告诉我为什么认为有问题。一个只输出“阳性概率98%”的黑盒模型在临床上是很难被信任的。这就是可解释性的现实需求。我在文献里看到的一大趋势是越来越多工作把注意力图、Grad-CAM、概念瓶颈模型甚至自然语言解释嵌入到诊断系统里。注意力图和热力图相对容易实现但要注意的是深度学习的注意力图不能直接等于诊断依据一定要做校验看它是否真的聚焦在病变区域。很多模型的注意力聚焦在伪影、血管束或者身体轮廓上输出结果虽然正确但解释性图完全不可用。更强的可解释性做法是概念瓶颈模型即先用一个小模型预测临床概念比如结节是否光滑、是否有毛刺、是否有钙化再用这些概念预测最终诊断。这类模型天然具有可解释性也能让医生在概念层面纠错但代价是需要额外的标注信息来训练概念预测器数据获取成本高。不过从临床应用潜力来看这个方向很值得投入。4. 再现性危机为什么复现MIA论文总是“差一点”“差一点”是最难受的。论文里Dice 0.893你自己复现出来只有0.871你说它完全复现不出来也不是但报告不出同样的数字就很难判断你的改动是优化还是退化。这个问题严重到什么程度深度学习在医学图像分析领域甚至专门有论文在研究“可复现性”标题里直接带Reproducibility的关键词这正是本文副标题对应的核心话题。4.1 一个典型的复现失败场景假设你想复现一篇2024年发表的MRI脑肿瘤分割方法论文里写了网络结构、损失函数、学习率公布了代码仓库。你按照README跑通了训练结果在同样的数据集、同样的预处理流程下最终Dice比论文里低了两个点。第一反应是数据划分方式不一样换了官方划分后发现还是低一点然后你怀疑是随机种子问题跑了几遍取平均依旧有差异。问题出在哪儿大概率是训练细节没有被论文和代码完整记录。比如数据增强的触发概率、学习率warmup的具体步数、EMA的衰减系数、混合精度训练的动态loss scaling策略、BatchNorm的momentum设置。这些参数在代码里可能存在但除非作者明确说明哪些是“关键超参”你根本不知道哪个对最终结果影响最大。4.2 再现性问题的四个层面结合翻车经历我把医学图像深度学习中的再现性问题分成四个层面来理解。数据层面数据划分方式没有统一标准。有些工作按患者划分有些按影像序列划分如果同一个患者的不同扫描切片同时出现在训练集和测试集性能自然虚高。更隐蔽的是数据清洗步骤比如去除质量差的图像、过滤没有病变的阴性样本这些操作如果只写在论文半句话里别人复现时根本无法对齐。预处理层面窗宽窗位的选择、灰度归一化的统计量、重采样的插值方法、裁剪范围、体素间距对齐方式任何一个环节不一样都会改变模型看到的图像分布。尤其是CT图像窗宽窗位对软组织病变的分割影响巨大同一份数据用不同的预处理流程最后结果的差异可能超过模型结构差异。训练层面随机种子是显性的但更隐蔽的是框架版本差异。PyTorch和TensorFlow在相同参数下的计算顺序、浮点累加精度、卷积实现的cuDNN算法选择都可能导致轻微的结果差异。混合精度训练是否开启、卷积算子是否使用TF32这些在论文里通常根本不会写但对结果的影响却实实在在。评测层面不同文章对Dice、HD95、AUC这些指标的计算细节可能不一致。比如Dice是按整个体积算还是按切片算再取平均HD95是单方向还是双向重采样到同一分辨率时插值方法是什么这些细节差异在数值上虽然不一定很大但足以让实验结论发生逆转。4.3 为什么医学图像领域的再现性问题比其他计算机视觉子领域更严重医学图像领域的数据获取门槛更高隐私保护要求也严格大部分数据集不能完整公开只能提供特征描述或部分样本预览。这就导致很多工作只在私有数据上验证论文中写“我们在多中心多个数据集上验证了方法”其实代码和权重都没有公开别人想复现也无从下手。再加上影像设备、扫描协议、疾病表现都高度依赖于具体临床环境同一个模型在不同中心的性能差异本来就很明显这种高方差特性进一步加剧了“复现差一点”的观感。换句话说在自然图像上复现一个分类模型数据集固定后差异主要来自算法实现细节在医学图像上数据集本身就可能因为预处理差异而“变得不一样”。4.4 公开代码不等于可复现还有一个很容易踩的误区作者把代码放到了GitHub上就默认工作是可复现的。实际上很多公开仓库缺少完整的数据准备脚本缺少预训练权重的下载说明缺少环境配置的锁定版本。更常见的是代码能跑通但README里写的结果是通过一套没有被完整记录的“隐藏配置”得到的。我在实际复现时养成了一个习惯拿到一个代码仓库先看三个地方。第一看requirements或environment.yml里是否锁定了框架版本第二看数据加载和预处理部分是否与论文描述一致第三看训练脚本里的超参数是否完整可配置。如果这三处有任何一处含糊就要做好需要大量调试的准备。5. 我自己在深度学习医学图像实验里的可复现实验清单踩过足够多的坑之后我现在做医学图像深度学习实验时有一套自己的强制流程这里分享出来希望能帮你节省几个月的复现时间。5.1 数据侧固定划分、固定清洗、写日志第一件事是数据划分。所有实验统一按患者ID划分绝不能把同一个患者的不同扫描序列拆到训练集和测试集。划分文件用CSV单独存放每次实验直接读取不搞“随机划分但记录种子”这种容易遗漏的做法。第二件事是清洗逻辑。哪些病例被剔除、为什么被剔除全部记录在数据日志里。常见清洗原因包括图像尺寸异常、标注质量不合格、病变小于某个尺寸阈值、患者信息不完整。如果你清洗掉了一批数据一定要记录清洗前后样本总数和类别分布。5.2 预处理侧一切可配置、版本化预处理代码里不要出现硬编码的参数。所有窗宽窗位范围、重采样目标spacing、归一化方式、裁剪尺寸、是否做强度归一化等全部放在一个配置文件里跟训练脚本一起提交到代码仓库。这样换一台机器、换一个数据集都可以完全复现相同的预处理环境。对于CT数据我通常会把窗宽窗位做成一个可配置的列表比如肺窗和纵隔窗的窗宽窗位本身就不一样。要是你的任务既涉及肺组织又涉及纵隔结构可以考虑把多个窗的图像作为多通道输入这个方案在很多文献中已经有验证效果通常比单窗输入好。5.3 训练侧固定种子、固定算法版本、固定推理状态训练开始前先执行固定的全局随机种子设置包括Python内置random、NumPy、PyTorch的CPU和GPU随机种子。然后设置torch.backends.cudnn.deterministic True虽然会牺牲部分训练速度但能显著减少卷积实现带来的随机差异。框架版本锁定也很重要。我的项目里会固定PyTorch主版本和次版本升级框架前先在老版本上保存一份模型推理结果作为回归基准。混合精度策略、梯度累积步数、EMA权重衰减系数也要全部配置化并写入训练日志。模型保存时除了保存权重还保存当前的训练轮次、优化器状态、学习率调度器状态和随机种子这样万一训练中断可以完整恢复。5.4 评测侧统一指标实现、带置信区间、记录环境评测指标的实现统一放在一个metrics模块里所有实验都调用同一份代码避免不同算法库之间实现细微差异带来的结果偏差。指标除了报告点估计还要计算95%置信区间或标准差多跑几次取平均避免单次实验的随机波动被当成真实差异。我在涉及多中心数据时还会做层次化的评测即不仅报告整体指标还按中心拆开报告这样可以直观看到模型在不同数据分布上的表现差异。之后也会把模型的推理环境记录下来包括GPU型号、推理时的batch size、是否使用TensorRT或ONNX导出。同样一个模型在不同推理环境下结果可能有细微差异这些信息对后续复现和部署都很重要。5.5 代码和repo组织让复现成本降到最低为了让整个实验过程可复现我现在的项目仓库结构基本是这样的数据准备脚本独立成目录输出统一的dataset结构预处理配置放在configs目录下每个实验对应一个yaml文件训练脚本和评测脚本分离评测脚本只能读取保存好的模型权重不能重新训练README里写清楚从原始数据到最终结果的完整执行步骤包括每一步的输入输出。这套流程和行业内常说的MLOps实践是一致的。当然不一定需要上完整平台先把版本控制、配置管理、日志审计这几件最基本的事情做好复现性问题就能解决一大半。相比之下就算你用再强的模型、再新颖的网络结构只要没法复现论文影响力和工程落地价值都会大打折扣。根据我自己的经验在深度学习医学图像分析的日常实验里重现性问题的核心往往不是单点被击中而是多个环节的隐性偏差叠加。数据划分差一点、预处理差一点、训练随机性再差一点、指标计算又差一点这四个“一点”累积起来就变成论文里读起来很完美、但自己跑起来永远差一截的魔咒。解决的办法没有捷径就是老老实实把每个环节的参数、配置、版本和日志都记录下来。这套习惯一开始会觉得很麻烦但坚持用上半年你回看自己三个月前的实验能迅速复现当时的完整环境和结果那种踏实感是任何先进算法都替代不了的。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进