File size: 1,842 Bytes
6494d6a
e1f4a9d
db8ace5
27d71d3
 
d340b24
6494d6a
d340b24
 
27d71d3
 
d340b24
e1f4a9d
6494d6a
 
 
db8ace5
 
 
27d71d3
e1f4a9d
6494d6a
e1f4a9d
 
82bc6fd
f9f3381
82bc6fd
f9f3381
 
82bc6fd
 
27d71d3
 
 
 
 
 
 
 
 
82bc6fd
e1f4a9d
 
 
82bc6fd
e1f4a9d
27d71d3
e1f4a9d
82bc6fd
 
 
 
 
 
 
 
 
 
 
 
 
6494d6a
82bc6fd
e1f4a9d
82bc6fd
e1f4a9d
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# AUTOGENERATED! DO NOT EDIT! File to edit: ../app.ipynb.

# %% auto 0
__all__ = ['modelname', 'pokemon_types', 'pokemon_types_en', 'examplespath', 'learn_inf', 'lang', 'prob_threshold',
           'classify_image']

# %% ../app.ipynb 3
import pandas as pd

modelname = f'model_gen0.pkl'
pokemon_types = pd.read_csv(f'pokemon.csv')
pokemon_types_en = pokemon_types['en']

examplespath = 'images/'

# %% ../app.ipynb 7
from huggingface_hub import hf_hub_download
from fastai.learner import load_learner

learn_inf = load_learner(hf_hub_download("Okkoman/PokeFace", modelname))

# %% ../app.ipynb 9
import gradio as gr

lang = 'en'

prob_threshold = 0.75

from flask import request
if request:
    lang = request.headers.get("Accept-Language")

if lang == 'fr':
    title = "# PokeFace - Quel est ce pokemon ?"
    description = "## Un classifieur pour les pokemons de 1ere et 2eme générations (001-251)"
    unknown = 'inconnu'
else:
    title = "# PokeFace - What is this pokemon ?"
    description = "## An classifier for 1st-2nd generation pokemons (001-251)"
    unknown = 'unknown'    
        
def classify_image(img):
    pred,pred_idx,probs = learn_inf.predict(img)
    index = pokemon_types_en[pokemon_types_en == pred].index[0]
    label = pokemon_types[lang].iloc[index]
    if probs[pred_idx] > prob_threshold:
        return f"{index+1} - {label} ({probs[pred_idx]*100:.0f}%)"
    else:
        return unknown
    
with gr.Blocks() as demo:
    
    with gr.Row():
        gr.Markdown(title)
    with gr.Row():
        gr.Markdown(description)        
    with gr.Row():
        interf = gr.Interface(
            fn=classify_image, 
            inputs=gr.inputs.Image(shape=(192,192)), 
            outputs=gr.outputs.Label(), 
            examples=examplespath, 
            allow_flagging='auto')

demo.launch(inline=False)