【图像分割】nnUnetV1与V2的Linux部署与应用命令

  以前觉得麻烦,一直没用过nnunet,虽然知道它很火,最近一个契机,部署使用了一下nnunet,记录一下其部署和使用的方法与命令。


1、部署

  首先,我有一个环境,这个环境可以是以前就有的,也可以为了nnunet重新建一个,给它一个温暖的家。

第一步,激活环境:

source activate myMRI

第二步,安装nnunet:

pip install nnunet

  安装完了可以发现,nnunetV1和nnunetV2都安装上了:

在这里插入图片描述

第三步,查看与进入.bashrc文件:

ls -al /home/qijing   # 查看
vim ~/.bashrc  # 进入文件

第四步,修改.bashrc文件:

  直接按 i 键可以对文件进行修改,若采用nnunetV1,则文件底部添加:

export nnUNet_raw_data_base="/mnt/data_2/qijingunet/nnUNet_raw"
export nnUNet_preprocessed="/mnt/data_2/qijingunet/nnUNet_preprocessed"
export RESULTS_FOLDER="/mnt/data_2/qijingunet/nnUNet_trained_models"

  若采用nnunetV2,则文件底部添加:

export nnUNet_raw="/mnt/data_2/qijingunet/nnUNet_raw"
export nnUNet_preprocessed="/mnt/data_2/qijingunet/nnUNet_preprocessed"
export nnUNet_results="/mnt/data_2/qijingunet/nnUNet_trained_models"

  这三个路径可以根据自己的文件夹名字设置,我是给V1和V2都设置了:

在这里插入图片描述

  修改完成后,Esc + :+ wq 退出并保存修改之后的文件:Esc 键退出编辑模式,英文模式下输入 :wq ,然后回车 (write and quit)

第五步,更新.bashrc文件:

source ~/.bashrc

第六步,验证路径设置正确,并且应该打印出正确的文件夹:

echo $RESULTS_FOLDER etc

  验证如下所示:

在这里插入图片描述


2、应用

  部署好了nnunet,得用起来呀,我们试试十项分割挑战赛的数据集:下载传送

  以Task02_Heart为例,下载好的文件夹如下所示,其中imagesTr存放训练数据,imagesTs存放测试数据,labelsTr存放训练数据标签,dataset.json是数据集的信息。

在这里插入图片描述

第一步,数据格式转换:

  nnunetV1命令:

nnUNet_convert_decathlon_task -i $nnUNet_raw_data_base/nnUNet_raw_data/Task02_Heart

  nnunetV2命令:

nnUNetv2_convert_MSD_dataset -i $nnUNet_raw/Task02_Heart

  -i 后面也可以写绝对路径:

nnUNetv2_convert_MSD_dataset -i /mnt/data_2/qijingunet/nnUNet_raw/nnUNet_raw_data/Task02_Heart

  运行完成后,在同目录下生成一个名为Dataset002_Heart的文件夹。

  一般制作自己的数据集,可以直接制作成这一步的样子。

  imagesTr文件夹如下所示,其中_0000表示模态,像Task01_BrainTumour数据集,训练数据会有四个模态。

在这里插入图片描述

  labelsTr文件夹如下所示,与imagesTr文件夹中的数据相对应:

在这里插入图片描述

  dataset.json文件信息如下,nnUnetV2的dataset.json信息比nnUnetV1简单很多,如果是自己的数据集,可以写代码生成json信息文件,当然如果按V2这个形式,复制过去改是最方便的啦~

在这里插入图片描述

第二步,数据预处理:

  nnunetV1命令:

nnUNet_plan_and_preprocess -t 002 --verify_dataset_integrity

  nnunetV2命令:

nnUNetv2_plan_and_preprocess -d 002 --verify_dataset_integrity

  其中,002是任务id号,预处理完成后,会在nnUNet_preprocessed文件夹中生成一个Dataset002_Heart同名文件夹,里面包含以下内容:

在这里插入图片描述

第三步,模型训练:

(1)训练2D U-Net模型

  nnunetV1命令:

