Ejemplo n.º 1
0
def test():
    args = cmd.args()
    if args.load_generated_images:
        print ("Loading images...")
        input_images, target_images, generated_images, names = load_generated_images(args.generated_images_dir)
    else:
        print ("Generate images...")
        from keras import backend as K
        if args.use_dropout_test:
            K.set_learning_phase(1)
        dataset = PoseHMDataset(test_phase=True, **vars(args))
        generator = make_generator(args.image_size, args.use_input_pose, args.warp_skip, args.disc_type, args.warp_agg,
                                   args.use_bg, args.pose_rep_type)
        assert (args.generator_checkpoint is not None)
        generator.load_weights(args.generator_checkpoint)
        input_images, target_images, generated_images, names = generate_images(dataset, generator, args.use_input_pose)
        print ("Save images to %s..." % (args.generated_images_dir, ))
        save_images(input_images, target_images, generated_images, names,
                        args.generated_images_dir)

    print ("Compute inception score...")
    inception_score = get_inception_score(generated_images)
    print ("Inception score %s" % inception_score[0])

    print ("Compute structured similarity score (SSIM)...")
    structured_score = ssim_score(generated_images, target_images)
    print ("SSIM score %s" % structured_score)

    print ("Compute l1 score...")
    norm_score = l1_score(generated_images, target_images)
    print ("L1 score %s" % norm_score)

    print ("Compute masked inception score...")
    generated_images_masked = create_masked_image(names, generated_images, args.annotations_file_test)
    reference_images_masked = create_masked_image(names, target_images, args.annotations_file_test)
    inception_score_masked = get_inception_score(generated_images_masked)

    print ("Inception score masked %s" % inception_score_masked[0])
    print ("Compute masked SSIM...")
    structured_score_masked = ssim_score(generated_images_masked, reference_images_masked)
    print ("SSIM score masked %s" % structured_score_masked)

    print ("Inception score = %s, masked = %s; SSIM score = %s, masked = %s; l1 score = %s" %
           (inception_score, inception_score_masked, structured_score, structured_score_masked, norm_score))
Ejemplo n.º 2
0
def compute_scores(epoch, image_shape, generator, dataset, images_inception=50000, images_fid=10000,
                   log_file=None, cache_file='mnist_fid.npz', additional_info=""):
    compute_inception = images_inception != 0
    compute_fid = images_fid != 0
    number_of_images = max(images_inception, images_fid)

    if not (compute_inception or compute_fid):
        return
    images = np.empty((number_of_images, ) + image_shape)
    labels = np.empty((number_of_images, ))
    generator_input = generator.get_input_at(0)
    if type(generator_input) != list:
        generator_input = [generator_input]

    predict_fn = K.function(generator_input + [K.learning_phase()], [generator.get_output_at(0)])
    
    bs = dataset._batch_size
    conditional = False
    for begin in tqdm(range(0, number_of_images, bs)):
        
        end = min(number_of_images, begin + bs)
        n_images = end - begin
        g_s = dataset.next_generator_sample_test()
        if len(g_s) == 2:
           labels[begin:end] = np.squeeze(g_s[1], axis=1)[:n_images]
           conditional = True
        images[begin:end] = predict_fn(g_s + [False])[0][:n_images]

    images *= 127.5
    images += 127.5

    def to_rgb(array):
        if array.shape[-1] != 3:
            #hack for grayscale mnist
            return np.concatenate([array, array, array], axis=-1)
        else:
            return array
    #save_images('baseline_16', to_rgb(images), labels)
    draw_grid(os.path.join(os.path.dirname(log_file), "epoch_%s_imagegrid.png" % epoch),
              to_rgb(images), labels if conditional else None)

    if compute_inception:
        str = "INCEPTION SCORE: %s, %s" % get_inception_score(to_rgb(images[:images_inception]))
        print (str)
        if log_file is not None:
            with open(log_file, 'a') as f:
                print >>f, ("Epoch %s " % (epoch, )) + str #+ " " + additional_info

    if compute_fid:
        true_images = 127.5 * dataset._X_test + 127.5
        str = "FID SCORE: %s" % calculate_fid_given_arrays([to_rgb(true_images)[:images_fid],
                                                            to_rgb(images)[:images_fid]], cache_file=cache_file)
        print (str)
        if log_file is not None:
            with open(log_file, 'a') as f:
                print >>f, ("Epoch %s " % (epoch, )) + str #+ " " + additional_info
Ejemplo n.º 3
0
def compute_scores(epoch, image_shape, generator, dataset, number_of_images=50000, compute_inception=True, compute_fid=True,
                   log_file=None, cache_file='mnist_fid.npz', additional_info=""):
    if not (compute_inception or compute_fid):
        return
    images = np.empty((number_of_images, ) + image_shape)

    generator_input = generator.get_input_at(0)
    if type(generator_input) != list:
        generator_input = [generator_input]

    generator_output = generator.get_output_at(0)
    if type(generator_output) != list:
        generator_output = [generator_output]

    predict_fn = K.function(generator_input + [K.learning_phase()], [generator_output[0]])

    for begin in tqdm(range(0, number_of_images, dataset._batch_size)):
        end = min(number_of_images, begin + dataset._batch_size)
        n_images = end - begin
        g_s = dataset.next_generator_sample_test()
        images[begin:end] = predict_fn(g_s + [False])[0][:n_images]

    images *= 127.5
    images += 127.5

    def to_rgb(array):
        if array.shape[-1] != 3:
            #hack for grayscale mnist
            return np.concatenate([array, array, array], axis=-1)
        else:
            return array

    if compute_inception:
        str = "INCEPTION SCORE: %s, %s" % get_inception_score(to_rgb(images))
        print (str)
        if log_file is not None:
            with open(log_file, 'a') as f:
                print >>f, ("Epoch %s " % (epoch, )) + str + " " + additional_info
    if compute_fid:
        true_images = 127.5 * dataset._X_test + 127.5
        str = "FID SCORE: %s" % calculate_fid_given_arrays([to_rgb(true_images)[:number_of_images],
                                                            to_rgb(images)[:number_of_images]], cache_file=cache_file)
        print (str)
        if log_file is not None:
            with open(log_file, 'a') as f:
                print >>f, ("Epoch %s " % (epoch, )) + str + " " + additional_info
