aagoluoglu commited on
Commit
22ca03a
·
verified ·
1 Parent(s): 89aa0e5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -55
app.py CHANGED
@@ -53,7 +53,7 @@ app_ui = ui.page_fillable(
53
  ui.input_switch("show_margins", "Show marginal plots", value=True),
54
  ),
55
  ui.output_image("uploaded_image"), # display the uploaded TIFF sidewalk tile image
56
- ui.output_text("processed_output"),
57
  ui.output_ui("value_boxes"),
58
  ui.output_plot("scatter", fill=True),
59
  ui.help_text(
@@ -176,8 +176,6 @@ def server(input: Inputs, output: Outputs, session: Session):
176
  """ Prepare Inputs """
177
  # get input points prompt (grid of points)
178
  input_points = generate_input_points(image)
179
- print("INPUT POINTS SHAPE", np.array(input_points).shape)
180
- print("IMAGE DIMENSIONS", image.width, image.height)
181
 
182
  # prepare image and prompt for the model
183
  inputs = processor(image, input_points=input_points, return_tensors="pt")
@@ -199,66 +197,53 @@ def server(input: Inputs, output: Outputs, session: Session):
199
  prob = prob.cpu().numpy().squeeze()
200
  prediction = (prob > 0.5).astype(np.uint8)
201
 
202
- # fig, axes = plt.subplots(1, 5, figsize=(15, 5))
203
-
204
- # # Extract the image data from the batch
205
- # image_data = batch['image'].cpu().detach().numpy()[0] # Assuming batch size is 1
206
-
207
- # # Plot the first image on the left
208
- # axes[0].imshow(image_data)
209
- # axes[0].set_title("Image")
210
-
211
- # # Plot the second image on the right
212
- # axes[1].imshow(prob)
213
- # axes[1].set_title("Probability Map")
214
-
215
- # # Plot the prediction image on the right
216
- # axes[2].imshow(prediction)
217
- # axes[2].set_title("Prediction")
218
-
219
- # # Plot the predicted mask on the right
220
- # axes[3].imshow(image_data)
221
- # show_mask(prediction, axes[3])
222
- # axes[3].set_title("Predicted Mask")
223
-
224
- # # Extract the ground truth mask data from the batch
225
- # ground_truth_mask_data = inputs['ground_truth_mask'].cpu().detach().numpy()[0] # Assuming batch size is 1
226
-
227
- # # Plot the ground truth mask on the right
228
- # axes[4].imshow(image_data)
229
- # axes[4].imshow(ground_truth_mask_data)
230
- # #show_mask(inputs['ground_truth_mask'], axes[4])
231
- # axes[4].set_title("Ground Truth Mask")
232
-
233
- # # Hide axis ticks and labels
234
- # for ax in axes:
235
- # ax.set_xticks([])
236
- # ax.set_yticks([])
237
- # ax.set_xticklabels([])
238
- # ax.set_yticklabels([])
239
-
240
- # # Display the images side by side
241
- # plt.show()
242
-
243
- # Evaluate the image with the model
244
- # Example: predictions = model.predict(image_array)
245
-
246
- # Return the processed result (replace 'result' with the actual processed result)
247
- return "Processed result"
248
 
249
  @reactive.Calc
250
- def processed_result():
251
- """Processes the image when uploaded"""
252
  if input.tile_image() is not None:
253
  return process_image()
254
  else:
255
  return None
256
 
257
  @output
258
- @render.text
259
- def processed_output():
260
- """Displays the predictions of the uploaded image"""
261
- return processed_result()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
 
263
 
264
 
 
53
  ui.input_switch("show_margins", "Show marginal plots", value=True),
54
  ),
55
  ui.output_image("uploaded_image"), # display the uploaded TIFF sidewalk tile image
56
+ ui.output_plot("prediction_plots"),
57
  ui.output_ui("value_boxes"),
58
  ui.output_plot("scatter", fill=True),
59
  ui.help_text(
 
176
  """ Prepare Inputs """
177
  # get input points prompt (grid of points)
178
  input_points = generate_input_points(image)
 
 
179
 
180
  # prepare image and prompt for the model
181
  inputs = processor(image, input_points=input_points, return_tensors="pt")
 
197
  prob = prob.cpu().numpy().squeeze()
198
  prediction = (prob > 0.5).astype(np.uint8)
199
 
200
+ # Return the processed result
201
+ return image, prob, prediction
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
 
203
  @reactive.Calc
204
+ def get_predictions():
205
+ """Processes the image when uploaded to get predictions"""
206
  if input.tile_image() is not None:
207
  return process_image()
208
  else:
209
  return None
210
 
211
  @output
212
+ @render.plot
213
+ def prediction_plots():
214
+ # get prediction results when image is uploaded
215
+ image, prob, prediction = get_predictions()
216
+
217
+ fig, axes = plt.subplots(1, 4, figsize=(15, 5))
218
+
219
+ # Extract the image data
220
+ image_data = image.cpu().detach().numpy()
221
+
222
+ # Plot the first image on the left
223
+ axes[0].imshow(image_data)
224
+ axes[0].set_title("Image")
225
+
226
+ # Plot the probability map on the right
227
+ axes[1].imshow(prob)
228
+ axes[1].set_title("Probability Map")
229
+
230
+ # Plot the prediction image on the right
231
+ axes[2].imshow(prediction)
232
+ axes[2].set_title("Prediction")
233
+
234
+ # Plot the predicted mask on the right
235
+ axes[3].imshow(image_data)
236
+ show_mask(prediction, axes[3])
237
+ axes[3].set_title("Predicted Mask")
238
+
239
+ # Hide axis ticks and labels
240
+ for ax in axes:
241
+ ax.set_xticks([])
242
+ ax.set_yticks([])
243
+ ax.set_xticklabels([])
244
+ ax.set_yticklabels([])
245
+
246
+ return fig
247
 
248
 
249