nnUNet_train 2d nnUNetTrainerV2 Task002_Heart 3
nnUNet_train 2d nnUNetTrainerV2 002 3

  可以写文件夹全名,也可以只写任务id号,最后的数字表示第几折,默认取值为[0,1,2,3,4],

  nnunetV2命令:

nnUNetv2_train 002 2d 0

  运行命令后,会在nnUNet_preprocessed/Dataset002_Heart文件夹中生成一个splits_final.json文件,其中存储的就是交叉验证的数据划分信息,当然啦,如果想自己划分也可以修改这个文件。

在这里插入图片描述

  当然啦,一折一折跑还得看着它,挺麻烦的,想要一个命令实现五折交叉验证怎么办咧

  使用 && 运行多个 Linux 命令:

nnUNet_train 2d nnUNetTrainerV2 002 0 && nnUNet_train 2d nnUNetTrainerV2 002 1 && nnUNet_train 2d nnUNetTrainerV2 002 2 && nnUNet_train 2d nnUNetTrainerV2 002 3 && nnUNet_train 2d nnUNetTrainerV2 002 4
nnUNetv2_train 002 2d 0 && nnUNetv2_train 002 2d 1 && nnUNetv2_train 002 2d 2 && nnUNetv2_train 002 2d 3 && nnUNetv2_train 002 2d 4

  nnUNet五折交叉验证运行结束后可在以下路径中生成五个fold文件夹:

nnUNet_trained_models/nnUNet/2d/Task002_Heart/nnUNetTrainerV2__nnUNetPlansv2.1

在这里插入图片描述

(2)训练3D full resolution U-Net模型

  nnunetV1命令:

nnUNet_train 3d_fullres nnUNetTrainerV2 Task002_Heart 2

  nnunetV2命令:

nnUNetv2_train 002 3d_fullres 0
(3)训练3D U-Net cascade模型

  nnunetV1命令:

# 第一步:3D low resolution U-Net训练
nnUNet_train 3d_lowres nnUNetTrainerV2 Task002_Heart 0  
# 第二步:3D full resolution U-Net 训练
nnUNet_train 3d_cascade_fullres nnUNetTrainerV2CascadeFullRes Task002_Heart 0  

  nnunetV2命令:

# 第一步:3D low resolution U-Net训练
nnUNetv2_train 002 3d_lowres 0 
# 第二步:3D full resolution U-Net 训练
nnUNetv2_train 002 3d_cascade_fullres 0

第四步,自动确定最佳配置:

  五折交叉验证跑完后,可以设置自动识别最适合数据的组合,–strict 参数代表即使配置不存在仍继续执行。

  nnunetV1命令:

nnUNet_find_best_configuration -m 2d 3d_fullres 3d_lowres 3d_cascade_fullres -t 002 --strict

  nnunetV2命令:

nnUNetv2_find_best_configuration 002 -c 2d 

第五步,模型测试:

  nnunetV1命令:

nnUNet_predict -i INPUT_FOLDER -o OUTPUT_FOLDER -t TASK_NAME_OR_ID -m CONFIGURATION

  其中,INPUT_FOLDER 是测试数据集的路径,OUTPUT_FOLDER 为指定的输出文件夹,TASK_NAME_OR_ID 为任务 id 号,CONFIGURATION 代表所使用的 UNet 配置。

  nnunetV2命令:

nnUNetv2_predict -i INPUT_FOLDER -o OUTPUT_FOLDER -d DATASET_NAME_OR_ID -c CONFIGURATION --save_probabilities

  交叉验证跑完可以采用以下命令:

nnUNetv2_predict -d Dataset002_Heart -i INPUT_FOLDER -o OUTPUT_FOLDER -f  0 1 2 3 4 -tr nnUNetTrainer -c 2d -p nnUNetPlans

第六步,后处理:

  这个好像只有V2版本有,因为运行完第五步后,V1版本没有提示可以后处理的命令:

在这里插入图片描述

  nnunetV2命令:

