# Hide - Connects voila to current notebook #!jupyter serverextension enable --sys-prefix voila # Voila runs jpnb but hides the code cells and only displays the output (including the ipywidgets) as well as the markdown cells. import streamlit as st from fastai.vision.all import * from fastai.vision.widgets import * # Load the model path = Path() learn_inf = load_learner(path/'export.pkl') # Title of the app st.title('Forest Image Classifier') # File uploader uploaded_file = st.file_uploader("Select your forest image", type=['jpg', 'jpeg', 'png']) # If an image has been uploaded if uploaded_file is not None: # Display the uploaded image img = PILImage.create(uploaded_file) st.image(img.to_thumb(128, 128), caption='Uploaded Image', use_column_width=True) # Classify the image pred, pred_idx, probs = learn_inf.predict(img) # Display the prediction and probability st.write(f'Prediction: {pred}; Probability: {probs[pred_idx]:.04f}') # # # import fastbook # fastbook.setup_book() # from fastbook import * # from fastai.vision.widgets import * # # Load the model # path = Path() # path.ls(file_exts='.pkl') # learn_inf = load_learner(path/'export.pkl') # # Create a button widget # btn_upload = widgets.FileUpload() # btn_upload # # Create a clear_output widget # out_pl = widgets.Output() # out_pl.clear_output() # # Create a label widget # lbl_pred = widgets.Label() # # Create a run button widget # btn_run = widgets.Button(description='Classify') # btn_run # # Function to classify the image # def on_click_classify(change): # img = PILImage.create(btn_upload.data[-1]) # out_pl.clear_output() # with out_pl: display(img.to_thumb(128,128)) # pred,pred_idx,probs = learn_inf.predict(img) # lbl_pred.value = f'Prediction: {pred}; Probability: {probs[pred_idx]:.04f}' # btn_run.on_click(on_click_classify) # # Create a Vertical Box (VBox) to hold the widgets # btn_upload = widgets.FileUpload() # VBox([widgets.Label('Select your forest!'), # btn_upload, btn_run, out_pl, lbl_pred])