psurmreqmer commited on
Commit
551e5e1
·
1 Parent(s): b5cab04
Files changed (1) hide show
  1. app6.py +24 -23
app6.py CHANGED
@@ -3,29 +3,29 @@ import torch
3
  from diffusers import DiffusionPipeline
4
  from PIL import Image
5
 
6
- # --- Configuración del Modelo (Sencilla) ---
7
 
8
- # Forzamos el dispositivo a CPU (para evitar errores de CUDA/VRAM)
9
  device = "cpu"
10
- dtype_config = torch.float32
11
 
12
- # Modelo Image-to-Image LucyEdit
13
- model_id = "kpsss34/LucyEdit_hybrid"
14
 
15
  pipe = None
16
  try:
17
- # Carga sencilla, sin device_map, sin aceleración avanzada
18
  pipe = DiffusionPipeline.from_pretrained(
19
  model_id,
20
  torch_dtype=dtype_config,
21
  use_safetensors=True
22
  ).to(device)
23
 
24
- print("✅ Modelo LucyEdit cargado con éxito en la CPU.")
25
 
26
  except Exception as e:
27
- print(f"❌ Error CRÍTICO al cargar el modelo: {e}")
28
- print("El modelo NO ha podido cargarse. Comprueba tu conexión o memoria RAM.")
29
 
30
 
31
  # --- Función de Procesamiento con Difusión (i2i) ---
@@ -35,33 +35,33 @@ def procesar_con_difusion(imagen_entrada, estilo_radial):
35
  """
36
  # Manejo de error de carga
37
  if pipe is None:
38
- # Devuelve el error si el modelo no se cargó correctamente
39
  return Image.new('RGB', (512, 512), color = 'red')
40
 
41
  if imagen_entrada is None:
42
  return None
43
 
44
- # 1. Prompt Base Fijo (Lo que debe hacer el modelo)
45
- prompt_base = "fotografía de alta calidad, retrato detallado, con estilo"
46
 
47
  estilo_prompts = {
48
  # El prompt fijo + el modificador del estilo
49
- "Blanco y Negro (Monocromático)": ", monocromático, alto contraste, dramático, blanco y negro",
50
- "Alto Contraste y Saturación": ", colores vívidos, alto contraste, HDR, saturación extrema",
51
- "Original (Poco Ruido)": ", fotografía de alta calidad, realista, colores naturales, sutil",
52
  }
53
 
54
  full_prompt = prompt_base + estilo_prompts.get(estilo_radial, "")
55
 
56
- # 2. Fuerza de Difusión FIJA
57
- # Un valor alto (0.85) para asegurar que el efecto (B/N o contraste) se aplique bien.
58
- STRENGTH_FIJA = 0.85
59
 
60
- # 3. Preprocesar la imagen (LucyEdit trabaja en 512x512)
 
61
  init_image = imagen_entrada.convert("RGB").resize((512, 512))
62
 
63
  try:
64
  # 4. Ejecutar el pipeline de difusión i2i
 
65
  image = pipe(
66
  prompt=full_prompt,
67
  image=init_image,
@@ -77,11 +77,12 @@ def procesar_con_difusion(imagen_entrada, estilo_radial):
77
 
78
 
79
  # --- Interfaz Gradio con gr.Blocks() ---
80
- with gr.Blocks(title="LucyEdit Estilos Fijos") as demo:
81
  gr.Markdown(
82
  """
83
- # 🖼️ Tarea de Difusión (Image-to-Image) con LucyEdit
84
- Carga una imagen y selecciona un **Estilo Radial** (Blanco y Negro o Contraste) para que el modelo de difusión la transforme.
 
