Spaces:
Sleeping
Sleeping
| from fastai.vision.all import * | |
| import gradio as gr | |
| import pathlib | |
| import os | |
| import platform | |
| # The below is for testing your app.py on a Windows laptop e.g. Visual Studio Code | |
| print(platform.system()) | |
| if platform.system() == 'Windows': | |
| # NotImplementedError: cannot instantiate 'PosixPath' on your system | |
| # workaround for Windows where path seperator is '/'. Linux is '\'. | |
| posix_backup = pathlib.PosixPath # remember the original path thingy | |
| try: | |
| pathlib.PosixPath = pathlib.WindowsPath # change to Windows | |
| path = Path() # get current path in your runtime environment e.g. laptop, Colab, HuggingFace, Kaggle | |
| learn = load_learner(path/'export.pkl') | |
| finally: # when program is finished, switch back to original path thingy | |
| pathlib.PosixPath = posix_backup | |
| else: # Darwin aka MacOS, Linux, etc... | |
| path = Path() | |
| learn = load_learner(path/'export.pkl') | |
| # Not needed, since we don't return a dict below | |
| # same as bear_types = ['grizzly','black','teddy'] | |
| # bear_types = learn.dls.vocab | |
| # categories = bear_types | |
| def classify_image(img): | |
| pred,idx,probs = learn.predict(img) | |
| prob = float(probs[idx]) * 100 | |
| return f"This is a {pred}.\n Confidence Level : {prob:.4f}%" | |
| # return dict(zip(categories, map(float,probs))) # not really needed here | |
| # Define example images | |
| # These must be local images in your repository. | |
| # URLs to images don't seem to work well ? | |
| # Image source: Wikipedia | |
| examples = ['images/chicken.jpg', | |
| 'images/dog.jpg', | |
| 'images/fish.jpg'] | |
| # Define input component for image upload | |
| image_input = gr.Image() | |
| # Define output component for displaying text | |
| text_output = gr.Textbox(type="text", label="Output") | |
| # Define Gradio Interface | |
| iface = gr.Interface( | |
| fn=classify_image, # the function we defined above | |
| inputs=image_input, | |
| outputs=text_output, | |
| # live=True means you click on any element | |
| # and all other elements update immediately. | |
| # Therefore, there is no Submit button needed anymore. | |
| # Works fine, but may break Clear button, | |
| # since there is no image uploaded yet to predict -> Error | |
| # AssertionError: Expected an input | |
| # live=False will give you a Submit button. | |
| live=True, | |
| examples=examples | |
| ) | |
| # Run the interface | |
| # To create a public link, set `share=True` in `launch()`. | |
| # iface.launch(share=True) | |
| # Note: share is for notebooks | |
| # When deploying to HuggingFace leave it out, or else -> Error ? | |
| iface.launch() | |
| # Use CTRL-C to stop server in Visual Studio Code | |
| # ^CKeyboard interruption in main thread... closing server. | |
| # Killing tunnel 127.0.0.1:7860 <> https://6479f1bbea54b008f.gradio.live | |