jalFaizy commited on
Commit
410c1fe
·
1 Parent(s): 5d8286d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -5
app.py CHANGED
@@ -55,6 +55,29 @@ def process_scan(path):
55
  volume = resize_volume(volume)
56
  return volume
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  def infer(filename):
59
  vol = process_scan(filename.name)
60
  vol = np.expand_dims(vol, axis=0)
@@ -67,17 +90,17 @@ def infer(filename):
67
  for score, name in zip(scores, class_names):
68
  result = result + [f"This model is {(100 * score):.2f} percent confident that CT scan is {name}"]
69
 
70
- return result
71
 
72
  model = from_pretrained_keras('jalFaizy/3D_CNN')
73
 
74
- filepath = gr.inputs.File()
75
- text = gr.outputs.Textbox()
76
 
77
  iface = gr.Interface(
78
  infer,
79
- filepath,
80
- text,
81
  title='3D CNN for CT scans',
82
  examples=['example_1_normal.nii.gz']
83
  )
 
55
  volume = resize_volume(volume)
56
  return volume
57
 
58
+ def plot_slices(num_rows, num_columns, width, height, data):
59
+ """Plot a montage of 20 CT slices"""
60
+ data = np.rot90(np.array(data))
61
+ data = np.transpose(data)
62
+ data = np.reshape(data, (num_rows, num_columns, width, height))
63
+ rows_data, columns_data = data.shape[0], data.shape[1]
64
+ heights = [slc[0].shape[0] for slc in data]
65
+ widths = [slc.shape[1] for slc in data[0]]
66
+ fig_width = 12.0
67
+ fig_height = fig_width * sum(heights) / sum(widths)
68
+ f, axarr = plt.subplots(
69
+ rows_data,
70
+ columns_data,
71
+ figsize=(fig_width, fig_height),
72
+ gridspec_kw={"height_ratios": heights},
73
+ )
74
+ for i in range(rows_data):
75
+ for j in range(columns_data):
76
+ axarr[i, j].imshow(data[i][j], cmap="gray")
77
+ axarr[i, j].axis("off")
78
+
79
+ return f
80
+
81
  def infer(filename):
82
  vol = process_scan(filename.name)
83
  vol = np.expand_dims(vol, axis=0)
 
90
  for score, name in zip(scores, class_names):
91
  result = result + [f"This model is {(100 * score):.2f} percent confident that CT scan is {name}"]
92
 
93
+ return result, plot_slices(2, 10, 128, 128, vol[0, :, :, :20])
94
 
95
  model = from_pretrained_keras('jalFaizy/3D_CNN')
96
 
97
+ inputs = gr.inputs.File()
98
+ outputs = [gr.outputs.Textbox(), 'plot']
99
 
100
  iface = gr.Interface(
101
  infer,
102
+ inputs,
103
+ outputs,
104
  title='3D CNN for CT scans',
105
  examples=['example_1_normal.nii.gz']
106
  )