import pathlib | |
import platform | |
import gradio as gr | |
from fastai.vision.all import load_learner | |
from PIL import Image | |
if platform.system() != 'Windows': | |
pathlib.WindowsPath = pathlib.PosixPath | |
EXPORT_PATH = "export.pkl" | |
learn_inf = load_learner(EXPORT_PATH) | |
def classify_image(img): | |
"""Classifies an image according to three categories: dung beetle, elephant, or dolphin. | |
Args: | |
img (any): Any image will be converted to expected type. | |
Returns: | |
_type_: Probabilies according to the three types. | |
""" | |
# Convert the image to a format the model expects | |
img = Image.fromarray(img.astype('uint8'), 'RGB') | |
# Make a prediction | |
pred_class, pred_idx, probs = learn_inf.predict(img) | |
# Return the result | |
return {learn_inf.dls.vocab[i]: float(probs[i]) for i in range(len(learn_inf.dls.vocab))} | |
demo = gr.Interface( | |
title = "A dung beetle / dolphin / elephant image classifier", | |
fn=classify_image, | |
inputs = gr.Image( | |
label = 'Upload an image of a dung beetle, a dolphin, or an elephant!'), | |
outputs="label") | |
if __name__ == "__main__": | |
demo.launch(share=True) |