nnUNet v2数据准备及格式转换 (二)

news2024/11/28 14:29:20

如果你曾经使用过nnUNet V1,那你一定明白数据集的命名是有严格要求的,必须按照特定的格式来进行命名才能正常使用。

这一节的学习需要有数据,如果你有自己的数据,可以拿自己的数据来实验,如果没有,可以用十项全能数据集,在之前分享过
nnUNet实战一使用预训练nnUNet模型进行推理,这篇文章里有数据集的下载地址和方法。如果网络问题下载不下来,可以微我。

nnUNet v2 支持的数据格式

在V2版本中支持的数据格式类型更多,默认情况下,支持以下文件格式:

  • NaturalImage2DIO:.png、.bmp、.tif
  • NibabelIO:.nii.gz、.nrrd、.mha
  • NibabelIOWithReorient:.nii.gz、.nrrd、.mha。该阅读器会将图像重新定向为 RAS!
  • SimpleITKIO:.nii.gz、.nrrd、.mha
  • Tiff3DIO:.tif、.tiff。3D tif 图像!由于 TIF 没有存储间距信息的标准化方法,因此 nnU-Net 期望每个 TIF 文件都附带一个同名的 .json 文件,其中包含三个数字(没有单位,没有逗号。只是用空格分隔),每个数字一个方面。

nnU-Net V2 的一大变化是支持多种输入文件类型。将所有内容转换为 .nii.gz 的日子已经一去不复返了!nnU-Net 附带了广泛的读取器+写入器集合,您甚至可以添加自己的读取器+写入器来支持您的数据格式!请参阅此处。

数据集文件夹结构

数据集必须位于该nnUNet_raw文件夹中,

nnUNet_raw/
├── Dataset001_BrainTumour
├── Dataset002_Heart
├── Dataset003_Liver
├── Dataset004_Hippocampus
├── Dataset005_Prostate
├── ...
在每个数据集文件夹中,具有以下结构:
Dataset001_BrainTumour/
├── dataset.json
├── imagesTr
├── imagesTs  # optional
└── labelsTr
nnUNet_raw/Dataset001_BrainTumour/
├── dataset.json
├── imagesTr
│   ├── BRATS_001_0000.nii.gz
│   ├── BRATS_001_0001.nii.gz
│   ├── BRATS_001_0002.nii.gz
│   ├── BRATS_001_0003.nii.gz
│   ├── BRATS_002_0000.nii.gz
│   ├── BRATS_002_0001.nii.gz
│   ├── BRATS_002_0002.nii.gz
│   ├── BRATS_002_0003.nii.gz
│   ├── ...
├── imagesTs
│   ├── BRATS_485_0000.nii.gz
│   ├── BRATS_485_0001.nii.gz
│   ├── BRATS_485_0002.nii.gz
│   ├── BRATS_485_0003.nii.gz
│   ├── BRATS_486_0000.nii.gz
│   ├── BRATS_486_0001.nii.gz
│   ├── BRATS_486_0002.nii.gz
│   ├── BRATS_486_0003.nii.gz
│   ├── ...
└── labelsTr
    ├── BRATS_001.nii.gz
    ├── BRATS_002.nii.gz
    ├── ...

需要注意的是,与第一版本中的文件夹及数据集命名有些许差别
在这里插入图片描述

比如,第一版数据集用 TaskXXXX, V2版本用 DatasetXXX

dataset.json 文件构建

第二版本的 dataset.json 文件也发生了变化

dataset.json 包含 nnU-Net 训练所需的元数据。自版本 1 以来,我们大大减少了必填字段的数量! (第一版见 nnUNet实战一使用预训练nnUNet模型进行推理)

以下是 MSD 的 Dataset005_Prostate 示例中的 dataset.json 的样子:

{ 
 "channel_names": {  # formerly modalities
   "0": "T2", 
   "1": "ADC"
 }, 
 "labels": {  # THIS IS DIFFERENT NOW!
   "background": 0,
   "PZ": 1,
   "TZ": 2
 }, 
 "numTraining": 32, 
 "file_ending": ".nii.gz"
 "overwrite_image_reader_writer": "SimpleITKIO"  # optional! If not provided nnU-Net will automatically determine the ReaderWriter
 }

Channel_names 确定 nnU-Net 使用的归一化。如果通道被标记为“CT”,则将使用基于前景像素强度的全局归一化。如果是其他情况,将使用 per-channel z-scoring

