|
import os, argparse |
|
import sys |
|
import gradio as gr |
|
from scripts.gradio.i2v_test_application import Image2Video |
|
sys.path.insert(1, os.path.join(sys.path[0], 'lvdm')) |
|
|
|
|
|
i2v_examples_interp_512 = [ |
|
['prompts/512_interp/74906_1462_frame1.png', 'walking man', 50, 7.5, 1.0, 10, 123, 'prompts/512_interp/74906_1462_frame3.png'], |
|
['prompts/512_interp/Japan_v2_2_062266_s2_frame1.png', 'an anime scene', 50, 7.5, 1.0, 10, 789, 'prompts/512_interp/Japan_v2_2_062266_s2_frame3.png'], |
|
['prompts/512_interp/Japan_v2_3_119235_s2_frame1.png', 'an anime scene', 50, 7.5, 1.0, 10, 123, 'prompts/512_interp/Japan_v2_3_119235_s2_frame3.png'], |
|
] |
|
|
|
|
|
|
|
|
|
def dynamicrafter_demo(result_dir='./tmp/', res=512): |
|
if res == 1024: |
|
resolution = '576_1024' |
|
css = """#input_img {max-width: 1024px !important} #output_vid {max-width: 1024px; max-height:576px}""" |
|
elif res == 512: |
|
resolution = '320_512' |
|
css = """#input_img {max-width: 512px !important} #output_vid {max-width: 512px; max-height: 320px} #input_img2 {max-width: 512px !important} #output_vid {max-width: 512px; max-height: 320px}""" |
|
elif res == 256: |
|
resolution = '256_256' |
|
css = """#input_img {max-width: 256px !important} #output_vid {max-width: 256px; max-height: 256px}""" |
|
else: |
|
raise NotImplementedError(f"Unsupported resolution: {res}") |
|
image2video = Image2Video(result_dir, resolution=resolution) |
|
with gr.Blocks(analytics_enabled=False, css=css) as dynamicrafter_iface: |
|
|
|
|
|
|
|
with gr.Tab(label='ToonCrafter_320x512'): |
|
with gr.Column(): |
|
with gr.Row(): |
|
with gr.Column(): |
|
with gr.Row(): |
|
i2v_input_image = gr.Image(label="Input Image1",elem_id="input_img") |
|
with gr.Row(): |
|
i2v_input_text = gr.Text(label='Prompts') |
|
with gr.Row(): |
|
i2v_seed = gr.Slider(label='Random Seed', minimum=0, maximum=50000, step=1, value=123) |
|
i2v_eta = gr.Slider(minimum=0.0, maximum=1.0, step=0.1, label='ETA', value=1.0, elem_id="i2v_eta") |
|
i2v_cfg_scale = gr.Slider(minimum=1.0, maximum=15.0, step=0.5, label='CFG Scale', value=7.5, elem_id="i2v_cfg_scale") |
|
with gr.Row(): |
|
i2v_steps = gr.Slider(minimum=1, maximum=60, step=1, elem_id="i2v_steps", label="Sampling steps", value=50) |
|
i2v_motion = gr.Slider(minimum=5, maximum=30, step=1, elem_id="i2v_motion", label="FPS", value=10) |
|
i2v_end_btn = gr.Button("Generate") |
|
with gr.Column(): |
|
with gr.Row(): |
|
i2v_input_image2 = gr.Image(label="Input Image2",elem_id="input_img2") |
|
with gr.Row(): |
|
i2v_output_video = gr.Video(label="Generated Video",elem_id="output_vid",autoplay=True,show_share_button=True) |
|
|
|
gr.Examples(examples=i2v_examples_interp_512, |
|
inputs=[i2v_input_image, i2v_input_text, i2v_steps, i2v_cfg_scale, i2v_eta, i2v_motion, i2v_seed, i2v_input_image2], |
|
outputs=[i2v_output_video], |
|
fn = image2video.get_image, |
|
cache_examples=False, |
|
) |
|
i2v_end_btn.click(inputs=[i2v_input_image, i2v_input_text, i2v_steps, i2v_cfg_scale, i2v_eta, i2v_motion, i2v_seed, i2v_input_image2], |
|
outputs=[i2v_output_video], |
|
fn = image2video.get_image |
|
) |
|
|
|
|
|
return dynamicrafter_iface |
|
|
|
def get_parser(): |
|
parser = argparse.ArgumentParser() |
|
return parser |
|
|
|
if __name__ == "__main__": |
|
parser = get_parser() |
|
args = parser.parse_args() |
|
|
|
result_dir = os.path.join('./', 'results') |
|
dynamicrafter_iface = dynamicrafter_demo(result_dir) |
|
dynamicrafter_iface.queue(max_size=12) |
|
dynamicrafter_iface.launch(max_threads=1, share = True) |
|
|