def main():
    if args.style_option == 0:
        best_image_bgr = stylize(args, False)
        result = Image.fromarray(np.uint8(np.clip(best_image_bgr[:, :, ::-1], 0, 255.0)))
        result.save(args.output_image)
    elif args.style_option == 1:
        best_image_bgr = stylize(args, True)
        if not args.apply_smooth:
            result = Image.fromarray(np.uint8(np.clip(best_image_bgr[:, :, ::-1], 0, 255.0)))
            result.save(args.output_image)
        else:
            # Pycuda runtime incompatible with Tensorflow
            from smooth_local_affine import smooth_local_affine
            content_input = np.array(Image.open(args.content_image_path).convert("RGB"), dtype=np.float32)
            # RGB to BGR
            content_input = content_input[:, :, ::-1]
            # H * W * C to C * H * W
            content_input = content_input.transpose((2, 0, 1))
            input_ = np.ascontiguousarray(content_input, dtype=np.float32) / 255.

            _, H, W = np.shape(input_)

            output_ = np.ascontiguousarray(best_image_bgr.transpose((2, 0, 1)), dtype=np.float32) / 255.
            best_ = smooth_local_affine(output_, input_, 1e-7, 3, H, W, args.f_radius, args.f_edge).transpose(1, 2, 0)
            result = Image.fromarray(np.uint8(np.clip(best_ * 255., 0, 255.)))
            result.save(args.output_image)
    elif args.style_option == 2:
        args.max_iter = 2 * args.max_iter
        tmp_image_bgr = stylize(args, False)
        result = Image.fromarray(np.uint8(np.clip(tmp_image_bgr[:, :, ::-1], 0, 255.0)))
        args.init_image_path = os.path.join(args.serial, "tmp_result.png")
        result.save(args.init_image_path)

        best_image_bgr = stylize(args, True)
        if not args.apply_smooth:
            result = Image.fromarray(np.uint8(np.clip(best_image_bgr[:, :, ::-1], 0, 255.0)))
            result.save(args.output_image)
        else:
            from smooth_local_affine import smooth_local_affine
            content_input = np.array(Image.open(args.content_image_path).convert("RGB"), dtype=np.float32)
            # RGB to BGR
            content_input = content_input[:, :, ::-1]
            # H * W * C to C * H * W
            content_input = content_input.transpose((2, 0, 1))
            input_ = np.ascontiguousarray(content_input, dtype=np.float32) / 255.

            _, H, W = np.shape(input_)

            output_ = np.ascontiguousarray(best_image_bgr.transpose((2, 0, 1)), dtype=np.float32) / 255.
            best_ = smooth_local_affine(output_, input_, 1e-7, 3, H, W, args.f_radius, args.f_edge).transpose(1, 2, 0)
            result = Image.fromarray(np.uint8(np.clip(best_ * 255., 0, 255.)))
            result.save(args.output_image)
