File size: 3,788 Bytes
da2362d
547bc6e
b877500
f8b1e61
da2362d
 
547bc6e
d8647a5
547bc6e
 
 
 
 
 
cecc2bb
b877500
cecc2bb
b877500
cecc2bb
 
33948f0
c21ae8a
 
 
33948f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fe59321
33948f0
 
 
 
cecc2bb
099d06e
692f7c8
cb806f5
e223ebb
 
 
 
 
 
 
cb806f5
e223ebb
 
 
 
 
 
cb806f5
e223ebb
d39e904
cb806f5
d39e904
 
cb806f5
f8b1e61
3126ea4
d39e904
cad05d8
1dac678
93216ff
b877500
cb806f5
8eef73c
3c6ba64
8eef73c
b877500
8eef73c
cecc2bb
d62198c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import subprocess
import os
import gradio as gr
import spaces

subprocess.run(["git", "clone", "https://github.com/fat-ai/MuseV.git"])

os.chdir("./MuseV")
subprocess.run(["pip", "install", "-r", "requirements.txt"])
subprocess.run(["pip", "install", "--no-cache-dir", "-U", "openmim"])
subprocess.run(["mim", "install", "mmengine"])
subprocess.run(["mim", "install", "mmcv>=2.0.1"])
subprocess.run(["mim", "install", "mmdet>=3.1.0"])
subprocess.run(["mim", "install", "mmpose>=1.1.0"])
subprocess.run(["git", "clone", "--recursive", "https://github.com/fat-ai/MuseV.git"])
subprocess.run(["git", "clone", "https://huggingface.co/TMElyralab/MuseV", "./checkpoints"])

os.chdir("..")
command = "\"import sys; sys.path.append('./MuseV/MuseV'); sys.path.append('./MuseV/MuseV/MMCM'); sys.path.append('./MuseV/MuseV/diffusers/src'); sys.path.append('./MuseV/MuseV/controlnet_aux/src')\""
subprocess.run(["python","-c",command])

subprocess.run(["mv", "./MuseV/scripts/inference/text2video.py", "./MuseV/text2video.py"])
subprocess.run(["mv", "./MuseV/scripts/inference/video2video.py", "./MuseV/video2video.py"])

with open ("./MuseV/configs/model/motion_model.py","r+") as scrip:
    s = scrip.read()
    s = s.replace('/content/MuseV/checkpoints', "/home/user/app/MuseV/checkpoints")
    scrip.write(s)
    scrip.truncate()
    scrip.seek(0)
    
with open ("./MuseV/configs/model/ip_adapter.py","r+") as scrip:
    s = scrip.read()
    s = s.replace('/content/MuseV/checkpoints', "/home/user/app/MuseV/checkpoints")
    scrip.write(s)
    scrip.truncate()
    scrip.seek(0)

with open ("./MuseV/configs/model/T2I_all_model.py","r+") as scrip:
    s = scrip.read()
    s = s.replace('/content/MuseV/checkpoints', "/home/user/app/MuseV/checkpoints")
    scrip.write(s)
    scrip.truncate()
    scrip.seek(0)

from PIL import Image

def add_new_image(image):
    image = Image.fromarray(image)
    height = image.height
    width = image.width
    lr = width/height
    ip_img = "${.condition_images}"
    image.save("./img.png")
    img_settings = f"""- condition_images: ./img.png
  eye_blinks_factor: 1.8
  height: {height}
  img_length_ratio: {lr}
  ipadapter_image: {ip_img}
  name: image
  prompt: (masterpiece, best quality, highres:1),(1person, solo:1),(eye blinks:1.8),(head wave:1.3)
  refer_image: {ip_img}
  video_path: null
  width: width"""
    with open ("/home/user/app/MuseV/configs/tasks/example.yaml","r+") as configs:
        configs.write(img_settings)
        configs.truncate()
        configs.seek(0)
        
@spaces.GPU
def run(duration=180):
    subprocess.run(["python", "./MuseV/text2video.py", "--sd_model_name", "majicmixRealv6Fp16", "--unet_model_name", "musev", "-test_data_path", "./MuseV/configs/tasks/example.yaml", "--n_batch", "1", "--target_datas", "image", "--vae_model_path", "./MuseV/checkpoints/vae/sd-vae-ft-mse", "--time_size", "12", "--fps", "12"])
    #subprocess.run(["python", "./MuseV/text2video.py", "--sd_model_name", "majicmixRealv6Fp16", "--unet_model_name", "musev_referencenet", "--referencenet_model_name", "musev_referencenet", "--ip_adapter_model_name", "musev_referencenet", "-test_data_path", "./MuseV/configs/tasks/example.yaml", "--output_dir", "./MuseV",  "--n_batch", "1",  "--target_datas", "jinkesi2",  "--vision_clip_extractor_class_name", "ImageClipVisionFeatureExtractor", "--vision_clip_model_path", "./MuseV/checkpoints/IP-Adapter/models/image_encoder", "--motion_speed", "5.0", "--vae_model_path", "./MuseV/checkpoints/vae/sd-vae-ft-mse", "--time_size", "120", "--fps", "24"])
    return "./output.mp4"

with gr.Blocks() as demo:
  image = gr.Image()
  button1 = gr.Button()
  button1.click(fn=add_new_image,inputs=image)
  button2 = gr.Button()
  video = gr.Video()
  button2.click(fn=run,outputs=video)

demo.launch()