samuellimabraz commited on
Commit
53fda1d
·
unverified ·
1 Parent(s): cfa9d6d

feat: aumentar limite de métricas recentes e adicionar campos de tempo médio e último tempo de inferência na interface

Browse files
Files changed (1) hide show
  1. app.py +53 -12
app.py CHANGED
@@ -85,7 +85,7 @@ class MetricsStorage:
85
  )
86
  conn.commit()
87
 
88
- def get_recent_metrics(self, limit=50):
89
  """Get the most recent metrics from the database"""
90
  with sqlite3.connect(self.db_path) as conn:
91
  cursor = conn.cursor()
@@ -103,7 +103,7 @@ class MetricsStorage:
103
  cursor.execute("SELECT COUNT(*) FROM inference_metrics")
104
  return cursor.fetchone()[0]
105
 
106
- def get_average_time(self, limit=50):
107
  """Get the average inference time from the most recent entries"""
108
  with sqlite3.connect(self.db_path) as conn:
109
  cursor = conn.cursor()
@@ -123,10 +123,10 @@ class SignatureDetector:
123
  self.input_height = 640
124
 
125
  # Initialize ONNX Runtime session
126
- self.session = ort.InferenceSession(
127
- MODEL_PATH
 
128
  )
129
- self.session.set_providers(['OpenVINOExecutionProvider'], [{'device_type' : 'CPU'}])
130
 
131
  self.metrics_storage = MetricsStorage()
132
 
@@ -154,7 +154,7 @@ class SignatureDetector:
154
  metrics = self.get_metrics()
155
 
156
  if not metrics["times"]: # Se não houver dados
157
- return None, None, None, None
158
 
159
  # Criar plots data
160
  hist_data = pd.DataFrame({"Tempo (ms)": metrics["times"]})
@@ -178,6 +178,8 @@ class SignatureDetector:
178
  f"Total de Inferências: {metrics['total_inferences']}",
179
  hist_fig,
180
  line_fig,
 
 
181
  )
182
 
183
  def create_plots(self, hist_data, line_data):
@@ -388,11 +390,16 @@ def create_gradio_interface():
388
  color: #1f2937 !important;
389
  margin-bottom: 1rem !important;
390
  }
 
 
 
 
 
391
  """
392
 
393
  def process_image(image, conf_thres, iou_thres):
394
  if image is None:
395
- return None, None, None, None
396
 
397
  output_image, metrics = detector.detect(image, conf_thres, iou_thres)
398
 
@@ -421,11 +428,13 @@ def create_gradio_interface():
421
  ),
422
  hist_fig,
423
  line_fig,
 
 
424
  )
425
 
426
  def process_folder(files_path, conf_thres, iou_thres):
427
  if not files_path:
428
- return None, None, None, None
429
 
430
  valid_extensions = [".jpg", ".jpeg", ".png"]
431
  image_files = [
@@ -433,7 +442,7 @@ def create_gradio_interface():
433
  ]
434
 
435
  if not image_files:
436
- return None, None, None, None
437
 
438
  for img_file in image_files:
439
  image = Image.open(img_file)
@@ -532,6 +541,17 @@ def create_gradio_interface():
532
 
533
  with gr.Column(scale=1):
534
  line_plot = gr.Plot(label="Histórico de Tempos", container=True)
 
 
 
 
 
 
 
 
 
 
 
535
 
536
  with gr.Row(elem_classes="container"):
537
 
@@ -565,20 +585,41 @@ def create_gradio_interface():
565
  detect_single_btn.click(
566
  fn=process_image,
567
  inputs=[input_image, confidence_threshold, iou_threshold],
568
- outputs=[output_image, total_inferences, hist_plot, line_plot],
 
 
 
 
 
 
 
569
  )
570
 
571
  detect_folder_btn.click(
572
  fn=process_folder,
573
  inputs=[input_folder, confidence_threshold, iou_threshold],
574
- outputs=[output_image, total_inferences, hist_plot, line_plot],
 
 
 
 
 
 
 
575
  )
576
 
577
  # Carregar métricas iniciais ao carregar a página
578
  iface.load(
579
  fn=detector.load_initial_metrics,
580
  inputs=None,
581
- outputs=[output_image, total_inferences, hist_plot, line_plot],
 
 
 
 
 
 
 
582
  )
583
 
584
  return iface
 
85
  )
86
  conn.commit()
87
 
88
+ def get_recent_metrics(self, limit=80):
89
  """Get the most recent metrics from the database"""
90
  with sqlite3.connect(self.db_path) as conn:
91
  cursor = conn.cursor()
 
103
  cursor.execute("SELECT COUNT(*) FROM inference_metrics")
104
  return cursor.fetchone()[0]
105
 
106
+ def get_average_time(self, limit=80):
107
  """Get the average inference time from the most recent entries"""
108
  with sqlite3.connect(self.db_path) as conn:
109
  cursor = conn.cursor()
 
123
  self.input_height = 640
124
 
125
  # Initialize ONNX Runtime session
126
+ self.session = ort.InferenceSession(MODEL_PATH)
127
+ self.session.set_providers(
128
+ ["OpenVINOExecutionProvider"], [{"device_type": "CPU"}]
129
  )
 
130
 
131
  self.metrics_storage = MetricsStorage()
132
 
 
154
  metrics = self.get_metrics()
155
 
156
  if not metrics["times"]: # Se não houver dados
157
+ return None, None, None, None, None, None
158
 
159
  # Criar plots data
160
  hist_data = pd.DataFrame({"Tempo (ms)": metrics["times"]})
 
178
  f"Total de Inferências: {metrics['total_inferences']}",
179
  hist_fig,
180
  line_fig,
181
+ f"{metrics['avg_time']:.2f}",
182
+ f"{metrics['times'][-1]:.2f}",
183
  )
184
 
185
  def create_plots(self, hist_data, line_data):
 
390
  color: #1f2937 !important;
391
  margin-bottom: 1rem !important;
392
  }
393
+ .metrics-row {
394
+ display: flex !important;
395
+ gap: 1rem !important;
396
+ margin-top: 0.5rem !important;
397
+ }
398
  """
