Spaces:
Running
Running
import numpy as np | |
import streamlit as st | |
from PIL import Image | |
import tensorflow as tf | |
from utils import preprocess_image | |
# Initialize labels and model | |
labels = ['cardboard', 'glass', 'metal', 'paper', 'plastic', 'trash'] | |
model = tf.keras.models.load_model('classify_model.h5') | |
# Customized Streamlit layout | |
st.set_page_config( | |
page_title="EcoIdentify by EcoClim Solutions", | |
page_icon="https://ecoclimsolutions.files.wordpress.com/2024/01/rmcai-removebg.png?resize=48%2C48", | |
layout="wide", | |
initial_sidebar_state="expanded", | |
) | |
# Customized Streamlit styles | |
st.markdown( | |
""" | |
<style> | |
body { | |
color: #333333; | |
background-color: #f9f9f9; | |
font-family: 'Helvetica', sans-serif; | |
} | |
.st-bb { | |
padding: 0rem; | |
} | |
.st-ec { | |
color: #666666; | |
} | |
.st-ef { | |
color: #666666; | |
} | |
.st-ei { | |
color: #333333; | |
} | |
.st-dh { | |
font-size: 36px; | |
font-weight: bold; | |
color: #4CAF50; | |
text-align: center; | |
margin-bottom: 20px; | |
} | |
.st-gf { | |
background-color: #4CAF50; | |
color: white; | |
padding: 15px 30px; | |
font-size: 18px; | |
border: none; | |
border-radius: 8px; | |
cursor: pointer; | |
transition: background-color 0.3s; | |
} | |
.st-gf:hover { | |
background-color: #45a049; | |
} | |
.st-gh { | |
text-align: center; | |
font-size: 24px; | |
font-weight: bold; | |
margin-bottom: 20px; | |
} | |
.st-logo { | |
max-width: 100%; | |
height: auto; | |
margin: 20px auto; | |
display: block; | |
} | |
</style> | |
""", | |
unsafe_allow_html=True, | |
) | |
# Logo | |
st.image("https://ecoclimsolutions.files.wordpress.com/2024/01/rmcai-removebg.png?resize=48%2C48") | |
# Page title | |
st.title("EcoIdentify by EcoClim Solutions") | |
# Subheader | |
st.header("Upload a waste image to find its category") | |
# Image upload section | |
opt = st.selectbox("How do you want to upload the image for classification?", ("Please Select", "Upload image from device")) | |
image = None | |
if opt == 'Upload image from device': | |
file = st.file_uploader('Select', type=['jpg', 'png', 'jpeg']) | |
if file: | |
image = preprocess_image(file) | |
try: | |
if image is not None: | |
st.image(image, width=256, caption='Uploaded Image') | |
if st.button('Predict'): | |
prediction = model.predict(image[np.newaxis, ...]) | |
st.success(f'Prediction: {labels[np.argmax(prediction[0], axis=-1)]}') | |
except Exception as e: | |
st.error(f"An error occurred: {e}") | |