当前位置: 首页 > news >正文

nnunet入门之一 (CT图像分割)

目录

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

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图像分割)

目录安装环境数据处理预处理训练测试MIC-DKFZ/nnUNet 选择Linux环境运行该项目,Windows环境需要更改较多的参数,暂不支持。 安装环境 安装cuda, cudnn,已安装的检测cuda版本 检测cuda版本: nvcc -v cd /usr/local nvidia-smi&…...

从0到1_批量下载视频

简介:真实从0到1,童叟无欺~ 目标:用python批量下载搜索视频,以“CG 服装”为例 搜索图片就不放啦,不能过审 本章主要介绍如何用python把搜索到的视频直接下载到自己的本地文件夹中~ 介绍一下工作…...

CNCF x Alibaba云原生技术公开课 第十二章 可观测性:监控与日志

1、监控 监控类型 资源监控:cpu、内存、网络等。性能监控:apm监控,一般是通过一些 Hook 的机制在,在虚拟机层、字节码执行层通过隐式调用,或者是在应用层显示注入,获取更深层次的一个监控指标&#xff0c…...

C语言宏定义几个问题

1.#define Ant A虽说做的是将代码中Ant替换成A,但是是整体的替换,不能将整体分离替换。 不带宏参定义一般形式如下: 格式: #define 标识符 字符串 其中“标识符”为所定义的宏名,“字符串”可以是常数、表达式、格式串…...

王道计算机组成原理课代表 - 考研计算机 第二章 数据的表示和运算 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 数据的表示和运算 章节知识点总结的十分全面,涵括了《计算机组成原理…...

springboot集成mahout实现简单基于协同过滤算法的文章推荐算法

文章目录前言1.建表并且生成一些数据首先,建立一个用户文章操作表(user_article_operation)使用case when语句简单分析数据2. 代码与测试只需要根据表生成相应实体类(注意要加一个value属性来存储分数)主要代码如下&am…...

自动驾驶介绍系列 ———— 看门狗

文章目录硬件看门狗软件看门狗差异分析延申窗口看门狗硬件看门狗 硬件看门狗的本质上是一个定时器电路。通常存在一个输入,输入到MCU的RST端。在正常工作状态下,MCU每隔固定时间间隔会输出一个信号给RST端,实现对看门狗端清零。如果在指定的时…...

今天打开个税APP,我直接人麻了!

