nnUNet使用指南(二):使用nnUNet在自己的数据集上训练出现的问题报错
错误一
在使用代码nnUNet_plan_and_preprocess -t XXX --verify_dataset_integrity
进行数据集验证时出现AssertionError
AssertionError: could not find label file for case MR_001_0000. Expected file: /data/nnUNet_raw_data_base/nnUNet_raw_data/Task066_MR/labelsTr/MR_001_0000.nii.gz
数据集已经按照要求的情况下(image,label)->(MR_001_0000.nii.gz,MR_001.nii.gz)
错误产生原因:在json文件中images不需要加上模态:"image": "./imagesTr/MR_001.nii.gz"
而不是"image": "./imagesTr/MR_001_0000.nii.gz"
并且所有数据必须都有在json文件中写入的模态。
错误二
在使用代码nnUNet_plan_and_preprocess -t XXX --verify_dataset_integrity
进行数据集验证时出现nibabel.filebasedimages.ImageFileError
nibabel.filebasedimages.ImageFileError: Cannot work out file type of ".../nnUNet_raw/nnUNet_raw_data/Task066_LiverMriTumour/imagesTr/MR_001_0000.nii.gz"
错误原因:尽管文件扩展名为GZ,但该文件实际上可能并未压缩。尝试用gzipping压缩它
错误三
在使用代码nnUNet_plan_and_preprocess -t XXX --verify_dataset_integrity
进行多模态数据集验证时出现出现某些数据维度不匹配
将不匹配数据删除即可(image、label、json中都要删除)
或者用python将image和label的direction、spacing、origin设置为相同(通过getXXX、setXXX实现)
不匹配原因探究:多模态数据共用一个label,但在扫描患者时,患者会位移导致图像不是在一个位置上
而多模态数据只在其中一个模态上勾画label,在这个模态上的label是准确的位置,而在别的模态上label的位置就是错的
此时一般会对多模态数据进行配准,使配准的后的模态都处在同样的位置,配准会导致image的direction、spacing、origin
与label不匹配,在验证时就会出现不匹配。
错误四
Could not find a task with the ID xx
错误原因:双位数的ID,前面要补0,66要变成066
错误五
CUDA error: no kernel image is available for execution on the device
CUDA和pytorch不匹配,重装
卸载:
pip uninstall torch
安装:
去官网找自己版本的安装命令:
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
此步骤也可解决训练的慢的问题,自带的
安装时报错Requirement already satisfied
意味当前安装环境下已经安装该包,查看是否环境选择错误
或指定路径参考下面链接: