Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
                                        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)