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()