Hi, the below code increases the memory usage linearly, and at certain point I am not able to train the model. Surprisingly it is the first time I am facing problem with the following code?
doubts:
- Vector images, Vector image is the only new data that is involved in the following code, commenting line which loads vector images makes the code run normally.
I really have no idea, any hint or suggestion would be highly appreciated.
Thank you,
Nilesh Pandey
class ImgAugTransform:
def __init__(self):
sometimes = lambda aug: iaa.Sometimes(0.5, aug)
self.aug = iaa.Sequential([
iaa.Affine(
translate_percent={"x":0.2, "y": 0.1},
rotate=40,
mode='symmetric'
)
])
def __call__(self, img, img1, img2,img3):
img = np.array(img)
img1 = np.array(img1)
img2 = np.array(img2)
img3 = np.array(img3)
return self.aug.augment_image(img), self.aug.augment_image(img1), self.aug.augment_image(img2),self.aug.augment_image(img3)
class Dataset(data.Dataset):
"""Dataset for XXX.
"""
def __init__(self,height):
super(Dataset, self).__init__()
# base setting
self.files = []
self.vector = []
with open("/home/XXX/train.txt", 'r') as f:
for line in f.readlines():
im_name, v_name = line.strip().split()
self.files.append(im_name)
self.vector.append(v_name)
self.masks = os.listdir("/home/XXX/")
self.range = np.arange(len(self.masks))
self.rotate = ImgAugTransform()
def name(self):
return "XXX"
def transformData(self, src, mask, target,ref_lr):
if random.random() > 0.5:
src, mask, target,ref_lr = self.rotate(src,mask, target,ref_lr)
# Transform to tensor
src = TF.to_tensor(src)
mask = TF.to_tensor(mask)
target = TF.to_tensor(target)
ref_lr= TF.to_tensor(ref_lr)
src = TF.normalize(src,(0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
mask = TF.normalize(mask, (0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
target = TF.normalize(target,(0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
ref_lr = TF.normalize(ref_lr,(0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
return src, mask, target,ref_lr
def __getitem__(self, index):
file = self.files[index]
mask = self.masks[random.choice(self.range)]
vector = self.vector[index]
# person image
targ = rescale_intensity(plt.imread(osp.join('/homeXXX/', file))/255)#targ = rescale_intensity(plt.imread(osp.join('/homeXXX', file))/255)
vec = rescale_intensity(plt.imread(osp.join('/home/XXX', vector))/255)
mask = rescale_intensity(plt.imread(osp.join('/home/XXX', 'maskA', mask))/255)
targ = resize(targ,(256,256))
vec = resize(vec,(256,256))
mask = resize(mask,(256,256))
ms2 = mask*1
ms2 = np.expand_dims(ms2,axis=2)
ms2 = np.repeat(ms2,repeats=3,axis=2)
src =targ*(1-ms2)+ms2
src = Image.fromarray(np.uint8(src*255))
mask = Image.fromarray(np.uint8(ms2*255))
target = Image.fromarray(np.uint8(targ*255))
vec = Image.fromarray(np.uint8(vec*255))
source,mask,target,ref = self.transformData(src, mask, target, vec)
return source,mask,target,ref