|
|
|
|
@ -101,8 +101,8 @@ class LDSR:
|
|
|
|
|
down_sample_rate = target_scale / 4
|
|
|
|
|
wd = width_og * down_sample_rate
|
|
|
|
|
hd = height_og * down_sample_rate
|
|
|
|
|
width_downsampled_pre = int(wd)
|
|
|
|
|
height_downsampled_pre = int(hd)
|
|
|
|
|
width_downsampled_pre = int(np.ceil(wd))
|
|
|
|
|
height_downsampled_pre = int(np.ceil(hd))
|
|
|
|
|
|
|
|
|
|
if down_sample_rate != 1:
|
|
|
|
|
print(
|
|
|
|
|
@ -110,7 +110,12 @@ class LDSR:
|
|
|
|
|
im_og = im_og.resize((width_downsampled_pre, height_downsampled_pre), Image.LANCZOS)
|
|
|
|
|
else:
|
|
|
|
|
print(f"Down sample rate is 1 from {target_scale} / 4 (Not downsampling)")
|
|
|
|
|
logs = self.run(model["model"], im_og, diffusion_steps, eta)
|
|
|
|
|
|
|
|
|
|
# pad width and height to multiples of 64, pads with the edge values of image to avoid artifacts
|
|
|
|
|
pad_w, pad_h = np.max(((2, 2), np.ceil(np.array(im_og.size) / 64).astype(int)), axis=0) * 64 - im_og.size
|
|
|
|
|
im_padded = Image.fromarray(np.pad(np.array(im_og), ((0, pad_h), (0, pad_w), (0, 0)), mode='edge'))
|
|
|
|
|
|
|
|
|
|
logs = self.run(model["model"], im_padded, diffusion_steps, eta)
|
|
|
|
|
|
|
|
|
|
sample = logs["sample"]
|
|
|
|
|
sample = sample.detach().cpu()
|
|
|
|
|
@ -120,6 +125,9 @@ class LDSR:
|
|
|
|
|
sample = np.transpose(sample, (0, 2, 3, 1))
|
|
|
|
|
a = Image.fromarray(sample[0])
|
|
|
|
|
|
|
|
|
|
# remove padding
|
|
|
|
|
a = a.crop((0, 0) + tuple(np.array(im_og.size) * 4))
|
|
|
|
|
|
|
|
|
|
del model
|
|
|
|
|
gc.collect()
|
|
|
|
|
torch.cuda.empty_cache()
|
|
|
|
|
|