File size: 3,234 Bytes
cdc3796
341438f
3366cca
 
 
 
 
 
 
317a82a
 
 
 
 
c5aedf0
d3ec508
317a82a
 
 
 
 
 
 
 
cdc3796
 
 
317a82a
 
d3ec508
317a82a
cdc3796
341438f
317a82a
 
 
 
53980f6
781071b
341438f
3366cca
317a82a
 
3366cca
 
317a82a
 
3366cca
 
317a82a
c5aedf0
3366cca
 
d3ec508
 
 
 
cdc3796
 
 
 
341438f
af05866
341438f
 
3366cca
317a82a
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
from main import run_app, run_train, run_inference, run_generate_frame, run_interpolate_frames
from evaluate import run_evaluate

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)
            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")
        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], outputs=[frames, frames_thumb]
    )

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

demo.launch(share=True)