nnUNet是德国癌症研究中心的工程师编写的框架,迄今为止依旧在维护和更新。本文主要记载 nnUNet 从安装到训练再到推理的过程。
有关 nnUNet 网络结构的讲解,可以看我的另一篇文章:MS-Model【1】:nnU-Net
pip install --upgrade git+https://github.com/FabianIsensee/hiddenlayer.git@more_plotted_details#egg=hiddenlayer
nnUNetFramecd /root/nnUNetFramegit clone https://github.com/MIC-DKFZ/nnUNet.git
cd nnUNet
pip install -e .
安装完成这些以后,每一次对 nnUNet 的操作,都会在命令行里以 nnUNet_ 开头,代表着你的 nnUNet 开始工作的指令
nnFormerFrame 文件路径cd /root/nnUNetFrame
DATASET 的文件夹DATASET 文件夹 nnUNet_preprocessed - 存放原始数据预处理之后的数据nnUNet_raw - 存放原始的训练的数据nnUNet_trained_models - 存放训练的结果nnUNet_raw nnUNet_cropped_data - crop 以后的数据nnUNet_raw_data - 原始数据
.bashrc 文件,在文件末尾添加如下命令:export nnUNet_raw_data_base="/root/nnUNetFrame/DATASET/nnUNet_raw"
export nnUNet_preprocessed="/root/nnUNetFrame/DATASET/nnUNet_preprocessed"
export RESULTS_FOLDER="/root/nnUNetFrame/DATASET/nnUNet_trained_models"
source .bashrc
本实验使用的是医学图像十项全能 Task05_Prostate
nnUNet 识别:nnUNet_convert_decathlon_task -i /root/nnUNetFrame/DATASET/nnUNet_raw/nnUNet_raw_data/Task05_Prostate
nnUNet_plan_and_preprocess -t 5
需要注意的是,这一步如果有提示有包没有安装成功,基本上可以确定是先前的环境没有配好,如果有出现报错请试着重新配一下环境
/root/nnUNetFrame/nnUNet/nnunet/training/network_training/ 下的 nnUNetTrainerV2.py,修改 epochs self.max_num_epochs = 400
nnUNet_train 3d_fullres nnUNetTrainerV2 5 4
训练结果
训练曲线

训练 log
2022-12-27 10:31:42.129562:
epoch: 399
2022-12-27 10:34:45.765983: train loss : -0.9746
2022-12-27 10:35:06.985032: validation loss: -0.9035
2022-12-27 10:35:06.985926: Average global foreground Dice: [0.9274]
2022-12-27 10:35:06.986063: (interpret this as an estimate for the Dice of the different classes. This is not exact.)
2022-12-27 10:35:13.525987: lr: 0.002349
2022-12-27 10:35:13.526254: saving scheduled checkpoint file...
2022-12-27 10:35:13.607831: saving checkpoint...
2022-12-27 10:35:14.533169: done, saving took 1.01 seconds
2022-12-27 10:35:14.534369: done
2022-12-27 10:35:14.567537: saving checkpoint...
2022-12-27 10:35:15.225455: done, saving took 0.69 seconds
2022-12-27 10:35:15.226438: This epoch took 213.096802 s
nnUNet_predict -i /root/autodl-tmp/model/nnUNetFrame/DATASET/nnUNet_raw/nnUNet_raw_data/Task002_Heart/imagesTs/ -o /root/autodl-tmp/model/nnUNetFrame/DATASET/nnUNet_raw/nnUNet_raw_data/Task002_Heart/inferTs -t 2 -m 3d_fullres -f 4
nnUNet_predict -i /root/autodl-tmp/model/nnUNetFrame/DATASET/nnUNet_raw/nnUNet_raw_data/Task005_Prostate/imagesTs/ -o /root/autodl-tmp/model/nnUNetFrame/DATASET/nnUNet_raw/nnUNet_raw_data/Task005_Prostate/inferTs -t 5 -m 3d_fullres -f 4
各项参数含义:
按照上面的流程执行一遍后,就可以得到属于你自己的 nnUNet 了!
训练参考
推理参考