hafizarslan's picture
Add example images and enable Gradio examples
9cea6a9
raw
history blame
1.41 kB
import gradio as gr
import cv2
import torch
import numpy as np
import matplotlib.pyplot as plt
from celldetection import fetch_model, to_tensor
# ✅ Load the model
device = 'cpu'
model = fetch_model('ginoro_CpnResNeXt101UNet-fbe875f1a3e5ce2c').to(device).eval()
# ✅ Inference function
def segment(image):
img_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) / 255.0
x = to_tensor(img_rgb, transpose=True, device=device, dtype=torch.float32)[None]
with torch.no_grad():
output = model(x)
contours = output['contours'][0]
original = (img_rgb * 255).astype(np.uint8).copy()
segmented = original.copy()
for contour in contours:
contour = np.array(contour.cpu(), dtype=np.int32)
cv2.drawContours(segmented, [contour], -1, (255, 0, 0), 2)
h, w, c = original.shape
gap = 60
canvas = np.zeros((h, w * 2 + gap, c), dtype=np.uint8)
canvas[:, :w, :] = original
canvas[:, w + gap:, :] = segmented
return cv2.cvtColor(canvas, cv2.COLOR_RGB2BGR)
# ✅ Example images list
examples = [
["examples/1.png"],
["examples/2.png"],
["examples/3.png"]
]
# ✅ Launch the Gradio interface
gr.Interface(
fn=segment,
inputs=gr.Image(type="numpy"),
outputs="image",
title="Cell Segmentation Demo (FZJ-INM1)",
description="Upload a microscopy image to see side-by-side segmentation.",
examples=examples
).launch()