Spaces:
Sleeping
Sleeping
| __all__ = ['learn', 'classify_image', 'bear', 'env', 'age', 'image', 'label', 'examples', 'intf', | |
| 'bear_err', 'bear_loss', 'environ_err', 'environ_loss', 'age_err', 'age_loss', 'combine_loss', | |
| 'get_bear', 'get_age', 'get_environ'] | |
| from fastai.vision.all import * | |
| import gradio as gr | |
| def get_bear(p): | |
| name_components = str(p).split(' ') | |
| return name_components[2] | |
| def get_age(p): | |
| name_components = str(p).split(' ') | |
| return name_components[1] | |
| def get_environ(p): | |
| name_components = str(p).split(' ') | |
| file_components = name_components[0].split('/') | |
| return file_components[-1] | |
| def bear_err(inp,bear,environ,age): return error_rate(inp[:,:5],bear) | |
| def bear_loss(inp,bear,environ,age): return F.cross_entropy(inp[:,:5],bear) | |
| def environ_err(inp,bear,environ,age): return error_rate(inp[:,5:8],environ) | |
| def environ_loss(inp,bear,environ,age): return F.cross_entropy(inp[:,5:8],environ) | |
| def age_err(inp,bear,environ,age): return error_rate(inp[:,8:],age) | |
| def age_loss(inp,bear,environ,age): return F.cross_entropy(inp[:,8:],age) | |
| def combine_loss(inp,bear,environ,age): | |
| return bear_loss(inp,bear,environ,age)+environ_loss(inp,bear,environ,age)+age_loss(inp,bear,environ,age) | |
| learn = load_learner('multitarget_bears.pkl') | |
| bear = ('black', 'brown', 'grizzly', 'sloth', 'sun') | |
| env = ('forest', 'plains', 'water') | |
| age = ('adult', 'baby') | |
| def classify_image(img_path): | |
| tst_dl = learn.dls.test_dl([img_path]) | |
| preds, _ = learn.get_preds(dl=tst_dl) | |
| idxs_bear = preds[:,:len(bear)].argmax(dim=1) | |
| results_bear = pd.Series(bear[idxs_bear], name="idxs_bear") | |
| idxs_env = preds[:,len(bear):(len(bear)+len(env))].argmax(dim=1) | |
| results_env = pd.Series(env[idxs_env], name="idxs_env") | |
| idxs_age = preds[:,(len(bear)+len(env)):(len(bear)+len(env)+len(age))].argmax(dim=1) | |
| results_age = pd.Series(age[idxs_age], name="idxs_age") | |
| results = pd.DataFrame() | |
| results['Bear'] = results_bear | |
| results['Environment'] = results_env | |
| results['Age'] = results_age | |
| return results | |
| image = gr.Image(height=192, width=192) | |
| outputs = gr.Dataframe() | |
| examples = ['Ronan_Grizzly_Bear_1.jpg', 'blackbear.jpg', 'blackbear2.jpg', 'brownbear.jpg', 'polar.jpg'] | |
| intf = gr.Interface(fn=classify_image, inputs=image, outputs=outputs, examples=examples) | |
| intf.launch(inline=False) | |