test-test / app.py
heboya8's picture
Update app.py
1ec55f0 verified
raw
history blame
1.95 kB
import gradio as gr
import torch
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.utils import export_to_video
import logging
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
try:
# Initialize the diffusion pipeline
logger.info("Loading diffusion pipeline...")
pipe = DiffusionPipeline.from_pretrained(
"heboya8/text2video-test-2",
torch_dtype=torch.float16,
trust_remote_code=True,
)
# Optimize for GPU memory
logger.info("Enabling CPU offload and VAE slicing...")
pipe.enable_model_cpu_offload()
pipe.enable_vae_slicing()
except Exception as e:
logger.error(f"Failed to initialize pipeline: {str(e)}")
raise
def generate_video(prompt):
try:
logger.info(f"Generating video for prompt: {prompt}")
# Generate video frames
video_frames = pipe(
prompt,
num_inference_steps=50, # Increased for better quality
num_frames=16, # Increased for longer video
).frames
# Export frames to video file
video_path = export_to_video(video_frames, output_video_path="output_video.mp4")
logger.info(f"Video generated at: {video_path}")
return video_path
except Exception as e:
logger.error(f"Error generating video: {str(e)}")
return f"Error generating video: {str(e)}"
# Create Gradio interface
interface = gr.Interface(
fn=generate_video,
inputs=gr.Textbox(
label="Enter your prompt",
placeholder="e.g., a flower in a garden"
),
outputs=gr.Video(label="Generated Video"),
title="Text-to-Video Generator",
description="Enter a text prompt to generate a video using the diffusion model."
)
# Launch the app
if __name__ == "__main__":
logger.info("Launching Gradio interface...")
interface.launch(server_name="0.0.0.0", server_port=7860)