Spaces:
Running
on
L4
Running
on
L4
import gradio as gr | |
import subprocess | |
import shutil | |
import os | |
from huggingface_hub import snapshot_download | |
# Define the folder name | |
folder_name = "lora_models" | |
# Create the folder | |
os.makedirs(folder_name, exist_ok=True) | |
# Download models | |
snapshot_download( | |
repo_id = "Eyeline-Research/Go-with-the-Flow", | |
local_dir = folder_name | |
) | |
def process_video(video_path, prompt, num_steps): | |
output_folder="noise_warp_output_folder" | |
if os.path.exists(output_folder): | |
# Delete the folder and its contents | |
shutil.rmtree(output_folder) | |
output_video="output.mp4" | |
device="cuda" | |
num_steps=num_steps | |
try: | |
# Step 1: Warp the noise | |
warp_command = [ | |
"python", "make_warped_noise.py", video_path, | |
"--output_folder", output_folder | |
] | |
subprocess.run(warp_command, check=True) | |
warped_vid_path = os.path.join(output_folder, "input.mp4") | |
# Step 2: Run inference | |
inference_command = [ | |
"python", "cut_and_drag_inference.py", output_folder, | |
"--prompt", prompt, | |
"--output_mp4_path", output_video, | |
"--device", device, | |
"--num_inference_steps", str(num_steps) | |
] | |
subprocess.run(inference_command, check=True) | |
# Return the path to the output video | |
return output_video, warped_vid_path | |
except subprocess.CalledProcessError as e: | |
raise gr.Error(f"An error occurred: {str(e)}") | |
with gr.Blocks() as demo: | |
with gr.Column(): | |
gr.Markdown("# Go-With-The-Flow") | |
with gr.Row(): | |
with gr.Column(): | |
input_video = gr.Video(label="Input Video") | |
prompt = gr.Textbox(label="Prompt") | |
num_steps = gr.Slider(label="Inference Steps", minimum=1, maximum=30, value=5, step=1) | |
submit_btn = gr.Button("Submit") | |
with gr.Column(): | |
output_video = gr.Video(label="Result") | |
warped_vid_path = gr.Video(label="Warped noise") | |
submit_btn.click( | |
fn = process_video, | |
inputs = [input_video, prompt, num_steps], | |
outputs = [output_video, warped_vid_path] | |
) | |
demo.queue().launch(show_api=False) |