def SinGAN_SR(opt, Gs, Zs, reals, NoiseAmp): mode = opt.mode in_scale, iter_num = functions.calc_init_scale(opt) opt.scale_factor = 1 / in_scale opt.scale_factor_init = 1 / in_scale opt.mode = 'SR_train' #opt.alpha = 100 opt.stop_scale = 0 dir2trained_model = functions.generate_dir2save(opt) if (os.path.exists(dir2trained_model)): #print('Trained model does not exist, training SinGAN for SR') Gs, Zs, reals, NoiseAmp = functions.load_trained_pyramid(opt) opt.mode = mode else: SR_train(opt, Gs, Zs, reals, NoiseAmp) opt.mode = mode print('%f' % pow(in_scale, iter_num)) Zs_sr = [] reals_sr = [] NoiseAmp_sr = [] Gs_sr = [] real = reals[-1] #read_image(opt) for j in range(1, iter_num + 1, 1): real_ = imresize(real, pow(1 / opt.scale_factor, j), opt) real_ = real_[:, :, 0:int(pow(1 / opt.scale_factor, j) * real.shape[2]), 0:int(pow(1 / opt.scale_factor, j) * real.shape[3])] reals_sr.append(real_) Gs_sr.append(Gs[-1]) NoiseAmp_sr.append(NoiseAmp[-1]) z_opt = torch.full(real_.shape, 0, device=opt.device) m = nn.ZeroPad2d(5) z_opt = m(z_opt) Zs_sr.append(z_opt) out = SinGAN_generate(Gs_sr, Zs_sr, reals_sr, NoiseAmp_sr, opt, in_s=reals_sr[0], num_samples=1) dir2save = functions.generate_dir2save(opt) plt.imsave('%s.png' % (dir2save), functions.convert_image_np(out.detach()), vmin=0, vmax=1) return
Zs = [] reals = [] NoiseAmp = [] dir2save = functions.generate_dir2save(opt) if dir2save is None: print('task does not exist') #elif (os.path.exists(dir2save)): # print("output already exist") else: try: os.makedirs(dir2save) except OSError: pass mode = opt.mode in_scale, iter_num = functions.calc_init_scale(opt) opt.scale_factor = 1 / in_scale opt.scale_factor_init = 1 / in_scale opt.mode = 'train' dir2trained_model = functions.generate_dir2save(opt) if (os.path.exists(dir2trained_model)): Gs, Zs, reals, NoiseAmp = functions.load_trained_pyramid(opt) opt.mode = mode else: print('*** Train SinGAN for SR ***') real = functions.read_image(opt) opt.min_size = 18 real = functions.adjust_scales2image_SR(real, opt) train(opt, Gs, Zs, reals, NoiseAmp) opt.mode = mode print('%f' % pow(in_scale, iter_num))