movements

pull/230/head
kabachuha 2023-09-03 14:31:34 +03:00
parent 5a0f594a2b
commit e5558ce13f
1 changed files with 89 additions and 85 deletions

View File

@ -41,29 +41,30 @@ def enable_sampler_dropdown(model_type):
return gr.update(visible=is_visible)
def setup_top_parts(mode, d):
with gr.Column(scale=3, variant='compact'):
with gr.Row(elem_id=f'{mode}_prompt_toprow'):
prompt = gr.Textbox(label='Prompt', lines=3, interactive=True, elem_id=f"{mode}_prompt", placeholder="Enter your prompt here...")
with gr.Row(elem_id=f'{mode}_n_prompt_toprow'):
n_prompt = gr.Textbox(label='Negative prompt', lines=2, interactive=True, elem_id=f"{mode}_n_prompt", value=d.n_prompt)
with gr.Column(scale=1, variant='compact'):
with gr.Row(elem_id=f"{mode}_generate_box", variant='compact', elem_classes="generate-box"):
interrupt = gr.Button('Interrupt', elem_id=f"{mode}_interrupt", elem_classes="generate-box-interrupt")
skip = gr.Button('Skip', elem_id=f"{mode}_skip", elem_classes="generate-box-skip")
run_button = gr.Button('Generate', elem_id=f"{mode}_generate", variant='primary')
with gr.Row(equal_height=False, variant='compact'):
with gr.Column(scale=4, variant='compact'):
with gr.Row(elem_id=f'{mode}_prompt_toprow'):
prompt = gr.Textbox(label='Prompt', show_label=False, lines=3, interactive=True, elem_id=f"{mode}_prompt", placeholder="Prompt (press Ctrl+Enter or Alt+Enter to generate)")
with gr.Row(elem_id=f'{mode}_n_prompt_toprow'):
n_prompt = gr.Textbox(label='Negative prompt', show_label=False, lines=2, interactive=True, elem_id=f"{mode}_n_prompt", value=d.n_prompt, placeholder="Negative prompt (press Ctrl+Enter or Alt+Enter to generate)")
with gr.Column(scale=1, variant='compact'):
with gr.Row(elem_id=f"{mode}_generate_box", variant='compact', elem_classes="generate-box"):
interrupt = gr.Button('Interrupt', elem_id=f"{mode}_interrupt", elem_classes="generate-box-interrupt")
skip = gr.Button('Skip', elem_id=f"{mode}_skip", elem_classes="generate-box-skip")
run_button = gr.Button('Generate', elem_id=f"{mode}_generate", variant='primary')
skip.click(
fn=lambda: shared.state.skip(),
inputs=[],
outputs=[],
)
skip.click(
fn=lambda: shared.state.skip(),
inputs=[],
outputs=[],
)
interrupt.click(
fn=lambda: shared.state.interrupt(),
inputs=[],
outputs=[],
)
interrupt.click(
fn=lambda: shared.state.interrupt(),
inputs=[],
outputs=[],
)
return prompt, n_prompt, run_button
def setup_common_values(mode, d):
@ -132,47 +133,48 @@ def setup_model_switcher():
def setup_tab(mode, d, model, model_type, process):
prompt, n_prompt, run_button = setup_top_parts('txt2vid', d)
with gr.Column(scale=1, variant='compact'):
if mode == 'vid2vid':
with gr.Row():
gr.HTML('Put your video here')
gr.HTML('<strong>Vid2vid for VideoCrafter is to be done!</strong>')
vid2vid_frames = gr.File(label="Input video", interactive=True, file_count="single", file_types=["video"], elem_id="vid_to_vid_chosen_file")
with gr.Row():
gr.HTML('Alternative: enter the relative (to the webui) path to the file')
with gr.Row():
vid2vid_frames_path = gr.Textbox(label="Input video path", interactive=True, elem_id="vid_to_vid_chosen_path", placeholder='Enter your video path here, or upload in the box above ^')
sampler, steps, seed, cfg_scale, width, height, eta, frames, batch_count = setup_common_values(mode, d)
if mode == 'vid2vid':
with gr.Row():
strength = gr.Slider(label="denoising strength", value=d.strength, minimum=0, maximum=1, step=0.05, interactive=True)
vid2vid_startFrame=gr.Number(label='vid2vid start frame',value=d.vid2vid_startFrame)
model_type.change(fn=enable_sampler_dropdown, inputs=[model_type], outputs=[sampler])
if mode == 'txt2vid':
with gr.Accordion('img2vid', open=False):
inpainting_image = gr.File(label="Inpainting image", interactive=True, file_count="single", file_types=["image"], elem_id="inpainting_chosen_file")
# TODO: should be tied to the total frame count dynamically
inpainting_frames=gr.Slider(label='inpainting frames',value=d.inpainting_frames,minimum=0, maximum=250, step=1)
with gr.Row(equal_height=False, variant='compact'):
with gr.Column(scale=1, variant='compact'):
if mode == 'vid2vid':
with gr.Row():
gr.Markdown('''`inpainting frames` is the number of frames inpainting is applied to (counting from the beginning)
The following parameters are exposed in this keyframe: max frames as `max_f`, inpainting frames as `max_i_f`, current frame number as `t`, seed as `s`
The weigths of `0:(t/max_i_f), "max_i_f":(1)` will *continue* the initial pic
To *loop it back*, set the weight to 0 for the first and for the last frame
Example: `0:(0), "max_i_f/4":(1), "3*max_i_f/4":(1), "max_i_f-1":(0)` ''')
gr.HTML('Put your video here')
gr.HTML('<strong>Vid2vid for VideoCrafter is to be done!</strong>')
vid2vid_frames = gr.File(label="Input video", interactive=True, file_count="single", file_types=["video"], elem_id="vid_to_vid_chosen_file")
with gr.Row():
inpainting_weights = gr.Textbox(label="Inpainting weights", value=d.inpainting_weights, interactive=True)
with gr.Column(scale=1, variant='compact'):
output = gr.HTML(i1_store_t2v, elem_id='deforum_header')
dummy_component1 = gr.Label("", visible=False)
dummy_component2 = gr.Label("", visible=False)
do_vid2vid = gr.State(value=1 if mode == 'vid2vid' else 0)
gr.HTML('Alternative: enter the relative (to the webui) path to the file')
with gr.Row():
vid2vid_frames_path = gr.Textbox(label="Input video path", interactive=True, elem_id="vid_to_vid_chosen_path", placeholder='Enter your video path here, or upload in the box above ^')
sampler, steps, seed, cfg_scale, width, height, eta, frames, batch_count = setup_common_values(mode, d)
if mode == 'vid2vid':
with gr.Row():
strength = gr.Slider(label="denoising strength", value=d.strength, minimum=0, maximum=1, step=0.05, interactive=True)
vid2vid_startFrame=gr.Number(label='vid2vid start frame',value=d.vid2vid_startFrame)
model_type.change(fn=enable_sampler_dropdown, inputs=[model_type], outputs=[sampler])
if mode == 'txt2vid':
with gr.Accordion('img2vid', open=False):
inpainting_image = gr.File(label="Inpainting image", interactive=True, file_count="single", file_types=["image"], elem_id="inpainting_chosen_file")
# TODO: should be tied to the total frame count dynamically
inpainting_frames=gr.Slider(label='inpainting frames',value=d.inpainting_frames,minimum=0, maximum=250, step=1)
with gr.Row():
gr.Markdown('''`inpainting frames` is the number of frames inpainting is applied to (counting from the beginning)
The following parameters are exposed in this keyframe: max frames as `max_f`, inpainting frames as `max_i_f`, current frame number as `t`, seed as `s`
The weigths of `0:(t/max_i_f), "max_i_f":(1)` will *continue* the initial pic
To *loop it back*, set the weight to 0 for the first and for the last frame
Example: `0:(0), "max_i_f/4":(1), "3*max_i_f/4":(1), "max_i_f-1":(0)` ''')
with gr.Row():
inpainting_weights = gr.Textbox(label="Inpainting weights", value=d.inpainting_weights, interactive=True)
with gr.Column(scale=1, variant='compact'):
output = gr.HTML(i1_store_t2v, elem_id='deforum_header')
dummy_component1 = gr.Label("", visible=False)
dummy_component2 = gr.Label("", visible=False)
do_vid2vid = gr.State(value=1 if mode == 'vid2vid' else 0)
components = locals()
@ -191,33 +193,35 @@ def setup_text2video_settings_dictionary(model, model_type, process):
components_v2v = setup_tab(mode, d, model, model_type, process)
with gr.Tab('Output settings'):
with gr.Row(variant='compact') as fps_out_format_row:
fps = gr.Slider(label="FPS", value=dv.fps, minimum=1, maximum=240, step=1)
with gr.Row(variant='compact') as soundtrack_row:
add_soundtrack = gr.Radio(['None', 'File', 'Init Video'], label="Add soundtrack", value=dv.add_soundtrack)
soundtrack_path = gr.Textbox(label="Soundtrack path", lines=1, interactive=True, value=dv.soundtrack_path)
with gr.Row(equal_height=False, variant='compact'):
with gr.Column(scale=1, variant='default'):
with gr.Row(variant='compact') as fps_out_format_row:
fps = gr.Slider(label="FPS", value=dv.fps, minimum=1, maximum=240, step=1)
with gr.Row(variant='compact') as soundtrack_row:
add_soundtrack = gr.Radio(['None', 'File', 'Init Video'], label="Add soundtrack", value=dv.add_soundtrack)
soundtrack_path = gr.Textbox(label="Soundtrack path", lines=1, interactive=True, value=dv.soundtrack_path)
with gr.Row(variant='compact'):
skip_video_creation = gr.Checkbox(label="Skip video creation", value=dv.skip_video_creation, interactive=True)
with gr.Row(equal_height=True, variant='compact', visible=True) as ffmpeg_set_row:
ffmpeg_crf = gr.Slider(minimum=0, maximum=51, step=1, label="CRF", value=dv.ffmpeg_crf, interactive=True)
ffmpeg_preset = gr.Dropdown(label="Preset", choices=['veryslow', 'slower', 'slow', 'medium', 'fast', 'faster', 'veryfast', 'superfast', 'ultrafast'], interactive=True, value=dv.ffmpeg_preset, type="value")
with gr.Row(equal_height=True, variant='compact', visible=True) as ffmpeg_location_row:
ffmpeg_location = gr.Textbox(label="Location", lines=1, interactive=True, value=dv.ffmpeg_location)
with gr.Accordion(label='Metadata viewer', open=False, visible=True):
with gr.Row(variant='compact'):
metadata_file = gr.File(label="Video", interactive=True, file_count="single", file_types=["video"], elem_id="metadata_chosen_file")
with gr.Row(variant='compact'):
metadata_btn = gr.Button(value='Get metadata')
with gr.Row(variant='compact'):
metadata_box = gr.HTML()
def get_metadata(file):
print('Reading metadata')
video = MP4(file.name)
return video["\xa9cmt"]
with gr.Row(variant='compact'):
skip_video_creation = gr.Checkbox(label="Skip video creation", value=dv.skip_video_creation, interactive=True)
with gr.Row(equal_height=True, variant='compact', visible=True) as ffmpeg_set_row:
ffmpeg_crf = gr.Slider(minimum=0, maximum=51, step=1, label="CRF", value=dv.ffmpeg_crf, interactive=True)
ffmpeg_preset = gr.Dropdown(label="Preset", choices=['veryslow', 'slower', 'slow', 'medium', 'fast', 'faster', 'veryfast', 'superfast', 'ultrafast'], interactive=True, value=dv.ffmpeg_preset, type="value")
with gr.Row(equal_height=True, variant='compact', visible=True) as ffmpeg_location_row:
ffmpeg_location = gr.Textbox(label="Location", lines=1, interactive=True, value=dv.ffmpeg_location)
with gr.Column(scale=1, variant='default'):
with gr.Row(variant='compact'):
metadata_file = gr.File(label="Video", interactive=True, file_count="single", file_types=["video"], elem_id="metadata_chosen_file")
with gr.Row(variant='compact'):
metadata_btn = gr.Button(value='View metadata')
with gr.Row(variant='compact'):
metadata_box = gr.HTML()
def get_metadata(file):
print('Reading metadata')
video = MP4(file.name)
return video["\xa9cmt"]
metadata_btn.click(get_metadata, inputs=[metadata_file], outputs=[metadata_box])
metadata_btn.click(get_metadata, inputs=[metadata_file], outputs=[metadata_box])
with gr.Tab('How to install? Where to get help, how to help?'):
gr.Markdown(welcome_text)