Maximofn commited on
Commit
ef058d8
1 Parent(s): bd897e9

First commit

Browse files
Files changed (2) hide show
  1. app.py +82 -0
  2. requirements.txt +6 -0
app.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from diffusers import CogVideoXTransformer3DModel, DiffusionPipeline
3
+ from diffusers.utils import export_to_video
4
+ import torch
5
+ import tempfile
6
+ import os
7
+ import spaces
8
+ # Lista de modelos disponibles
9
+ TRANSFORMER_MODELS = [
10
+ "sayakpaul/pika-dissolve-v0",
11
+ "finetrainers/crush-smol-v0",
12
+ "finetrainers/3dgs-v0",
13
+ "finetrainers/cakeify-v0"
14
+ ]
15
+
16
+ @spaces.GPU
17
+ def generate_video(transformer_model, prompt, negative_prompt):
18
+ # Cargar el modelo del transformer seleccionado
19
+ transformer = CogVideoXTransformer3DModel.from_pretrained(
20
+ transformer_model,
21
+ torch_dtype=torch.bfloat16
22
+ )
23
+
24
+ # Inicializar el pipeline
25
+ pipeline = DiffusionPipeline.from_pretrained(
26
+ "THUDM/CogVideoX-5b",
27
+ transformer=transformer,
28
+ torch_dtype=torch.bfloat16
29
+ ).to("cuda")
30
+
31
+ # Generar el video
32
+ video_frames = pipeline(
33
+ prompt=prompt,
34
+ negative_prompt=negative_prompt,
35
+ num_frames=81,
36
+ height=512,
37
+ width=768,
38
+ num_inference_steps=50
39
+ ).frames[0]
40
+
41
+ # Guardar el video en un archivo temporal
42
+ with tempfile.NamedTemporaryFile(suffix='.mp4', delete=False) as tmp_file:
43
+ export_to_video(video_frames, tmp_file.name, fps=25)
44
+ return tmp_file.name
45
+
46
+ # Crear la interfaz de Gradio
47
+ with gr.Blocks() as demo:
48
+ gr.Markdown("# Generador de Videos con CogVideoX")
49
+
50
+ with gr.Row():
51
+ with gr.Column():
52
+ # Entradas
53
+ model_dropdown = gr.Dropdown(
54
+ choices=TRANSFORMER_MODELS,
55
+ value=TRANSFORMER_MODELS[0],
56
+ label="Modelo Transformer"
57
+ )
58
+ prompt_input = gr.Textbox(
59
+ lines=5,
60
+ label="Prompt",
61
+ placeholder="Describe el video que quieres generar..."
62
+ )
63
+ negative_prompt_input = gr.Textbox(
64
+ lines=2,
65
+ label="Prompt Negativo",
66
+ value="inconsistent motion, blurry motion, worse quality, degenerate outputs, deformed outputs"
67
+ )
68
+ generate_btn = gr.Button("Generar Video")
69
+
70
+ with gr.Column():
71
+ # Salida
72
+ video_output = gr.Video(label="Video Generado")
73
+
74
+ # Conectar la funci贸n
75
+ generate_btn.click(
76
+ fn=generate_video,
77
+ inputs=[model_dropdown, prompt_input, negative_prompt_input],
78
+ outputs=video_output
79
+ )
80
+
81
+ # Lanzar la aplicaci贸n
82
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ gradio>=4.0.0
2
+ torch>=2.0.0
3
+ diffusers>=0.25.0
4
+ transformers>=4.36.0
5
+ accelerate>=0.27.0
6
+ spaces>=0.2.0