目录

  • 安装环境
  • 数据处理
  • 预处理
  • 训练
  • 测试

MIC-DKFZ/nnUNet
选择Linux环境运行该项目,Windows环境需要更改较多的参数,暂不支持。

安装环境

  1. 安装cuda, cudnn,已安装的检测cuda版本

    检测cuda版本:

    • nvcc -v
    • cd /usr/local
    • nvidia-smi(错误方式)
  2. 安装对应cuda版本的pytorch

  3. 验证

    python -c 'import torch;print(torch.backends.cudnn.version())'
    # 8005, 显示类似此内容
    
    python -c 'import torch;print(torch.__version__)'
    # 1.10.1+cu111, 显示类似此内容
    
  4. 安装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上,否则的话,速度会慢很多。

  5. 安装hiddenlayer(可选)

    pip install hiddenlayer
    

数据处理

  1. 文件夹目录

    └─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...
    
  2. 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,归一化的方式不同)

  3. 转换数据

    nnUNet_convert_decathlon_task -i /xxx/Task09_Spleen
    

    转换的数据存在nnUNet_raw_data_base/nnUNet_raw_data/Task009_Spleen,唯一区别就是imagesTrimagesTs里的文件名加了后缀"_0000"

    注意:此处Task09_Spleen变为Task009_Spleen

预处理

# 只进行3d预处理,不进行2d预处理
nnUNet_plan_and_preprocess -t 09 -pl2d None

主要对数据进行预处理,包括Crop, Resample, Normalization等。

训练

如果训练断了,可以在命令行后面加-c继续训练。

  1. Lowres训练

    nnUNet_train 3d_lowres nnUNetTrainerV2 09 0
    
  2. Fullres训练

    nnUNet_train 3d_fullres nnUNetTrainerV2 09 0
    
  3. 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
    

测试

  1. 预测

    # 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
    
  2. 评价

    nnUNet_evaluate_folder -ref labelsTs_dir -pred infer_dir -l 1
    

    labelsTs_dir, 测试集的labelinfer_dir, 测试集的预测mask

    如果是四分类,则-l 1 2 3

nnunet入门之一 (CT图像分割)相关推荐

  1. nnU-Net: 基于U-Net医学图像分割技术的自适应框架

    ** nnU-Net: 基于U-Net医学图像分割技术的自适应框架 ** https://arxiv.org/pdf/1809.10486.pdf 作者:Fabian Isensee 提要 U-Net ...

  2. 三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用

    一. 概述 此系统实现了常见的VTK四视图,实现了很好的CT图像分割,可以用于骨骼,头部,肺部,脂肪等分割,,并且通过三维重建实现可视化.使用了第三方库 VTK,ITK 实现分割和生不重建. 窗口分为 ...

  3. 肺部CT图像分割及重建系统

    一. 系统概况 我们实现了一个系统,可以从CT图像中将肺部从胸腔中分离出来,并且通过三维重建实现可视化.该系统是基于Visual Studio 2013平台,借助VTK-7.0和Qt5.6开源库通过C ...

  4. 基于粒子群优化二维Otsu的肺CT图像分割算法

    1.内容简介 略 488-可以交流.咨询.答疑 2.内容说明 随着大气污染的加剧和环境的破坏,肺癌患者急剧增加,肺癌成为危害人 类健康最大的恶性肿瘤,因此肺癌治疗迫在眉睫.当前,肺肿瘤检查的主要方 式 ...

  5. Jetson Nano入门(图像分类+图像分割+人脸识别)

    Jetson Nano入门(图像分类+图像分割+人脸识别) 一.认识Jetson Nano 二.Jetson Nano准备工作 1.配件 2.系统烧写 三.Jetson平台软件资源测试功能 1. je ...

  6. 全球肝脏肿瘤病灶区CT图像分割挑战大赛,联想E-Health夺得冠军

    本文讲的是全球肝脏肿瘤病灶区CT图像分割挑战大赛,联想E-Health夺得冠军,在近日结束的全球LiTS (Liver Tumor Segmentation Challenge,肝脏肿瘤病灶区CT图像 ...

  7. 【图像分割】基于模糊聚类FCM和改进的模糊聚类算法实现CT图像分割matlab代码

    1 简介 医学影像分割的基本目标是将图像分割成不同的解剖组织,从而可以从背景中提取出感兴趣区域.因为图像的低分辨率和弱对比度,实现医学影像分割是一件具有挑战的任务.而且,这个任务由于噪声和伪阴影变得更 ...

  8. 深度学习从入门到精通——图像分割之DeepLab系列算法

    DeepLab系列算法 图像分割传统做法 解决方案 参数计算 图像金字塔 SPP-Layer 常用的多尺度提取方法 ASPP(atrous convolution SPP) deepLabv3+ 图像 ...

  9. CT图像分割dicom文件与nii.gz文件预处理----窗宽(window width)和窗位(window level)的设置

    最近被CT图像的值弄得很烦,记录一下. CT分割也是个很热门的话题,病灶分割,器官分割等. CT图像大多是两种格式.dcm和nii.gz,当然也有别的,但这里我就不说别的,就说这两种常用的. .dcm ...

最新文章

  1. AI 芯片和传统芯片的区别
  2. 给自己Mark一下要学习的东西
  3. 剑指offer之【调整数组顺序使奇数位于偶数前面】
  4. JavaSE(二十三)——JVM
  5. electron开发
  6. python—004
  7. 10月20日中国域名商解析量十四强:易名中国季军
  8. 用python画圆形彩虹_python学习之GUI(pygame)
  9. [CCS] CCS的安装及配置
  10. 怎样用stm32驱动ds18b20温度芯片
  11. 前端实习一个多月总结
  12. 3 二十五项反措--防止电气误操作及机组上电事故
  13. 登陆验证java代码怎么写_实现AJAX+JAVA用户登陆注册验证的代码
  14. 股市里的定律-福克兰定律
  15. java通过SMS短信平台实现发短信的功能
  16. 一、Linux 教程-基础
  17. 【笔记】CMake构建C++工程
  18. Ed2k协议背景介绍及eMule协议的整体架构
  19. 免费图床,看这一篇就够了!
  20. 插入u盘需重启计算机,电脑一插u盘就重启的原因及其解决方案

热门文章

  1. java libusb_Windows下的Java访问USB设备解决之道(翻译Java libusb / libusb-win32 wrapper)收...
  2. 个人收藏的一些资源网站
  3. visualSVN server的安装和使用
  4. Cannot read properties of undefined (reading ‘extraneous‘) npm install时
  5. C#中的EXCEL的查找操作
  6. iptable 笔记
  7. dos2unix和unix2dos命令使用
  8. dos2unix命令找不到怎么办
  9. [技术讨论]为什么运算放大器有共模输入电压范围限制呢,详解在这里
  10. SP服务商Java短信平台的软件模型和实现(吴宏杰,赵雷,杨季文,苏州大学计算机科学和技术学院)...