https://github.com/MIC-DKFZ/nnUNet/blob/master/documentation/tutorials/custom_spacing.md
通过创建一个自定义的ExperimentPlanner来自定义的设置target spacing,让我们运行 Medical Segmentation Decathlon.的一个例子Task002_Heart来阐述它,数据集比较小,所有运行起来不会有太大的困难。
首先下载对应的数据集,然后使用nnUNet_convert_decathlon_task将它转换为nnU-Net对应的数据格式。我们需要运行一个自定义的3d experiment planner对应的nnUNet_plan_and_preprocess来实现,作者已经创建了一个合适的trainer,experiment_planner_baseline_3DUNet_v21_customTargetSpacing_2x2x2.py
这将为3d_fullres配置中的target spacing直接设置成2x2x2mm(3d_lowres没有改变)。现在去看看这个ExperimentPlanner。
运行nnUNet_plan_and_preprocess并指定刚才创建的ExperimentPlanner
nnUNet_plan_and_preprocess -t 2 -pl2d None -pl3d ExperimentPlanner3D_v21_customTargetSpacing_2x2x2
-pl2d None表示禁用2D预处理,ExperimentPlanner中只包含了3D训练,执行完这一步 所有的数据都会被预处理到target spacing。例如,当运行任何nnUNet_*命令时,可以通过指定链接到它的新的自定义计划文件new custom plans file来使用它(参见ExperimentPlanner3D_v21_customTargetSpacing_2x2x2源代码)
nnUNet_train 3d_fullres nnUNetTrainerV2 2 FOLD -p nnUNetPlansv2.1_trgSp_2x2x2
确保以_plans_3D.pkl作为后缀。
TODO: how to compare with the default run?
IMPORTANT:当创建自定义ExperimentPlanner时,确保始终将它们放在nnunet.experiment_planning module中的唯一类名下。如果创建子文件夹,请确保它们包含__init__py文件(可以为空)。如果你没有这样做,nnU-Net将无法定位你的ExperimentPlanner并且会崩溃crash!