eldavid commited on
Commit
6ede48a
1 Parent(s): 1b49caa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -18
app.py CHANGED
@@ -1,34 +1,43 @@
1
  import gradio as gr
2
- from PIL import Image, ImageDraw
3
  import torch
4
- from facenet_pytorch import MTCNN
 
 
 
 
 
 
 
 
 
 
 
5
 
6
- # Carregar o modelo de detecção de rostos
7
- mtcnn = MTCNN(keep_all=True)
 
8
 
9
- def detect_faces(image):
10
- # Detectar rostos na imagem
11
- boxes, _ = mtcnn.detect(image)
12
-
13
  # Desenhar as caixas delimitadoras na imagem
14
  draw = ImageDraw.Draw(image)
15
- num_faces = 0
16
 
17
- if boxes is not None:
18
- for box in boxes:
19
- draw.rectangle(box.tolist(), outline="red", width=3)
20
- num_faces += 1
 
21
 
22
- return image, f"Número de rostos: {num_faces}"
23
 
24
  # Criar a interface do Gradio
25
  iface = gr.Interface(
26
- fn=detect_faces,
27
  inputs=gr.Image(type="pil"),
28
  outputs=[gr.Image(type="pil"), gr.Textbox()],
29
- title="Contador de Rostos em Imagens",
30
- description="Carregue uma imagem para contar o número de rostos detectados nela."
31
  )
32
 
33
  # Executar a aplicação
34
- iface.launch()
 
1
  import gradio as gr
2
+ from transformers import DetrImageProcessor, DetrForObjectDetection
3
  import torch
4
+ from PIL import Image, ImageDraw
5
+
6
+ # Carregar o processador e o modelo
7
+ processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
8
+ model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")
9
+
10
+ def detect_people(image):
11
+ # Pré-processar a imagem
12
+ inputs = processor(images=image, return_tensors="pt")
13
+
14
+ # Realizar a inferência
15
+ outputs = model(**inputs)
16
 
17
+ # Processar os resultados
18
+ target_sizes = torch.tensor([image.size[::-1]])
19
+ results = processor.post_process_object_detection(outputs, target_sizes=target_sizes)[0]
20
 
 
 
 
 
21
  # Desenhar as caixas delimitadoras na imagem
22
  draw = ImageDraw.Draw(image)
23
+ num_pessoas = 0
24
 
25
+ for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
26
+ if score > 0.9 and model.config.id2label[label.item()] == "person":
27
+ box = box.tolist()
28
+ draw.rectangle(box, outline="red", width=3)
29
+ num_pessoas += 1
30
 
31
+ return image, f"Número de pessoas: {num_pessoas}"
32
 
33
  # Criar a interface do Gradio
34
  iface = gr.Interface(
35
+ fn=detect_people,
36
  inputs=gr.Image(type="pil"),
37
  outputs=[gr.Image(type="pil"), gr.Textbox()],
38
+ title="Contador de Pessoas em Imagens",
39
+ description="Carregue uma imagem para contar o número de pessoas detectadas nela."
40
  )
41
 
42
  # Executar a aplicação
43
+ iface.launch()