相对于 nnU-Net v1 的重要变化:

  • modality现在称为channel_names,以消除对医学图像的强烈偏见
  • Lable 的结构不同(name -> int 而不是 int -> name)。这样做的好处有助于层次标签的使用,具体见 【nnUNet v2版本与V1版有什么不同?】 这一部分
  • 添加file_ending字段:以支持不同的输入文件类型
  • overwrite_image_reader_writer可选!可用于指定ReaderWriter 类。如果不提供,nnU-Net会自动判断ReaderWriter
  • regions_class_order仅用于基于regions的训练,具体见 region based trianing

由于V2版中,不需要指定训练和测试集的图像名字,减少了很多字段,构建起来就很简单了。可以把上述 dataset.json 复制下来,按照自己的数据集手动修改一下。

nnUNet v1 的数据格式如何转换为 V2 的格式

假设有一个数据集已经在 V1 上跑过了,如果您要从 v1 上迁移过来,请使用nnUNetv2_convert_old_nnUNet_dataset转换现有数据集。

迁移 nnU-Net v1 任务的示例:

nnUNetv2_convert_old_nnUNet_dataset INPUT_FOLDER OUTPUT_FOLDER
eg: nnUNetv2_convert_old_nnUNet_dataset /nnUNet_raw_data_base/nnUNet_raw_data/Task131_WORD/ Dataset131_WORD
  • input_folder:指的是 V1 版本里要转换的数据(需要给出具体地址)
  • output_folder: 只需要给出名字,不需要具体地址

此处迁移,主要是自动帮你修改 dataset.json.并帮你把数据放入 V2 的 nnUNet_raw 文件夹里面去

文章持续更新,可以关注微信公众号【医学图像人工智能实战营】获取最新动态,一个关注于医学图像处理领域前沿科技的公众号。坚持已实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。只有实践才能成长的更快,关注我们,一起学习进步~

我是Tina, 我们下篇博客见~

白天工作晚上写文,呕心沥血

觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM类的加载过程

