File size: 3,709 Bytes
7aba721
ce2fb73
3366cca
 
 
 
 
 
 
317a82a
 
 
 
 
c5aedf0
d3ec508
317a82a
 
 
 
 
 
 
 
cdc3796
 
 
ce2fb73
317a82a
 
d3ec508
317a82a
cdc3796
ce2fb73
 
7aba721
317a82a
 
 
 
53980f6
781071b
341438f
3366cca
317a82a
 
3366cca
 
317a82a
 
3366cca
 
317a82a
c5aedf0
3366cca
 
d3ec508
 
 
 
cdc3796
c94b242
cdc3796
 
341438f
af05866
341438f
ce2fb73
 
 
 
7aba721
 
 
 
341438f
3366cca
95510cb
3366cca
 
 
 
 
 
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
77
78
79
80
81
82
83
84
85
from main import run_app, run_train, run_inference, run_generate_frame, run_interpolate_frames, resize_images
from evaluate import run_evaluate, get_score

import spaces
from PIL import Image
import cv2
import os
import gradio as gr

with gr.Blocks() as demo:
    with gr.Row():
        with gr.Column():
            char_imgs = gr.Gallery(type="pil", label="Images of the Character")
            mocap = gr.Video(label="Motion-Capture Video")
            frame_imgs = gr.Gallery(type="pil", label="Reference Images of Each Frame")
            poses = gr.JSON(label="Pose Coordinates")
            tr_steps = gr.Number(label="Training steps", value=10)
            inf_steps = gr.Number(label="Inference steps", value=10)
            fps = gr.Number(label="Output frame rate", value=12)
            modelId = gr.Text(label="Model Id", value="fine_tuned_pcdms")
            remove_bg = gr.Checkbox(label="Remove background", value=False)
            resize_inputs = gr.Checkbox(label="Resize images to match video", value=True)
            img_width = gr.Number(label="Output width", value=1920)
            img_height = gr.Number(label="Output height", value=1080)
            interp_frame1 = gr.Image(type="pil", label="Interpolation Start Frame")
            interp_frame2 = gr.Image(type="pil", label="Interpolation End Frame")
            times_to_interp = gr.Number(label="Times to Interpolate", value=1)
            name = gr.Text(label="Name", value="")
            train_btn = gr.Button(value="Train")
            inference_btn = gr.Button(value="Inference")
            generate_frame_btn = gr.Button(value="Generate Frame")
            submit_btn = gr.Button(value="Generate")
            interp_btn = gr.Button(value="Interpolate Frames")
            eval_btn = gr.Button(value="Evaluate All")
            eval_btn2 = gr.Button(value="Evaluate")
            resize_btn = gr.Button(value="Resize")
        with gr.Column():
            animation = gr.Video(label="Result")
            frames = gr.Gallery(type="pil", label="Frames", format="png")
            frames_thumb = gr.Gallery(type="pil", label="Thumbnails", format="png")
            pose_coords = gr.JSON(label="Pose Coordinates")
            reference = gr.Gallery(type="pil", label="Reference Images", format="png")
            eval_scores = gr.JSON(label="Evaluation Scores")

    submit_btn.click(
        run_app, inputs=[char_imgs, mocap, tr_steps, inf_steps, fps, remove_bg, resize_inputs], outputs=[animation, frames]
    )
    
    train_btn.click(
        run_train, inputs=[char_imgs, tr_steps, modelId, remove_bg, resize_inputs], outputs=[]
    )
    
    inference_btn.click(
        run_inference, inputs=[char_imgs, mocap, frame_imgs, tr_steps, inf_steps, fps, modelId, img_width, img_height, remove_bg, resize_inputs], outputs=[animation, frames, frames_thumb, pose_coords, reference]
    )

    generate_frame_btn.click(
        run_generate_frame, inputs=[char_imgs, poses, tr_steps, inf_steps, modelId, img_width, img_height, remove_bg, resize_inputs], outputs=[frames, frames_thumb]
    )

    interp_btn.click(
        run_interpolate_frames, inputs=[interp_frame1, interp_frame2, times_to_interp, remove_bg], outputs=[frames, frames_thumb]
    )

    eval_btn.click(
        run_evaluate, inputs=[], outputs=[eval_scores]
    )

    eval_btn2.click(
        get_score, inputs=[name, char_imgs, mocap, tr_steps, inf_steps, fps, remove_bg], outputs=[eval_scores]
    )

    resize_btn.click(
        resize_images, inputs=[frame_imgs, img_width, img_height], outputs=[frames]
    )
    

demo.launch(share=True, show_error=True)