else:
        print("Create segmentation.")
        content_segmentation, style_segmentation = compute_segmentation(args.content_image, args.style_image)

        cv2.imwrite(change_filename(args.seg_dir, args.content_image, '_seg_raw', '.png'), content_segmentation)
        cv2.imwrite(change_filename(args.seg_dir, args.style_image, '_seg_raw', '.png'), style_segmentation)

        content_segmentation_masks, style_segmentation_masks = merge_segments(content_segmentation, style_segmentation,
                                                                              args.semantic_thresh, args.similarity_metric)

    cv2.imwrite(change_filename(args.seg_dir, args.content_image, '_seg', '.png'),
                reduce_dict(content_segmentation_masks, content_image))
    cv2.imwrite(change_filename(args.seg_dir, args.style_image, '_seg', '.png'),
                reduce_dict(style_segmentation_masks, style_image))

    if args.init == "noise":
        random_noise_scaling_factor = 0.0001
        random_noise = np.random.randn(*content_image.shape).astype(np.float32)
        init_image = vgg.postprocess(random_noise * random_noise_scaling_factor).astype(np.float32)
    elif args.init == "content":
        init_image = content_image
    elif args.init == "style":
        init_image = style_image
    else:
        print("Init image parameter {} unknown.".format(args.init))
        exit(1)

    result = style_transfer(content_image, style_image, mask_for_tf(content_segmentation_masks),
                            mask_for_tf(style_segmentation_masks), init_image, args)
    save_image(result, os.path.join(args.results_dir, "final_transfer_image.png"))
Esempio n. 2
0
    cv2.imwrite(
        change_filename(result_dir,
                        os.path.basename(args.content_image).split('.')[0],
                        '_seg', '.jpg'),
        reduce_dict(content_segmentation_masks, content_image))
    cv2.imwrite(
        change_filename(result_dir,
                        os.path.basename(args.style_image).split('.')[0],
                        '_seg', '.jpg'),
        reduce_dict(style_segmentation_masks, style_image))

    if args.init == "noise":
        random_noise_scaling_factor = 0.0001
        random_noise = np.random.randn(*content_image.shape).astype(np.float32)
        init_image = vgg.postprocess(
            random_noise * random_noise_scaling_factor).astype(np.float32)
    elif args.init == "content":
        init_image = content_image
    elif args.init == "style":
        init_image = style_image
    else:
        print("Init image parameter {} unknown.".format(args.init))
        exit(0)

    result = style_transfer(content_image, style_image,
                            mask_for_tf(content_segmentation_masks),
                            mask_for_tf(style_segmentation_masks), init_image,
                            result_dir, timestamp, args)
    save_image(result, os.path.join(result_dir, "final_transfer_image.png"))