nnUNetv2_apply_postprocessing -i OUTPUT_FOLDER -o OUTPUT_FOLDER_PP -pp_pkl_file /mnt/data_2/qijingunet/nnUNet_trained_models/Dataset002_Heart/nnUNetTrainer__nnUNetPlans__2d/crossval_results_folds_0_1_2_3_4/postprocessing.pkl -np 8 -plans_json /mnt/data_2/qijingunet/nnUNet_trained_models/Dataset002_Heart/nnUNetTrainer__nnUNetPlans__2d/crossval_results_folds_0_1_2_3_4/plans.json

  其中OUTPUT_FOLDER为上一步的输出路径,OUTPUT_FOLDER_PP为重新指定的新路径。


PS:修改epoch

  nnunet默认训练1000个epoch,要是不想训练那么多怎么修改呢?

  nnunetV1:在下面路径的py文件中,修改self.max_num_epochs

anaconda3/envs/myMRI/lib/python3.8/site-packages/nnunet/training/network_training/nnUNetTrainerV2.py

  nnunetV2:在下面路径的py文件中,修改self.num_epochs

anaconda3/envs/myMRI/lib/python3.8/site-packages/nnunetv2/training/nnUNetTrainer/nnUNetTrainer.py

  其实,当自己一步步去做的时候,好像也不是很难~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/513247.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

常州小程序案例分享:行业领军企业的数字化转型之路

随着信息技术的快速发展,数字化转型已成为各行各业企业提升竞争力、适应市场变革的关键战略。在江苏省常州市,一些行业领军企业凭借敏锐的市场洞察力和前瞻性的创新思维,成功借助小程序这一轻量化应用平台,实现了业务流程优化、用…

Kubernetes(k8s):如何进行 Kubernetes 集群健康检查?

Kubernetes(k8s):如何进行 Kubernetes 集群健康检查? 一、节点健康检查1、使用 kubectl 查看节点状态2、查看节点详细信息3、检查节点资源使用情况 2、Pod 健康检查2.1、 使用 kubectl 查看 Pod 状态2.2、 查看特定 Pod 的详细信息…

基于Springboot+vue的宠物服务管理系统+论文文档

基于Springbootvue的宠物服务管理系统论文文档 预览 简介 本系统共分为三个角色:管理员、用户: 管理员:管理员管理、密码修改、用户管理、充值管理、商品分类管理、商品信息管理、订单信息管理、分享趣事管理、医疗服务管理、服务预约管理…

力扣刷题Days32-92. 反转链表 II(js)

1,题目 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 2&#xff0c;代码 一次遍历「穿针引线」反转链表&#xff08;头插法&#xff09; /*** Defi…

LeetCode 96. 不同的二叉搜索树

给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5示例 2&#xff1a; 输入&#xff1a;n 1 输出&#xff1a;1提…

【蓝桥杯嵌入式】六、真题演练(一)-1演练篇:第 14 届真题

温馨提示&#xff1a; 真题演练分为模拟篇和研究篇。本专栏的主要作用是记录我的备赛过程&#xff0c;我打算先自己做一遍&#xff0c;把遇到的问题和不同之处记录到演练篇&#xff0c;然后再返回来仔细研究一下&#xff0c;找到最佳的解题方法记录到研究篇。 目录 解题记录&…

2023年EI会议论文已见刊/检索进展汇总

2023年录用的会议论文已在SPIE、ACM、IEEE等出版社正式上线见刊&#xff0c;并已陆续完成EI Compendex数据库收录&#xff0c;详情如下&#xff1a; EIECT 2023——IEEE出版&#xff0c;并完成EI收录 会议信息&#xff1a; 第三届电子信息工程与计算机技术国际学术会议&…

MapReduce [OSDI‘04] 论文阅读笔记

原论文&#xff1a;MapReduce: Simplified Data Processing on Large Clusters (OSDI’04) 1. Map and Reduce Map&#xff1a;处理键值对&#xff0c;生成一组中间键值对Reduce&#xff1a;合并与同一中间键相关的所有中间值process overview&#xff1a;分割输入数据&#x…

EF数据持久化(三层架构,公司查,改)

效果图 Model设置具体流程在下面链接中 https://blog.csdn.net/Mr_wangzu/article/details/136805824?spm1001.2014.3001.5501 DAL using System; using System.Collections.Generic; using System.Linq; using System.Web; using WebApplication2.Models; namespace WebAppli…

