前言
在使用monai.data.CacheDataset
导入数据,以及monai.data.DataLoader
时,使用json
文件组织数据。
那么假设我们的数据图像文件放在images
文件夹里面,标签数据放在labels
文件夹里面,如何生成这种格式的json
文件呢,并且训练集和验证集的比例为8:2
代码
import json
import os
import random
if __name__ == '__main__':
demo = False
if demo==True:
price={
}
price["a"] = 24
print(price)
with open("ts.json","w") as f:
json.dump(price,f,indent=4)
filedict = {
}
data_dir = "G:/d_disk/airway_datasets"
filenames = os.listdir(os.path.join(data_dir,"train_data_nii"))
training_contents,validation_contents = [], []
val_length = 0
for filename in filenames:
if val_length<(len(filenames)*0.2): # 如果验证集比例小于0.2
if random.randint(1,2) == 1: # 并且随机数为1
# 则放到验证集
dic_content = {
"image":f"train_data_nii/{
filename}",
"label":f"train_label_nii/{
filename}"}
validation_contents.append(dic_content)
else:
# 否则放到训练集
dic_content = {
"image":f"train_data_nii/{
filename}",
"label":f"train_label_nii/{
filename}"}
training_contents.append(dic_content)
else:
# 否则放到训练集
dic_content = {
"image":f"train_data_nii/{
filename}",
"label":f"train_label_nii/{
filename}"}
training_contents.append(dic_content)
labels_contents = {
"0":"background","1":"airway"}
filedict["labels"] = labels_contents
filedict["training"] = training_contents
filedict["validation"] = validation_contents
with open("dataset.json","w") as f:
json.dump(filedict,f,indent=4)
完成!