File size: 1,449 Bytes
0f0320e
c04d157
0f0320e
 
f276542
0f0320e
e142c81
8d98eff
0f0320e
8d98eff
d72a078
0f0320e
8d98eff
 
 
 
 
 
 
 
 
 
 
 
 
0f0320e
c04d157
0f0320e
 
 
8d98eff
 
f276542
 
c04d157
0f0320e
8d98eff
0f0320e
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
from fastai.vision.all import *
import gradio as gr
import timm
import dill
import os

is_catan_learn = load_learner('./models/catan-model-paperspace-2022-11-29-05-17-46.pkl', pickle_module=dill)
catan_category_learn = load_learner('./models/categories-of-catan-3.pkl', pickle_module=dill)

# learn = load_learner('catan-model.pkl', pickle_module=dill)

def classify_image(img):
    pred, pred_idx, probs = is_catan_learn.predict(img)
    if float(probs[1]) < 0.2:
        # categories = learn.dls.vocab
        categories = ('Not Catan', 'Catan')
        message = f'Did not detect Catan in this upload: *{probs[1]:.4f}%*. Choose another photo with Catan in it and we will categorize what kind of Catan we find.'
        details = dict(zip(categories, map(float, probs)))
    else:
        pred, pred_idx, probs = catan_category_learn.predict(img)
        message = f'Prediction: *{pred}*; Probability: *{probs[pred_idx]:.04f}%*'
        categories = catan_category_learn.dls.vocab
        details = dict(zip(categories, map(float, probs)))

    return details, message


# Cell
image = gr.inputs.Image(shape=(192, 192))
label = gr.outputs.Label()
description = gr.Markdown()

examples_dir_path = './examples/'
examples = [(examples_dir_path + filename) for filename in os.listdir(examples_dir_path) if filename[:1] != '.']

# Cell
intf = gr.Interface(fn=classify_image, inputs=image, outputs=[label, description], examples=examples)
intf.launch()