Isatron_V2 / app.py
jeysshon's picture
Update app.py
a998363 verified
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)