AortaSeg24 竞赛实战指南:基于 nnU-Net ResEnc L + 定制数据增强的主动脉分割方案
人工智能深度学习计算机视觉医疗健康【免费下载链接】nnUNet项目地址https://gitcode.com/gh_mirrors/nn/nnUNet点击查看免费下载导读本文基于 documentation/competitions/AortaSeg24.mdDKFZ 团队在 AortaSeg24 挑战赛的参赛方案说明完整还原其从数据预处理、模型训练到推理部署的全流程技术方案。该方案的核心是以 nnU-Net v2 的 ResEnc L 架构为骨干关闭左右镜像、改用重型 DA5 数据增强并通过全量模型 五折交叉验证集成的组合完成推理。读完本文你将掌握如何复用 nnUNet 仓库内现成的 nnUNetTrainer_onlyMirror01_DA5 训练器复现该方案并理解每个命令与参数背后的源码实现原理。AortaSeg24 方案总览从方案设计到源码落点该参赛方案的技术要点可以浓缩为以下几条均可在仓库源码中得到印证骨干网络nnU-Net ResEnc LResidual Encoder U-Net 大配置由nnUNetPlannerResEncL规划器生成对应 plans数据增强策略禁用左/右镜像仅保留轴 0/1 镜像即nnUNetTrainer_onlyMirror01叠加 DA5 重型增强即nnUNetTrainerDA5训练硬件A100 40GB GPU从零训练from scratch提交策略1 个全量数据单模型 1 个五折交叉验证集成模型推理直接使用 nnU-Net 官方推理工具nnUNetv2_predict_from_modelfolder。这些要素在仓库中有明确的代码实现组合训练器类定义在 nnunetv2/training/nnUNetTrainer/variants/competitions/aortaseg24.py一个仅 5 行的多继承类DA5 增强管线定义在 nnunetv2/training/nnUNetTrainer/variants/data_augmentation/nnUNetTrainerDA5.py镜像控制定义在 nnunetv2/training/nnUNetTrainer/variants/data_augmentation/nnUNetTrainerNoMirroring.py。第一步数据集转换与预处理数据格式要求参赛数据需要先转换为 nnU-Net 数据集格式。AortaSeg24 官方提供的数据以.mha文件为主文档给出了两条等价路径保留.mha并直接重命名利用 nnU-Net v2 的多格式支持NibabelIO与SimpleITKIO均原生支持.mha扩展名见 nnunetv2/imageio/readme.md转换为.nii.gz若希望与其他工具链统一可先转成 NIfTI 格式。无论选择哪种格式必须遵守 nnU-Net 数据集目录规范imagesTr训练图像文件名形如{CASE}_{XXXX}.{ext}其中 XXXX 为四位数通道标识、labelsTr分割标签、以及描述元数据的dataset.json。注意nnU-Net 仅支持无损压缩格式不能使用.jpg且整个数据集必须统一使用同一种文件格式。运行规划与预处理命令数据就绪后运行预处理命令nnUNetv2_plan_and_preprocess -d 610 -c 3d_fullres -pl nnUNetPlannerResEncL -np 16各参数含义参数取值作用-d610数据集 IDAortaSeg24 在本方案中被编号为 610对应Dataset610_XXX-c3d_fullres配置为 3D 全分辨率-plnnUNetPlannerResEncL指定 ResEnc L 规划器生成nnUNetResEncUNetLPlans-np16并行预处理进程数从源码看nnUNetPlannerResEncL是ResEncUNetPlanner的子类定义于 nnunetv2/experiment_planning/experiment_planners/residual_unets/residual_encoder_unet_planners.py#L224-L246。其默认gpu_memory_target_in_gb24面向 RTX 4090 / Titan RTX 级别显卡生成的名称为nnUNetResEncUNetLPlans并使用ResidualEncoderUNet作为骨干网络类。这解释了为何后文训练命令中 plans 名写为nnUNetResEncUNetLPlans。第二步模型训练训练命令与参数拆解nnUNetv2_train 610 3d_fullres all -p nnUNetResEncUNetLPlans -tr nnUNetTrainer_onlyMirror01_DA5参数说明参数取值作用610数据集 ID与预处理阶段一致3d_fullres配置名3D 全分辨率配置allfold 标识使用全部数据训练单模型若改为0~4则训练单个交叉验证折-pnnUNetResEncUNetLPlans显式指定 ResEnc L 的 plans 文件-trnnUNetTrainer_onlyMirror01_DA5定制训练器仅 0/1 轴镜像 DA5 增强该命令针对全量单模型训练五折交叉验证则需分别以0 1 2 3 4替换all各跑一次即五个 fold 的模型用于集成。定制训练器的源码原理nnUNetTrainer_onlyMirror01_DA5的定义极其简洁——它通过多重继承组合了两个训练器class nnUNetTrainer_onlyMirror01_DA5(nnUNetTrainer_onlyMirror01, nnUNetTrainerDA5): pass见 nnunetv2/training/nnUNetTrainer/variants/competitions/aortaseg24.py#L4-L5两个父类的职责如下1.nnUNetTrainer_onlyMirror01镜像限制定义于 nnunetv2/training/nnUNetTrainer/variants/data_augmentation/nnUNetTrainerNoMirroring.py#L38-L52。它重写configure_rotation_dummyDA_mirroring_and_inital_patch_size2D 数据只允许沿轴 0 镜像3D 数据只允许沿轴 0 和 1 镜像并同步将inference_allowed_mirroring_axes设置为(0,)或(0, 1)。为什么禁掉左右镜像AortaSeg24 的主动脉分割任务涉及解剖学左右语义——镜像是全局的左右翻转关于 sagittal 平面即轴 2会破坏主动脉及其分支的左右解剖对应关系。保留轴 0/1上下、前后镜像则不会破坏这种语义。同样的思路也体现在nnUNetTrainerNoMirroring中完全禁用所有镜像nnunetv2/training/nnUNetTrainer/variants/data_augmentation/nnUNetTrainerNoMirroring.py#L29-L35该方案按需选择镜像轴而非一刀切。2.nnUNetTrainerDA5重型增强管线定义于 nnunetv2/training/nnUNetTrainer/variants/data_augmentation/nnUNetTrainerDA5.py是 nnU-Net v2 提供的DA5 系列增强训练器。其get_training_transforms构建的增强链包括空间变换旋转3D 各轴p_rotation0.4、每轴独立p_rot_per_axis0.5、缩放p_scaling0.2比例范围(0.7, 1.43)几何变换90° 旋转Rot90Transform概率 0.5、轴转置TransposeAxesTransform概率 0.5噪声/模糊中值滤波与高斯模糊二选一OneOfTransform各概率 0.2、高斯噪声概率 0.1强度扰动亮度加性变换概率 0.1、对比度变换两档BGContrast((0.5, 2))各概率 0.2、Gamma 变换两个实例各概率 0.1分辨率模拟低分辨率模拟SimulateLowResolutionTransform概率 0.15尺度(0.25, 1)局部伪影空白矩形块BlankRectangleTransform概率 0.4、亮度梯度BrightnessGradientAdditiveTransform概率 0.3、局部 GammaLocalGammaTransform概率 0.3、锐化SharpeningTransform概率 0.2。镜像变换MirrorTransform在链中的位置受mirror_axes控制nnunetv2/training/nnUNetTrainer/variants/data_augmentation/nnUNetTrainerDA5.py#L195-L196因此与nnUNetTrainer_onlyMirror01组合后仅轴 0/1 会执行镜像。该文件中还顺带提供了nnUNetTrainerDA5ord0图像与分割均用最近邻插值、nnUNetTrainerDA5Segord0仅分割用最近邻插值、nnUNetTrainerDA5_10epochs10 个 epoch 的快速验证版等变体可作为进一步调参的参考。训练资源建议数据增强进程数文档特别强调DA5 属于重型增强管线训练时容易触发CPU 瓶颈数据增强的预处理速度跟不上 GPU 消费速度。解决方案是提高数据增强进程数export nnUNet_n_proc_DA32该环境变量的底层读取逻辑位于 nnunetv2/utilities/default_n_proc_DA.py#L20-L21一旦设置了nnUNet_n_proc_DA它就会覆盖脚本中基于主机名查表得到的默认值并且最终会取min(设置值, os.cpu_count())nnunetv2/utilities/default_n_proc_DA.py#L49。也就是说设置值不能超过物理 CPU 核数32只是推荐起点具体取值要结合你的机器核数与内存余量if your system permits。第三步推理与集成单模型推理全量训练模型训练完成后使用nnUNetv2_predict_from_modelfolder直接从模型文件夹推理nnUNetv2_predict_from_modelfolder -i INPUT_FOLDER -o OUTPUT_FOLDER -m MODEL_FOLDER -f all-i INPUT_FOLDER输入图像文件夹格式与训练数据一致注意推理输入图像的通道与命名必须与训练完全对应-o OUTPUT_FOLDER预测结果输出文件夹-m MODEL_FOLDER模型所在文件夹包含 plans、dataset.json 与训练权重-f all必须显式指定表示仅使用全量数据训练的那个模型进行预测。如果不加-f all该命令默认行为是集成已训练的 5 个 fold详见 documentation/how-to/run-inference.md而全量单模型只有一个模型因此这里要明确-f all。五折集成推理五折交叉验证模型的集成推理则保持默认即可nnUNetv2_predict_from_modelfolder -i INPUT_FOLDER -o OUTPUT_FOLDER -m MODEL_FOLDER此时 5 个 fold 的模型各自输出概率图并求平均集成这正是 nnU-Net 官方推荐的推理模式各 fold 权重在 nnunetv2/inference/predict_from_raw_data.py 对应的推理流程中自动加载并平均。两个模型全量单模型 五折集成的预测结果都可用于提交官方提交通常取两者中的更优者或者按挑战赛规则分别提交。复现该方案的完整流水线清单将上述步骤串成端到端流程假设已安装 nnU-Net v2 并设置好nnUNet_raw、nnUNet_preprocessed、nnUNet_results三个环境变量数据转换将 AortaSeg24 原始.mha按 nnU-Net 格式整理到nnUNet_raw/Dataset610_AortaSeg24/imagesTrlabelsTrdataset.json预处理nnUNetv2_plan_and_preprocess -d 610 -c 3d_fullres -pl nnUNetPlannerResEncL -np 16训练全量模型nnUNetv2_train 610 3d_fullres all -p nnUNetResEncUNetLPlans -tr nnUNetTrainer_onlyMirror01_DA5训练五折模型将上一步all依次替换为0~4各执行一次建议先export nnUNet_n_proc_DA32缓解 CPU 瓶颈推理按上文分别运行两条nnUNetv2_predict_from_modelfolder命令产出两份预测结果用于提交。总结与扩展阅读AortaSeg24 参赛方案展示了 nnU-Net v2 高度可组合的架构通过训练器多继承nnUNetTrainer_onlyMirror01nnUNetTrainerDA5即可在不修改任何框架代码的情况下定制出符合任务语义的数据增强策略配合nnUNetPlannerResEncL规划出的 ResEnc L 网络构成了一个开箱即用、可直接复现的高性能分割流水线。方案中所有组件规划器、训练器、增强变换、推理入口均以源码形式存在于当前仓库是研究 nnU-Net 定制化训练的绝佳实例。若想深入了解相关机制可继续阅读仓库内以下资料数据集格式规范documentation/dataset_format.md 与 documentation/reference/dataset-format.md推理通用指南documentation/how-to/run-inference.mdDA5 训练器完整实现nnunetv2/training/nnUNetTrainer/variants/data_augmentation/nnUNetTrainerDA5.py镜像控制训练器nnunetv2/training/nnUNetTrainer/variants/data_augmentation/nnUNetTrainerNoMirroring.pyResEnc 规划器系列nnunetv2/experiment_planning/experiment_planners/residual_unets/residual_encoder_unet_planners.py数据增强进程数控制nnunetv2/utilities/default_n_proc_DA.py。赞分享人工智能深度学习计算机视觉医疗健康【免费下载链接】nnUNet项目地址https://gitcode.com/gh_mirrors/nn/nnUNet点击查看免费下载相关推荐MONAI与nnU-Net集成实战指南医学图像分割的强强联合MONAI与nnU Net集成实战指南医学图像分割的强强联合 前言 在医学影像分析领域nnU Net和MONAI都是备受推崇的开源框架。本文将深入探讨这两个示例工程教程OpenCore Legacy Patcher完整教程4步让老Mac重获新生的终极指南OpenCore Legacy Patcher完整教程4步让老Mac重获新生的终极指南 还在为你的老Mac无法升级最新macOS而烦恼吗看着2012年的Ma人工智能深度学习计算机视觉医疗健康MMDetection 中 InstaBoost 数据增强实战基于概率图引导 Copy-Pasting 的实例分割提升方案MMDetection 中 InstaBoost 数据增强实战基于概率图引导 Copy Pasting 的实例分割提升方案 InstaBoost 是一种基于概人工智能计算机视觉深度学习模型评测上一篇探索无限可能Rofi主题宝藏库打造个性化桌面体验下一篇高效视频修复技术深度解析untrunc实战指南与最佳实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考