def visualizeSingleBatch(fp_loader_test, opt): with torch.no_grad(): # Unpack batch mks, nds, eds, nd_to_sample, ed_to_sample = next(iter(fp_loader_test)) real_mks = Variable(mks.type(Tensor)) given_nds = Variable(nds.type(Tensor)) given_eds = eds # Generate a batch of images z_shape = [real_mks.shape[0], opt.latent_dim] z = Variable(Tensor(np.random.normal(0, 1, tuple(z_shape)))) gen_mks = generator(z, given_nds, given_eds) # Generate image tensors real_imgs_tensor = combine_images_maps(real_mks, given_nds, given_eds, \ nd_to_sample, ed_to_sample) fake_imgs_tensor = combine_images_maps(gen_mks, given_nds, given_eds, \ nd_to_sample, ed_to_sample) # Save images save_image(real_imgs_tensor, "./exps/{}/{}_real.png".format(exp_folder, batches_done), \ nrow=12, normalize=False) save_image(fake_imgs_tensor, "./exps/{}/{}_fake.png".format(exp_folder, batches_done), \ nrow=12, normalize=False) return
def visualizeSingleBatch(fp_loader_test, opt,): with torch.no_grad(): # Unpack batch mks, nds, eds, nd_to_sample, ed_to_sample = next(iter(fp_loader_test)) real_mks = Variable(mks.type(Tensor)) given_nds = Variable(nds.type(Tensor)) given_eds = eds # Generate a batch of images z_shape = [real_mks.shape[0], opt.latent_dim] z = Variable(Tensor(np.random.normal(0, 1, tuple(z_shape)))) gen_mks = generator(z, given_nds, given_eds) # Generate image tensors real_imgs_tensor = combine_images_maps(real_mks, given_nds, given_eds, \ nd_to_sample, ed_to_sample) fake_imgs_tensor = combine_images_maps(gen_mks, given_nds, given_eds, \ nd_to_sample, ed_to_sample) #iou_norm,giou_norm = compute_iou_list(real_mks,given_y,given_w,nd_to_sample,ed_to_sample,'valid') # Save images #np.save() save_image(real_imgs_tensor, "./exps/{}/{}_real.png".format(exp_folder, batches_done), \ nrow=12, normalize=False) save_image(fake_imgs_tensor, "./exps/{}/{}_fake.png".format(exp_folder, batches_done), \ nrow=12, normalize=False) extracted_room_stats = [gen_mks.detach().cpu().numpy(),real_mks.detach().cpu().numpy(), given_nds.detach().cpu().numpy(), given_eds.detach().cpu().numpy(), \ nd_to_sample.detach().cpu().numpy(), ed_to_sample.detach().cpu().numpy()] np.save('./tracking/vaild_stats_'+exp_folder+str(batches_done)+'.npy',extracted_room_stats)
def visualizeSingleBatch(fp_loader_test, opt, exp_folder, batches_done, batch_size=8): print('Loading saved model ... \n{}'.format( './checkpoints/{}_{}.pth'.format(exp_folder, batches_done))) generatorTest = Generator() generatorTest.load_state_dict( torch.load('./checkpoints/{}_{}.pth'.format(exp_folder, batches_done))) generatorTest = generatorTest.eval() generatorTest.cuda() with torch.no_grad(): # Unpack batch mks, nds, eds, nd_to_sample, ed_to_sample = next(iter(fp_loader_test)) real_mks = Variable(mks.type(Tensor)) given_nds = Variable(nds.type(Tensor)) given_eds = eds # Generate a batch of images z_shape = [real_mks.shape[0], opt.latent_dim] z = Variable(Tensor(np.random.normal(0, 1, tuple(z_shape)))) # Select random nodes ind_fixed_nodes, bin_fixed_nodes = selectNodesTypes( nd_to_sample, batch_size, nds) # Generate a batch of images given_masks = torch.tensor(real_mks) ind_not_fixed_nodes = torch.tensor([ k for k in range(given_masks.shape[0]) if k not in ind_fixed_nodes ]) ## Set non fixed masks to -1.0 given_masks[ind_not_fixed_nodes.long()] = -1.0 given_masks = given_masks.unsqueeze(1) ## Add channel to indicate given nodes inds_masks = torch.zeros_like(given_masks) inds_masks[ind_not_fixed_nodes.long()] = 0.0 inds_masks[ind_fixed_nodes.long()] = 1.0 given_masks = torch.cat([given_masks, inds_masks], 1) gen_mks = generatorTest(z, None, given_masks, given_nds, given_eds) # Generate image tensors real_imgs_tensor = combine_images_maps(real_mks, given_nds, given_eds, \ nd_to_sample, ed_to_sample) fake_imgs_tensor = combine_images_maps(gen_mks, given_nds, given_eds, \ nd_to_sample, ed_to_sample) # Save images save_image(real_imgs_tensor, "./exps/{}/{}_real.png".format(exp_folder, batches_done), \ nrow=12, normalize=False) save_image(fake_imgs_tensor, "./exps/{}/{}_fake.png".format(exp_folder, batches_done), \ nrow=12, normalize=False) return
def visualizeBatch(real_mks,gen_mks,given_nds,given_eds,nd_to_sample,ed_to_sample): with torch.no_grad(): imgs_tensor = combine_images_maps(gen_mks, given_nds, given_eds, \ nd_to_sample, ed_to_sample) save_image(imgs_tensor,"./exps/{}/{}_train_gen.png".format(exp_folder, batches_done), \ nrow=12, normalize=False) imgs_tensor = combine_images_maps(real_mks, given_nds, given_eds, \ nd_to_sample, ed_to_sample) save_image(imgs_tensor,"./exps/{}/{}_train_real.png".format(exp_folder, batches_done), \ nrow=12, normalize=False) extracted_room_stats = [gen_mks.detach().cpu().numpy(),real_mks.detach().cpu().numpy(), given_nds.detach().cpu().numpy(), given_eds.detach().cpu().numpy(), \ nd_to_sample.detach().cpu().numpy(), ed_to_sample.detach().cpu().numpy()] np.save('./tracking/train_stats_'+exp_folder+str(batches_done)+'.npy',extracted_room_stats) return
num_workers=0, collate_fn=floorplan_collate_fn) fp_iter = tqdm(fp_loader, total=len(fp_dataset) // opt.batch_size + 1) # Generate samples cuda = False #True if torch.cuda.is_available() else False Tensor = torch.cuda.FloatTensor if cuda else torch.FloatTensor graphs = [] for i, batch in enumerate(fp_loader): #len(fp_iter) = all_samples/batch_size # Unpack batch mks, nds, eds, nd_to_sample, ed_to_sample = batch #mks is all single batch sampls combined, 39 = sampl_1.len[=2] + sampl_2.len[=2]+...+sampl_25.len real_mks = Variable(mks.type(Tensor)) given_nds = Variable(nds.type(Tensor)) given_eds = eds real_imgs_tensor = combine_images_maps(real_mks, given_nds, given_eds, \ nd_to_sample, ed_to_sample) save_image(real_imgs_tensor, "/Users/home/Dissertation/Code/housegan/{}/{}_real.png".format("stats/", i), \ nrow=12, normalize=False) exit() # real_nodes = np.where(nds.detach().cpu()==1)[-1] # graphs.append(len(real_nodes)) # samples_per_len = defaultdict(int) # for g_len in graphs: # samples_per_len[g_len] += 1 # print(samples_per_len)