Diego Carpintero
implement gradio app.py
2fb361b
import gradio as gr
import torch
from model import *
from PIL import Image
import torchvision.transforms as transforms
title = "Digit Classifier"
description = (
"Multilayer-Perceptron built for the fast.ai 'Deep Learning' course "
"to classify handwritten digits from the MNIST dataset. "
)
inputs = gr.components.Image()
outputs = gr.components.Label()
examples = "examples"
model = torch.load("model/digit_classifier.pt", map_location=torch.device("cpu"))
labels = [str(i) for i in range(10)]
transform = transforms.Compose(
[
transforms.Resize((28, 28)),
transforms.Grayscale(),
transforms.ToTensor(),
transforms.Lambda(lambda x: x[0]),
transforms.Lambda(lambda x: x.unsqueeze(0)),
]
)
def predict_digit(img):
img = transform(Image.fromarray(img))
output = model(img)
probs = torch.nn.functional.softmax(output, dim=1)
return dict(zip(labels, map(float, probs.flatten()[:10])))
with gr.Blocks() as demo:
with gr.Tab("Digit Prediction"):
gr.Interface(
fn=predict_digit,
inputs=inputs,
outputs=outputs,
examples=examples,
title=title,
description=description,
).queue(default_concurrency_limit=5)
demo.launch()