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")
def get_emojies(size): emoji_paths = get_file_paths(EMOJI_DIR) emojies = [] for path in emoji_paths: emoji = Image.open(path).resize((size, size), Image.LANCZOS) emojies.append(emoji) return emojies
def make_gif(folder, max_num_frames=16): frame_paths = get_file_paths(folder) frame_paths = [p for p in frame_paths if p.name != "target.png"] if len(frame_paths) > max_num_frames: frame_indexes = np.linspace(start=0, stop=len(frame_paths) - 1, endpoint=True, num=max_num_frames, dtype=np.int).tolist() frame_indexes = set(frame_indexes) frame_paths = [ path for i, path in enumerate(frame_paths) if i in frame_indexes ] gif_output_path = os.path.join(folder, "evolution.gif") durations = [0.2] * len(frame_paths) durations[-1] = 1.5 images = [imageio.imread(frame_path) for frame_path in frame_paths] imageio.mimsave(gif_output_path, images, duration=durations)
target_image = Image.open( os.path.join(selected_experiment_folder, "target.png")).convert("RGB") upscaling_factor = 1 original_emoji_size = (args.emoji_size, args.emoji_size) original_image_size = target_image.size 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