网站建设合同详细小程序开发制作
目录
- 安装环境
- 数据处理
- 预处理
- 训练
- 测试
MIC-DKFZ/nnUNet
选择Linux环境运行该项目,Windows环境需要更改较多的参数,暂不支持。
安装环境
-
安装cuda, cudnn,已安装的检测cuda版本
检测cuda版本:
- nvcc -v
- cd /usr/local
- nvidia-smi(错误方式)
-
安装对应cuda版本的pytorch
-
验证
python -c 'import torch;print(torch.backends.cudnn.version())' # 8005, 显示类似此内容
python -c 'import torch;print(torch.__version__)' # 1.10.1+cu111, 显示类似此内容
-
安装nnUNet
# 安装nnunet pip install nnunet git clone https://github.com/MIC-DKFZ/nnUNet.git cd nnUNet pip install -e .
# 设置环境变量 vim ~/.bashrc export nnUNet_raw_data_base="/root/nnUNet_raw_data_base" export nnUNet_preprocessed="/root/nnUNet_preprocessed" export RESULTS_FOLDER="/root/nnUNet_trained_models" source ~/.bashrc
注意:
nnUNet_preprocessed
的路径要指向SSD
上,否则的话,速度会慢很多。 -
安装hiddenlayer(可选)
pip install hiddenlayer
数据处理
-
文件夹目录
└─Task09_Spleen│ dataset.json│ ├─imagesTr│ spleen_2.nii.gz│ spleen_3.nii.gz│ spleen_6.nii.gz│ spleen_8.nii.gz│ spleen_9.nii.gz│ ...├─imagesTs│ spleen_1.nii.gz│ spleen_7.nii.gz│ ...└─labelsTrspleen_2.nii.gzspleen_3.nii.gzspleen_6.nii.gzspleen_8.nii.gzspleen_9.nii.gz...
-
json文件信息
nnUNet/nnunet/dataset_conversion/utils.py
里面的函数generate_dataset_json
可以生成相应任务的json
文件。{ "name": "Spleen", "description": "Spleen Segmentation", "reference": "Memorial Sloan Kettering Cancer Center", "licence":"CC-BY-SA 4.0", "release":"1.0 06/08/2018", "tensorImageSize": "3D", "modality": { "0": "CT"}, "labels": { "0": "background", "1": "spleen"}, "numTraining": 41, "numTest": 20,"training":[{"image":"./imagesTr/spleen_2.nii.gz","label":"./labelsTr/spleen_2.nii.gz"},{"image":"./imagesTr/spleen_3.nii.gz","label":"./labelsTr/spleen_3.nii.gz"},{"image":"./imagesTr/spleen_6.nii.gz","label":"./labelsTr/spleen_6.nii.gz"},{"image":"./imagesTr/spleen_8.nii.gz","label":"./labelsTr/spleen_8.nii.gz"},{"image":"./imagesTr/spleen_9.nii.gz","label":"./labelsTr/spleen_9.nii.gz"},...],"test":["./imagesTs/spleen_1.nii.gz","./imagesTs/spleen_7.nii.gz",...]}
注意:
"modality"
一定要是CT
,可以是小写。(因为不同的modality
,归一化的方式不同) -
转换数据
nnUNet_convert_decathlon_task -i /xxx/Task09_Spleen
转换的数据存在
nnUNet_raw_data_base/nnUNet_raw_data/Task009_Spleen
,唯一区别就是imagesTr
和imagesTs
里的文件名加了后缀"_0000"
。注意:此处
Task09_Spleen
变为Task009_Spleen
。
预处理
# 只进行3d预处理,不进行2d预处理
nnUNet_plan_and_preprocess -t 09 -pl2d None
主要对数据进行预处理,包括Crop, Resample, Normalization
等。
训练
如果训练断了,可以在命令行后面加-c
继续训练。
-
Lowres训练
nnUNet_train 3d_lowres nnUNetTrainerV2 09 0
-
Fullres训练
nnUNet_train 3d_fullres nnUNetTrainerV2 09 0
-
Cascade训练
# 先训练完lowres的所有folds nnUNet_train 3d_lowres nnUNetTrainerV2 09 0 nnUNet_train 3d_lowres nnUNetTrainerV2 09 1 nnUNet_train 3d_lowres nnUNetTrainerV2 09 2 nnUNet_train 3d_lowres nnUNetTrainerV2 09 3 nnUNet_train 3d_lowres nnUNetTrainerV2 09 4
nnUNet_train 3d_cascade_fullres nnUNetTrainerV2CascadeFullRes 09 0
测试
-
预测
# lowres预测 nnUNet_predict -i /root/nnUNet_raw_data_base/nnUNet_raw_data/Task009_Spleen/imagesTs -o /root/nnUNet_trained_models/nnUNet/3d_lowres/Task009_Spleen/nnUNetTrainerV2__nnUNetPlansv2.1/fold_0/infer -t 09 -m 3d_lowres
# fullres预测 nnUNet_predict -i /root/nnUNet_raw_data_base/nnUNet_raw_data/Task009_Spleen/imagesTs -o /root/nnUNet_trained_models/nnUNet/3d_fullres/Task009_Spleen/nnUNetTrainerV2__nnUNetPlansv2.1/fold_0/infer -t 09 -m 3d_fullres
# lowres预测 nnUNet_predict -i /root/nnUNet_raw_data_base/nnUNet_raw_data/Task009_Spleen/imagesTs -o /root/nnUNet_trained_models/nnUNet/3d_cascade_fullres/Task009_Spleen/nnUNetTrainerV2CascadeFullRes__nnUNetPlansv2.1/fold_0/infer -t 09 -m 3d_cascade_fullres
-
评价
nnUNet_evaluate_folder -ref labelsTs_dir -pred infer_dir -l 1
labelsTs_dir
, 测试集的label
;infer_dir
, 测试集的预测mask
。如果是四分类,则
-l 1 2 3