网上关于nnUNet运行的教程大部分是针对nnUNet v1的。但由于nnUNet v2已经推出,而且相对于v1有了很大的更新。所以个人只能啃nnUNet的英文文档+参考在Windows上实现nnU-Net v2的环境配置_netv2_无聊的程序猿的博客-CSDN博客 实现了代码的复现。
系统要求:Linux (Ubuntu 18.04, 20.04, 22.04; centOS, RHEL), Windows and MacOS
硬件要求:GPU, CPU and Apple M1/M2 (苹果设备不支持3D 卷积, 需要使用CPU).
训练硬件要求:至少有10G显存的GPU;至少6核的CPU
环境要求:python 3.9及以上
系统:Ubuntu 20.04 python:3.10.9 pytorch:2.0.0 cuda:11.7
2.1 下载代码:命令行运行git clone https://github.com/MIC-DKFZ/nnUNet.git
2.2 conda create nnUNet 并 activate nnUNet
2.3 进到代码所在的目录下,安装环境 cd nnUNet
pip install -e .
2.5 添加数据目录到系统环境变量中:运行sudo gedit /home/用户名/.bashrc,在结尾根据自己数据的目录,添加三行内容,例如我的数据文件所在目录如3.4,我添加的内容如下:
export nnUNet_raw="/home/lang/PycharmProjects/nnUNet/nnUNetFrame/DATASET/nnUNet_raw"
export nnUNet_preprocessed="/home/lang/PycharmProjects/nnUNet/nnUNetFrame/DATASET/nnUNet_preprocessed"
export nnUNet_results="/home/lang/PycharmProjects/nnUNet/nnUNetFrame/DATASET/nnUNet_results"
2.6 到Medical Segmentation Decathlon中下载数据集,可以在任何一个路径path下,不要放到步骤2.5的目录中。
2.7 数据转化,在命令行输如下命令,把2.6路径下的数据集进行转化
nnUNetv2_convert_MSD_dataset -i 步骤2.6数据集的路径 -overwrite_id 201
说明:201是数据集的ID,如果是自定义数据集,10以上都可以。
转换后,会看到nnUnet_raw目录下产生了新的文件。
2.8 数据集传入到nnUNet_preprocessed目录下:
nnUNetv2_plan_and_preprocess -d DATASET_ID --verify_dataset_integrity
参数说明:DATASET_ID是数据的ID,首次运行建议加--verify_dataset_integrity参数,对数据进行正确性检查。
我运行的命令是:nnUNetv2_plan_and_preprocess -d 201 --verify_dataset_integrity
注意:这里-d参数值需要与2.7的ID一致,
运行后nnUNet_preprocessed文件夹下产生了新的文件
到/nnUNet/nnunetv2/training/nnUNetTrainer/nnUNetTrainer.py中,可修改self.num_epochs,减少训练epoch
nnUNetv2_train DATASET_NAME_OR_ID UNET_CONFIGURATION FOLD [additional options, see -h]
参数说明:DATASET_NAME_OR_ID是数据集ID UNET_CONFIGURATION是数据格式 FOLD代表选择五折交叉验证中的哪个文件夹做训练,取值范围[0,1,2,3,4],UNET_CONFIGURATION参数是数据类型参数,默认是2d, 其他可选值3d_fullres, 3d_lowres, 3d_cascade_lowres。
我运行的命令是:nnUNetv2_train 201 3d_fullres 4
1.如果pycharm是从软件商店安装的,它在运行时使用的环境变量文件不是系统环境变量/home/username/bashrc;因此应该直接从pycharm官网下载pycharm安装包,解压后通过命令行运行bin目录下的./pycharm.sh文件启动。
2.如果仅仅通过conda创建了一个空虚拟环境,在pycharm里是无法切换到这个空环境的。必须将必要的package install到虚拟环境中才可以。
3.如果使用conda时报异常,排除其他原因无果后,可以查看是否开启了VPN。将VPN关闭,conda功能恢复正常。