GianmarcoJTA commited on
Commit
1443328
verified
1 Parent(s): 3fcea89

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -21
app.py CHANGED
@@ -1,41 +1,53 @@
1
- from flask import Flask, request, jsonify
2
  from PIL import Image
3
- import requests
4
- from io import BytesIO
5
  from transformers import DetrImageProcessor, DetrForObjectDetection
6
 
7
  app = Flask(__name__)
8
 
9
  # Cargar el modelo preentrenado de Hugging Face
10
- model_id = "facebook/detectron2/face-detection" # Usar el modelo adecuado
11
  processor = DetrImageProcessor.from_pretrained(model_id)
12
  model = DetrForObjectDetection.from_pretrained(model_id)
13
 
14
- @app.route('/detect_face', methods=['POST'])
15
- def detect_face():
16
- # Verificar si la imagen fue enviada
17
- if 'file' not in request.files:
18
- return jsonify({"error": "No file part"}), 400
19
- file = request.files['file']
20
-
21
- # Leer la imagen desde el archivo
22
- img = Image.open(file.stream)
23
-
24
- # Preprocesar la imagen
25
- inputs = processor(images=img, return_tensors="pt")
26
 
27
  # Ejecutar la inferencia
28
  outputs = model(**inputs)
29
 
30
- # Extraer las cajas delimitadoras
31
- target_sizes = torch.tensor([img.size[::-1]]) # (height, width)
32
  results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
33
 
34
- # Verificar si se detect贸 alg煤n rostro
35
  if len(results['scores']) > 0:
36
- return jsonify({"message": "Face detected", "confidence": results['scores'].tolist()})
37
  else:
38
- return jsonify({"message": "No face detected"})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  if __name__ == '__main__':
 
41
  app.run(debug=True, host='0.0.0.0', port=5000)
 
1
+ from flask import Flask, request, render_template, jsonify
2
  from PIL import Image
3
+ import gradio as gr
4
+ import torch
5
  from transformers import DetrImageProcessor, DetrForObjectDetection
6
 
7
  app = Flask(__name__)
8
 
9
  # Cargar el modelo preentrenado de Hugging Face
10
+ model_id = "facebook/detectron2/face-detection" # Reemplaza con el modelo correcto
11
  processor = DetrImageProcessor.from_pretrained(model_id)
12
  model = DetrForObjectDetection.from_pretrained(model_id)
13
 
14
+ # Funci贸n para detectar rostros en una imagen
15
+ def detect_face(image):
16
+ # La imagen 'image' es el input que viene de la interfaz de Gradio (tipo PIL)
17
+ # Preprocesar la imagen antes de pas谩rsela al modelo
18
+ inputs = processor(images=image, return_tensors="pt")
 
 
 
 
 
 
 
19
 
20
  # Ejecutar la inferencia
21
  outputs = model(**inputs)
22
 
23
+ # Obtener las cajas delimitadoras y sus probabilidades
24
+ target_sizes = torch.tensor([image.size[::-1]]) # (height, width)
25
  results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
26
 
27
+ # Verificar si se detectaron rostros
28
  if len(results['scores']) > 0:
29
+ return "Face detected!"
30
  else:
31
+ return "No face detected"
32
+
33
+ # Interfaz de Gradio para cargar imagen
34
+ def gradio_interface():
35
+ # Gradio permite que el usuario cargue una imagen desde su dispositivo
36
+ interface = gr.Interface(
37
+ fn=detect_face, # La funci贸n que procesar谩 la imagen cargada
38
+ inputs=gr.inputs.Image(type="pil"), # Input que espera una imagen (tipo PIL)
39
+ outputs="text", # Resultado que ser谩 mostrado como texto
40
+ live=True, # Hacer la detecci贸n en tiempo real mientras se carga la imagen
41
+ title="Face Detection",
42
+ description="Upload an image to detect faces."
43
+ )
44
+ return interface
45
+
46
+ @app.route('/')
47
+ def index():
48
+ # Renderiza la interfaz de Gradio en la p谩gina principal
49
+ return gradio_interface().launch(inline=True)
50
 
51
  if __name__ == '__main__':
52
+ # Ejecuta la aplicaci贸n Flask en el puerto 5000
53
  app.run(debug=True, host='0.0.0.0', port=5000)