nnunet(七) custom preprocessing

https://github.com/MIC-DKFZ/nnUNet/blob/master/documentation/tutorials/custom_preprocessing.md

当你想要调整预处理preprocessing过程中resampling重采样的方式,或者你想要实现一个自定义归一化方案custom normalization scheme时,你需要创建一个新的自定义预处理类custom preprocessor class,以及一个实验规划器ExperimentPlanner来配合它。虽然这可能看起来很麻烦,但这种方法的优点是,同样的代码也可以用于推理inference,从而保证图像得到正确的预处理preprocessed(即模型所期望的方式)。

在本教程中,我们将为Task120 Massachusetts Road Segmentation实现一个自定义规范化方案custom normalization scheme。确保下载了数据集并在本教程之前运行Task120_Massachusetts_RoadSegm.py中的代码。

数据集中图像为RGB,取值范围为[0,255]。nnU-nets的默认归一化方案将每个颜色通道独立归一化,使其均值为0,标准偏差为1。理论上这样操作没毛病,但可能导致颜色通道之间的影响,从而干扰模型的表现。为了解决这个问题,新的归一化方法将把值范围从[0,255]重新缩放到[0,1],也就是直接除以255。因此,颜色通道之间将不再有变化。

新的预处理器类位于 preprocessor_scale_RGB_to_0_1.py.中。要真正使用它,我们需要告诉ExperimentPlanner它的名字。为此,最好创建一个新的ExperimentPlanner类。我创建了一个,并将其放在中xperiment_planner_2DUNet_v21_RGB_scaleto_0_1.py.

要运行新的预处理器,您需要在运行nnUNet_plan_and_preprocess时指定它附带的ExperimentPlanner:

nnUNet_plan_and_preprocess -t 120 -pl3d None -pl2d ExperimentPlanner2D_v21_RGB_scaleTo_0_1

然后在开启训练:

nnUNet_train 2d nnUNetTrainerV2 120 FOLD -p nnUNet_RGB_scaleTo_0_1

请注意,nnUNet_RGB_scaleTo_0_1是在我们的自定义ExperimentPlanner中定义的计划标识符plans identifier 。每当您要使用此训练产生的模型时,都为所有nnUNet_ *命令指定它。

现在,让所有的all 5 folds都在原始的nnU-Net以及使用新定义的规范化方案 normalization scheme的nnU-Net中运行。为了比较结果,你可以使用nnUNet_determine_postprocessing来获取必要的指标,例如:

nnUNet_determine_postprocessing -t 120 -tr nnUNetTrainerV2 -p nnUNet_RGB_scaleTo_0_1

这将在训练输出目录中创建一个cv_niftis_raw和cv_niftis_postprocessed子文件夹。在每个文件夹中都有一个summary.json文件,你可以用一个普通的文本编辑器打开。在这个文件中,每个训练示例的数据集中都有表示 5-fold cross-validation的metrics。在文件的最底部,通过平均(字段“mean”)来汇总metrics,这是您应该用来进行实验比较的东西。我建议使用不经过后期处理的summary.json(位于cv_niftis_raw中),因为确定后处理实际上可能会在训练集上过拟合。以下是我获得的结果:

Vanilla nnU-Net: 0.7720
new normalization scheme: 0.7711

(没有进步,但是值得一试!)

记住始终将custom ExperimentPlanner放在nnunet.experiment_planning(任何文件或子模块)和nnunet.preprocessing预处理程序(任何文件或子模块)。确保使用唯一的名称!

本教程中的示例类仅适用于2D。你需要为3D数据生成一套单独的计划器planner和预处理器preprocessor。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值