399
 
400
  def process_image(image, conf_thres, iou_thres):
401
  if image is None:
402
+ return None, None, None, None, None, None
403
 
404
  output_image, metrics = detector.detect(image, conf_thres, iou_thres)
405
 
 
428
  ),
429
  hist_fig,
430
  line_fig,
431
+ f"{metrics['avg_time']:.2f}",
432
+ f"{metrics['times'][-1]:.2f}",
433
  )
434
 
435
  def process_folder(files_path, conf_thres, iou_thres):
436
  if not files_path:
437
+ return None, None, None, None, None, None
438
 
439
  valid_extensions = [".jpg", ".jpeg", ".png"]
440
  image_files = [
 
442
  ]
443
 
444
  if not image_files:
445
+ return None, None, None, None, None, None
446
 
447
  for img_file in image_files:
448
  image = Image.open(img_file)
 
541
 
542
  with gr.Column(scale=1):
543
  line_plot = gr.Plot(label="Histórico de Tempos", container=True)
544
+ with gr.Row(elem_classes="metrics-row"):
545
+ avg_inference_time = gr.Textbox(
546
+ label="Tempo Médio de Inferência (ms)",
547
+ show_copy_button=True,
548
+ container=True,
549
+ )
550
+ last_inference_time = gr.Textbox(
551
+ label="Último Tempo de Inferência (ms)",
552
+ show_copy_button=True,
553
+ container=True,
554
+ )
555
 
556
  with gr.Row(elem_classes="container"):
557
 
 
585
  detect_single_btn.click(
586
  fn=process_image,
587
  inputs=[input_image, confidence_threshold, iou_threshold],
588
+ outputs=[
589
+ output_image,
590
+ total_inferences,
591
+ hist_plot,
592
+ line_plot,
593
+ avg_inference_time,
594
+ last_inference_time,
595
+ ],
596
  )
597
 
598
  detect_folder_btn.click(
599
  fn=process_folder,
600
  inputs=[input_folder, confidence_threshold, iou_threshold],
601
+ outputs=[
602
+ output_image,
603
+ total_inferences,
604
+ hist_plot,
605
+ line_plot,
606
+ avg_inference_time,
607
+ last_inference_time,
608
+ ],
609
  )
610
 
611
  # Carregar métricas iniciais ao carregar a página
612
  iface.load(
613
  fn=detector.load_initial_metrics,
614
  inputs=None,
615
+ outputs=[
616
+ output_image,
617
+ total_inferences,
618
+ hist_plot,
619
+ line_plot,
620
+ avg_inference_time,
621
+ last_inference_time,
622
+ ],
623
  )
624
 
625
  return iface