File size: 1,324 Bytes
53f7f13 711e417 b430868 651c29b 53f7f13 b430868 53f7f13 711e417 2567e9f 711e417 b430868 711e417 b430868 711e417 2567e9f 651c29b 2567e9f 651c29b 2567e9f 711e417 2567e9f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import gradio as gr
from fastai.vision.all import load_learner
from PIL import Image
from contextlib import contextmanager
import pathlib
@contextmanager
def set_posix_posix():
windows_backup = pathlib.WindowsPath
try:
pathlib.WindowsPath = pathlib.PosixPath
yield
finally:
pathlib.PosixPath = windows_backup
EXPORT_PATH = pathlib.Path("export.pkl")
with set_posix_posix():
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()
|