Ejemplo n.º 4
0
def test():
    args = cmd.args()
    if args.load_generated_images:
        print("Loading images...")
        input_images, target_images, generated_images, names = load_generated_images(
            args.generated_images_dir)
    else:
        print("Generate images...")
        from keras import backend as K
        if args.use_dropout_test:
            K.set_learning_phase(1)
        dataset = PoseHMDataset(test_phase=True, **vars(args))
        generator = make_generator(args.image_size, args.use_input_pose,
                                   args.warp_skip, args.disc_type,
                                   args.warp_agg)
        assert (args.generator_checkpoint is not None)
        generator.load_weights(args.generator_checkpoint)
        input_images, target_images, generated_images, names = generate_images(
            dataset, generator, args.use_input_pose)
        print("Save images to %s..." % (args.generated_images_dir, ))
        save_images(input_images, target_images, generated_images, names,
                    args.generated_images_dir)

    if args.is_test_real_data:
        generated_images = target_images

    print('Compute FID score')
    fid = FID_score()
    fid_score = fid.calculate_fid_images(generated_images, target_images)
    print("FID score %s" % fid_score)

    print("Compute inception score...")
    inception_score = get_inception_score(generated_images)
    print("Inception score %s" % inception_score[0])

    print("Compute structured similarity score (SSIM)...")
    structured_score = ssim_score(generated_images, target_images)
    print("SSIM score %s" % structured_score)

    print("Compute l1 score...")
    norm_score = l1_score(generated_images, target_images)
    print("L1 score %s" % norm_score)
Ejemplo n.º 5
0
def test():
    args = cmd.args()
    if args.load_generated_images:
        print("Loading images...")
        input_images, target_images, generated_images, names = load_generated_images(
            args.generated_images_dir)
    else:
        print("Generate images...")
        from keras import backend as K
        if args.use_dropout_test:
            K.set_learning_phase(1)
        dataset = PoseHMDataset(test_phase=True, **vars(args))
        generator = make_generator(args.image_size, args.use_input_pose,
                                   args.warp_agg, args.num_landmarks,
                                   args.num_mask)
        assert (args.generator_checkpoint is not None)
        generator.load_weights(args.generator_checkpoint)
        input_images, pose_inp_array, out_pose, pose_out_array, inp_pose, target_images, generated_images, names = generate_images(
            dataset, generator, args.use_input_pose)
        print("Save images to %s..." % (args.generated_images_dir, ))
        save_images(input_images, pose_inp_array, out_pose, pose_out_array,
                    inp_pose, target_images, generated_images, names,
                    args.generated_images_dir)

    print("Compute inception score...")
    inception_score = get_inception_score(generated_images)
    print("Inception score %s" % inception_score[0])

    # print ("Compute Frechet distance...")
    # fid.create_inception_graph('/tmp/imagenet/classify_image_graph_def.pb')  # load the graph into the current TF graph
    # with tf.Session() as sess:
    #     sess.run(tf.global_variables_initializer())
    #     mu_gen, sigma_gen = fid.calculate_activation_statistics(generated_images, sess, batch_size=100)
    #     mu_real, sigma_real = fid.calculate_activation_statistics(target_images, sess, batch_size=100)
    #
    # fid_value = fid.calculate_frechet_distance(mu_gen, sigma_gen, mu_real, sigma_real)
    # print ("Frechet distance %s" %  fid_value)

    print("Compute structured similarity score (SSIM)...")
    structured_score = ssim_score(generated_images, target_images)
    print("SSIM score %s" % structured_score)

    print("Compute l1 score...")
    norm_score = l1_score(generated_images, target_images)
    print("L1 score %s" % norm_score)

    print("Compute masked inception score...")
    generated_images_masked = create_masked_image(names, generated_images,
                                                  args.annotations_file_test)
    reference_images_masked = create_masked_image(names, target_images,
                                                  args.annotations_file_test)
    inception_score_masked = get_inception_score(generated_images_masked)
    print("Inception score masked %s" % inception_score_masked[0])

    # print ("Compute masked Frechet distance...")
    # fid.create_inception_graph('/tmp/imagenet/classify_image_graph_def.pb')  # load the graph into the current TF graph
    # with tf.Session() as sess:
    #     sess.run(tf.global_variables_initializer())
    #     mu_gen, sigma_gen = fid.calculate_activation_statistics(generated_images_masked, sess, batch_size=100)
    #     mu_real, sigma_real = fid.calculate_activation_statistics(reference_images_masked, sess, batch_size=100)
    #
    # fid_value = fid.calculate_frechet_distance(mu_gen, sigma_gen, mu_real, sigma_real)
    # print("Frechet distance masked %s" % fid_value)

    print("Compute masked SSIM...")
    structured_score_masked = ssim_score(generated_images_masked,
                                         reference_images_masked)
    print("SSIM score masked %s" % structured_score_masked)

    print(
        "Inception score = %s, masked = %s; SSIM score = %s, masked = %s; l1 score = %s"
        % (inception_score, inception_score_masked, structured_score,
           structured_score_masked, norm_score))