appinitdev commited on
Commit
b588e4a
路
verified 路
1 Parent(s): 326f2a6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -22
app.py CHANGED
@@ -1,47 +1,60 @@
1
  import gradio as gr
2
  import torch
3
- from diffusers import StableDiffusionPipeline, DDIMScheduler
4
- from ip_adapter.ip_adapter_faceid import IPAdapterFaceID
5
- from insightface.app import FaceAnalysis
6
  import cv2
7
  import numpy as np
 
 
 
 
 
8
 
9
- # Configuraci贸n inicial
10
  device = "cuda"
11
  model_id = "runwayml/stable-diffusion-v1-5"
12
- ip_ckpt = "ip-adapter-faceid_sd15.bin"
13
 
14
- # Cargar el pipeline
15
- pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to(device)
16
  app = FaceAnalysis(name="buffalo_l", providers=['CUDAExecutionProvider'])
17
  app.prepare(ctx_id=0, det_size=(640, 640))
18
 
19
- # Cargar IP-Adapter
 
 
 
 
 
 
20
  ip_model = IPAdapterFaceID(pipe, ip_ckpt, device)
21
 
22
- def generate_image(input_image, prompt):
23
- # Procesar cara
24
  img_cv = cv2.cvtColor(np.array(input_image), cv2.COLOR_RGB2BGR)
25
  faces = app.get(img_cv)
 
26
  if not faces:
27
- return None
 
 
 
28
 
29
- # Generar
30
- image = ip_model.generate(
31
  pil_image=input_image,
32
- face_embed=faces[0].embedding,
33
  prompt=prompt,
34
  width=512,
35
- height=512
 
36
  )
37
- return image[0]
38
 
39
- # Interfaz de Gradio
40
  demo = gr.Interface(
41
- fn=generate_image,
42
- inputs=[gr.Image(type="pil"), gr.Textbox(label="Prompt")],
43
- outputs="image",
44
- title="IP-Adapter FaceID Generator"
45
  )
46
 
47
- demo.launch()
 
 
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()