File size: 1,139 Bytes
651c29b
c63cda9
 
2ad056f
 
53f7f13
c63cda9
 
b430868
c63cda9
 
53f7f13
711e417
2ad056f
 
 
 
 
 
 
 
 
 
 
 
 
 
711e417
2567e9f
2ad056f
 
 
 
 
711e417
 
fca8b93
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
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)