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)