psurmreqmer commited on
Commit
96a7542
·
1 Parent(s): bc2c982
Files changed (3) hide show
  1. README.md +1 -1
  2. app3.py +77 -17
  3. app6.py +0 -16
README.md CHANGED
@@ -5,7 +5,7 @@ colorFrom: gray
5
  colorTo: indigo
6
  sdk: gradio
7
  sdk_version: 6.0.2
8
- app_file: app6.py
9
  pinned: false
10
  ---
11
 
 
5
  colorTo: indigo
6
  sdk: gradio
7
  sdk_version: 6.0.2
8
+ app_file: app3.py
9
  pinned: false
10
  ---
11
 
app3.py CHANGED
@@ -2,27 +2,87 @@ import gradio as gr
2
  from diffusers import StableDiffusionPipeline
3
  from PIL import Image
4
  import torch
 
5
 
 
 
 
 
 
 
 
 
 
6
 
7
- #Modelo que genera imágenes, está poco probado ya que tarda muchísimo en generarlas
8
  model_id = "OFA-Sys/small-stable-diffusion-v0"
9
- pipe = StableDiffusionPipeline.from_pretrained(model_id)
10
- pipe = pipe.to("cpu")
11
 
12
- # Función que Gradio llamará
 
 
 
 
 
 
 
 
 
 
 
13
  def generar_imagen(prompt):
 
14
  if not prompt:
15
  return None
16
- image = pipe(prompt).images[0]
17
- return image
18
-
19
- # Interfaz Gradio
20
- demo = gr.Interface(
21
- fn=generar_imagen,
22
- inputs=gr.Textbox(label="Prompt"),
23
- outputs=gr.Image(type="pil"),
24
- title="Generador de imágenes ligero",
25
- description="Introduce un prompt y el modelo generará la imagen. Podrás descargarla con el botón de Gradio."
26
- )
27
-
28
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  from diffusers import StableDiffusionPipeline
3
  from PIL import Image
4
  import torch
5
+ import os
6
 
7
+ # --- Configuración del Modelo ---
8
+ # NOTA: El modelo 'OFA-Sys/small-stable-diffusion-v0' es grande.
9
+ # Si el entorno (Colab, Jupyter) tiene GPU (CUDA), úsala.
10
+ # Si no, el procesamiento será EXTREMADAMENTE LENTO en CPU.
11
+
12
+ # Determinar si usar GPU (cuda) o CPU
13
+ device = "cuda" if torch.cuda.is_available() else "cpu"
14
+ # Si estás usando una CPU sin GPU, considera un modelo más pequeño y rápido,
15
+ # o prepárate para un tiempo de espera muy largo.
16
 
 
17
  model_id = "OFA-Sys/small-stable-diffusion-v0"
 
 
18
 
19
+ try:
20
+ # Cargar el modelo y moverlo al dispositivo (GPU o CPU)
21
+ pipe = StableDiffusionPipeline.from_pretrained(model_id)
22
+ pipe = pipe.to(device)
23
+ print(f"Modelo cargado y movido a: {device.upper()}")
24
+ except Exception as e:
25
+ print(f"Error al cargar el modelo: {e}")
26
+ # Puedes poner un 'pipe' dummy si falla la carga.
27
+ pipe = None
28
+
29
+
30
+ # --- Función de Generación de Imagen ---
31
  def generar_imagen(prompt):
32
+ """Genera una imagen a partir de un prompt usando Stable Diffusion."""
33
  if not prompt:
34
  return None
35
+ if pipe is None:
36
+ # Devuelve una imagen de error si el modelo no se cargó
37
+ return Image.new('RGB', (512, 512), color = 'red')
38
+
39
+ # Intenta generar la imagen
40
+ try:
41
+ # Los modelos Diffusers devuelven una lista, tomamos el primer elemento [0]
42
+ image = pipe(prompt).images[0]
43
+ return image
44
+ except Exception as e:
45
+ print(f"Error al generar la imagen: {e}")
46
+ # Devuelve una imagen en blanco con texto de error si hay un fallo
47
+ return Image.new('RGB', (512, 512), color = 'red')
48
+
49
+
50
+ # --- Interfaz Gradio con gr.Blocks() ---
51
+ with gr.Blocks(title="Generador de Imágenes Ligero") as demo:
52
+ gr.Markdown(
53
+ """
54
+ # 🎨 Generador de Imágenes Ligero con Gradio y Stable Diffusion
55
+ Introduce un **prompt (descripción)** para que el modelo genere una imagen.
56
+ """
57
+ )
58
+ # Crear un diseño en fila para los inputs y el output
59
+ with gr.Row():
60
+ # Lado izquierdo: Input de texto
61
+ with gr.Column(scale=1):
62
+ prompt_input = gr.Textbox(
63
+ label="Prompt (Describe la imagen que quieres)",
64
+ placeholder="Un astronauta montando a caballo, estilo fotorealista"
65
+ )
66
+ generate_button = gr.Button("🖼️ Generar Imagen")
67
+
68
+ # Lado derecho: Output de imagen
69
+ with gr.Column(scale=1):
70
+ # El componente de imagen de salida
71
+ image_output = gr.Image(
72
+ type="pil", # Asegura que el output sea un objeto PIL Image
73
+ label="Imagen Generada",
74
+ height=512,
75
+ width=512
76
+ )
77
+
78
+ # Definir la acción al hacer clic en el botón
79
+ # gr.Click() conecta el botón, la función y el destino
80
+ generate_button.click(
81
+ fn=generar_imagen,
82
+ inputs=prompt_input,
83
+ outputs=image_output
84
+ )
85
+
86
+ # Lanzar la aplicación Gradio
87
+ # 'share=True' es útil para probar en Colab y compartir temporalmente
88
+ demo.launch(inbrowser=True)
app6.py CHANGED
@@ -1,16 +0,0 @@
1
- import gradio as gr
2
- import torch
3
- from PIL import Image
4
- from diffusers import DiffusionPipeline
5
- from transformers import pipeline
6
-
7
- modeloObtenerTextoImagen = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base")
8
- modeloGenerarImagen = DiffusionPipeline.from_pretrained("sd-legacy/stable-diffusion-v1-5", torch_dtype=torch.float32)
9
-
10
- def obtenerDescripcion(imagen):
11
- resultadoModeloTI = modeloObtenerTextoImagen(Image.fromarray(imagen))
12
- print(f'La frase que se ha obtenido de la imagen es {resultadoModeloTI}')
13
- return modeloGenerarImagen(resultadoModeloTI[0]['generated_text']).images[0]
14
-
15
- demo = gr.Interface(fn=obtenerDescripcion, inputs="image", outputs="image")
16
- demo.launch(share=True)