Keziaa's picture
Upload app.py
1424c0a
raw
history blame
1.45 kB
import streamlit as st
import numpy as np
from PIL import Image
import tensorflow as tf
model = tf.keras.models.load_model('model sequential improve.h5')
# Custom function to load and predict label for the image
def predict(img_rel_path):
# Import Image from the path with size of (300, 300)
img = Image.open(img_rel_path).resize((150, 150))
# Convert Image to a numpy array
img = np.array(img)
# Scaling the Image Array values between 0 and 1
img = img / 255.0
# Get the Predicted Label for the loaded Image
p = model.predict(img[np.newaxis, ...])
# Label array
labels = {0: 'baby', 1: 'kid', 2: 'young', 3: 'adult'}
predicted_class = labels[np.argmax(p[0], axis=-1)]
classes=[]
prob=[]
for i,j in enumerate (p[0],0):
classes.append(labels[i])
prob.append(round(j*100,2))
return predicted_class, classes, prob
def main():
st.title("Face Detection")
uploaded_file = st.file_uploader("Choose a file")
if uploaded_file is not None:
image = Image.open(uploaded_file)
st.image(image, caption='Uploaded Image', use_column_width=True)
if st.button("Predict"):
class_, classes, prob = predict(uploaded_file)
st.write("Age:", class_)
st.write("Predict:")
for i in range(len(classes)):
st.write(f"{classes[i].upper()}: {prob[i]}%")
if __name__ == "__main__":
main()