|
import streamlit as st
|
|
from PIL import Image
|
|
from tensorflow.keras.models import load_model
|
|
import tensorflow as tf
|
|
import numpy as np
|
|
from keras.preprocessing.image import img_to_array
|
|
import os
|
|
|
|
|
|
@st.cache_resource
|
|
def load_model():
|
|
model_path = "model.keras"
|
|
return tf.keras.models.load_model(model_path)
|
|
|
|
model = load_model()
|
|
|
|
def prepare_image(img):
|
|
img = img.resize((220, 220))
|
|
img_array = img_to_array(img)
|
|
img_array = np.expand_dims(img_array, axis=0)
|
|
|
|
prediction = model.predict(img_array)
|
|
predicted_class = "Smoking" if prediction > 0.5 else "Not Smoking"
|
|
|
|
return predicted_class, prediction[0]
|
|
|
|
def run():
|
|
st.title("Smoking or Not Smoking Detection")
|
|
img_file = st.file_uploader("Choose an Image", type=["jpg", "png"])
|
|
|
|
if img_file is not None:
|
|
img = Image.open(img_file).resize((250, 250))
|
|
st.image(img, use_column_width=False)
|
|
|
|
|
|
upload_dir = './upload_images/'
|
|
os.makedirs(upload_dir, exist_ok=True)
|
|
|
|
save_image_path = os.path.join(upload_dir, img_file.name)
|
|
with open(save_image_path, "wb") as f:
|
|
f.write(img_file.getbuffer())
|
|
|
|
predicted_class, score = prepare_image(img)
|
|
st.success(f"**Predicted : {predicted_class}, Score: {score}**")
|
|
|
|
run()
|
|
|