nnU-Net v2的环境配置到训练自己的数据集(详细步骤)
目录
- 一、说明
- 二、所需的环境配置
- 三、nnUNet框架的安装
- 四、数据集的准备
- 五、设置读取文件路径设置(重要)
- 六、数据集的转换
- 七、数据集预处理
- 八、模型训练
- 九、推理(后续更新)
- 十、结果(后续更新)
- 十一、参考link
一、说明
- 学习参加阿里云平台的竞赛第一次接触nnUNet任务,若有错误麻烦指出,谢谢啦
- 竞赛是关于牙齿的分割任务,背景说明和数据集下载地址为:MICCAI 2023 Challenges :STS-基于3D CBCT的牙齿分割任务
二、所需的环境配置
官方文档地址:GitHub-nnUNet
1. 版本要求:python >(或=) 3.9,pytorch>1.12.0 (之前使用的环境python版本为3.8.10,在安装nnU-Net时报错。torch最好的GPU版本的)
2. 创建虚拟环境:在pycharm中打开终端,输入命令行:conda create -n nnUNet python=3.9
,创建一个名字为 nnUNet 的虚拟环境,并且指定python为3.9的版本
3. 在虚拟环境中安装torch:
(1) 首先输入:nvidia-smi
查看信息,下图中的CUDA Version:12.0是指CUDA最高版本为12.0,即安装GPU版本的torch 的时候,安装12.0以下的版本
(2) 打开Pytorch官网:Pytorch地址,在此界面下拉,按照自己配置选择,然后复制给出的命令行
(3) 回到pycharm终端,进入粘贴此代码,进行torch安装
三、nnUNet框架的安装
注意:环境已经安装配好之后,接下来的所有操作都在此环境中,即:都需要先激活虚拟环境。GitHub-文档说明link
1. 安装nnUNet:(1)激活虚拟环境,(2)使用此命令行:
pip install nnunetv2
2. 创建nnUNet代码副本,和直接在GitHub上下载下来一样效果,继续在终端的虚拟环境中,按顺序分别执行以下3个命令行:(注意:最后一个命令最后有一个.
)其中,pip install -e .
的目的:(1)安装nnUNet需要的python包;(2)向终端添加新的命令,这些命令用于后续整个nnU-Net pipeline的执行,这些命令都有一个前缀:nnUNetv2_
git clone https://github.com/MIC-DKFZ/nnUNet.git
cd nnUNet
pip install -e .
具体步骤如下图:
3. 安装隐藏层(可选,可以不安装),hiddenlayer 使 nnU-net 能够生成网络拓扑图
pip install --upgrade git+https://github.com/FabianIsensee/hiddenlayer.git
四、数据集的准备
得到克隆之后的副本,即:名为 nnUNet 的文件夹
,参照官方文档,准备数据集。GitHub-文档说明link
1. 数据集文件夹结构:按照如下步骤创建文件夹,存放相应的数据集
(1) 在 名为 nnUNet 的文件夹
中创建一个名为 名为 GATASET 的文件夹
的文件夹
(2) 在 名为 GATASET 的文件夹
中创建3个文件夹,命名分别为:nnUNet_raw
、nnUNet_preprocessed
和 nnUNet_trained_models
。如下图所示:
(3) 在 名为 nnUNet_raw 的文件夹
中创建1个 名为 Dataset001_Teeth 的文件夹
说明1:文件夹命名为:Dataset+三位整数+任务名,
Dataset001_Teeth
中数据集ID为1,任务名为Teeth。此文件夹下存放需要的训练数据集imageTr
、测试集imageTs
、标签labelsTr
。其中imageTs
是与imageTr
中一一对应的标签,文件中都是nii.gz文件。imageTs
是可选项,可以没有。如下图所示
说明2:json文件是对三个文件夹内容的字典呈现。先在
Dataset001_Teeth
文件夹下创建一个空白的dataset.json文件,然后运行以下代码写入相应的 json文件
import jsonnnUNet_dir = '/root/autodl-tmp/nnU-Net/nnUNet/DATASET/' #此路径根据自己实际修改def sts_json():info = {"channel_names": {"0": "CBCT"},"labels": {"background": 0,"Teeth": 1},"numTraining": 12,"file_ending": ".nii.gz"}with open(nnUNet_dir + 'nnUNet_raw/Dataset001_Teeth/dataset.json','w') as f:json.dump(info, f, indent=4)sts_json()
运行后生成的 json文件内容如下:
五、设置读取文件路径设置(重要)
1. 需要让nnUNet知道文件存放在哪里,否则执行数据处理等一下相关操作都会报错,如下图
2. 方法一:(自己使用的方法一)
(1) 找到root
文件夹下的.bashrc
文件(注:这里自己租用的云平台的服务器,若是自己的服务器在home文件夹下找 .bashrc文件,若没有,在home目录下使用Ctrl+h,显示隐藏文件)
(2) 打开.bashrc
文件,在最后添加此三行内容,记得要更新一下修改后的文件,具体说明如下图
export nnUNet_raw="/root/autodl-tmp/nnU-Net/nnUNet/DATASET/nnUNet_raw"
export nnUNet_preprocessed="/root/autodl-tmp/nnU-Net/nnUNet/DATASET/nnUNet_preprocessed"
export nnUNet_results="/root/autodl-tmp/nnU-Net/nnUNet/DATASET/nnUNet_trained_models"
3. 方法二:
4 注:更新文档可以点击按钮更新,然后在终端使用命令行source .bashrc
更新,如下图
(1)
(2)
六、数据集的转换
- 此任务的数据集不需要格式转换,此步骤是为了将数据集转换成上述imageTr文件夹里面图片中显示的样子:
名字_000X
的形式 - 数据集转换的指令:
nnUNet_convert_decathlon_task -i /root/autodl-tmp/nnU-Net/nnUNet/DATASET/nnUNet_raw/Dataset001_Teeth
- 此步骤参考:link
七、数据集预处理
1. 此步骤对数据进行:裁剪crop,重采样resample以及标准化normalization,具体论文中有讲解,或参看此博文:nnU-Net论文解读。将提取数据集指纹(一组特定于数据集的属性,例如图像大小、体素间距、强度信息等)。此信息用于设计三种 U-Net 配置。每个管道都在其自己的数据集预处理版本上运行
2. 继续在虚拟环境中执行一下命令行:
nnUNetv2_plan_and_preprocess -d DATASET_ID --verify_dataset_integrity
此命令行中的DATASRT_ID根据自己任务修改,此任务中,Dataset001_Teeth
中可知ID为1
所以执行的命令为:
nnUNetv2_plan_and_preprocess -d 1 --verify_dataset_integrity
具体如下图所示:
3. 运行后将在 nnUNet_preprocessed 文件夹中创建一个以数据集命名的新子文件夹。命令完成后,将出现一个 dataset_fingerprint.json 文件以及一个 nnUNetPlans.json 文件。还有一些子文件夹包含 UNet 配置的预处理数据。
八、模型训练
1. 这是五折交叉验证,可以使用代码直接一折一折接着跑
(1.1) 创建一个tst.sh
文件,并写入此代码:
for fold in {0..4}
do # echo "nnUNetv2_train 1 3d_lowres $fold"nnUNetv2_train 1 3d_lowres $fold
done
(1.2) 在虚拟环境下的终端运行此 tst.sh
文件,使用 source
命令可以执行脚本(参考link),具体命令行为:
source /root/autodl-tmp/nnU-Net/sts.sh
具体为下图所示:
2. 也可以使用代码一折跑完,再次运行代码跑第二折:
进入虚拟环境,使用命令行:
nnUNetv2_train 1 3d_lowres 0 # 其中1表示数据集ID,上述提及过。0表示第1折
设置的是1000 epoch,第一折的1000epoch跑结束之后,修改命令行中的折数,即最后一个数:
nnUNetv2_train 1 3d_lowres 1 # 其中1表示数据集ID,上述提及过。1表示第2折
直到跑完5折交叉验证。
3. 在正常运行代码后遇到的问题:
(1) 不小心碰到键盘或者Ctrl+C会中断实验,此代码会50个epoch保存一下checkpoint ,若中断使用:原来指令后面加--c
可以接着运行,用运行第一折时中断为例:
nnUNetv2 train 1 3d_lowres 0 --c
(2)nohup 后台挂起,使用nohup+运行的命令行+&
,这样断网什么的不会影响进程
九、推理(后续更新)
十、结果(后续更新)
十一、参考link
- nnUNet-link1
- nnUNet-论文解读link2
- nnUNet-快速实现link3
- nnUNet-link4
- nnUNet-link5
- nnUNet-link6
nnU-Net v2的环境配置到训练自己的数据集(详细步骤)相关推荐
- mmrotate旋转目标检测框架从环境配置到训练自己的数据集
mmrotate旋转目标检测框架从环境配置到训练自己的数据集 最近有旋转目标检测的需求了,在寻找旋转目标检测算法的过程中,发现已经有人提前测评了各类旋转目标检测框架了,结果是mmrorate效果最好. ...
- soloV2保姆级教程(含环境配置,训练自己的数据集,代码逻辑分析等。能踩得坑都踩了....)更新ing
序言 环境:ubuntu18.04 cuda11.1 显卡3050 pytorch1.9 代码链接: GitHub - aim-uofa/AdelaiDet: AdelaiDet is an ope ...
- 目标检测FCOS网络环境配置、训练自己的数据集
文章:FCOS: Fully Convolutional One-Stage Object Detection 项目源码:https://github.com/tianzhi0549/FCOS 目录 ...
- 3mdax插件开发之环境配置(3dmax2018SDK +VS2017 +win10)详细步骤
3dmax插件开发的环境配置,并不复杂,但是自己配置,还是遇到了一大筐问题,由于本人不是程序出身,对于程序也是一直在摸索,最近也是看到了3dmax SDK的东西,所以想动手尝试一下,结果弄了好几天才把 ...
- yolov5环境配置和训练
慢慢写不着急 yolov5权重文件(百度网盘) yolov5weight 提取码:g5jh 鉴于官网权重文件4个月没有跟新,放心食用(20201030) weight V4.0 提取码:aljp 20 ...
- caffe-MobileNet-ssd环境搭建及训练自己的数据集模型
caffe-MobileNet-ssd环境搭建及训练自己的数据集模型 ***************************************************************** ...
- nnUNet保姆级使用教程!从环境配置到训练与推理(新手必看)
文章目录 写在前面 nnUNet是什么? 一.配置虚拟环境 二.安装nnUNet框架 1.安装nnUNet 这一步我遇到的两个问题: 2.安装隐藏层hiddenlayer(可选) 三.数据集准备 nn ...
- 在Windows上实现nnU-Net v2的环境配置
nnU-Net早期被众人所熟知是有一年参加了医学图像分割领域的十项全能比赛(MSD)并获得了冠军,接着该团队在最近又推出了nnUNet v2,使得功能更强大,代码的集成化更好. 需要的配置要求和相关环 ...
- yolov5环境配置及训练coco128数据集
本人小白一个,最近在学习yolov5网络,于是跟着网上的教程配置环境训练等,出现了很多错误,可能会比较乱,先说声抱歉.现在总结一下,算是理清下自己的思路,希望对各位也有些帮助. 环境配置:推荐安装Cu ...
最新文章
- 科学通报:合成微生物群落的构建与应用
- 逻辑网拓扑和物理网拓扑——微云网络
- mysql time_limit_mysql ---- limit使用方式
- SAP Analytics Cloud里看到的SAP C4C的query列表,是从哪里取出来的
- 使用ie浏览器设置Domain无法使用session的问题解决办法
- 【英语学习】【Level 08】U03 My Choice L6 Stories that make an impact
- 论如何快速的培养一个软件测试工程师出来
- 方正飞腾4.0视频教程
- android怎么用经纬度定位,android 根据经纬度定位所在城市
- Android系统原理及开发要点详解
- 用户发送的eth值msg.value,在合约中以wei为单位。
- 深度学习在文本分类中的应用
- win,linux双系统开机引导修复
- [摄影学习]-ZFC进阶操作学习
- 見到老板的老婆。。。
- iOS TCP UDP通信
- 借助 PrivateLink 与 EMQX Cloud 建立安全可靠的连接
- mac 微信备份到外接硬盘方案(软链接)
- krait和kryo_java原生序列化和Kryo序列化性能实例对比分析
- 广东开放大学信息安全与计算机科学那个好,贺桂英-广东开放大学信息与工程学院...