Exemplo n.º 1
0
def upscale(args, selected_experiment_folder):
    target_image = Image.open(
        os.path.join(selected_experiment_folder, "target.png"))

    upscaling_factor = args.upscaling_factor
    original_emoji_size = (args.emoji_size, args.emoji_size)
    original_image_size = target_image.size

    upscaled_emoji_size = (
        original_emoji_size[0] * upscaling_factor,
        original_emoji_size[1] * upscaling_factor,
    )
    upscaled_image_size = (
        original_image_size[0] * upscaling_factor,
        original_image_size[1] * upscaling_factor,
    )

    upscaled_emojies = get_emojies(size=upscaled_emoji_size[0])

    stored_individual_paths = get_file_paths(selected_experiment_folder,
                                             file_extensions=("pkl", ))
    stored_individual_paths.sort(key=lambda f: f.name)
    best_stored_individual_path = stored_individual_paths[-1]
    genotype = joblib.load(best_stored_individual_path)
    genotype[:, 1] *= upscaling_factor  # x
    genotype[:, 2] *= upscaling_factor  # y

    image = generate_alpha_image_from_scratch(genotype, upscaled_image_size,
                                              upscaled_emojies)
    image.save(
        os.path.join(selected_experiment_folder,
                     best_stored_individual_path.stem + "_upscaled.png"))
    print("Done")
Exemplo n.º 2
0
    os.makedirs(OUTPUT_DIR / experiment_id, exist_ok=True)

    target_image.save(os.path.join(OUTPUT_DIR / experiment_id, "target.png"))

    target_image = target_image.convert("RGB")

    if args.starting_canvas is not None:
        starting_canvas = Image.open(args.starting_canvas).convert("RGB")
        if should_resize:
            starting_canvas = starting_canvas.resize((args.width, args.height),
                                                     Image.LANCZOS)
        assert starting_canvas.size == target_image.size
        Individual.set_starting_canvas(starting_canvas)

    Individual.target_image = target_image
    Individual.emojies = get_emojies(args.emoji_size)
    Individual.max_num_emojies = args.num_generations
    print("Found {} emoji images".format(len(Individual.emojies)))

    fitness_evaluator_class = FITNESS_EVALUATORS[args.fitness]
    fitness_evaluator = fitness_evaluator_class(target_image)

    population = [
        Individual.get_random_individual() for _ in range(args.population_size)
    ]

    last_saved_fitness = float("-inf")

    for i in tqdm(range(args.num_generations)):
        fitness_evaluator.evaluate_fitness(population)
        ordered_individuals = sorted(population, key=lambda i: i.fitness)
Exemplo n.º 3
0
    )
    arg_parser.add_argument(
        '--emoji-size',
        dest='emoji_size',
        type=positive_int,
        required=False,
        default=16
    )
    args = arg_parser.parse_args()

    experiment_id = "{}_{}".format(
        arrow.utcnow().format("YYYY-MM-DDTHHmm"), uuid.uuid4()
    )
    target_image = Image.open(TARGET_IMAGES_DIR / args.target).convert("RGB")

    emojies = get_emojies(args.emoji_size)
    print("Found {} emoji images".format(len(emojies)))

    fitness_evaluator_class = FITNESS_EVALUATORS[args.fitness]
    fitness_evaluator = fitness_evaluator_class(target_image)

    os.makedirs(OUTPUT_DIR / experiment_id, exist_ok=True)

    population = [Individual.get_random_individual() for _ in range(population_size)]

    last_saved_fitness = float("-inf")

    for i in tqdm(range(args.num_generations)):
        fitness_evaluator.evaluate_fitness(population)
        ordered_individuals = sorted(population, key=lambda i: i.fitness)
        fittest_individual = ordered_individuals[-1]
Exemplo n.º 4
0
    upscaled_image_size = (
        original_image_size[0] * upscaling_factor,
        original_image_size[1] * upscaling_factor,
    )
    upscaled_emoji_size = (
        original_emoji_size[0] * upscaling_factor,
        original_emoji_size[1] * upscaling_factor,
    )

    stored_individual_paths = get_file_paths(selected_experiment_folder,
                                             file_extensions=("pkl", ))
    stored_individual_paths.sort(key=lambda f: f.name)
    best_stored_individual_path = stored_individual_paths[-1]
    genotype = joblib.load(best_stored_individual_path)

    upscaled_emojies = get_emojies(size=upscaled_emoji_size[0])

    fitness_evaluator = LABDeltaESSIMFitnessEvaluator(target_image)

    image = generate_image_from_scratch(genotype, upscaled_image_size,
                                        upscaled_emojies).convert("RGB")
    base_individual = Individual(image)
    fitness_evaluator.evaluate_fitness([base_individual])
    current_fitness = base_individual.fitness
    print("Base fitness: {}".format(current_fitness))
    current_genotype = genotype
    num_emojies_removed = 0
    for i in tqdm(range(len(genotype))):
        candidate_genotype = np.copy(current_genotype)
        candidate_genotype[i, :] = 0  # Remove this emoji
        image = generate_image_from_scratch(candidate_genotype,