[2162c1]: / data_generator_3D.py

Download this file

91 lines (76 with data), 3.3 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import torch
import numpy as np
import time
import math
import os
import random
import nibabel as nib
base_path = '.../data/train_valid_test/' # 改成你的路径
size_x = 240
size_y = 160
size_z = 48
class Covid19TrainSet():
def __iter__(self):
file = "/home/ubuntu/zhaoqianfei/data/train_valid_test/config/image_train_names.txt"
train_list = []
with open(file) as f:
for line in f:
for i in line.split():
train_list.append(int(i))
for i in train_list:
image = nib.load(base_path + 'image/' + str(i) + '.nii.gz')
image = np.asarray(image.dataobj)[np.newaxis, np.newaxis, :, :, :]
label = nib.load(base_path + 'label/' + str(i) + '.nii.gz')
label = np.asarray(label.dataobj)[np.newaxis, np.newaxis, :, :, :]
x = image.shape[2]
y = image.shape[3]
z = image.shape[4]
x_random = random.randrange(0, x-size_x)
y_random = random.randrange(0, y-size_y)
z_random = random.randrange(0, z-size_z) if z > 64 else 0
image_random = image[:,:, x_random:x_random+size_x, y_random:y_random+size_y, z_random:z_random+size_z]
label_random = label[:,:, x_random:x_random+size_x, y_random:y_random+size_y, z_random:z_random+size_z]
yield str(i) + '.nii.gz', image_random, label_random
return
def __len__(self):
return 80
class Covid19EvalSet():
def __iter__(self):
file = ".../data/train_valid_test/config/image_valid_names.txt"
train_list = []
with open(file) as f:
for line in f:
for i in line.split():
train_list.append(int(i))
for i in train_list:
image = nib.load(base_path + 'image/' + str(i) + '.nii.gz')
image = np.asarray(image.dataobj)[np.newaxis, np.newaxis, :, :, :]
label = nib.load(base_path + 'label/' + str(i) + '.nii.gz')
label = np.asarray(label.dataobj)[np.newaxis, np.newaxis, :, :, :]
z = image.shape[4]
z_random = random.randrange(0, z-size_z) if z > 64 else 0
image_random = image[:,:, :, :, z_random:z_random+size_z]
label_random = label[:,:, :, :, z_random:z_random+size_z]
yield str(i) + '.nii.gz', image_random, label_random
return
def __len__(self):
return 13
class Convid19TestSet:
def __iter__(self):
file = ".../data/train_valid_test/config/image_test_names.txt"
train_list = []
with open(file) as f:
for line in f:
for i in line.split():
train_list.append(int(i))
#train_list = [31]
for i in train_list:
image = nib.load(base_path + 'image/' + str(i) + '.nii.gz')
image = np.asarray(image.dataobj)[np.newaxis, np.newaxis, :, :, :]
label = nib.load(base_path + 'label/' + str(i) + '.nii.gz')
label = np.asarray(label.dataobj)[np.newaxis, np.newaxis, :, :, :]
yield str(i) + '.nii.gz', image, label
return
'''train_loader = Covid19TrainSet()
for step, (name, X, y) in enumerate(train_loader):
print("???")'''