Jeysshon commited on
Commit
723f569
·
1 Parent(s): 243cbaa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -27
app.py CHANGED
@@ -1,13 +1,10 @@
1
  import gradio as gr
2
- from PIL import Image
3
  import numpy as np
4
- import cv2
5
  from keras.models import Model
6
  from keras.layers import Input, Conv2D, MaxPooling2D, Conv2DTranspose, concatenate
7
 
8
- size = 128
9
-
10
- def preprocess_image(image, size=128):
11
  image = image.resize((size, size))
12
  image = image.convert("L")
13
  image = np.array(image) / 255.0
@@ -29,7 +26,7 @@ def decoder_block(input, skip_features, num_filters):
29
  conv = conv_block(con, num_filters)
30
  return conv
31
 
32
- def build_model(input_shape):
33
  input_layer = Input(input_shape)
34
 
35
  s1, p1 = encoder_block(input_layer, 64)
@@ -44,19 +41,13 @@ def build_model(input_shape):
44
  d3 = decoder_block(d2, s2, 128)
45
  d4 = decoder_block(d3, s1, 64)
46
 
47
- output_layer = Conv2D(1, 1, padding="same", activation="sigmoid")(d4)
48
  model = Model(input_layer, output_layer, name="U-Net")
49
  model.load_weights('modelo.h5')
50
  return model
51
-
52
- def preprocess_image(image, size=128):
53
- image = cv2.resize(image, (size, size))
54
- image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
55
- image = image / 255.
56
- return image
57
 
58
- def segment(image):
59
- image = preprocess_image(image, size=size)
60
  image = np.expand_dims(image, 0)
61
  output = model.predict(image, verbose=0)
62
  mask_image = output[0]
@@ -65,36 +56,33 @@ def segment(image):
65
  mask_image = mask_image.astype(np.uint8)
66
  mask_image = Image.fromarray(mask_image).convert("L")
67
 
68
- #Porcentaje de 0
69
  positive_pixels = np.count_nonzero(mask_image)
70
  total_pixels = mask_image.size[0] * mask_image.size[1]
71
  percentage = (positive_pixels / total_pixels) * 100
72
 
73
- # Calcular los porcentajes de 0 y 1
74
  class_0_percentage = 100 - percentage
75
  class_1_percentage = percentage
76
 
77
  return mask_image, class_0_percentage, class_1_percentage
78
 
79
  if __name__ == "__main__":
80
- model = build_model(input_shape=(size, size, 1))
 
 
81
  gr.Interface(
82
- fn=segment,
83
  inputs="image",
84
  outputs=[
85
- gr.Image(type="pil", label="Breast Cancer Mask"),
86
  gr.Number(label="Benigno"),
87
  gr.Number(label="Maligno")
88
  ],
89
- title = '<h1 style="text-align: center;">Breast Cancer </h1>',
90
-
91
- description = """
92
- Explore essa incrível novidade no diagnóstico e tratamento do câncer de mama!
93
- Apresentamos a demo de Segmentação de Imagem por Ultrassom de Câncer de Mama.
94
- Faça o upload de uma imagem ou experimente um dos exemplos abaixo! 🙌
95
  """,
96
  theme="default",
97
  layout="vertical",
98
  verbose=True
99
- ).launch(debug=True)
100
 
 
1
  import gradio as gr
 
2
  import numpy as np
3
+ from PIL import Image
4
  from keras.models import Model
5
  from keras.layers import Input, Conv2D, MaxPooling2D, Conv2DTranspose, concatenate
6
 
7
+ def preprocess_image(image, size):
 
 
8
  image = image.resize((size, size))
9
  image = image.convert("L")
10
  image = np.array(image) / 255.0
 
26
  conv = conv_block(con, num_filters)
27
  return conv
28
 
29
+ def build_model(input_shape, num_output_channels):
30
  input_layer = Input(input_shape)
31
 
32
  s1, p1 = encoder_block(input_layer, 64)
 
41
  d3 = decoder_block(d2, s2, 128)
42
  d4 = decoder_block(d3, s1, 64)
43
 
44
+ output_layer = Conv2D(num_output_channels, 1, padding="same", activation="sigmoid")(d4)
45
  model = Model(input_layer, output_layer, name="U-Net")
46
  model.load_weights('modelo.h5')
47
  return model
 
 
 
 
 
 
48
 
49
+ def image_segmentation(image, size=128, num_output_channels=1):
50
+ image = preprocess_image(image, size)
51
  image = np.expand_dims(image, 0)
52
  output = model.predict(image, verbose=0)
53
  mask_image = output[0]
 
56
  mask_image = mask_image.astype(np.uint8)
57
  mask_image = Image.fromarray(mask_image).convert("L")
58
 
 
59
  positive_pixels = np.count_nonzero(mask_image)
60
  total_pixels = mask_image.size[0] * mask_image.size[1]
61
  percentage = (positive_pixels / total_pixels) * 100
62
 
 
63
  class_0_percentage = 100 - percentage
64
  class_1_percentage = percentage
65
 
66
  return mask_image, class_0_percentage, class_1_percentage
67
 
68
  if __name__ == "__main__":
69
+ size = 128
70
+ num_output_channels = 1
71
+ model = build_model(input_shape=(size, size, 1), num_output_channels=num_output_channels)
72
  gr.Interface(
73
+ fn=image_segmentation,
74
  inputs="image",
75
  outputs=[
76
+ gr.Image(type="pil", label="Cáncer de mama "),
77
  gr.Number(label="Benigno"),
78
  gr.Number(label="Maligno")
79
  ],
80
+ title='<h1 style="text-align: center;">Cáncer de mama </h1>',
81
+ description="""
82
+ Demostración de segmentación de imágenes de ultrasonido de cáncer de mama.
 
 
 
83
  """,
84
  theme="default",
85
  layout="vertical",
86
  verbose=True
87
+ ).launch(debug=True)
88