import gradio as gr #Gradio for creating the web interface from fastai.vision.all import load_learner, PILImage #FastAI fxns for model loading and image processing # Load the trained model learner = load_learner('aj_classifier.pkl') def classify_image(img): """ Function to classify an uploaded image using the trained model. Args: - img: The image uploaded by the user, received as a PILImage. Returns: - A string with the prediction and the probability of that prediction. """ # Use the model to predict the class of the image # 'predict' method returns three values: the predicted class, its index, and the probabilities of all classes. pred, pred_idx, probs = learner.predict(img) # Format the prediction and its probability as a string to show to the user return f"This is an Air Jordan {pred}; {(probs[pred_idx]* 100):.02f}% accurate" # Create a Gradio interface # This part sets up the Gradio web interface, specifying the function to call for predictions, # the type of input it expects (an image), and the type of output (text). examples = ['aj1.jpeg', 'aj4.jpeg', 'aj11.png', 'aj13.jpeg'] iface = gr.Interface(fn=classify_image, inputs=gr.Image(type='pil'), # Specifies that the input should be an image, automatically converted to PILImage outputs="text", # Specifies that the output is text (the prediction and probability) title="Air Jordan Model Classifier", # Title of the web interface description="Upload an image of Air Jordan sneakers, and the classifier will predict the model.", examples=examples) #Add examples images # This condition checks if the script is being run as the main program and launches the Gradio interface. # It ensures that the Gradio server starts only when this script is executed directly, not when imported as a module. if __name__ == "__main__": iface.launch(share=True) # Starts the Gradio interface