nnunet入门之一 (CT图像分割)
目录
- 安装环境
- 数据处理
- 预处理
- 训练
- 测试
MIC-DKFZ/nnUNet
选择Linux环境运行该项目,Windows环境需要更改较多的参数,暂不支持。
安装环境
安装cuda, cudnn,已安装的检测cuda版本
检测cuda版本:
- nvcc -v
- cd /usr/local
- nvidia-smi(错误方式)
安装对应cuda版本的pytorch
验证
python -c 'import torch;print(torch.backends.cudnn.version())' # 8005, 显示类似此内容
python -c 'import torch;print(torch.__version__)' # 1.10.1+cu111, 显示类似此内容
安装nnUNet
# 安装nnunet pip install nnunet git clone https://github.com/MIC-DKFZ/nnUNet.git cd nnUNet pip install -e .
# 设置环境变量 vim ~/.bashrc export nnUNet_raw_data_base="/root/nnUNet_raw_data_base" export nnUNet_preprocessed="/root/nnUNet_preprocessed" export RESULTS_FOLDER="/root/nnUNet_trained_models" source ~/.bashrc
注意:
nnUNet_preprocessed
的路径要指向SSD
上,否则的话,速度会慢很多。安装hiddenlayer(可选)
pip install hiddenlayer
数据处理
文件夹目录
└─Task09_Spleen│ dataset.json│ ├─imagesTr│ spleen_2.nii.gz│ spleen_3.nii.gz│ spleen_6.nii.gz│ spleen_8.nii.gz│ spleen_9.nii.gz│ ...├─imagesTs│ spleen_1.nii.gz│ spleen_7.nii.gz│ ...└─labelsTrspleen_2.nii.gzspleen_3.nii.gzspleen_6.nii.gzspleen_8.nii.gzspleen_9.nii.gz...
json文件信息
nnUNet/nnunet/dataset_conversion/utils.py
里面的函数generate_dataset_json
可以生成相应任务的json
文件。{ "name": "Spleen", "description": "Spleen Segmentation", "reference": "Memorial Sloan Kettering Cancer Center", "licence":"CC-BY-SA 4.0", "release":"1.0 06/08/2018", "tensorImageSize": "3D", "modality": { "0": "CT"}, "labels": { "0": "background", "1": "spleen"}, "numTraining": 41, "numTest": 20,"training":[{"image":"./imagesTr/spleen_2.nii.gz","label":"./labelsTr/spleen_2.nii.gz"},{"image":"./imagesTr/spleen_3.nii.gz","label":"./labelsTr/spleen_3.nii.gz"},{"image":"./imagesTr/spleen_6.nii.gz","label":"./labelsTr/spleen_6.nii.gz"},{"image":"./imagesTr/spleen_8.nii.gz","label":"./labelsTr/spleen_8.nii.gz"},{"image":"./imagesTr/spleen_9.nii.gz","label":"./labelsTr/spleen_9.nii.gz"},...],"test":["./imagesTs/spleen_1.nii.gz","./imagesTs/spleen_7.nii.gz",...]}
注意:
"modality"
一定要是CT
,可以是小写。(因为不同的modality
,归一化的方式不同)转换数据
nnUNet_convert_decathlon_task -i /xxx/Task09_Spleen
转换的数据存在
nnUNet_raw_data_base/nnUNet_raw_data/Task009_Spleen
,唯一区别就是imagesTr
和imagesTs
里的文件名加了后缀"_0000"
。注意:此处
Task09_Spleen
变为Task009_Spleen
。
预处理
# 只进行3d预处理,不进行2d预处理
nnUNet_plan_and_preprocess -t 09 -pl2d None
主要对数据进行预处理,包括Crop, Resample, Normalization
等。
训练
如果训练断了,可以在命令行后面加-c
继续训练。
Lowres训练
nnUNet_train 3d_lowres nnUNetTrainerV2 09 0
Fullres训练
nnUNet_train 3d_fullres nnUNetTrainerV2 09 0
Cascade训练
# 先训练完lowres的所有folds nnUNet_train 3d_lowres nnUNetTrainerV2 09 0 nnUNet_train 3d_lowres nnUNetTrainerV2 09 1 nnUNet_train 3d_lowres nnUNetTrainerV2 09 2 nnUNet_train 3d_lowres nnUNetTrainerV2 09 3 nnUNet_train 3d_lowres nnUNetTrainerV2 09 4
nnUNet_train 3d_cascade_fullres nnUNetTrainerV2CascadeFullRes 09 0
测试
预测
# lowres预测 nnUNet_predict -i /root/nnUNet_raw_data_base/nnUNet_raw_data/Task009_Spleen/imagesTs -o /root/nnUNet_trained_models/nnUNet/3d_lowres/Task009_Spleen/nnUNetTrainerV2__nnUNetPlansv2.1/fold_0/infer -t 09 -m 3d_lowres
# fullres预测 nnUNet_predict -i /root/nnUNet_raw_data_base/nnUNet_raw_data/Task009_Spleen/imagesTs -o /root/nnUNet_trained_models/nnUNet/3d_fullres/Task009_Spleen/nnUNetTrainerV2__nnUNetPlansv2.1/fold_0/infer -t 09 -m 3d_fullres
# lowres预测 nnUNet_predict -i /root/nnUNet_raw_data_base/nnUNet_raw_data/Task009_Spleen/imagesTs -o /root/nnUNet_trained_models/nnUNet/3d_cascade_fullres/Task009_Spleen/nnUNetTrainerV2CascadeFullRes__nnUNetPlansv2.1/fold_0/infer -t 09 -m 3d_cascade_fullres
评价
nnUNet_evaluate_folder -ref labelsTs_dir -pred infer_dir -l 1
labelsTs_dir
, 测试集的label
;infer_dir
, 测试集的预测mask
。如果是四分类,则
-l 1 2 3
nnunet入门之一 (CT图像分割)相关推荐
- nnU-Net: 基于U-Net医学图像分割技术的自适应框架
** nnU-Net: 基于U-Net医学图像分割技术的自适应框架 ** https://arxiv.org/pdf/1809.10486.pdf 作者:Fabian Isensee 提要 U-Net ...
- 三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用
一. 概述 此系统实现了常见的VTK四视图,实现了很好的CT图像分割,可以用于骨骼,头部,肺部,脂肪等分割,,并且通过三维重建实现可视化.使用了第三方库 VTK,ITK 实现分割和生不重建. 窗口分为 ...
- 肺部CT图像分割及重建系统
一. 系统概况 我们实现了一个系统,可以从CT图像中将肺部从胸腔中分离出来,并且通过三维重建实现可视化.该系统是基于Visual Studio 2013平台,借助VTK-7.0和Qt5.6开源库通过C ...
- 基于粒子群优化二维Otsu的肺CT图像分割算法
1.内容简介 略 488-可以交流.咨询.答疑 2.内容说明 随着大气污染的加剧和环境的破坏,肺癌患者急剧增加,肺癌成为危害人 类健康最大的恶性肿瘤,因此肺癌治疗迫在眉睫.当前,肺肿瘤检查的主要方 式 ...
- Jetson Nano入门(图像分类+图像分割+人脸识别)
Jetson Nano入门(图像分类+图像分割+人脸识别) 一.认识Jetson Nano 二.Jetson Nano准备工作 1.配件 2.系统烧写 三.Jetson平台软件资源测试功能 1. je ...
- 全球肝脏肿瘤病灶区CT图像分割挑战大赛,联想E-Health夺得冠军
本文讲的是全球肝脏肿瘤病灶区CT图像分割挑战大赛,联想E-Health夺得冠军,在近日结束的全球LiTS (Liver Tumor Segmentation Challenge,肝脏肿瘤病灶区CT图像 ...
- 【图像分割】基于模糊聚类FCM和改进的模糊聚类算法实现CT图像分割matlab代码
1 简介 医学影像分割的基本目标是将图像分割成不同的解剖组织,从而可以从背景中提取出感兴趣区域.因为图像的低分辨率和弱对比度,实现医学影像分割是一件具有挑战的任务.而且,这个任务由于噪声和伪阴影变得更 ...
- 深度学习从入门到精通——图像分割之DeepLab系列算法
DeepLab系列算法 图像分割传统做法 解决方案 参数计算 图像金字塔 SPP-Layer 常用的多尺度提取方法 ASPP(atrous convolution SPP) deepLabv3+ 图像 ...
- CT图像分割dicom文件与nii.gz文件预处理----窗宽(window width)和窗位(window level)的设置
最近被CT图像的值弄得很烦,记录一下. CT分割也是个很热门的话题,病灶分割,器官分割等. CT图像大多是两种格式.dcm和nii.gz,当然也有别的,但这里我就不说别的,就说这两种常用的. .dcm ...
最新文章
- AI 芯片和传统芯片的区别
- 给自己Mark一下要学习的东西
- 剑指offer之【调整数组顺序使奇数位于偶数前面】
- JavaSE(二十三)——JVM
- electron开发
- python—004
- 10月20日中国域名商解析量十四强:易名中国季军
- 用python画圆形彩虹_python学习之GUI(pygame)
- [CCS] CCS的安装及配置
- 怎样用stm32驱动ds18b20温度芯片
- 前端实习一个多月总结
- 3 二十五项反措--防止电气误操作及机组上电事故
- 登陆验证java代码怎么写_实现AJAX+JAVA用户登陆注册验证的代码
- 股市里的定律-福克兰定律
- java通过SMS短信平台实现发短信的功能
- 一、Linux 教程-基础
- 【笔记】CMake构建C++工程
- Ed2k协议背景介绍及eMule协议的整体架构
- 免费图床,看这一篇就够了!
- 插入u盘需重启计算机,电脑一插u盘就重启的原因及其解决方案
热门文章
- java libusb_Windows下的Java访问USB设备解决之道(翻译Java libusb / libusb-win32 wrapper)收...
- 个人收藏的一些资源网站
- visualSVN server的安装和使用
- Cannot read properties of undefined (reading ‘extraneous‘) npm install时
- C#中的EXCEL的查找操作
- iptable 笔记
- dos2unix和unix2dos命令使用
- dos2unix命令找不到怎么办
- [技术讨论]为什么运算放大器有共模输入电压范围限制呢,详解在这里
- SP服务商Java短信平台的软件模型和实现(吴宏杰,赵雷,杨季文,苏州大学计算机科学和技术学院)...