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也可以没有。