点击上方“码农突围”,马上关注这里是码农充电第一站,回复“666”,获取一份专属大礼包真爱,请设置“星标”或点个“在看这是【码农突围】的第 432 篇原创分享作者 l 突围的鱼来源 l 码农突围(ID:smartyuge&…...

javascript进阶学习笔记(含AJAX)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、JS变量(var、let和const)二、for/in循环三、正则表达式语法:正则表达式修饰符:正则表达式模式字符串方法&…...

今年没有金三银四

最近好几个铁子咨询目前的大环境如何,甚至还有几个CTO和总监级别的大佬想跳槽问有没有对应的岗位。 又到了每年金三银四的时间点,往年(去年除外)这个时候用工市场都是一遍火热,大家跳槽涨薪好不快活。 面对这些咨询我…...

NFS - Network FileSystem网络文件系统的实现原理

文章目录PreNFS简介NFS共享数据结构图NFS服务器的实现原理是否安装nfs安装配置NFSPre NFS - MIPS架构下构建NFS共享目录服务 NFS简介 NFS的全称是Network FileSystem,即网络文件系统 NFS最初是由 Sun Microsytem 公司开发出来的,主要实现的功能是让网络…...

C#【汇总篇】语法糖汇总

文章目录0、语法糖简介1、自动属性2、参数默认值和命名参数3、类型实例化4、集合4.1 初始化List集合的值4.2 取List中的值5、隐式类型(var)6、扩展方法【更换测试实例】7、匿名类型(Anonymous type)【待补充】8、匿名方法&#xf…...

高完整性系统工程(一): Safety Engineering, HAZOP Fault Tree Analysis

目录 1. 因果性不等同于相关性 2. HAZOP 2.1 学习HAZOP 2.2 HAZOP概览 2.3 Assessing Hazard Risks 评估 2.4 示例场景 2.5 HAZOP Guidewords 2.6 HAZOP Process 2.7 HAZOP Outcomes 2.8 HAZOP Summary 3. FAULT TREE ANALYSIS 3.1 Analysis Outcomes 1. 因果性不等…...

VGG16分类模型的网页界面(Flask,keras)

开发一个网页版的VGG16模型界面可以分为以下几个步骤: 步骤1:数据准备 首先要准备一组图片数据集,建议使用ImageNet数据集,该数据集包含超过1000个类别和100万张图像。您可以将ImageNet数据集转换为Keras的格式。如果您没有Imag…...

互联网摸鱼日报(2023-03-12)

互联网摸鱼日报(2023-03-12) InfoQ 热门话题 又拍云邵海杨:25年Linux老兵聊DevOps八荣八耻 快猫来炜:如何端好运维的饭碗 作业帮聂安:运维如何转型,听听作业帮的OPaS思路 CTO药方:如何搭建运…...

SpringBoot异常处理?用这两个就够啦!

​ 在日常项目中,我们难免会遇到系统错误的情况。如果对系统异常的情况不做处理,Springboot本身会默认将错误异常作为接口的请求返回。 GetMapping("/testNorError") public void testNorError() {try {throw new MyException(6000, "我…...

mysql-查询重复数据的条数-count

查询重复数据的条数 select name , count(*) from table group by name; 查询结果:查询表table中name相同重复的个数 补充:count的用法 查询一个表中总共多少行(多少条数据) select count (*) from table 小结 …...

【Java枚举类】使用enum关键词定义枚举类

使用说明 1.使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类 2.枚举类的构造器只能使用 private 权限修饰符 3.枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾)。列出的 实例系统会自动添加 public static final 修饰 4.必须在…...

第十四届蓝桥杯三月真题刷题训练——第 8 天

目录 第 1 题:分数 题目描述 运行限制 代码: 第 2 题:回文日期 题目描述 输入描述 输出描述 输入输出样例 运行限制 代码: 第 3 题:迷宫 代码: 第 1 题:分数 题目描述 本题为填空题…...

鼎阳SDS2074X Plus免费“升级”(破解)备忘录

鼎阳SDS2074X Plus从基础参数来看,在一众国产示波器里并不出彩。但作为一款可以免费“升级”到【1】4通道2GSa/s的采样率,500MHz分析带宽,200Mpts存储深度的数字示波器(可惜原配的是200MHz的探头,500MHz的探头还是贵&a…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

goreplay

1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...

el-amap-bezier-curve运用及线弧度设置

文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 ‌el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。‌ 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...

Spring是如何实现无代理对象的循环依赖

无代理对象的循环依赖 什么是循环依赖解决方案实现方式测试验证 引入代理对象的影响创建代理对象问题分析 源码见:mini-spring 什么是循环依赖 循环依赖是指在对象创建过程中,两个或多个对象相互依赖,导致创建过程陷入死循环。以下通过一个简…...

Qt/C++学习系列之列表使用记录

Qt/C学习系列之列表使用记录 前言列表的初始化界面初始化设置名称获取简单设置 单元格存储总结 前言 列表的使用主要基于QTableWidget控件,同步使用QTableWidgetItem进行单元格的设置,最后可以使用QAxObject进行单元格的数据读出将数据进行存储。接下来…...

Unity-ECS详解

今天我们来了解Unity最先进的技术——ECS架构(EntityComponentSystem)。 Unity官方下有源码,我们下载源码后来学习。 ECS 与OOP(Object-Oriented Programming)对应,ECS是一种完全不同的编程范式与数据架构…...