|
import streamlit as st |
|
from tensorflow.keras.models import load_model |
|
import numpy as np |
|
from PIL import Image |
|
import cv2 |
|
from tensorflow.keras.preprocessing.image import img_to_array, load_img |
|
|
|
@st.cache_data() |
|
def load(): |
|
model_path = "best_model.h5" |
|
model = load_model(model_path, compile=False) |
|
return model |
|
|
|
|
|
model = load() |
|
|
|
|
|
def predict(upload): |
|
|
|
img = Image.open(upload) |
|
img = np.asarray(img) |
|
img_resize = cv2.resize(img, (224, 224)) |
|
img_resize = np.expand_dims(img_resize, axis=0) |
|
pred = model.predict(img_resize) |
|
|
|
rec = pred[0][0] |
|
|
|
return rec |
|
|
|
|
|
|
|
|
|
st.title("Poubelle Intelligente") |
|
|
|
upload = st.file_uploader("Chargez l'image de votre objet", |
|
type=['png', 'jpeg', 'jpg']) |
|
|
|
c1, c2 = st.columns(2) |
|
|
|
if upload: |
|
rec = predict(upload) |
|
prob_recyclable = rec * 100 |
|
prob_organic = (1-rec)*100 |
|
|
|
c1.image(Image.open(upload)) |
|
if prob_recyclable > 50: |
|
c2.write(f"Je suis certain à {prob_recyclable:.2f} % que l'objet est recyclable") |
|
else: |
|
c2.write(f"Je suis certain à {prob_organic:.2f} % que l'objet n'est pas recyclable") |
|
|
|
|
|
|