import gradio as gr 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('Garbage_Classification.pkl') # LEARN = load_learner('Garbage_Classification (1).pkl') LABELS = LEARN.dls.vocab def gradio_predict(img): img = img.resize((512, 512)) # img = PILImage.create(img) pred, pred_idx, probs = LEARN.predict(img) return dict(zip(LABELS, map(float,probs))) # with open('gradio_article.md') as f: # article = f.read() # interface_options = { # "title": "Food Image Classifier (Food-101|ResNet50|fast.ai)", # "description": "", # "article": article, # "examples" : [f'{EXAMPLES_PATH}/{f.name}' for f in EXAMPLES_PATH.iterdir()], # "layout": "horizontal", # "theme": "default", # } image = gr.Image(type="pil", label="Upload an image") label = gr.Label() examples = ['battery.jpg', 'biological.jpg', 'cardboard.jpg'] intf = gr.Interface(fn=gradio_predict, inputs=image, outputs=label, examples=examples) intf.launch(inline=False) # demo = gr.Interface(fn=gradio_predict, # inputs=gradio.Image(type="pil", label="Upload an image"), # outputs=gradio.outputs.Label(num_top_classes=5), # **interface_options) # launch_options = { # "enable_queue": True, # "share": False, # } # demo.launch(**launch_options)