Skinlesion / app.py
Aviral Kaintura
Modernize Gradio, FastAI, and dependencies
9139f35
raw
history blame
3.01 kB
from fastai.learner import *
from fastai.vision.all import *
import gradio as gr
learn = load_learner("export.pkl")
labels = learn.dls.vocab
def predict(img):
# Ensure img is a PILImage object; if it's already PIL, create won't harm it.
# If it's a numpy array (e.g. from Gradio's Image component with type="numpy"),
# PILImage.create will convert it.
img = PILImage.create(img)
pred, pred_idx, probs = learn.predict(img)
# Ensure probs are float for JSON serialization if necessary
return {labels[i]: float(probs[i]) for i in range(len(labels))}
title = "Skin Lesion Classifier [RESNET 50]"
description = "A skin lesion classifier trained on the ISIC2019 dataset with fastai. Created as a demo for Gradio and HuggingFace Spaces."
article = "<p style='text-align: center'><a href='https://challenge.isic-archive.com/data/' target='_blank'>Link to ISIC Dataset</a></p>"
examples = ['img1.jpg', 'img2.jpg', 'img3.jpg']
# Updated Gradio Interface
# gr.inputs.Image becomes gr.Image
# gr.outputs.Label becomes gr.Label
# 'shape' parameter for gr.Image is deprecated. Image size is handled by the component or by resizing in the predict function if needed.
# 'type="pil"' ensures the input to predict() is a PIL Image, aligning with PILImage.create().
# 'num_top_classes' is a valid parameter for gr.Label.
# 'interpretation' parameter is deprecated and removed.
# 'enable_queue' is True by default, so explicit setting is often not needed but kept for clarity.
iface = gr.Interface(
fn=predict,
inputs=gr.Image(type="pil", label="Upload Skin Lesion Image"),
outputs=gr.Label(num_top_classes=3, label="Classification Results"),
title=title,
description=description,
article=article,
examples=examples,
# interpretation='default', # Removed
enable_queue=True
)
if __name__ == '__main__':
iface.launch()
# import gradio as gr
# from fastai.vision.all import *
# import skimage
# #Importing necessary libraries
# import gradio as gr
# #import scikit-learn as sklearn
# from fastai.vision.all import *
# from sklearn.metrics import roc_auc_score
# learn = load_learner('export.pkl')
# labels = learn.dls.vocab
# def predict(img):
# img = PILImage.create(img)
# pred,pred_idx,probs = learn.predict(img)
# return {labels[i]: float(probs[i]) for i in range(len(labels))}
# examples = ['img1.jpg','img2.jpg','img3.jpg']
# #Launching the gradio application
# gr.Interface(fn=predict,inputs=gr.inputs.Image(shape=(512, 512)),
# outputs=gr.outputs.Label(num_top_classes=1),
# title=title,
# description=description,article=article,
# examples=examples,
# enable_queue=enable_queue).launch(inline=False)
# #gr.Interface(fn=predict,inputs=gr.inputs.Image(shape=(224, 224)),outputs=gr.outputs.Label(num_top_classes=3),title=title,description=description,article=article,examples=examples,interpretation=interpretation,enable_queue=enable_queue).launch()