suvash's picture
use correct spelling for model name
9ed0485
import gradio
from fastai.vision.all import *
MODELS_PATH = Path('./models')
EXAMPLES_PATH = Path('./examples')
# Required function expected by fastai learn object
# it wasn't exported as a part of the pickle
# as it was defined externally to the learner object
# during the training time dataloaders setup
def label_func(filepath):
return filepath.parent.name
LEARN = load_learner(MODELS_PATH/'usk-coffee-convnext_nano_935625.pkl')
LABELS = LEARN.dls.vocab
def gradio_predict(img):
img = PILImage.create(img)
_pred, _pred_idx, probs = LEARN.predict(img)
labels_probs = {LABELS[i]: float(probs[i]) for i, _ in enumerate(LABELS)}
return labels_probs
with open('gradio_article.md') as f:
article = f.read()
interface_options = {
"title": "USK-Coffee bean classifer (USK-Coffee|ConvNext-nano|fast.ai)",
"description": "A coffee bean image classifier(ConvNext nano) fine tuned on the USK-Coffee (https://comvis.unsyiah.ac.id/usk-coffee/) dataset using fastai & timm.",
"article": article,
"examples" : [f'{EXAMPLES_PATH}/{f.name}' for f in EXAMPLES_PATH.iterdir()],
"interpretation": "default",
"allow_flagging": "never"
}
demo = gradio.Interface(fn=gradio_predict,
inputs=gradio.inputs.Image(shape=(512, 512)),
outputs=gradio.outputs.Label(num_top_classes=5),
**interface_options)
launch_options = {
"enable_queue": True,
"share": False,
}
demo.launch(**launch_options)