Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -70,9 +70,12 @@ def tif_bytes_to_pil_image(tif_bytes):
|
|
70 |
# Create a BytesIO object from the TIFF bytes
|
71 |
bytes_io = io.BytesIO(tif_bytes)
|
72 |
|
73 |
-
# Open the BytesIO object as an Image, resize to 256
|
74 |
image = Image.open(bytes_io).convert("RGB")
|
75 |
-
|
|
|
|
|
|
|
76 |
|
77 |
return image
|
78 |
|
@@ -94,7 +97,7 @@ def load_model():
|
|
94 |
|
95 |
return model, processor, device
|
96 |
|
97 |
-
def show_mask(mask, ax,
|
98 |
if random_color:
|
99 |
color = np.concatenate([np.random.random(3), np.array([0.6])], axis=0)
|
100 |
else:
|
@@ -229,7 +232,7 @@ def server(input: Inputs, output: Outputs, session: Session):
|
|
229 |
if image is None or prob is None or prediction is None:
|
230 |
# Return a placeholder plot or message
|
231 |
fig, ax = plt.subplots()
|
232 |
-
ax.text(0.5, 0.5, "Upload
|
233 |
ax.axis("off") # Hide axis
|
234 |
plt.tight_layout()
|
235 |
return fig
|
@@ -238,25 +241,22 @@ def server(input: Inputs, output: Outputs, session: Session):
|
|
238 |
|
239 |
# Extract the image data
|
240 |
#image_data = image.cpu().detach().numpy()
|
241 |
-
|
242 |
-
# Get the dimensions (width and height) of the image
|
243 |
-
width, height = image.size
|
244 |
|
245 |
# Plot the first image on the left
|
246 |
axes[0].imshow(image)
|
247 |
axes[0].set_title("Image")
|
248 |
|
249 |
# Plot the probability map on the right
|
250 |
-
axes[1].imshow(prob
|
251 |
-
axes[1].set_title(
|
252 |
|
253 |
# Plot the prediction image on the right
|
254 |
-
axes[2].imshow(prediction
|
255 |
axes[2].set_title("Prediction")
|
256 |
|
257 |
# Plot the predicted mask on the right
|
258 |
axes[3].imshow(image)
|
259 |
-
show_mask(prediction, axes[3]
|
260 |
axes[3].set_title("Predicted Mask")
|
261 |
|
262 |
# Hide axis ticks and labels
|
|
|
70 |
# Create a BytesIO object from the TIFF bytes
|
71 |
bytes_io = io.BytesIO(tif_bytes)
|
72 |
|
73 |
+
# Open the BytesIO object as an Image, crop to square, resize to 256
|
74 |
image = Image.open(bytes_io).convert("RGB")
|
75 |
+
w, h = image.size
|
76 |
+
dim = min(w, h)
|
77 |
+
image = image.crop(0, 0, dim, dim)
|
78 |
+
image = image.resize((256, 256))
|
79 |
|
80 |
return image
|
81 |
|
|
|
97 |
|
98 |
return model, processor, device
|
99 |
|
100 |
+
def show_mask(mask, ax, random_color=False):
|
101 |
if random_color:
|
102 |
color = np.concatenate([np.random.random(3), np.array([0.6])], axis=0)
|
103 |
else:
|
|
|
232 |
if image is None or prob is None or prediction is None:
|
233 |
# Return a placeholder plot or message
|
234 |
fig, ax = plt.subplots()
|
235 |
+
ax.text(0.5, 0.5, "Upload a square image to see predictions. If the image is not a square, the image will be cropped to a square, taking the top left portion of the image. Predictions will take a few moments to load.", fontsize=12, ha="center")
|
236 |
ax.axis("off") # Hide axis
|
237 |
plt.tight_layout()
|
238 |
return fig
|
|
|
241 |
|
242 |
# Extract the image data
|
243 |
#image_data = image.cpu().detach().numpy()
|
|
|
|
|
|
|
244 |
|
245 |
# Plot the first image on the left
|
246 |
axes[0].imshow(image)
|
247 |
axes[0].set_title("Image")
|
248 |
|
249 |
# Plot the probability map on the right
|
250 |
+
axes[1].imshow(prob)
|
251 |
+
axes[1].set_title("Probability Map")
|
252 |
|
253 |
# Plot the prediction image on the right
|
254 |
+
axes[2].imshow(prediction)
|
255 |
axes[2].set_title("Prediction")
|
256 |
|
257 |
# Plot the predicted mask on the right
|
258 |
axes[3].imshow(image)
|
259 |
+
show_mask(prediction, axes[3])
|
260 |
axes[3].set_title("Predicted Mask")
|
261 |
|
262 |
# Hide axis ticks and labels
|