DHEIVER commited on
Commit
bb04039
1 Parent(s): 3125630

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -21
app.py CHANGED
@@ -7,6 +7,8 @@ import cv2
7
  import numpy as np
8
  from preprocess import unsharp_masking
9
  import time
 
 
10
 
11
  device = "cuda" if torch.cuda.is_available() else "cpu"
12
 
@@ -16,7 +18,7 @@ def ordenar_e_preprocessar_imagem(img, modelo):
16
  img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
17
  h, w = img.shape
18
  img_out = preprocessar_imagem(img, modelo)
19
- return img_out, h, w, img, ori
20
 
21
  # Função para pré-processar a imagem com base no modelo selecionado
22
  def preprocessar_imagem(img, modelo='SE-RegUNet 4GF'):
@@ -50,6 +52,9 @@ def preprocessar_imagem(img, modelo='SE-RegUNet 4GF'):
50
 
51
  return img_out
52
 
 
 
 
53
  # Caminho absoluto para a pasta de salvamento
54
  caminho_salvar_resultado = "/Segmento_de_Angio_Coronariana_v5/Salvar Resultado"
55
 
@@ -62,9 +67,6 @@ def processar_imagem_de_entrada(img, modelo, pipe, salvar_resultado=False):
62
  # Coloque o modelo na GPU (se disponível) e configure-o para modo de avaliação
63
  pipe = pipe.to(device).eval()
64
 
65
- # Registre o tempo de início
66
- start = time.time()
67
-
68
  # Pré-processe a imagem e obtenha informações de dimensão
69
  img, h, w, ori_gray, ori = ordenar_e_preprocessar_imagem(img, modelo)
70
 
@@ -77,10 +79,6 @@ def processar_imagem_de_entrada(img, modelo, pipe, salvar_resultado=False):
77
  img = torch.cat([img, img], dim=0)
78
  logit = np.round(torch.softmax(pipe.forward(img), dim=1).detach().cpu().numpy()[0, 0]).astype(np.uint8)
79
 
80
- # Calcule o tempo decorrido
81
- spent = time.time() - start
82
- spent = f"{spent:.3f} segundos"
83
-
84
  # Redimensione o resultado, se necessário
85
  if h != 512 or w != 512:
86
  logit = cv2.resize(logit, (h, w))
@@ -97,7 +95,7 @@ def processar_imagem_de_entrada(img, modelo, pipe, salvar_resultado=False):
97
  nome_arquivo = os.path.join(caminho_salvar_resultado, f'resultado_{int(time.time())}.png')
98
  cv2.imwrite(nome_arquivo, img_out)
99
 
100
- return spent, img_out
101
 
102
  except Exception as e:
103
  # Em caso de erro, retorne uma mensagem de erro
@@ -113,31 +111,26 @@ models = {
113
  'UNet3+': torch.jit.load('./model/UNet3plus.pt'),
114
  }
115
 
116
- # Função para processar a imagem de entrada com os campos extras removidos
117
- def processar_imagem_de_entrada_wrapper(img, modelo, salvar_resultado=False):
118
  model = models[modelo]
119
- resultado = processar_imagem_de_entrada(img, modelo, model, salvar_resultado)
120
- return resultado
121
-
122
- # Inicializar a contagem de análises
123
- num_analises = 0
124
 
125
- # Criar a interface Gradio sem os campos extras
126
  my_app = gr.Interface(
127
  fn=processar_imagem_de_entrada_wrapper,
128
  inputs=[
129
  gr.inputs.Image(label="Angiograma:", shape=(512, 512)),
130
  gr.inputs.Dropdown(['SE-RegUNet 4GF','SE-RegUNet 16GF', 'AngioNet', 'EffUNet++ B5', 'Reg-SA-UNet++', 'UNet3+'], label='Modelo', default='SE-RegUNet 4GF'),
131
- gr.inputs.Checkbox(label="Salvar Resultado"),
132
  ],
133
  outputs=gr.outputs.Image(type="numpy", label="Imagem de Saída"),
134
  title="Segmentação de Angiograma Coronariano",
135
  description="Esta aplicação segmenta angiogramas coronarianos usando modelos de segmentação pré-treinados.",
136
  theme="default",
137
  layout="vertical",
138
- allow_flagging="never", # Altere para uma string "auto", "manual" ou "never"
139
  )
140
 
141
  # Iniciar a interface Gradio
142
- my_app.launch()
143
-
 
7
  import numpy as np
8
  from preprocess import unsharp_masking
9
  import time
10
+ from sklearn.cluster import KMeans
11
+ import os
12
 
13
  device = "cuda" if torch.cuda.is_available() else "cpu"
14
 
 
18
  img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
19
  h, w = img.shape
20
  img_out = preprocessar_imagem(img, modelo)
21
+ return img_out
22
 
23
  # Função para pré-processar a imagem com base no modelo selecionado
24
  def preprocessar_imagem(img, modelo='SE-RegUNet 4GF'):
 
52
 
53
  return img_out
54
 
55
+
56
+ import os
57
+
58
  # Caminho absoluto para a pasta de salvamento
59
  caminho_salvar_resultado = "/Segmento_de_Angio_Coronariana_v5/Salvar Resultado"
60
 
 
67
  # Coloque o modelo na GPU (se disponível) e configure-o para modo de avaliação
68
  pipe = pipe.to(device).eval()
69
 
 
 
 
70
  # Pré-processe a imagem e obtenha informações de dimensão
71
  img, h, w, ori_gray, ori = ordenar_e_preprocessar_imagem(img, modelo)
72
 
 
79
  img = torch.cat([img, img], dim=0)
80
  logit = np.round(torch.softmax(pipe.forward(img), dim=1).detach().cpu().numpy()[0, 0]).astype(np.uint8)
81
 
 
 
 
 
82
  # Redimensione o resultado, se necessário
83
  if h != 512 or w != 512:
84
  logit = cv2.resize(logit, (h, w))
 
95
  nome_arquivo = os.path.join(caminho_salvar_resultado, f'resultado_{int(time.time())}.png')
96
  cv2.imwrite(nome_arquivo, img_out)
97
 
98
+ return img_out
99
 
100
  except Exception as e:
101
  # Em caso de erro, retorne uma mensagem de erro
 
111
  'UNet3+': torch.jit.load('./model/UNet3plus.pt'),
112
  }
113
 
114
+ # Função para processar a imagem de entrada e retornar apenas a imagem de saída
115
+ def processar_imagem_de_entrada_wrapper(img, modelo):
116
  model = models[modelo]
117
+ img_out = processar_imagem_de_entrada(img, modelo, model)
118
+ return img_out
 
 
 
119
 
120
+ # Criar a interface Gradio
121
  my_app = gr.Interface(
122
  fn=processar_imagem_de_entrada_wrapper,
123
  inputs=[
124
  gr.inputs.Image(label="Angiograma:", shape=(512, 512)),
125
  gr.inputs.Dropdown(['SE-RegUNet 4GF','SE-RegUNet 16GF', 'AngioNet', 'EffUNet++ B5', 'Reg-SA-UNet++', 'UNet3+'], label='Modelo', default='SE-RegUNet 4GF'),
 
126
  ],
127
  outputs=gr.outputs.Image(type="numpy", label="Imagem de Saída"),
128
  title="Segmentação de Angiograma Coronariano",
129
  description="Esta aplicação segmenta angiogramas coronarianos usando modelos de segmentação pré-treinados.",
130
  theme="default",
131
  layout="vertical",
132
+ allow_flagging=False,
133
  )
134
 
135
  # Iniciar a interface Gradio
136
+ my_app.launch()