|
import streamlit as st |
|
import tensorflow as tf |
|
from tensorflow.keras.preprocessing import image |
|
import numpy as np |
|
from sklearn.metrics import classification_report |
|
|
|
|
|
model1 = tf.keras.models.load_model("densenet_model.h5") |
|
model2 = tf.keras.models.load_model("inception_model.h5") |
|
model3 = tf.keras.models.load_model("resnet_model.h5") |
|
|
|
|
|
st.title("Cancer Prediction App") |
|
|
|
|
|
uploaded_file = st.file_uploader("Choose an image...", type="jpg") |
|
|
|
|
|
if uploaded_file is not None: |
|
|
|
img = image.load_img(uploaded_file, target_size=(224, 224)) |
|
img_array = image.img_to_array(img) |
|
img_array = np.expand_dims(img_array, axis=0) |
|
img_array /= 255.0 |
|
|
|
|
|
prediction = model1.predict(img_array) |
|
predicted_class = np.argmax(prediction[0]) |
|
prediction_accuracy = prediction[0][predicted_class] |
|
|
|
|
|
st.image(img, caption="Uploaded Image", use_column_width=True) |
|
|
|
if prediction_accuracy < 0.5: |
|
st.write("Prediction (using DenseNet): Not Cancerous") |
|
else: |
|
st.write("Prediction (using DenseNet): Cancerous") |
|
|
|
st.write(f"Chance of Cancer (using DenseNet): {prediction_accuracy*100}%") |
|
|
|
|
|
prediction = model2.predict(img_array) |
|
predicted_class = np.argmax(prediction[0]) |
|
prediction_accuracy = prediction[0][predicted_class] |
|
|
|
|
|
st.image(img, caption="Uploaded Image", use_column_width=True) |
|
|
|
if prediction_accuracy < 0.5: |
|
st.write("Prediction (using Inception V3): Not Cancerous") |
|
else: |
|
st.write("Prediction (using Inception V3): Cancerous") |
|
|
|
st.write(f"Chance of Cancer (using Inception V3): {prediction_accuracy*100}%") |
|
|
|
|
|
prediction = model3.predict(img_array) |
|
predicted_class = np.argmax(prediction[0]) |
|
prediction_accuracy = prediction[0][predicted_class] |
|
|
|
|
|
st.image(img, caption="Uploaded Image", use_column_width=True) |
|
|
|
if prediction_accuracy <0.5: |
|
st.write("Prediction (using Resnet50): Not Cancerous") |
|
else: |
|
st.write("Prediction (using Resnet50): Cancerous") |
|
|
|
st.write(f"Chance of Cancer (using Resnet50): {prediction_accuracy*100}%") |
|
|
|
|