Spaces:
Running
Running
import gradio | |
from fastai.vision.all import * | |
MODELS_PATH = Path('./models') | |
EXAMPLES_PATH = Path('./examples') | |
# Required function used by fastai learner (at training setup) | |
def label_func(filepath): | |
return filepath.parent.name | |
learn = load_learner(MODELS_PATH/'food-101-resnet50.pkl') | |
labels = learn.dls.vocab | |
def predict(img): | |
img = PILImage.create(img) | |
pred,pred_idx,probs = learn.predict(img) | |
return {labels[i]: float(probs[i]) for i in range(len(labels))} | |
with open('gradio_article.md') as f: | |
article = f.read() | |
interface_options = { | |
"title": "Food Image Classifier (Food-101|ResNet50|fast.ai)", | |
"description": "A food image classifier trained on the Food-101 dataset, using ResNet50 and fast.ai.(https://data.vision.ee.ethz.ch/cvl/datasets_extra/food-101/)", | |
"article": article, | |
"examples" : [f'{EXAMPLES_PATH}/{f.name}' for f in EXAMPLES_PATH.iterdir()], | |
"interpretation": "default", | |
"layout": "horizontal", | |
"theme": "default", | |
"allow_flagging": "never", | |
} | |
demo = gradio.Interface(fn=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) | |