Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
|
@@ -13,6 +13,8 @@ import uuid
|
|
| 13 |
import subprocess
|
| 14 |
subprocess.run('pip install flash-attn --no-build-isolation', env={'FLASH_ATTENTION_SKIP_CUDA_BUILD': "TRUE"}, shell=True)
|
| 15 |
|
|
|
|
|
|
|
| 16 |
# Constants
|
| 17 |
MODEL_PATH = "pyramid-flow-model"
|
| 18 |
MODEL_REPO = "rain1011/pyramid-flow-sd3"
|
|
@@ -62,8 +64,9 @@ def load_model():
|
|
| 62 |
model = load_model()
|
| 63 |
|
| 64 |
# Text-to-video generation function
|
| 65 |
-
@spaces.GPU(duration=
|
| 66 |
def generate_video(image, prompt, duration, guidance_scale, video_guidance_scale):
|
|
|
|
| 67 |
temp = int(duration * 0.8) # Convert seconds to temp value (assuming 24 FPS)
|
| 68 |
torch_dtype = torch.bfloat16 if MODEL_DTYPE == "bf16" else torch.float32
|
| 69 |
if(image):
|
|
@@ -135,13 +138,22 @@ with gr.Blocks() as demo:
|
|
| 135 |
i2v_image = gr.Image(type="pil", label="Input Image")
|
| 136 |
t2v_prompt = gr.Textbox(label="Prompt")
|
| 137 |
with gr.Accordion("Advanced settings", open=False):
|
| 138 |
-
t2v_duration = gr.Slider(minimum=1, maximum=10, value=5, step=1, label="Duration (seconds)")
|
| 139 |
t2v_guidance_scale = gr.Slider(minimum=1, maximum=15, value=9, step=0.1, label="Guidance Scale")
|
| 140 |
t2v_video_guidance_scale = gr.Slider(minimum=1, maximum=15, value=5, step=0.1, label="Video Guidance Scale")
|
| 141 |
t2v_generate_btn = gr.Button("Generate Video")
|
| 142 |
with gr.Column():
|
| 143 |
t2v_output = gr.Video(label="Generated Video")
|
| 144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 145 |
t2v_generate_btn.click(
|
| 146 |
generate_video,
|
| 147 |
inputs=[i2v_image, t2v_prompt, t2v_duration, t2v_guidance_scale, t2v_video_guidance_scale],
|
|
|
|
| 13 |
import subprocess
|
| 14 |
subprocess.run('pip install flash-attn --no-build-isolation', env={'FLASH_ATTENTION_SKIP_CUDA_BUILD': "TRUE"}, shell=True)
|
| 15 |
|
| 16 |
+
is_canonical = True if os.environ.get("SPACE_ID") == "multimodalart/pyramid-flow" else False
|
| 17 |
+
|
| 18 |
# Constants
|
| 19 |
MODEL_PATH = "pyramid-flow-model"
|
| 20 |
MODEL_REPO = "rain1011/pyramid-flow-sd3"
|
|
|
|
| 64 |
model = load_model()
|
| 65 |
|
| 66 |
# Text-to-video generation function
|
| 67 |
+
@spaces.GPU(duration=120)
|
| 68 |
def generate_video(image, prompt, duration, guidance_scale, video_guidance_scale):
|
| 69 |
+
multiplier = 0.8 if is_canonical else 2.4
|
| 70 |
temp = int(duration * 0.8) # Convert seconds to temp value (assuming 24 FPS)
|
| 71 |
torch_dtype = torch.bfloat16 if MODEL_DTYPE == "bf16" else torch.float32
|
| 72 |
if(image):
|
|
|
|
| 138 |
i2v_image = gr.Image(type="pil", label="Input Image")
|
| 139 |
t2v_prompt = gr.Textbox(label="Prompt")
|
| 140 |
with gr.Accordion("Advanced settings", open=False):
|
| 141 |
+
t2v_duration = gr.Slider(minimum=1, maximum=10, value=5, step=1, label="Duration (seconds)", visible=not is_canonical)
|
| 142 |
t2v_guidance_scale = gr.Slider(minimum=1, maximum=15, value=9, step=0.1, label="Guidance Scale")
|
| 143 |
t2v_video_guidance_scale = gr.Slider(minimum=1, maximum=15, value=5, step=0.1, label="Video Guidance Scale")
|
| 144 |
t2v_generate_btn = gr.Button("Generate Video")
|
| 145 |
with gr.Column():
|
| 146 |
t2v_output = gr.Video(label="Generated Video")
|
| 147 |
+
gr.HTML("""
|
| 148 |
+
<div style="display: flex; flex-direction: column;justify-content: center; align-items: center; text-align: center;">
|
| 149 |
+
<p style="display: flex;gap: 6px;">
|
| 150 |
+
<a href="https://huggingface.co/spaces/multimodalart/pyramid-flow?duplicate=true">
|
| 151 |
+
<img src="https://huggingface.co/datasets/huggingface/badges/resolve/main/duplicate-this-space-lg.svg" alt="Duplicate this Space">
|
| 152 |
+
</a>
|
| 153 |
+
</p>
|
| 154 |
+
<p>to use privately and generate videos up to 10s</p>
|
| 155 |
+
</div>
|
| 156 |
+
""")
|
| 157 |
t2v_generate_btn.click(
|
| 158 |
generate_video,
|
| 159 |
inputs=[i2v_image, t2v_prompt, t2v_duration, t2v_guidance_scale, t2v_video_guidance_scale],
|