力扣由浅至深 每日一题.20 环形链表

山穷水尽&#xff0c;柳暗花明 —— 24.4.3 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整…

实战webSocket压测(一)webSocket背景

一、什么是webSocket&#xff1f; WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许在客户端&#xff08;如Web浏览器&#xff09;和服务器之间建立持久的连接&#xff0c;实现全双工通信。 二、WebSocket出现的背景 1、http协议背景&#xff1a; 以B/S架构为例…

【数据结构】学会了波兰表达式与逆波兰表达式,怎么能允许自己不会通过计算机进行表达式转换呢?

栈在表达式转换中的应用 导读一、中缀表达式二、表达式的组成部分2.1 单一运算符2.2 不带括号的混合运算符2.3 带括号的混合运算符 三、表达式改写3.1 问题分析3.2 算法设计3.3 算法实现3.4 算法测试 结语 导读 大家好&#xff01;很高兴又和大家见面啦&#xff01;&#xff0…

moveit中RM65-B适配拓展轴一体规划

Moveit适配拓展轴 1.概述 睿尔曼关节模组和机械臂连接时可以被自动识别&#xff0c;并且睿尔曼机械臂提供同时控制机械臂和拓展关节模组的通信协议&#xff08;限一个拓展关节&#xff09;。因此&#xff0c;用户可以在RM机械臂的基础上添加外部关节&#xff0c;构建新的机器…

顶级Layer-3 通证正在飙升,布局龙头Degen Chain(含bitget教程)

近期以太坊生态内&#xff0c;Base 一枝独秀&#xff0c;其 TVL 突破 25 亿美元&#xff0c;创历史新高。并且生态内的社交文化和 DeFi 板块的龙头都很惹眼。 Farcaster 协议上的 meme 币 DEGEN 目前价格为 0.018 美元&#xff0c;7 日涨幅达 376%。 DEGEN 兴起于 Farcaster 的…

备考2024年思维100春季线上比赛?来做做官方模拟题(附答案)

2024年春季思维100活动第一阶段线上比赛&#xff08;4月20日&#xff0c;星期六&#xff0c;上午&#xff09;的报名正在进行中&#xff0c;报名时间截止到为4月6日&#xff08;本周六&#xff09;&#xff0c;请设置好闹钟提醒以免错过。更多安排和需要提前了解的关键点可以见…

制作一个一键运行的10多M的go-cqhttp最简docker镜像

一直有个想自己部署一个QQ机器人&#xff0c;虽然成功完成在Windows环境下基于 go-cqhttp 的搭建工作。但考虑到我有一台常年在线的群晖 NAS&#xff0c;并且已经配置并启用了 Docke r服务&#xff0c;可否将go-cqhttp 迁移至 NAS 上的 Docker 容器中运行吗呢&#xff1f;同时&…

rasa trian 报错解决---Project validation completed with errors.

rasa train 过程中&#xff1a;出现一下问题&#xff1b; Project validation completed with errors. 解决措施:python 3.10版本&#xff0c;rasa 3.6.19, 降低版本 pip3 install rasa3.5.17 -i https://pypi.tuna.tsinghua.edu.cn/simple成功解决

洛谷P1007独木桥(暴力枚举)

题目描述&#xff1a; 说明提示&#xff1a; 思路&#xff1a; 本题的核心思想在于&#xff1a;两人相遇后&#xff0c;转身不计入时间&#xff0c;所以我们可以看作直接穿过去&#xff0c;那么一个人走下桥的时间有两种&#xff0c;一个是本身所在位置x&#xff0c;另一个是l…

CSS基础选择器 小案例复习(画三个小盒子)

&#xff08;大家好&#xff0c;前面我们学习了基础的选择器&#xff0c;俗话说&#xff1a;温故而知新。所以今天我们将通过小案例来复习前面学过的小知识点。另&#xff0c;十分感谢大家对我文章的支持❤️&#xff09; 通过这个案例复习两个地方&#xff1a; 类选择器的使用…

MySQL的基本操作(超详细)

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 &#x1f4d4;&#xff08;零基础&#xff09;专栏&#xff1a;MSQL数据库 欢迎&#x1f64f;点赞&…