import gradio as gr | |
import numpy as np | |
import cv2 | |
from keras.models import load_model | |
# Load the trained models | |
model1 = load_model('./isatron_v3.h5') | |
# model2 = load_model('./Isatron_v2.h5') | |
# Print the loaded models | |
print(model1) | |
# print(model2) | |
# Define image size and labels | |
img_size1 = 150 | |
# img_size2 = 224 | |
labels = ['PNEUMONIA', 'NORMAL'] | |
def load_and_preprocess_image1(img): | |
# Convert Gradio image (PIL Image) to numpy array | |
img = np.array(img) | |
# Convert RGB to grayscale | |
img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | |
# Resize image to the required input size | |
img = cv2.resize(img, (img_size1, img_size1)) | |
# Reshape image for model input | |
img = img.reshape(-1, img_size1, img_size1, 1) | |
# Normalize image | |
img = img / 255.0 | |
return img | |
# def load_and_preprocess_image2(img): | |
# # Convert Gradio image (PIL Image) to numpy array | |
# img = np.array(img) | |
# # Convert RGB to grayscale | |
# img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | |
# # Resize image to the required input size | |
# img = cv2.resize(img, (img_size2, img_size2)) | |
# # Reshape image for model input | |
# img = img.reshape(-1, img_size2, img_size2, 1) | |
# # Normalize image | |
# img = img / 255.0 | |
# return img | |
def image_classifier1(img): | |
# Preprocess the image | |
img = load_and_preprocess_image1(img) | |
# Perform prediction using model1 | |
prediction = model1.predict(img)[0][0] # Assuming your model outputs a single probability | |
# Return the prediction | |
return {'PNEUMONIA': prediction, 'NORMAL': 1-prediction} # Invert the prediction for Gradio | |
# def image_classifier2(img): | |
# # Preprocess the image | |
# img = load_and_preprocess_image2(img) | |
# # Perform prediction using model2 | |
# prediction = model2.predict(img)[0][0] # Assuming your model outputs a single probability | |
# # Return the prediction | |
# return {'PNEUMONIA': 1-prediction, 'NORMAL': prediction} # Invert the prediction for Gradio | |
# Create Gradio interfaces for each model | |
demo_model1 = gr.Interface(fn=image_classifier1, inputs="image", outputs="label", title="Pneumonia Detection - Model 1") | |
# demo_model2 = gr.Interface(fn=image_classifier2, inputs="image", outputs="label", title="Pneumonia Detection - Model 2") | |
# gr.Parallel(demo_model1, demo_model2).launch(share=True) | |
# Launch the interfaces simultaneously | |
if __name__ == "__main__": | |
# demo_model1.launch(share=True) | |
demo_model1.launch(share=True) | |