加载过程 JVM的类的加载过程分为五个阶段:加载、验证、准备、解析、初始化。 加载   加载阶段就是将编译好的的class文件通过字节流的方式从硬盘或者通过网络加载到JVM虚拟机当中来。(我们平时在Idea中书写的代码就是放在磁盘中的,也可以通…

Kubernetes可视化管理工具Kuboard部署使用及k8s常用命令梳理记录

温故知新 📚第一章 前言📗背景📗目的📗总体方向 📚第二章 安装 Kubernetes 多集群管理工具 - Kuboard v3📗部署方式📗通过Kuboard v3 - Kubernetes安装(在master节点执行)&#x1f4…

大学生攻略:正确的购买和使用你的电脑

笔者是计算机专业在读大学生,从小学开始接触电脑,进行过各种操作(更换硬件维修,换系统,系统命令行,管理员权限,无视风险继续安装,没有这条 ),相对大学生有一定参考价值。 购买 1.买…

【Java并发】聊聊AQS原理机制

什么是AQS AbstractQueuedSynchronizer是一个抽象队列同步器,主要是实现并发工具类的基石。 是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石, 通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个int类变量表示…

仿京东 项目笔记1

目录 项目代码1. 项目配置2. 前端Vue核心3. 组件的显示与隐藏用v-if和v-show4. 路由传参4.1 路由跳转有几种方式?4.2 路由传参,参数有几种写法?4.3 路由传参相关面试题4.3.1 路由传递参数(对象写法)path是否可以结合pa…

MyBatis-Plus —— 初窥门径

前言 在前面的文章中荔枝梳理了MyBatis及相关的操作,作为MyBatis的增强工具,MyBatis-Plus无需再在xml中写sql语句,在这篇文章中荔枝将梳理MyBatis-Plus的基础知识并基于SpringBoot梳理MyBatis-Plus给出的两个接口:BaseMapper和ISe…

【微服务部署】三、Jenkins+Maven插件Jib一键打包部署SpringBoot应用Docker镜像步骤详解

前面我们介绍了K8SDockerMaven插件打包部署SpringCloud微服务项目,在实际应用过程中,很多项目没有用到K8S和微服务,但是用到了Docker和SpringBoot,所以,我们这边介绍,如果使用Jenkinsjib-maven-plugin插件打…

第 3 章 栈和队列 (循环队列)

1. 背景说明 和顺序栈相类似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外, 尚需附设两个指针 front 和 rear 分别指示队列头元素及队列尾元素的位置。约定:初始化建空队列时&#x…

测试人:“躺平?不可能的“, 盘点测试人在职场的优势

之前有这么一个段子:有人喜欢创造世界,他们做了程序员;有人喜欢拯救世界,他们做了测试员!近几年,测试工程师在企业究竟是怎么样的发展?随着企业对于用户体验的满意度越来越重视,更加…

vue 从后端取图片返回发现是两张,但自己只要一张图片 怎么操作

1.用JavaScript里边常用的分隔符去操作 item.original_status.user.profile_image_url.split(,)[0] <van-imagewidth"100"height"100":src"item.original_status.user.photo_domain item.original_status.user.profile_image_url.split(,)[0]&quo…

排序算法学习记录-快速排序

快速排序 快速排序关键在于确定一个中间值&#xff0c;使得小于这个中间值的数在左边&#xff0c;大于这个中间值的数在右边。那么中间值该如何确定呢&#xff1f;有以下几种做法 首元素&#xff0c;也就是arr[l]尾元素&#xff0c;也就是arr[r]中间元素&#xff0c;也就是ar…

编译问题:error: ‘printf’ was not declared in this scope

这个错误提示意味着编译器在当前作用域内无法找到 printf 函数的声明。这通常是因为没有包含 <stdio.h> 头文件导致的。 解决方法是在程序中添加 #include <stdio.h> 这一行代码。这个头文件中包含了 printf 函数的声明&#xff0c;告诉编译器如何处理该函数。

第五讲:ADO连接Access前期绑定与后期绑定方法实例(上)

【分享成果&#xff0c;随喜正能量】说到得失&#xff0c;不管是得是失&#xff0c;都各有因缘。是我的&#xff0c;不必力争&#xff0c;自会得到&#xff1b;不是你的&#xff0c;即使千方百计取得&#xff0c;也会随风而逝。 如果你想获得安宁与自由&#xff0c; 那么让脚步…

浅析ARMv8体系结构:异常处理机制

文章目录 概述异常类型中断终止Abort复位Reset系统调用 异常处理流程异常入口异常返回异常返回地址 堆栈选择 异常向量表异常向量表的配置 同步异常解析相关参考 概述 异常处理指的是处理器在运行过程中发生了外部事件&#xff0c;导致处理器需要中断当前执行流程转而去处理异…

swaggo的一点小理解

如有错误&#xff0c;希望指出&#xff0c;谢谢&#xff01; 很低级的概念不清&#xff0c;大佬嘴下留情。 1.关于swag的注释 我的理解是这些注释是专门提供给Swagger UI界面测试使用的&#xff0c;根据注释内容告诉swag文档这个函数应该有哪些参数&#xff0c;从什么路由走&…

基于图像切割计算轨迹相似度

目录 背景思路与核心代码数值实验优缺点分析参考文献 背景 在前面2文&#xff0c;我们分别讨论了利用夹角余弦来计算轨迹相似度和利用缓冲原理来计算轨迹相似度两种方法&#xff0c;前者可以作为一个baseline提供参考&#xff0c;后者的计算更符合人们的感官和事实&#xff0c…

1. 企业大数据开发流程

文章目录 1. 数据建设流程1.1 业务需求&#xff08;占40%&#xff09;1.2 需求调研1.3 概要设计1.4 详细设计1.5 数据开发&#xff08;占20%&#xff09;1.6 数据交付 学习链接 1. 数据建设流程 即当我们接到一个新的需求后&#xff08;需求文档&#xff09;&#xff0c;我们应…

vmware 16增加硬盘容量并在Ubuntu 18.04上边格式化并挂载

参考了《增加 VM虚拟机硬盘容量》 《Linux学习之分区挂载》中有给VMWare 16虚拟机添加一块硬盘的内容&#xff0c;需要先参考添加硬盘。 sudo mkfs.ext4 /dev/sda4给/dev/sda4进行ext4格式化。 sudo mkdir /mountsda4新建一个挂载目录。 sudo mount -t ext4 /dev/sda4 /mo…

羊城杯-2023-Crypto

文章目录 Danger_RSA题目描述&#xff1a;题目分析&#xff1a; Easy_3L题目描述&#xff1a;题目分析&#xff1a; XOR贯穿始终题目描述&#xff1a;题目分析&#xff1a; MCeorpkpleer题目描述&#xff1a;题目分析&#xff1a; SigninCrypto题目描述&#xff1a;题目分析&am…

项目——群英阁(galaxyHub)

目录 一、项目概述二、设计思路三、项目流程四、项目代码头文件&#xff1a;&#x1f447;server端&#xff1a;&#x1f447;client端&#xff1a;&#x1f447; 五、运行效果 一、项目概述 项目中文名称&#xff1a;群英阁 项目英文名称&#xff1a;galaxyHub 利用UDP通信实现…