nnUNetv2实操记录

说明

1.本篇博客的操作在WSL(Ubuntu20.04)上进行。
2.注意nnUNetv2的数据集文件夹设置,以及后续使用的命令均与nnUNet不同

一、环境的创建

我这里没有用conda环境,而是通过安装venv模块创建的虚拟环境。

sudo apt-get install -y python3-venv

安装好了后,创建虚拟环境

mkdir environments
cd environments
python3 -m venv nnunet

激活环境

source nnunet/bin/activate
二、安装nnUNetv2

参考链接,具体按步骤执行.

三、创建数据集目录

第一步:在nnUNet文件夹中创建一个名为DATASET的文件夹
第二步:在DATASET文件夹中创建三个文件夹,
nnUNet_raw,
nnUNet_preprocessed,
nnUNet_trained_models
第三步:进入这个网站,下载公共数据集(建议科学上网),到随便一个目录。我下载的Task02_Heart,解压放在/home/bai/Task02_Heart目录,待命。

四、设置nnUNet读取文件的路径

也是所谓的设置环境变量,我直接找到nnUNetv2
文件下的path.py种修改保存。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4LhGoyDB-1692530073045)(image.png)]

# nnUNet_raw = os.environ.get('nnUNet_raw')
# nnUNet_preprocessed = os.environ.get('nnUNet_preprocessed')
# nnUNet_results = os.environ.get('nnUNet_results')

nnUNet_raw="/home/bai/environments/nnUNet/DATASET/nnUNet_raw"
nnUNet_preprocessed="/home/bai/environments/nnUNet/DATASET/nnUNet_preprocessed"
nnUNet_results="/home/bai/environments/nnUNet/DATASET/nnUNet_trained_models"
五、数据集转换

对下载好的数据集进行命名格式转换

nnUNetv2_convert_MSD_dataset -i /home/bai/Task02_Heart -overwrite_id 502

给数据集起个代号502,方便后用。
关于dataset.json文件,这个文件包含你的训练数据信息和任务信息,如果下载了网上公共的数据集,那里面是包含dataset.json文件的,如果你有训练自己的数据集的需求,再另需更改。

六、数据集预处理

此步骤对数据进行:裁剪crop,重采样resample以及标准化normalization,提取数据集指纹(一组特定于数据集的属性,例如图像大小、体素间距、强度信息等)。此信息用于设计三种 U-Net 配置。

nnUNetv2_plan_and_preprocess -d 502 --verify_dataset_integrity  

运行后将在 nnUNet_preprocessed 文件夹中创建一个以数据集命名的新子文件夹,包含预处理数据。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YScKgGor-1692530073046)(image-1.png#pic_center)]

七、模型训练

1.更改epoch
nnUNet默认原始的epoch是1000,太久,我进入次目录改成50。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DMoBYI3k-1692530073047)(image-2.png)]
2.输入训练命令

nnUNetv2_train Dataset502_Heart 2d 0
nnUNetv2_train Dataset502_Heart 3d_fullres 0 --c

分别意思是2d模式0折训练、3d全分辨率0折断点继续训练。
3.多卡训练

CUDA_VISIBLE_DEVICES=X nnUNetv2_train [...] 
# 指定GPU
-device DEVICE
八、训练结果

1.训练后的模型写入/home/bai/environments/nnUNet/DATASET/nnUNet_trained_models这个路径下。
2.训练后得到的文件
debug.json:包含用于训练此模型的蓝图和推断参数的摘要。对调试有用。

model_best.model/model_best.model.pkl:训练期间识别的最佳模型的检查点文件。

model_final_checkpoint.model/model_final_checkpoint.model.pkl:最终模型的检查点文件(训练结束后)。这是用于验证和推理的。

networkarchitecture.pdf(仅当安装了hiddenlayer时!):一个pdf文档,其中包含网络架构图。

progress.png:训练期间训练(蓝色)和验证(红色)损失的图。还显示了评估指标的近似值(绿色)。这个近似值是前景类的平均Dice分数。

validation_raw:在这个文件夹中是训练完成后预测的验证案例。summary.json包含验证度量(文件末尾提供了所有情况的平均值)。

training_log:训练过程中不断打印,nnunet的loss函数默认是趋向-1的,也就是说在训练的过程中,我们通过每轮训练的日志可以查看到每轮的loss函数,这个数值应该是负数,而且越趋向于-1,效果越好。
感受一下50 epoch,不咋地啊
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qgtv352N-1692530073048)(image-3.png)]
3.确定最佳U-Net配置
本文只说明了3d_fullres的训练,完整的nnUNet流程还需要跑2d和3d级联的,然后进行三种的择优。不过从实际性能来说,一般3d级联≥3d>2d,是否跑其他两种需要自己考虑。
训练完所有模型后,使用以下命令自动确定用于测试集预测的U-Net配置:(这步没做)

nnUNet_find_best_configuration -m 2d 3d_fullres 3d_lowres 3d_cascade_fullres -t 1
九、运行推理

查看推理命令相关参数含义

nnUNetv2_predict -h
nnUNetv2_predict -i /home/bai/environments/nnUNet/DATASET/nnUNet_raw/Dataset502_Heart/imagesTs -o /home/bai/environments/nnUNet/DATASET/predicted -d Dataset502_Heart -p nnUNetPlans -c 3d_fullres -f 0 --save_probabilities

新建predicted文件夹中存放的推理结果,与imagesTs文件夹里的数据一一对应。

参考资料

https://blog.csdn.net/m0_68239345/article/details/128886376 这篇比较详尽但是是基于nnUNet。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值