File size: 3,008 Bytes
1625ae6
4416e92
4205ce4
4416e92
1625ae6
4416e92
1625ae6
4416e92
9139f35
 
 
4416e92
9139f35
 
4416e92
9139f35
246356d
 
9139f35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246356d
1625ae6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4416e92
1625ae6
4205ce4
1625ae6
 
 
 
 
 
 
4205ce4
1625ae6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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()