File size: 1,238 Bytes
1d96855
f1edab7
1d96855
 
f1edab7
1d96855
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import tensorflow as tf
import numpy as np
from PIL import Image

# ==== LOAD ALL MODELS ====
model_resnet = tf.keras.models.load_model("model_resnet.keras")
model_effnet = tf.keras.models.load_model("efficientnet_b3_isic2019.h5")
model_cnn = tf.keras.models.load_model("skin_disease_model_final.h5")
model_svm = tf.keras.models.load_model("multilabel_svm_isic2019.h5")
model_rf = tf.keras.models.load_model("rf_model")  # folder saved_model

# ==== FUNCTION ====
def preprocess(image):
    image = image.resize((224, 224))
    arr = np.array(image) / 255.0
    return np.expand_dims(arr, axis=0)

def predict_all(image):
    img = preprocess(image)

    pred_resnet = model_resnet.predict(img)[0].tolist()
    pred_effnet = model_effnet.predict(img)[0].tolist()
    pred_cnn = model_cnn.predict(img)[0].tolist()
    pred_svm = model_svm.predict(img)[0].tolist()
    pred_rf = model_rf.predict(img)[0].tolist()

    return {
        "resnet": pred_resnet,
        "efficientnet": pred_effnet,
        "cnn": pred_cnn,
        "svm": pred_svm,
        "random_forest": pred_rf
    }

# ==== GRADIO API ====
iface = gr.Interface(
    fn=predict_all,
    inputs=gr.Image(type="pil"),
    outputs="json"
)

iface.launch()