trabajo / app.py
mipedro1's picture
Create app.py
fade6a3 verified
Raw
History Blame Contribute Delete
1 kB
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()