Spaces:
Build error
Build error
# AUTOGENERATED! DO NOT EDIT! File to edit: app.ipynb. | |
# %% auto 0 | |
__all__ = ['repo_id', 'learner', 'path', 'countries', 'categories', 'title', 'description', 'article', 'image', 'label', | |
'country', 'summary', 'link', 'examples', 'intf', 'get_countries', 'classify_image'] | |
# %% app.ipynb 3 | |
from fastai.vision.all import * | |
from huggingface_hub import from_pretrained_fastai | |
import gradio as gr | |
import wikipedia | |
import pandas as pd | |
# %% app.ipynb 4 | |
repo_id = "Jimmie/snake-species-identification" | |
# loading the model from huggingface_hub | |
learner = from_pretrained_fastai(repo_id) | |
# %% app.ipynb 5 | |
path = Path('demo-images/') | |
countries = pd.read_csv('species_to_country_mapping.csv', index_col=0) | |
# %% app.ipynb 9 | |
def get_countries(binomial): | |
sample_row = countries.loc[binomial] | |
country_list = sample_row[sample_row == 1].index.tolist() | |
# title case all items in country_list | |
country_list = [country.title() for country in country_list] | |
# return all items in country_list as a string | |
return ", ".join(country_list) | |
# %% app.ipynb 20 | |
categories = tuple(learner.dls.vocab) | |
def classify_image(img): | |
pred,idx,probs = learner.predict(img) | |
countries = get_countries(pred) | |
summary = wikipedia.summary(pred) | |
wiki_link = f'Learn more: <a href={wikipedia.page(pred).url} target="_blank">{pred}</a>' | |
return dict(zip(categories, map(float, probs))), countries, summary, wiki_link | |
# %% app.ipynb 22 | |
title = "Snake Species Identification" | |
description = """ | |
This demo is an ongoing iteration of the [Snake Species Identification](https://github.com/jimmiemunyi/the-snake-project-cls) project meant to classify snakes up to the species level (binomial name). | |
Currently, it can classify snakes into 50 categories but it is continually updated to support more categories (over 200). | |
The model can be found here: https://huggingface.co/Jimmie/snake-species-identification. | |
The model is trained on the following dataset: https://www.aicrowd.com/challenges/snakeclef2021-snake-species-identification-challenge. | |
Enjoy! | |
""" | |
article = "Blog posts on how the model is being trained: COMING SOON!" | |
image = gr.Image(shape=(224, 224)) | |
label = gr.Label(num_top_classes=3, label='Binomial') | |
country = gr.Textbox(label='Countries where the species is found') | |
summary = gr.Textbox(label='Wikipedia Summary') | |
link = gr.HTML(label="Learn More:", show_label=True) | |
examples = list(path.ls()) | |
intf = gr.Interface(fn=classify_image, inputs=image, | |
outputs=[label, country, summary, link], examples=examples, | |
title = title, description = description, article = article, | |
cache_examples=False) | |
intf.launch(inline=False) | |