Skip to content

Commit

Permalink
Added few function
Browse files Browse the repository at this point in the history
  • Loading branch information
PrateekJannu committed Apr 13, 2024
1 parent 6617203 commit 4c78b72
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 4 deletions.
Binary file removed Images/zebra.png
Binary file not shown.
47 changes: 46 additions & 1 deletion SoloSynthGAN/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,51 @@

from SoloSynthGAN.resize_image import imresize, imresize_in, imresize_to_shape


def image_2_video(dir2save, netG, fixed_noise, reals, noise_amp, opt, alpha=0.1, beta=0.9, start_scale=1,
num_images=100, fps=10):

def denorm_for_gif(img):
img = denorm(img).detach()
img = img[0, :, :, :].cpu().numpy()
img = img.transpose(1, 2, 0) * 255
img = img.astype(np.uint8)
return img

reals_shapes = [r.shape for r in reals]
all_images = []

with torch.no_grad():
noise_random = sample_random_noise(len(fixed_noise) - 1, reals_shapes, opt)


z_prev1 = [0.99 * fixed_noise[i] + 0.01 * noise_random[i] for i in range(len(fixed_noise))]


z_prev2 = fixed_noise

for _ in range(num_images):

noise_random = sample_random_noise(len(fixed_noise)-1, reals_shapes, opt)
diff_curr = [beta*(z_prev1[i]-z_prev2[i])+(1-beta)*noise_random[i] for i in range(len(fixed_noise))]
z_curr = [alpha * fixed_noise[i] + (1 - alpha) * (z_prev1[i] + diff_curr[i]) for i in range(len(fixed_noise))]

if start_scale > 0:
z_curr = [fixed_noise[i] for i in range(start_scale)] + [z_curr[i] for i in range(start_scale, len(fixed_noise))]

z_prev2 = z_prev1
z_prev1 = z_curr

sample = netG(z_curr, reals_shapes, noise_amp)

sample = denorm_for_gif(sample)

all_images.append(sample)


imageio.mimsave('{}/start_scale={}_alpha={}_beta={}.gif'.format(dir2save, start_scale, alpha, beta), all_images, duration=int(1000*(1/fps)))


def denorm(x):
out = (x + 1) / 2
return out.clamp(0, 1)
Expand Down Expand Up @@ -57,7 +102,7 @@ def generate_noise(size,num_samp=1,device='cuda',type='gaussian', scale=1):


def upsampling(im,sx,sy):
m = nn.Upsample(size=[round(sx),round(sy)],mode='bilinear',align_corners=True)
m = nn.Upsample(size=[round(sx),round(sy)],mode='bicubic',align_corners=True)
return m(im)


Expand Down
8 changes: 5 additions & 3 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def get_arguments():
parser.add_argument('--start_scale', type=int, help='at which stage to start training', default=0)


parser.add_argument('--niter', type=int, default=800, help='number of epochs to train per scale')
parser.add_argument('--niter', type=int, default=1500, help='number of epochs to train per scale')
parser.add_argument('--gamma',type=float,help='scheduler gamma',default=0.1)
parser.add_argument('--lr_g', type=float, default=0.0005, help='learning rate, default=0.0005')
parser.add_argument('--lr_d', type=float, default=0.0005, help='learning rate, default=0.0005')
Expand All @@ -59,14 +59,16 @@ def get_arguments():
parser.add_argument('--train_mode', default='generation',
choices=['generation', 'retarget', 'harmonization', 'editing', 'animation'],
help="generation, retarget, harmonization, editing, animation")
parser.add_argument('--lr_scale', type=float, help='scaling of learning rate for lower stages', default=0.12)
parser.add_argument('--train_stages', type=int, help='how many stages to use for training', default=9)
parser.add_argument('--lr_scale', type=float, help='scaling of learning rate for lower stages', default=0.5)
parser.add_argument('--train_stages', type=int, help='how many stages to use for training', default=6)

parser.add_argument('--fine_tune', action='store_true', help='whether to fine tune on a given image', default=0)
parser.add_argument('--model_dir', help='model to be used for fine tuning (harmonization or editing)', default="")

opt = parser.parse_args()
print(opt)
opt = functions.post_config(opt)


if opt.fine_tune:
_gpu = opt.gpu
Expand Down

0 comments on commit 4c78b72

Please sign in to comment.