Spaces:
Running
on
Zero
Running
on
Zero
File size: 2,559 Bytes
cc3773d |
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 |
import gradio as gr
import tempfile
import json
from inference_color_temperature import load_models, run_inference, OmegaConf
import torch
# Initialize models once at startup
cfg = OmegaConf.load("configs/inference_genphoto/adv3_256_384_genphoto_relora_color_temperature.yaml")
pipeline, device = load_models(cfg)
def generate_video(base_scene, color_temperature_list):
try:
# Validate input
if len(json.loads(color_temperature_list)) != 5:
raise ValueError("Exactly 5 color_temperature values required")
# Run inference
video_path = run_inference(
pipeline=pipeline,
tokenizer=pipeline.tokenizer,
text_encoder=pipeline.text_encoder,
base_scene=base_scene,
color_temperature_list=color_temperature_list,
device=device
)
return video_path
except Exception as e:
raise gr.Error(f"Generation failed: {str(e)}")
# Example inputs
examples = [
[
"A beautiful blue sky with a mountain range in the background.",
"[5455.0, 5155.0, 5555.0, 6555.0, 7555.0]"
],
[
"A red couch is situated in front of a window, which is filled with a variety of potted plants.",
"[3500.0, 5500.0, 6500.0, 7500.0, 8500.0]"
]
]
with gr.Blocks(title="Color Temperature Effect Generator") as demo:
gr.Markdown("# Dynamic Color Temperature Effect Generation")
with gr.Row():
with gr.Column():
scene_input = gr.Textbox(
label="Scene Description",
placeholder="Describe the scene you want to generate..."
)
color_temperature_input = gr.Textbox(
label="Color Temperature Values",
placeholder="Enter 5 comma-separated values from 2000-10000 (e.g., [3001.3, 4000.2, 4400.34, 5488.23, 8888.82])"
)
submit_btn = gr.Button("Generate Video", variant="primary")
with gr.Column():
video_output = gr.Video(label="Generated Video")
error_output = gr.Textbox(label="Error Messages", visible=False)
gr.Examples(
examples=examples,
inputs=[scene_input, color_temperature_input],
outputs=[video_output],
fn=generate_video,
cache_examples=True
)
submit_btn.click(
fn=generate_video,
inputs=[scene_input, color_temperature_input],
outputs=[video_output],
)
if __name__ == "__main__":
demo.launch(share=True)
|