File size: 4,246 Bytes
cc50ae5
de65314
af96747
cc50ae5
52f5bd3
 
 
 
 
839e57a
 
cc50ae5
839e57a
b5b48b7
db0e646
 
 
 
 
 
 
 
 
 
 
 
 
af96747
db0e646
af96747
cc50ae5
 
 
b5b48b7
cc50ae5
 
 
b5b48b7
cc50ae5
 
 
b5b48b7
cc50ae5
 
 
 
 
 
b5b48b7
cc50ae5
 
 
b5b48b7
cc50ae5
 
 
 
 
 
 
 
 
 
 
b5b48b7
cc50ae5
 
 
b5b48b7
cc50ae5
 
 
 
 
b5b48b7
 
cc50ae5
 
 
 
 
 
 
 
 
b5b48b7
cc50ae5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27dc24e
 
 
 
 
 
 
 
cc50ae5
 
4181fbb
cc50ae5
4181fbb
cc50ae5
 
b5b48b7
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import gradio as gr
from gradio_client import Client
import os

MORE = """ ## TRY Other Models
        ### JARVIS: Your VOICE Assistant -> https://huggingface.co/spaces/KingNish/JARVIS
        ### Instant Image: 4k images in 5 Second -> https://huggingface.co/spaces/KingNish/Instant-Image
        """

# Gradio Client
client = Client("KingNish/Instant-Video")

# Function
def generate_image(prompt, base="Anime", motion="", step=8, progress=gr.Progress()):
    try:
        result = client.predict(
            prompt=prompt,
            base=base,
            motion=motion,
            step=step,
            api_name="/generate_image_1"
        )
        video_path = result["video"]
        return video_path
    except ValueError as e:
        # Handle GPU quota exceeded error
        if 'You have exceeded your GPU quota' in str(e):
            raise gr.Error("GPU Quota exceeded. Please try again later.")
        else:
            raise gr.Error(str(e))

# Gradio Interface
with gr.Blocks(css="style.css") as demo:
    
    with gr.Group():
        with gr.Row():
            prompt = gr.Textbox(
                label='Описание'
            )
        with gr.Row():
            select_base = gr.Dropdown(
                label='Стиль',
                choices=[
                    "Cartoon", 
                    "Realistic",
                    "3d",
                    "Anime",
                ],
                value="Anime",
                interactive=True
            )
            select_motion = gr.Dropdown(
                label='Движение',
                choices=[
                    ("Default", ""),
                    ("Zoom in", "guoyww/animatediff-motion-lora-zoom-in"),
                    ("Zoom out", "guoyww/animatediff-motion-lora-zoom-out"),
                    ("Tilt up", "guoyww/animatediff-motion-lora-tilt-up"),
                    ("Tilt down", "guoyww/animatediff-motion-lora-tilt-down"),
                    ("Pan left", "guoyww/animatediff-motion-lora-pan-left"),
                    ("Pan right", "guoyww/animatediff-motion-lora-pan-right"),
                    ("Roll left", "guoyww/animatediff-motion-lora-rolling-anticlockwise"),
                    ("Roll right", "guoyww/animatediff-motion-lora-rolling-clockwise"),
                ],
                value="",
                interactive=True
            )
            select_step = gr.Dropdown(
                label='Шаги вывода',
                choices=[
                    ('1-Step', 1), 
                    ('2-Step', 2),
                    ('4-Step', 4),
                    ('8-Step', 8),
                    ('8-Step', 10),
                    ('8-Step', 12),
                ],
                value=4,
                interactive=True
            )
            submit = gr.Button(
                scale=1,
                variant='primary'
            )
    video = gr.Video(
        label='Сгенерированое видео',
        autoplay=True,
        height=512,
        width=512,
        elem_id="video_output"
    )

    prompt.submit(
        fn=generate_image,
        inputs=[prompt, select_base, select_motion, select_step],
        outputs=video,
    )
    submit.click(
        fn=generate_image,
        inputs=[prompt, select_base, select_motion, select_step],
        outputs=video,
    )

    gr.Examples(
        examples=[
        ["Focus: Eiffel Tower (Animate: Clouds moving)"], #Atmosphere Movement Example
        ["Focus: Trees In forest (Animate: Lion running)"], #Object Movement Example
        ["Focus: Astronaut in Space"], #Normal
        ["Focus: Group of Birds in sky (Animate:  Birds Moving) (Shot From distance)"], #Camera distance
        ["Focus:  Statue of liberty (Shot from Drone) (Animate: Drone coming toward statue)"], #Camera Movement
        ["Focus: Panda in Forest (Animate: Drinking Tea)"], #Doing Something
        ["Focus: Kids Playing (Season: Winter)"], #Atmosphere or Season
        {"Focus: Cars in Street (Season: Rain, Daytime) (Shot from Distance) (Movement: Cars running)"} #Mixture
    ], 
        fn=generate_image,
        inputs=[prompt],
        outputs=video,
        cache_examples=True,
)

demo.queue(max_size=50).launch()