85
  """
86
  )
87
  with gr.Row():
@@ -97,7 +98,7 @@ with gr.Blocks(title="LucyEdit Estilos Fijos") as demo:
97
  value="Blanco y Negro (Monocromático)"
98
  )
99
 
100
- process_button = gr.Button("✨ Aplicar Difusión", variant="primary")
101
 
102
  with gr.Column(scale=1):
103
  image_output = gr.Image(
 
3
  from diffusers import DiffusionPipeline
4
  from PIL import Image
5
 
6
+ # --- Configuración del Modelo Qwen (Forzado a CPU) ---
7
 
8
+ # Establecemos el dispositivo a CPU (CUDA no está disponible en tu entorno).
9
  device = "cpu"
10
+ dtype_config = torch.float32 # Usamos float32 para la CPU
11
 
12
+ # Modelo Qwen para edición de imagen
13
+ model_id = "Qwen/Qwen-Image-Edit-2509"
14
 
15
  pipe = None
16
  try:
17
+ # Carga sencilla, forzada a CPU. Qwen no requiere dtype especial ni device_map si no hay GPU.
18
  pipe = DiffusionPipeline.from_pretrained(
19
  model_id,
20
  torch_dtype=dtype_config,
21
  use_safetensors=True
22
  ).to(device)
23
 
24
+ print("✅ Modelo Qwen-Image-Edit cargado con éxito en la CPU.")
25
 
26
  except Exception as e:
27
+ print(f"❌ Error CRÍTICO al cargar el modelo Qwen: {e}")
28
+ print("El modelo NO ha podido cargarse. Podría ser un problema de memoria RAM, incluso con CPU.")
29
 
30
 
31
  # --- Función de Procesamiento con Difusión (i2i) ---
 
35
  """
36
  # Manejo de error de carga
37
  if pipe is None:
 
38
  return Image.new('RGB', (512, 512), color = 'red')
39
 
40
  if imagen_entrada is None:
41
  return None
42
 
43
+ # 1. Prompt Base Fijo
44
+ prompt_base = "fotografía de alta calidad, retrato detallado"
45
 
46
  estilo_prompts = {
47
  # El prompt fijo + el modificador del estilo
48
+ "Blanco y Negro (Monocromático)": ", monocromático, alto contraste, dramático, blanco y negro, película antigua",
49
+ "Alto Contraste y Saturación": ", colores vívidos, alto contraste, saturación extrema, cinematográfico, iluminación fuerte",
50
+ "Original (Poco Ruido)": ", fotografía de alta calidad, realista, colores naturales, sutil, cinematic lighting",
51
  }
52
 
53
  full_prompt = prompt_base + estilo_prompts.get(estilo_radial, "")
54
 
55
+ # 2. Fuerza de Difusión FIJA (Valor alto para asegurar el efecto)
56
+ STRENGTH_FIJA = 0.9
 
57
 
58
+ # 3. Preprocesar la imagen (Ajustamos el tamaño de entrada)
59
+ # Qwen-Image-Edit usa 512x512
60
  init_image = imagen_entrada.convert("RGB").resize((512, 512))
61
 
62
  try:
63
  # 4. Ejecutar el pipeline de difusión i2i
64
+ # El modelo Qwen también acepta los parámetros strength y guidance_scale
65
  image = pipe(
66
  prompt=full_prompt,
67
  image=init_image,
 
77
 
78
 
79
  # --- Interfaz Gradio con gr.Blocks() ---
80
+ with gr.Blocks(title="Qwen Image Edit Estilos Fijos") as demo:
81
  gr.Markdown(
82
  """
83
+ # 🖼️ Tarea de Difusión (Image-to-Image) con Qwen Edit
84
+ Carga una imagen y selecciona un **Estilo Radial** para que el modelo Qwen la transforme.
85
+ **Nota:** La generación puede ser lenta al ejecutarse en CPU.
86
  """
87
  )
88
  with gr.Row():
 
98
  value="Blanco y Negro (Monocromático)"
99
  )
100
 
101
+ process_button = gr.Button("✨ Aplicar Difusión Qwen", variant="primary")
102
 
103
  with gr.Column(scale=1):
104
  image_output = gr.Image(