veggies / app.py
Valeri Neuskaya
new app (label without _)
09aa75f
Raw History Blame Contribute Delete
1.21 kB
from fastai.vision.all import *
import gradio as gr
from PIL import Image
import numpy as np
# Load the model
learn = load_learner('export.pkl')
categories = learn.dls.vocab
# Create a mapping from original label → display label
pretty_labels = {cat: cat.replace('_', ' ').title() for cat in categories}
# Display-friendly veggie list
veggie_list = ', '.join(pretty_labels[cat] for cat in categories)
description = f"Upload a vegetable image to classify it.\n\n The model can recognize: {veggie_list}."
# Prediction function
def classify_image(img):
if isinstance(img, str): # If it's a filepath
img = Image.open(img)
elif isinstance(img, np.ndarray): # If it's a NumPy array
img = Image.fromarray(img)
# If it's already a PIL Image, no conversion needed
pred, idx, probs = learn.predict(img)
return {
pretty_labels[c]: float(probs[i])
for i, c in enumerate(categories)
}
# Gradio UI
image = gr.Image(type="pil", label="Upload a vegetable image")
label = gr.Label(label="Prediction")
intf = gr.Interface(
fn=classify_image,
inputs=image,
outputs=label,
title="Vegetable Classifier",
description=description
)
intf.launch()