PokeFace / app.py
Okkoman's picture
put examples in images dir and change to model 151
205a0fd
raw
history blame
No virus
1.92 kB
# AUTOGENERATED! DO NOT EDIT! File to edit: ../pokemonclassifier.ipynb.
# %% auto 0
__all__ = ['modelname', 'imagespath', 'pokemon_types', 'pokemon_types_en', 'learn_inf', 'lang', 'title', 'description', 'unknown',
'prob_threshold', 'classify_image']
# %% ../pokemonclassifier.ipynb 3
import pandas as pd
modelname = 'model.pkl'
imagespath = 'images/'
pokemon_types = pd.read_csv("pokemongen1patch.csv")
pokemon_types_en = pokemon_types['en']
# %% ../pokemonclassifier.ipynb 27
from huggingface_hub import hf_hub_download
from fastai.learner import load_learner
learn_inf = load_learner(hf_hub_download("Okkoman/PokeFace151", modelname))
# %% ../pokemonclassifier.ipynb 30
import gradio as gr
lang = 'en'
title = "# PokeFace - What is this pokemon ?"
description = "## An image classifier for 1st generation pokemons (001-151)"
unknown = 'unknown'
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 d'images pour les pokemons de 1ere génération (001-151)"
unknown = 'inconnu'
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"{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=imagespath,
allow_flagging='auto')
demo.launch(inline=False)