Francisco Cerna Fukuzaki commited on
Commit
a7ef9bd
1 Parent(s): 22ba749
Files changed (1) hide show
  1. app.py +49 -12
app.py CHANGED
@@ -32,6 +32,9 @@ Este Notebook se acelera opcionalmente con un entorno de ejecución de GPU
32
  #!pip install -qr https://raw.githubusercontent.com/ultralytics/yolov5/master/requirements.txt gradio # install dependencies
33
 
34
  import os
 
 
 
35
  import gradio as gr
36
  import torch
37
  from PIL import Image
@@ -47,11 +50,41 @@ torch.hub.download_url_to_file('https://i.pinimg.com/originals/c2/ce/e0/c2cee056
47
  model = torch.hub.load('ultralytics/yolov5', 'custom', path='best.pt', force_reload=True, autoshape=True) # local model o google colab
48
  #model = torch.hub.load('path/to/yolov5', 'custom', path='/content/yolov56.pt', source='local') # local repo
49
 
50
- HF_TOKEN = os.getenv("HF_TOKEN")
51
- os.environ["HF_DATASETS_OFFLINE"] = "1"
52
- os.environ["TRANSFORMERS_OFFLINE"] = "1"
53
-
54
- hf_writer = gr.HuggingFaceDatasetSaver(HF_TOKEN, "datasets/AllAideas/demo-iazika-flags")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
  def yolo(size, iou, conf, im):
57
  '''Wrapper fn for gradio'''
@@ -66,8 +99,12 @@ def yolo(size, iou, conf, im):
66
  results2 = model(im) # inference
67
 
68
  results2.render() # updates results.imgs with boxes and labels
69
- return Image.fromarray(results2.ims[0])
70
-
 
 
 
 
71
  #------------ Interface-------------
72
 
73
 
@@ -78,6 +115,8 @@ in3 = gr.inputs.Slider(minimum=0, maximum=1, step=0.05, default=0.50, label='Umb
78
  in4 = gr.inputs.Image(type='pil', label="Original Image")
79
 
80
  out2 = gr.outputs.Image(type="pil", label="YOLOv5")
 
 
81
  #-------------- Text-----
82
  title = 'Trampas Barceló'
83
  description = """
@@ -94,15 +133,13 @@ examples = [['640',0.45, 0.75,'ejemplo1.jpg'], ['640',0.45, 0.75,'ejemplo2.jpg']
94
 
95
  iface = gr.Interface(yolo,
96
  inputs=[in1, in2, in3, in4],
97
- outputs=out2, title=title,
98
  description=description,
99
  article=article,
100
  examples=examples,
101
  theme="huggingface",
102
- analytics_enabled=False,
103
- allow_flagging="manual",
104
- flagging_callback=hf_writer
105
- ).launch(enable_queue=True,debug=True)
106
 
107
  iface.launch()
108
 
 
32
  #!pip install -qr https://raw.githubusercontent.com/ultralytics/yolov5/master/requirements.txt gradio # install dependencies
33
 
34
  import os
35
+ import re
36
+ import json
37
+ import pandas as pd
38
  import gradio as gr
39
  import torch
40
  from PIL import Image
 
50
  model = torch.hub.load('ultralytics/yolov5', 'custom', path='best.pt', force_reload=True, autoshape=True) # local model o google colab
51
  #model = torch.hub.load('path/to/yolov5', 'custom', path='/content/yolov56.pt', source='local') # local repo
52
 
53
+ def getQuantity(string):
54
+ contador_raw = ''.join(string.split(" ")[3:])
55
+
56
+ resultado_especie_1 = 'Aedes'
57
+ resultado_especie_2 = 'Mosquito'
58
+ resultado_especie_3 = 'Mosca'
59
+ resultado_cantidad_1 = ''.join(re.findall(r'\d+',''.join(re.findall(r'\d+'+resultado_especie_1, contador_raw))))
60
+ resultado_cantidad_2 = ''.join(re.findall(r'\d+',''.join(re.findall(r'\d+'+resultado_especie_2, contador_raw))))
61
+ resultado_cantidad_3 = ''.join(re.findall(r'\d+',''.join(re.findall(r'\d+'+resultado_especie_3, contador_raw))))
62
+ resultado_cantidad_1 = resultado_cantidad_1 if len(resultado_cantidad_1) > 0 else 0
63
+ resultado_cantidad_2 = resultado_cantidad_2 if len(resultado_cantidad_2) > 0 else 0
64
+ resultado_cantidad_3 = resultado_cantidad_3 if len(resultado_cantidad_3) > 0 else 0
65
+
66
+ resultado_lista = [[resultado_cantidad_1,resultado_especie_1],
67
+ [resultado_cantidad_2,resultado_especie_2],
68
+ [resultado_cantidad_3,resultado_especie_3]]
69
+
70
+ return resultado_lista
71
+
72
+ def listJSON(resultado):
73
+ resultado_lista = getQuantity(resultado)
74
+ img_name = " ".join(resultado.split(" ")[0:2])
75
+ img_size = "".join(resultado.split(" ")[2])
76
+ strlista = ""
77
+ for resultado_lista, description in resultado_lista:
78
+ strlista += '{"quantity":"'+resultado_lista+'","description":"'+description+'"},'
79
+ strlista = strlista[:-1]
80
+ str_resultado_lista = '{"image":"'+str(img_name)+'","size":"'+str(img_size)+'","detail":['+strlista+']}'
81
+ json_string = json.loads(str_resultado_lista)
82
+ return json_string
83
+
84
+ def arrayLista(resultado):
85
+ resultado_lista = getQuantity(resultado)
86
+ df = pd.DataFrame(resultado_lista,columns=['Cantidad','Especie'])
87
+ return df
88
 
89
  def yolo(size, iou, conf, im):
90
  '''Wrapper fn for gradio'''
 
99
  results2 = model(im) # inference
100
 
101
  results2.render() # updates results.imgs with boxes and labels
102
+
103
+ results_detail = str(results2)
104
+ lista = listJSON(results_detail)
105
+ lista2 = arrayLista(results_detail)
106
+ return Image.fromarray(results2.ims[0]), lista2, lista
107
+
108
  #------------ Interface-------------
109
 
110
 
 
115
  in4 = gr.inputs.Image(type='pil', label="Original Image")
116
 
117
  out2 = gr.outputs.Image(type="pil", label="YOLOv5")
118
+ out3 = gr.outputs.Dataframe(label="Descripción", headers=['Cantidad','Especie'])
119
+ out4 = gr.outputs.JSON(label="JSON")
120
  #-------------- Text-----
121
  title = 'Trampas Barceló'
122
  description = """
 
133
 
134
  iface = gr.Interface(yolo,
135
  inputs=[in1, in2, in3, in4],
136
+ outputs=[out2,out3,out4], title=title,
137
  description=description,
138
  article=article,
139
  examples=examples,
140
  theme="huggingface",
141
+ analytics_enabled=False
142
+ ).launch(debug=True)
 
 
143
 
144
  iface.launch()
145