appinitdev commited on
Commit
d857e0c
路
verified 路
1 Parent(s): d1ba1d1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -40
app.py CHANGED
@@ -1,60 +1,42 @@
 
 
1
  import gradio as gr
2
  import torch
3
  import cv2
4
  import numpy as np
5
  from PIL import Image
6
  from diffusers import StableDiffusionPipeline, DDIMScheduler
7
- from insightface.app import FaceAnalysis
8
- # Aqu铆 es donde el archivo busca la carpeta 'ip_adapter' que subiste
 
9
  from ip_adapter.ip_adapter_faceid import IPAdapterFaceID
 
 
 
10
 
11
- # 1. Configuraci贸n de Dispositivos y Modelos
12
  device = "cuda"
13
  model_id = "runwayml/stable-diffusion-v1-5"
14
- ip_ckpt = "ip-adapter-faceid_sd15.bin" # Aseg煤rate de que este nombre coincida con tu archivo
15
 
16
- # 2. Inicializar InsightFace (Detecci贸n de caras)
17
  app = FaceAnalysis(name="buffalo_l", providers=['CUDAExecutionProvider'])
18
  app.prepare(ctx_id=0, det_size=(640, 640))
19
 
20
- # 3. Cargar el Pipeline
21
- pipe = StableDiffusionPipeline.from_pretrained(
22
- model_id,
23
- torch_dtype=torch.float16
24
- ).to(device)
25
-
26
- # 4. Inicializar IP-Adapter
27
  ip_model = IPAdapterFaceID(pipe, ip_ckpt, device)
28
 
29
- def predict(input_image, prompt):
30
- # Convertir de PIL a formato OpenCV para InsightFace
31
- img_cv = cv2.cvtColor(np.array(input_image), cv2.COLOR_RGB2BGR)
32
  faces = app.get(img_cv)
 
33
 
34
- if not faces:
35
- return None # O muestra un mensaje de error
36
-
37
- # Usar el primer rostro detectado
38
- face_embed = faces[0].embedding
39
-
40
- # Generar la imagen
41
- images = ip_model.generate(
42
- pil_image=input_image,
43
- face_embed=face_embed,
44
- prompt=prompt,
45
- width=512,
46
- height=512,
47
- num_inference_steps=30
48
  )
49
- return images[0]
50
-
51
- # 5. Crear la Interfaz con Gradio
52
- demo = gr.Interface(
53
- fn=predict,
54
- inputs=[gr.Image(type="pil", label="Sube tu foto"), gr.Textbox(label="Prompt")],
55
- outputs=gr.Image(label="Resultado"),
56
- title="Generador FaceID"
57
- )
58
 
59
- if __name__ == "__main__":
60
- demo.launch()
 
1
+ import sys
2
+ import os
3
  import gradio as gr
4
  import torch
5
  import cv2
6
  import numpy as np
7
  from PIL import Image
8
  from diffusers import StableDiffusionPipeline, DDIMScheduler
9
+
10
+ # --- FORZAR RUTA PARA QUE ENCUENTRE EL M脫DULO ---
11
+ sys.path.append(os.path.dirname(os.path.abspath(__file__)))
12
  from ip_adapter.ip_adapter_faceid import IPAdapterFaceID
13
+ # -----------------------------------------------
14
+
15
+ from insightface.app import FaceAnalysis
16
 
17
+ # Configuraci贸n
18
  device = "cuda"
19
  model_id = "runwayml/stable-diffusion-v1-5"
20
+ ip_ckpt = "ip-adapter-faceid_sd15.bin"
21
 
22
+ # Carga de modelos
23
  app = FaceAnalysis(name="buffalo_l", providers=['CUDAExecutionProvider'])
24
  app.prepare(ctx_id=0, det_size=(640, 640))
25
 
26
+ pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to(device)
 
 
 
 
 
 
27
  ip_model = IPAdapterFaceID(pipe, ip_ckpt, device)
28
 
29
+ def generate(image, prompt):
30
+ img_cv = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
 
31
  faces = app.get(img_cv)
32
+ if not faces: return None
33
 
34
+ # Generar
35
+ results = ip_model.generate(
36
+ pil_image=image, face_embed=faces[0].embedding,
37
+ prompt=prompt, width=512, height=512
 
 
 
 
 
 
 
 
 
 
38
  )
39
+ return results[0]
 
 
 
 
 
 
 
 
40
 
41
+ demo = gr.Interface(fn=generate, inputs=[gr.Image(type="pil"), gr.Textbox()], outputs="image")
42
+ demo.launch()