File size: 3,074 Bytes
1f25689
 
2064e3d
e0f15a2
 
 
 
1f25689
92d9b00
 
 
 
 
139ee29
e0f15a2
 
a62524f
e0f15a2
 
 
 
 
 
 
139ee29
d6166cf
e0f15a2
b2929ff
e0f15a2
 
f877ad1
 
 
 
 
e0f15a2
f877ad1
 
 
 
 
e0f15a2
 
1f25689
838acff
 
 
1f25689
838acff
1f25689
838acff
1f25689
 
 
838acff
e8df8bc
838acff
 
 
 
 
 
 
9791f04
838acff
 
 
e0f15a2
9069025
838acff
 
1f25689
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import numpy as np
import gradio as gr
import cv2
import os
import argparse
from inference import Predictor
#from black import to_black

# os.system("wget https://huggingface.co/YANGYYYY/cartoonize/tree/main/GeneratorV2_train_photo_Hayao_init.pt")
# if os.path.exists("GeneratorV2_train_photo_Hayao_init.pt"):
#     print("下载成功!")
# else:
#     print("下载失败!")

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--weight', type=str, default='GeneratorV2_train_photo_Hayao_init.pt')
    parser.add_argument('--device', type=str, default='cpu', help='Device, cuda or cpu')

    return parser.parse_args()

def transfer(image, transfer_style):
    if transfer_style == "Hayao":
         #output = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 转换为灰度图像
        #os.system("wget https://huggingface.co/YANGYYYY/cartoonize/resolve/main/GeneratorV2_train_photo_Hayao_init.pt")
        args = parse_args()
        predictor = Predictor(args.weight, args.device)
        anime_img = predictor.transform_image(image)
        return anime_img
    elif transfer_style == "Shinkai":
        args = parse_args()
        args.weight = 'GeneratorV2_train_photo_Shinkai_init.pt'
        predictor = Predictor(args.weight, args.device)
        anime_img = predictor.transform_image(image)
        return anime_img
    elif transfer_style == "Kon Satoshi":
        args = parse_args()
        args.weight = 'GeneratorV2_train_photo_Paprika_init.pt'
        predictor = Predictor(args.weight, args.device)
        anime_img = predictor.transform_image(image)
        return anime_img
    else:
        return image

def clear_output(input_widget):
    input_widget = np.array([])

with gr.Blocks() as demo:
    gr.Markdown("Transfer image or video files using this demo.")
    with gr.Tabs():
        with gr.TabItem("Transfer Image"):
            with gr.Row():
                image_input = gr.Image()
                image_output = gr.Image()
            with gr.Row():
                image_dropdown = gr.Dropdown(label="Transfer Style",choices=["Hayao", "Shinkai", "Kon Satoshi"])
                image_button = gr.Button("Transfer")
                clear_image_button = gr.Button("Clear")
        with gr.TabItem("Transfer Video"):
            with gr.Row():
                video_input = gr.Video()
                video_output = gr.Video()
            with gr.Row():
                video_dropdown = gr.Dropdown(label="Transfer Style",choices=["Hayao", "Shinkai", "Kon Satoshi"])
                video_button = gr.Button("Transfer")
                clear_video_button = gr.Button("Clear")

    image_button.click(transfer, inputs=[image_input,image_dropdown], outputs=image_output)
    video_button.click(transfer, inputs=[video_input,video_dropdown], outputs=video_output)
    clear_image_button.click(clear_output, inputs=image_input,outputs=image_output)
    clear_video_button.click(clear_output, inputs=video_input,outputs=video_output)
demo.launch()

# 启动接口
#demo.launch(server_name='127.0.0.1',server_port=7788)