def main():
    if args.style_option == 0:
        best_image_bgr = stylize(args, False)
        result = Image.fromarray(np.uint8(np.clip(best_image_bgr[:, :, ::-1], 0, 255.0)))
        result.save(args.output_image)
    elif args.style_option == 1:
        best_image_bgr = stylize(args, True)
        if not args.apply_smooth:
            result = Image.fromarray(np.uint8(np.clip(best_image_bgr[:, :, ::-1], 0, 255.0)))
            result.save(args.output_image)
        else:
            # Pycuda runtime incompatible with Tensorflow
            from smooth_local_affine import smooth_local_affine
            content_input = np.array(Image.open(args.content_image_path).convert("RGB"), dtype=np.float32)
            # RGB to BGR
            content_input = content_input[:, :, ::-1]
            # H * W * C to C * H * W
            content_input = content_input.transpose((2, 0, 1))
            input_ = np.ascontiguousarray(content_input, dtype=np.float32) / 255.

            _, H, W = np.shape(input_)

            output_ = np.ascontiguousarray(best_image_bgr.transpose((2, 0, 1)), dtype=np.float32) / 255.
            best_ = smooth_local_affine(output_, input_, 1e-7, 3, H, W, args.f_radius, args.f_edge).transpose(1, 2, 0)
            result = Image.fromarray(np.uint8(np.clip(best_ * 255., 0, 255.)))
            result.save(args.output_image)
    elif args.style_option == 2:
        args.max_iter = 2 * args.max_iter
        tmp_image_bgr = stylize(args, False)
        result = Image.fromarray(np.uint8(np.clip(tmp_image_bgr[:, :, ::-1], 0, 255.0)))
        args.init_image_path = os.path.join(args.serial, "tmp_result.png")
        result.save(args.init_image_path)

        best_image_bgr = stylize(args, True)
        if not args.apply_smooth:
            result = Image.fromarray(np.uint8(np.clip(best_image_bgr[:, :, ::-1], 0, 255.0)))
            result.save(args.output_image)
        else:
            from smooth_local_affine import smooth_local_affine
            content_input = np.array(Image.open(args.content_image_path).convert("RGB"), dtype=np.float32)
            # RGB to BGR
            content_input = content_input[:, :, ::-1]
            # H * W * C to C * H * W
            content_input = content_input.transpose((2, 0, 1))
            input_ = np.ascontiguousarray(content_input, dtype=np.float32) / 255.

            _, H, W = np.shape(input_)

            output_ = np.ascontiguousarray(best_image_bgr.transpose((2, 0, 1)), dtype=np.float32) / 255.
            best_ = smooth_local_affine(output_, input_, 1e-7, 3, H, W, args.f_radius, args.f_edge).transpose(1, 2, 0)
            result = Image.fromarray(np.uint8(np.clip(best_ * 255., 0, 255.)))
            result.save(args.output_image)
    def run_deep_photostyle(self):
        """
        画風変換を実施する
        :return:
        """
        style_const = StyleConst()
        # Neural Art WebAPIに関する情報も渡す
        style_const.material_detail = self.material_detail

        # Input Options
        # 素材フォルダはあらかじめ決めている
        style_const.content_image_path = "tmp/content_image.jpg"
        style_const.style_image_path = "tmp/style_image.jpg"
        style_const.content_seg_path = "tmp/content_seg.jpg"
        style_const.style_seg_path = "tmp/style_seg.jpg"
        # output Options
        style_const.init_image_path = ""
        style_const.output_image = "outputs/best_stylized/best_stylized.png"
        style_const.serial = "outputs"

        # Training Optimizer Options
        #style_const.max_iter = 1000
        style_const.max_iter = int(self.parameters["max_iter"])
        style_const.learning_rate = 1.0
        style_const.print_iter = 1
        style_const.save_iter = 100
        style_const.lbfgs = True

        # Weight Options
        #style_const.content_weight = 5e0
        style_const.content_weight = float(self.parameters["content_weight"])
        #style_const.style_weight = 1e2
        style_const.style_weight = float(self.parameters["style_weight"])
        style_const.tv_weight = 1e-3
        style_const.affine_weight = 1e4

        # style Options
        style_const.style_option = 0
        style_const.apply_smooth = True

        # Smoothing Argment
        style_const.f_radius = 15
        style_const.f_edge = 1e-1

        beset_image_bgr = stylize(style_const, False)
        result = Image.fromarray(
            np.uint8(np.clip(beset_image_bgr[:, :, ::-1], 0, 255.0)))
        result.save(style_const.output_image)
Пример #4
0
def main():

    style_const = StyleConst()
    # Input Options
    #style_const.content_image_path = "inputs/content_image/neuralart_orange_logo.jpg"
    #style_const.style_image_path = "inputs/style_image/hokusai.jpg"
    #style_const.content_seg_path = "inputs/content_seg/neuralart_orange_logo.jpg"
    #style_const.style_seg_path = "inputs/style_seg/hokusai_seg.jpg"
    style_const.content_image_path = "tmp/content_image.jpg"
    style_const.style_image_path = "tmp/style_image.jpg"
    style_const.content_seg_path = "tmp/content_seg.jpg"
    style_const.style_seg_path = "tmp/style_seg.jpg"
    # output Options
    style_const.init_image_path = ""
    style_const.output_image = "outputs/best_stylized/best_stylized.png"
    style_const.serial = "outputs"

    # Training Optimizer Options
    style_const.max_iter = 1000
    style_const.learning_rate = 1.0
    style_const.print_iter = 1
    style_const.save_iter = 100
    style_const.lbfgs = True

    # Weight Options
    style_const.content_weight = 5e0
    style_const.style_weight = 1e2
    style_const.tv_weight = 1e-3
    style_const.affine_weight = 1e4

    # style Options
    style_const.style_option = 0
    style_const.apply_smooth = True

    # Smoothing Argment
    style_const.f_radius = 15
    style_const.f_edge = 1e-1

    beset_image_bgr = stylize(style_const, False)
    result = Image.fromarray(
        np.uint8(np.clip(beset_image_bgr[:, :, ::-1], 0, 255.0)))
    result.save(style_const.output_image)