Spaces:
Paused
Paused
| from FollowYourPose.test_followyourpose import * | |
| import copy | |
| import gradio as gr | |
| from transformers import AutoTokenizer, CLIPTextModel | |
| from huggingface_hub import snapshot_download | |
| import sys | |
| sys.path.append('FollowYourPose') | |
| def get_time_string() -> str: | |
| x = datetime.datetime.now() | |
| return f"{(x.year - 2000):02d}{x.month:02d}{x.day:02d}-{x.hour:02d}{x.minute:02d}{x.second:02d}" | |
| class merge_config_then_run(): | |
| def __init__(self) -> None: | |
| # Load the tokenizer | |
| self.tokenizer = None | |
| self.text_encoder = None | |
| self.vae = None | |
| self.unet = None | |
| self.download_model() | |
| def download_model(self): | |
| REPO_ID = 'YueMafighting/FollowYourPose_v1' | |
| snapshot_download(repo_id=REPO_ID, local_dir='./FollowYourPose/checkpoints/', local_dir_use_symlinks=False) | |
| def run( | |
| self, | |
| data_path, | |
| target_prompt, | |
| num_steps, | |
| guidance_scale, | |
| user_input_video=None, | |
| start_sample_frame=0, | |
| n_sample_frame=8, | |
| stride=1, | |
| left_crop=0, | |
| right_crop=0, | |
| top_crop=0, | |
| bottom_crop=0, | |
| ): | |
| default_edit_config='./FollowYourPose/configs/pose_sample.yaml' | |
| Omegadict_default_edit_config = OmegaConf.load(default_edit_config) | |
| dataset_time_string = get_time_string() | |
| config_now = copy.deepcopy(Omegadict_default_edit_config) | |
| offset_dict = { | |
| "left": left_crop, | |
| "right": right_crop, | |
| "top": top_crop, | |
| "bottom": bottom_crop, | |
| } | |
| ImageSequenceDataset_dict = { | |
| "start_sample_frame" : start_sample_frame, | |
| "n_sample_frame" : n_sample_frame, | |
| "sampling_rate" : stride, | |
| "offset": offset_dict, | |
| } | |
| config_now['validation_data'].update(ImageSequenceDataset_dict) | |
| if user_input_video and data_path is None: | |
| raise gr.Error('You need to upload a video or choose a provided video') | |
| if user_input_video is not None: | |
| if isinstance(user_input_video, str): | |
| config_now['validation_data']['path'] = user_input_video | |
| elif hasattr(user_input_video, 'name') and user_input_video.name is not None: | |
| config_now['validation_data']['path'] = user_input_video.name | |
| config_now['validation_data']['prompts'] = [target_prompt] | |
| # ddim config | |
| config_now['validation_data']['guidance_scale'] = guidance_scale | |
| config_now['validation_data']['num_inference_steps'] = num_steps | |
| config_now['skeleton_path'] = data_path | |
| save_path = test(**config_now) | |
| mp4_path = save_path.replace('_0.gif', '_0_0_0.mp4') | |
| return mp4_path | |