Commit 6603f63b authored by Han Lin's avatar Han Lin
Browse files

Fixes LDSR upscaler producing black bars

parent 2f47724b
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -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()