ytrsoymr's picture
Create app.py
2a06144 verified
import streamlit as st
from tensorflow.keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
import numpy as np
from PIL import Image
# Load VGG16 model
@st.cache_resource
def load_model():
model = VGG16(weights='imagenet')
return model
model = load_model()
st.title(" Image Classification with VGG16")
st.write("Upload an image and let VGG16 predict what's in it!")
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
if uploaded_file:
img = Image.open(uploaded_file).convert("RGB")
st.image(img, caption="Uploaded Image", use_column_width=True)
# Preprocess the image
img_resized = img.resize((224, 224))
img_array = image.img_to_array(img_resized)
img_batch = np.expand_dims(img_array, axis=0)
img_preprocessed = preprocess_input(img_batch)
# Predict
preds = model.predict(img_preprocessed)
top_preds = decode_predictions(preds, top=3)[0]
st.subheader("Top Predictions:")
for i, (imagenet_id, label, prob) in enumerate(top_preds):
st.write(f"**{label}** – {prob:.2%}")