Manos21/Image_Classifier
0
1 2import cv23import numpy as np4import streamlit as st5from tensorflow.keras.applications.mobilenet_v2 import (6 MobileNetV2,7 preprocess_input,8 decode_predictions9)10from PIL import Image11 12def load_model():13 model = MobileNetV2(weights="imagenet")14 return model15 16def preprocess_image(image):17 img = np.array(image)18 img = cv2.resize(img, (224, 224))19 img = preprocess_input(img)20 img = np.expand_dims(img, axis=0)21 return img22 23def classify_image(model, image):24 try:25 processed_image = preprocess_image(image)26 predictions = model.predict(processed_image)27 decoded_predictions = decode_predictions(predictions, top=3)[0]28 return decoded_predictions29 except Exception as e:30 st.error(f"Error classifying image: {str(e)}")31 return None32 33def main():34 st.set_page_config(page_title="AI Image Classifier", page_icon="🖼️", layout="centered")35 st.title("AI Image Classifier")36 st.write("Upload an image and let AI tell you what is in it!")37 38 @st.cache_resource39 def load_cached_model():40 return load_model()41 42 model = load_cached_model()43 uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "png"])44 45 if uploaded_file is not None:46 st.image(uploaded_file, caption="Uploaded Image", use_container_width=True)47 btn = st.button("Classify Image")48 49 if btn:50 with st.spinner("Analyzing Image..."):51 image = Image.open(uploaded_file)52 predictions = classify_image(model, image)53 if predictions:54 st.subheader("Predictions")55 for _, label, score in predictions:56 st.write(f"**{label}**: {score:.2%}")57 58if __name__ == "__main__":59 main()60 