nnunet(十八) dataset_conversion

本文介绍了ACDC项目的数据集构建,包括dataset.json的内容结构、MRI模态标签、训练和测试数据数量,以及采用的五折交叉验证方案。关键信息包括数据组织形式、标签定义及文件路径管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 json_dict = OrderedDict()
    json_dict['name'] = "ACDC"#文件夹名称
    json_dict['description'] = "cardias cine MRI segmentation"#描述
    json_dict['tensorImageSize'] = "4D"#数据组织形式
    json_dict['reference'] = "see ACDC challenge"#引用
    json_dict['licence'] = "see ACDC challenge"#许可
    json_dict['release'] = "0.0"#版本
    json_dict['modality'] = {#模式
        "0": "MRI",
    }
    json_dict['labels'] = {#标签
        "0": "background",
        "1": "RV",
        "2": "MLV",
        "3": "LVC"
    }
    json_dict['numTraining'] = len(all_train_files)#训练数据个数
    json_dict['numTest'] = len(all_test_files)#测试数据个数
    json_dict['training'] = [{'image': "./imagesTr/%s.nii.gz" % i.split("/")[-1][:-12], "label": "./labelsTr/%s.nii.gz" % i.split("/")[-1][:-12]} for i in
                             all_train_files]#所有训练数据名称
    json_dict['test'] = ["./imagesTs/%s.nii.gz" % i.split("/")[-1][:-12] for i in all_test_files]#测试数据名称

    save_json(json_dict, os.path.join(out_folder, "dataset.json"))#保存datase.json

    # create a dummy split (patients need to be separated)创建模拟的划分
    splits = []
    patients = np.unique([i[:10] for i in all_train_files])#获取患者文件夹
    patientids = [i[:-12] for i in all_train_files]#获取患者ID

   
 kf = KFold(5, True, 12345)#5折交叉验证,并且打乱数据,设置随机种子点
    for tr, val in kf.split(patients):#获取5折分别对应的训练集和验证集的划分
        splits.append(OrderedDict())#创建一个空的有序字典
        tr_patients = patients[tr]#获取训练数据
        splits[-1]['train'] = [i[:-12] for i in all_train_files if i[:10] in tr_patients]#分配为训练数据
        val_patients = patients[val]#获取验证数据
        splits[-1]['val'] = [i[:-12] for i in all_train_files if i[:10] in val_patients]#分配为验证数据

    save_pickle(splits, "/media/fabian/nnunet/Task027_ACDC/splits_final.pkl")#保存5折划分

这些文件挡住包含了一些数据转换和dataset.json和splits_final.pkl的文件

当然dataset.json的测试文件和相关的描述信息可以没有。而相应的五折交叉验证相关的splits_final.pkl也可以没有。

### nnUNet 数据预处理教程 #### 修改 Patch Size 和 Batch Size 为了自定义 nnUNet 的预处理部分中的 patch size 和 batch size,可以调整 `nnUNet_preprocessed` 文件夹下的 pkl 计划文件。默认情况下,通过运行以下命令可生成这些文件: ```bash nnUNet_plan_and_preprocess -t XXX --verify_dataset_integrity ``` 这里的 `-t XXX` 参数指定了任务编号或名称[^1]。 #### 自定义数据集准备 当使用自有数据时,在完成转换后应检查位于 `nnUNet` 下的数据结构及 `dataset.json` 文件的内容。这有助于理解如何编写适用于特定数据集的转换脚本;官方提供了多种常见数据集的转换范例供参考[^2]。 对于 Windows 用户来说,成功安装并配置好环境后,将在 `nnUNet_raw_data` 文件夹内发现如下布局:`imagesTr` 存储训练图像,`imagesTs` 用于保存测试样本,而 `labelsTr` 则包含对应的标注信息。此外还有描述性的 JSON 文档来解释数据详情及其路径位置[^3]。 #### 执行预处理过程 推荐直接编辑 Python 脚本来代替命令行操作来进行更精细控制。具体做法是在相应工作区找到名为 `nnUNet_plan_and_preprocess.py` 的文件,并向其传递适当的任务 ID作为参数,例如: ```python import os from nnunet.utilities.task_name_id_conversion import convert_task_to_task001_format task_id = 8 os.system(f'nnUNet_plan_and_preprocess -t {convert_task_to_task001_format(task_id)}') ``` 此段代码展示了怎样调用该函数以启动指定任务号(此处为8)的相关规划与预处理流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值