import subprocess #port = $PORT #subprocess.run("uvicorn application.server.main:app --host 0.0.0.0 --port 7860", shell=True) import streamlit as st import json import requests from PIL import Image import os #option 2 import numpy as np from tensorflow.keras.models import load_model import cv2 #Hide Made with streamlit st.markdown( '''''', unsafe_allow_html=True ) def load_image(image): img = Image.open(image) return img def save_uploadedfile(uploadedfile): with open(os.path.join("images/img",uploadedfile.name),"wb") as f: f.write(uploadedfile.getbuffer()) uploaded_location = os.path.join("images/img",uploadedfile.name) return uploaded_location#st.success("Saved File:{} to {}".format(uploadedfile.name, uploaded_location)) def image_predict (image_file): model_path = 'application/models/resnet_ct.h5' h5_model = load_model(model_path) image = cv2.imread(image_file) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) image = cv2.resize(image, (224, 224)) image = np.array(image) / 255 image = np.expand_dims(image, axis=0) h5_prediction = h5_model.predict(image) print('Prediction from h5 model: {}'.format(h5_prediction)) print(h5_prediction) probability = h5_prediction[0] print("H5 Predictions:") print (probability) if probability[0] > 0.5: covid_chest_pred = str('%.2f' % (probability[0] * 100) + '% COVID-Positive') probability = (probability[0] * 100) else: covid_chest_pred = str('%.2f' % ((1 - probability[0]) * 100) + '% COVID-Negative') probability = ((1 - probability[0]) * 100) return covid_chest_pred st.title("Covid Prediction App from CT Images") #taking user inputs st.write("") #converting input to json image = st.file_uploader("Upload CT Scan", type=["png","jpg","jpeg"]) if image is not None: # To See details file_details = {"filename":image.name, "filetype":image.type, "filesize":image.size} st.write(file_details) #image1 = Image.open(image) #img_array = np.array(image1) #View Uploaded Image st.image(load_image(image),width=250) #save image to disk saved = save_uploadedfile(image) #if st.button ('Analyze'): #test_file = open(os.path.join("images/img", image.name), "rb") #response = requests.post('http://127.0.0.1:8000/predict/image', files={'file': test_file }) #prediction = response.json()##json_object["prediction"] #st.write(prediction) #st. subheader (f"Response from Covid Analyzer API = {prediction}") #OPTION 2 - NON API.. if st.button ('Analyze'): with st.spinner('Analyzing...'): prediction = image_predict(saved) #st.write(prediction) st. subheader (f"Image Prediction = {prediction}") st.success(f"Image Prediction = {prediction}", icon="✅") #RUN BOTH... #streamlit run app.py #uvicorn application.server.main:app #OPTION 2....