# %% #|default_exp app # %% [markdown] # # Bear Classifier App # # This notebook creates uses an exported model `export.pkl` for a bear classifier, to create a python script which can run the model on HuggingFace. # %% #|export from fastai.vision.all import * import gradio as gr # %% [markdown] # Let's take a look at an example picture: # %% #im = PILImage.create('teddybear.jpg') #im = PILImage.create('grizzly.jpg') im = PILImage.create('blackbear.jpg') im.thumbnail((192, 192)) im # %% [markdown] # Let's import the model and create the learner: # %% #|export import pathlib plt = platform.system() if plt == 'Windows': pathlib.WindowsPath = pathlib.PosixPath learn = load_learner('export.pkl') # %% [markdown] # With the learner we can to the predictions (inference): # %% learn.predict(im) # %% [markdown] # The available categories are contained in the vocab: # %% learn.dls.vocab # %% [markdown] # This is the function to classify the images: # %% #|export def classify_image(img): pred,pred_idx,probs = learn.predict(img) return dict(zip(learn.dls.vocab, map(float, probs))) # %% [markdown] # Testing the function: # %% classify_image(im) # %% [markdown] # ## Gradio App # # Now it is time to create the gradio app: # %% # commented, because it produced warnings #image = gr.inputs.Image(shape=(192,192)) #label = gr.outputs.Label() # %% #|export image = gr.components.Image(shape=(192,192)) label = gr.components.Label() examples = ['teddybear.jpg', 'grizzly.jpg', 'blackbear.jpg'] intf = gr.Interface(fn=classify_image, inputs=image, outputs=label, examples=examples) intf.launch(inline=False) # %% intf.close() # %% [markdown] # ## Export # # Finally, we export the code in the cells which are marked with `#|export`: # %% # %% # %%