nnUNetv2使用自己数据集出现的问题

1.环境配置

        首先,根据nnUNetv2的官方文档所示,现需要安装nnUNetv2,需要在Linux系统上进行安装。同时配置对应的环境变量,配置/home/user(用户目录下)的环境变量配置文件.bashrc。

pip install nnunetv2

        然后git'下来nnUNet的副本,安装需要的 python包,同时根据自己需求是否安装hiddenlayer。

git clone https://github.com/MIC-DKFZ/nnUNet.git
cd nnUNet
pip install -e .

         上述这些操作都可以根据官方文档中进行操作:nnUNet/documentation/installation_instructions.md at master · MIC-DKFZ/nnUNet (github.com)

2.数据处理

2.1配置存放数据的文件目录结构和对应的环境变量

        这里主要描述的是使用MM_WHS_2017全心数据集进行操作时出现的问题。因为nnUNetv2是一个非常成熟的框架,我们准备好数据集,框架会帮我们进行数据预处理,官方给的文档都是使用命令行来操作。

        首先,先创建一个文件夹,来存放raw原始数据、preprocessed处理后的数据、模型保存文件。分别创建的文件夹结构如下所示。

        按照nnUNetv2官方提示,需要在Linux下的环境变量.bashrc配置文件中增加下面三行。但是我在修改完环境变量之后,使用os读不出来,所以我在nnuetv2.paths将对应的环境变量写死。

export nnUNet_raw = "/home/dluser/Genshin/DYD/PWHSeg/nnUNet/nnUNetFrame/DATASET/nnUNet_raw"
export nnUNet_preprocessed = "/home/dluser/Genshin/DYD/PWHSeg/nnUNet/nnUNetFrame/DATASET/nnUNet_preprocessed"
export nnUNet_results = "/home/dluser/Genshin/DYD/PWHSeg/nnUNet/nnUNetFrame/DATASET/nnUNet_trained_models"
import os

"""
nnunetv2.paths
PLEASE READ paths.md FOR INFORMATION TO HOW TO SET THIS UP
"""


# nnUNet_raw = os.environ.get('nnUNet_raw')
# nnUNet_preprocessed = os.environ.get('nnUNet_preprocessed')
# nnUNet_results = os.environ.get('nnUNet_results')
nnUNet_raw = "/home/dluser/Genshin/DYD/PWHSeg/nnUNet/nnUNetFrame/DATASET/nnUNet_raw"
nnUNet_preprocessed = "/home/dluser/Genshin/DYD/PWHSeg/nnUNet/nnUNetFrame/DATASET/nnUNet_preprocessed"
nnUNet_results = "/home/dluser/Genshin/DYD/PWHSeg/nnUNet/nnUNetFrame/DATASET/nnUNet_trained_models"

 2.2原数据处理

        因为nnUNetv2要求,数据的标签像素值需要从0,1,2....变换。但是MM_WHS_2017数据集中标签的像素值分别为[0, 205, 420, 500, 550, 600, 820, 850],所以需要对像素值进行转换处理。

### nnUNet v2 数据集下载与使用 对于nnUNet v2数据集获取和使用流程,具体步骤如下: #### 获取数据集 为了使用特定于nnUNet v2框架的数据集,通常需要从官方资源或其他可信渠道下载所需数据集。以KiTS19为例,在准备阶段会创建一个Python脚本用于生成描述此数据集特性的`dataset.json`文件[^2]。 #### 创建 `dataset.json` 在转换现有数据集至适合nnUNet使用的格式过程中,需注意v2版本中的配置项有所变化。“模态”字段被重命名为“channel_names”,旨在减少对医疗影像应用的依赖;而标签映射结构调整为名称到整数的形式(name -> int),这有助于更好地支持基于区域的训练模式[^4]。 此外,还引入了新的属性如`file_ending`来兼容多种类型的输入文件,并允许通过设置`overwrite_image_reader_writer`来自定义读写器类,从而增强灵活性。 ```python import json # 示例 dataset.json 的部分结构 dataset_info = { "name": "Dataset040_KiTS", "description": "Kidney Tumor Segmentation Challenge 2019 Dataset converted for nnUNet.", "reference": "...", # 描述数据源的信息 "licence": "...", # 许可证信息 "tensorImageSize": "3D", "numTraining": ..., # 培训样本数量 "numTest": ..., # 测试样本数量 (如果有) "training": [ {"image": "./imagesTr/case_000.nii.gz", "label": "./labelsTr/case_000.nii.gz"}, ... ], "test": ["./imagesTs/case_001.nii.gz"], "modality": { # 已更改为 channel_names "0": "CT" }, "labels": { # 新型 label 映射方式 "background": 0, "kidney": 1, "tumor": 2 } } with open('dataset.json', 'w') as f: json.dump(dataset_info, f, indent=4) ``` #### 预处理过程 一旦完成了上述准备工作,则可以利用内置工具执行进一步的操作,比如构建指纹(`dataset_fingerprint`)以及规划方案(nnUNetPlans)[^3]。这些步骤确保模型能够有效地学习并泛化给定的任务特征。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值