|
import gradio as gr |
|
from fastai.vision.all import * |
|
import os |
|
|
|
|
|
|
|
def get_x(r): return "" |
|
|
|
def get_y(r): return r['diagnosis'] |
|
|
|
|
|
|
|
learn = load_learner('model.pkl') |
|
labels = learn.dls.vocab |
|
|
|
|
|
label_descriptions = { |
|
0: "No DR", |
|
1: "Mild", |
|
2: "Moderate", |
|
3: "Severe", |
|
4: "Proliferative DR" |
|
} |
|
|
|
|
|
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))} |
|
|
|
|
|
title = "Diabetic Retinopathy Detection" |
|
description = """Detects severity of diabetic retinopathy from a given retina image.""" |
|
|
|
article = """ |
|
<p style='text-align: center'> |
|
<a href='https://www.kaggle.com/code/josemauriciodelgado/proliferative-retinopathy' target='_blank'>Kaggle Training Notebook</a> | |
|
<a href='https://huggingface.co/jdelgado2002/diabetic_retinopathy_detection' target='_blank'>Model Card</a> |
|
</p> |
|
""" |
|
|
|
|
|
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() |
|
|