import gradio as gr from fastai.vision.all import * import os # Define the functions to get the x and y values from the input dictionary - in this case, the x value is the image and the y value is the diagnosis # needed to load the model since we defined them during training def get_x(r): return "" def get_y(r): return r['diagnosis'] # Load model learn = load_learner('model.pkl') labels = learn.dls.vocab # Define label descriptions label_descriptions = { 0: "No DR", 1: "Mild", 2: "Moderate", 3: "Severe", 4: "Proliferative DR" } # Prediction function def predict(img): img = PILImage.create(img) pred, pred_idx, probs = learn.predict(img) return {label_descriptions[labels[i]]: float(probs[i]) for i in range(len(labels))} # Gradio Interface title = "Diabetic Retinopathy Detection" description = """Detects severity of diabetic retinopathy from a given retina image.""" article = """

Kaggle Training Notebook | Model Card

""" # Prepare examples if available test_folder = "test" image_paths = [os.path.join(test_folder, img) for img in os.listdir(test_folder) if img.endswith(('.png', '.jpg', '.jpeg'))] gr.Interface( fn=predict, inputs=gr.Image(type="filepath"), outputs=gr.Label(num_top_classes=5), examples=image_paths, article=article, title=title, description=description, ).launch()