什么叫个人网站软件,全国十大装修公司最有名的是,网络维护和故障维修,在WordPressnnUNet是一个自适应的深度学习框架#xff0c;专为医学图像分割任务设计。以下是关于nnUNet的详细解释和特点#xff1a; 自适应框架#xff1a;nnUNet能够根据具体的医学图像分割任务自动调整模型结构、训练参数等#xff0c;从而避免了繁琐的手工调参过程。 自动化流程专为医学图像分割任务设计。以下是关于nnUNet的详细解释和特点 自适应框架nnUNet能够根据具体的医学图像分割任务自动调整模型结构、训练参数等从而避免了繁琐的手工调参过程。 自动化流程nnUNet包含了从数据预处理到模型训练、验证及测试的全流程自动化工具大大简化了使用深度学习进行医学图像分割的复杂度。 自适应网络结构调整根据输入数据集的特点nnUNet能够自动选择和配置合适的网络深度、宽度等超参数确保模型在复杂性和性能之间取得平衡。 Patch-Based Training and InferencennUNet使用基于patch级别的训练方法通过滑窗的方式遍历整个图像进行训练。在推理阶段也采用类似的方法来生成整个图像的分割结果。这种方法对于处理大尺寸图像或有限显存的情况非常有效。 集成学习与交叉验证nnUNet还采用了交叉验证策略以最大程度利用有限的数据集并结合集成学习技术来提高模型预测的稳定性和准确性。 此外nnUNet还提供了丰富的文档和示例帮助用户更好地了解和使用该框架。要使用nnUNet用户需要安装Python和相应的深度学习框架然后按照官方文档提供的步骤进行操作即可。 总的来说nnUNet是一个功能强大、易于使用的深度学习框架特别适用于医学图像分割任务。它的自适应特性、自动化流程和先进的训练策略使得用户能够更高效地构建和训练模型同时获得更好的性能表现。 本文介绍nnunetv2的使用方法快速学会nnunet的使用。
请确保您已经完成【nnUNetv2实践】一、nnUNetv2安装 一、准备数据
1、下载数据集 本文使用MSD挑战赛的Task04_Hippocampus数据集作为测试该数据集较小非常适合做学习只用首先下载Task04_Hippocampus数据集到本地并解压如下图我这里把数据集放到了nnUNet_raw里面可以随意放置记住路径。 2、转换数据格式
接下来开始转换数据格式路径更改为自己的数据集路径
nnUNetv2_convert_MSD_dataset -i D:\DeepLearning\nnUNet\nnUNet_raw\Task04_Hippocampus
报以下错误说明环境变量未设置这是因为【nnUNetv2实践】一、nnUNetv2安装中设置的环境变量是临时的 设置环境变量路径更改为自己的我的是windows环境如果是linux环境可以参考 【nnUNetv2实践】一、nnUNetv2安装
set nnUNet_rawD:/DeepLearning/nnUNet/nnUNet_raw
set nnUNet_preprocessedD:/DeepLearning/nnUNet/nnUNet_preprocessed
set nnUNet_resultsD:/DeepLearning/nnUNet/nnUNet_results
设置完成环境变量后重新运行本小结的数据格式转换代码可以在nnUNet_raw下找到处理后的数据集 处理后的图片会有0000后缀如下图 数据格式转换完成。
3、预处理并生成plan
完成数据格式转换后使用如下命令进行预处理并生成plan
nnUNetv2_plan_and_preprocess -d 4 --verify_dataset_integrity
过程如下生成了2d和3d_fullres的plan但是没有cascade unet的plan这是因为这个数据集比较小不需要生成级联网络 可以在nnUNet_preprocessed文件夹下查看处理好的数据集 可以看到该文件夹中有3个json文件其中的nnUNetPlans.json是网络结构相关的配置文件可自行查阅。 至此数据准备完成。
二、训练
完成以上步骤准备好数据集之后就准备训练模型。
请注意
1、对于本文的数据集来说nnunet有2d和3d_fullres共两个模型且nnunet默认使用五折交叉验证的方式训练模型既对2d和3d_fullres来说各自训练五次。对于部分数据集来说还有3d_lowres, 3d_cascade_fullres模型
2、本文的数据没有验证集因为MSD挑战赛都是把测试集结果提交到官网进行评估的。
下面开始训练模型
首先训练2d模型4表示数据集编号最后面的数字01234表示五折的编号
nnUNetv2_train 4 2d 0
nnUNetv2_train 4 2d 1
nnUNetv2_train 4 2d 2
nnUNetv2_train 4 2d 3
nnUNetv2_train 4 2d 4
然后训练3d_fullres模型
nnUNetv2_train 4 3d_fullres 0
nnUNetv2_train 4 3d_fullres 1
nnUNetv2_train 4 3d_fullres 2
nnUNetv2_train 4 3d_fullres 3
nnUNetv2_train 4 3d_fullres 4
训练好之后在nnUNet_results文件夹下有了以下内容分别对应着2d和3d_fullres两个模型的训练结果 打开2d文件夹可以看到五折的训练结果 打开任意一个文件夹里面有权重和日志以及其他的训练结果 三、验证并推理
训练好模型之后可以使用nnunet的自动寻找最优模型的功能。其原理如下
训练好2d\3d_fullres\3d_lowres\3d_cascade_fullres之后每个模型都是五折可以将模型的预测结果相加求平均作为新的预测结果叫做ensemble然后得到多个预测结果选择精度最高的模型作为最终的推理模型。
注意精度验证时是把每折的验证集保存下来5折得到的预测结果和训练集完全一致直接和训练集一起计算相关指标。
nnunet的原理可以参考nnunet原理讲解_哔哩哔哩_bilibili
1、验证
由于有ensemble的策略所有需要模型预测的概率图属于某个类别的概率在0到1之间而不是分割结果012。。。先每折生成npz文件每个模型都要本文只有2d和3d_fullres
nnUNetv2_train 4 2d 0 --val --npz
nnUNetv2_train 4 2d 1 --val --npz
nnUNetv2_train 4 2d 2 --val --npz
nnUNetv2_train 4 2d 3 --val --npz
nnUNetv2_train 4 2d 4 --val --npz
nnUNetv2_train 4 3d_fullres 0 --val --npz
nnUNetv2_train 4 3d_fullres 1 --val --npz
nnUNetv2_train 4 3d_fullres 2 --val --npz
nnUNetv2_train 4 3d_fullres 3 --val --npz
nnUNetv2_train 4 3d_fullres 4 --val --npz
运行以上命令后nnUNet_results文件夹的每折validation文件夹出现npz文件 2、推理
nnunet可以自己找寻最优模型并给出推理命令使用如下命令自动寻优
nnUNetv2_find_best_configuration 4 -c 2d 3d_fullres -f 0 1 2 3 4
稍等等片刻出现如下结果我这里显示ensemble的结果比较好提示我运行以下的命令下面所有的命令都参考下图 首先运行两个推理命令(-i指向的是转换格式后的文件夹目录既文件名以0000结尾的-o指向推理结果保存的位置)
nnUNetv2_predict -d Dataset004_Hippocampus -i nnUNet_raw\Dataset004_Hippocampus\imagesTs -o hippocampus_2d_predict -f 0 1 2 3 4 -tr nnUNetTrainer -c 2d -p nnUNetPlans --save_probabilities
nnUNetv2_predict -d Dataset004_Hippocampus -i nnUNet_raw\Dataset004_Hippocampus\imagesTs -o hippocampus_3d_fullres_predict -f 0 1 2 3 4 -tr nnUNetTrainer -c 3d_fullres -p nnUNetPlans --save_probabilities
因为要五折推理可以看到每个图片推理都进行了5次 2个模型各自推理完成后进行ensemble-i是上面推理的保存路径-o指向输出的保存位置
nnUNetv2_ensemble -i hippocampus_2d_predict hippocampus_3d_fullres_predict -o hippocampus_ensemble -np 8
等待运行完成后进入最后一步后处理命令和上面那个图中的一致-i是ensemble的保存位置-o指向后处理结果的保存位置
nnUNetv2_apply_postprocessing -i hippocampus_ensemble -o hippocampus_ensemble_pp -pp_pkl_file D:/DeepLearning/nnUNet/nnUNet_results\Dataset004_Hippocampus\ensembles\ensemble___nnUNetTrainer__nnUNetPlans__2d___nnUNetTrainer__nnUNetPlans__3d_fullres___0_1_2_3_4\postprocessing.pkl -np 8 -plans_json D:/DeepLearning/nnUNet/nnUNet_results\Dataset004_Hippocampus\ensembles\ensemble___nnUNetTrainer__nnUNetPlans__2d___nnUNetTrainer__nnUNetPlans__3d_fullres___0_1_2_3_4\plans.json至此完成了Task04_Hippocampus测试集的预测可以提交到官网验证精度。 nnunet入门教程到此结束后续可能会出高阶教程如何修改网络结构和损失函数如有疑问可私聊解答。