Spaces:
Paused
Paused
| import gradio as gr | |
| import os | |
| import yaml | |
| import tempfile | |
| import huggingface_hub | |
| import subprocess | |
| huggingface_hub.hf_hub_download( | |
| repo_id='yzd-v/DWPose', | |
| filename='yolox_l.onnx', | |
| local_dir='./models/DWPose', | |
| local_dir_use_symlinks=False, | |
| ) | |
| huggingface_hub.hf_hub_download( | |
| repo_id='yzd-v/DWPose', | |
| filename='dw-ll_ucoco_384.onnx', | |
| local_dir='./models/DWPose', | |
| local_dir_use_symlinks=False, | |
| ) | |
| huggingface_hub.hf_hub_download( | |
| repo_id='ixaac/MimicMotion', | |
| filename='MimicMotion_1-1.pth', | |
| local_dir='./models', | |
| local_dir_use_symlinks=False, | |
| ) | |
| def print_directory_contents(path): | |
| for root, dirs, files in os.walk(path): | |
| level = root.replace(path, '').count(os.sep) | |
| indent = ' ' * 4 * (level) | |
| print(f"{indent}{os.path.basename(root)}/") | |
| subindent = ' ' * 4 * (level + 1) | |
| for f in files: | |
| print(f"{subindent}{f}") | |
| # Path to the directory you want to print | |
| directory_path = './models' | |
| # Print the directory contents | |
| print_directory_contents(directory_path) | |
| def infer(ref_video_in, ref_image_in): | |
| # Create a temporary directory | |
| with tempfile.TemporaryDirectory() as temp_dir: | |
| print("Temporary directory created:", temp_dir) | |
| # Define the values for the variables | |
| ref_video_path = ref_video_in | |
| ref_image_path = ref_image_in | |
| num_frames = 72 | |
| resolution = 576 | |
| frames_overlap = 6 | |
| num_inference_steps = 25 | |
| noise_aug_strength = 0 | |
| guidance_scale = 2.0 | |
| sample_stride = 2 | |
| fps = 15 | |
| seed = 42 | |
| # Create the data structure | |
| data = { | |
| 'base_model_path': 'stabilityai/stable-video-diffusion-img2vid-xt-1-1', | |
| 'ckpt_path': 'models/MimicMotion_1-1.pth', | |
| 'test_case': [ | |
| { | |
| 'ref_video_path': ref_video_path, | |
| 'ref_image_path': ref_image_path, | |
| 'num_frames': num_frames, | |
| 'resolution': resolution, | |
| 'frames_overlap': frames_overlap, | |
| 'num_inference_steps': num_inference_steps, | |
| 'noise_aug_strength': noise_aug_strength, | |
| 'guidance_scale': guidance_scale, | |
| 'sample_stride': sample_stride, | |
| 'fps': fps, | |
| 'seed': seed | |
| } | |
| ] | |
| } | |
| # Define the file path | |
| file_path = os.path.join(temp_dir, 'config.yaml') | |
| # Write the data to a YAML file | |
| with open(file_path, 'w') as file: | |
| yaml.dump(data, file, default_flow_style=False) | |
| print("YAML file 'config.yaml' created successfully in", file_path) | |
| # Execute the inference command | |
| command = ['python', 'inference.py', '--inference_config', file_path] | |
| result = subprocess.run(command, capture_output=True, text=True) | |
| # Print the command output | |
| print("Command output:", result.stdout) | |
| print("Command errors:", result.stderr) | |
| return "done" | |
| demo = gr.Interface( | |
| fn = infer, | |
| inputs = [gr.Video(), gr.Image(type="filepath")], | |
| outputs = [gr.Textbox()] | |
| ) | |
| demo.launch() |