File size: 1,004 Bytes
fade6a3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import gradio as gr
import numpy as np
import torch
from PIL import Image
from transformers import SegformerForSemanticSegmentation, SegformerImageProcessor
MODEL_ID = "mipedro1/segformer-buildings-segmentation"
processor = SegformerImageProcessor.from_pretrained(MODEL_ID)
model = SegformerForSemanticSegmentation.from_pretrained(MODEL_ID)
model.eval()
def predict(image):
inputs = processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
upsampled = torch.nn.functional.interpolate(
outputs.logits,
size=(image.height, image.width),
mode="bilinear",
align_corners=False,
)
pred = upsampled.argmax(dim=1).squeeze().numpy()
mask = (pred * 255).astype(np.uint8)
return Image.fromarray(mask)
demo = gr.Interface(
fn=predict,
inputs=gr.Image(type="pil", label="Ortofoto"),
outputs=gr.Image(label="Edificios detectados"),
title="Detección de edificios en ortofotos",
)
demo.launch() |