levi15's picture
Upload 6 files
6c50e42 verified
raw
history blame
3.69 kB
# from flask import Flask, request, jsonify, render_template
# from tensorflow.keras.models import load_model
# from tensorflow.keras.preprocessing import image
# from efficientnet.tfkeras import preprocess_input
# import numpy as np
# app = Flask(__name__)
# model = load_model('EfficientNet_ModelWeights.keras')
# def preprocess_and_predict(model, img_path, target_size=(224, 224)):
# # Load and preprocess the image
# img = image.load_img(img_path, target_size=target_size)
# img_array = image.img_to_array(img)
# img_array = np.expand_dims(img_array, axis=0)
# img_array = preprocess_input(img_array)
# # Make prediction
# prediction = model.predict(img_array)
# predicted_class = np.argmax(prediction)
# # Return the predicted class
# return predicted_class
# @app.route('/')
# def home():
# return render_template('index.html')
# @app.route('/predict', methods=['POST'])
# def predict():
# if 'file' not in request.files:
# return jsonify({'error': 'No file part'})
# file = request.files['file']
# # Save the uploaded file temporarily
# file_path = 'temp_image.jpg'
# file.save(file_path)
# # Make prediction
# predicted_class = preprocess_and_predict(model, file_path)
# # Return the predicted class as a response
# return render_template('index.html', prediction=predicted_class)
# if __name__ == '__main__':
# app.run(debug=True)
import streamlit as st
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
from efficientnet.tfkeras import preprocess_input
import numpy as np
# Load your machine learning model
@st.cache(allow_output_mutation=True)
def load_model():
return load_model('EfficientNet_ModelWeights.keras')
# Prediction function
def preprocess_and_predict(model, img_path, target_size=(224, 224)):
# Load and preprocess the image
img = image.load_img(img_path, target_size=target_size)
if img is None:
print("Error: Image not loaded.")
return None
# Converting image to array and preprocessing using EfficientNet's preprocessing
img_array = image.img_to_array(img)
img_array = np.expand_dims(img_array, axis=0)
img_array = preprocess_input(img_array)
# Predicting the class label
preds = model.predict(img_array)
predicted_label = np.argmax(preds[0])
reverse_expression_labels = {v: k for k, v in expression_labels.items()}
# Converting the predicted label index to its corresponding expression label
predicted_expression_label = reverse_expression_labels[predicted_label]
return predicted_expression_label
def main():
st.title('Expresso - Image Prediction')
# Display the custom HTML content
with open("index.html", "r", encoding="utf-8") as file:
html_code = file.read()
st.components.v1.html(html_code, width=700, height=800)
# Load the model
model = load_model()
# Check if the file uploader is used
if st.file_uploader is not None:
uploaded_file = st.file_uploader("Upload your image", type=['jpg', 'png'])
if uploaded_file is not None:
# Make prediction when the "Predict" button is clicked
if st.button('Predict'):
# Save the uploaded file temporarily
with open("temp_image.jpg", "wb") as f:
f.write(uploaded_file.read())
# Make prediction
predicted_class = preprocess_and_predict(model, "temp_image.jpg")
# Display prediction result
st.write(f'Predicted Class: {predicted_class}')
if __name__ == '__main__':
main()