Spaces:
Sleeping
Sleeping
Download app.py from sailakshmi123/Image_Classification: direct link, hf CLI and curl.
- Browser
- Download file 2.11 kB
-
https://huggingface.co/spaces/sailakshmi123/Image_Classification/resolve/main/app.py
- Command line
-
hf download hf://spaces/sailakshmi123/Image_Classification/app.py
-
curl -L -o app.py https://huggingface.co/spaces/sailakshmi123/Image_Classification/resolve/main/app.py
2.11 kB
| import streamlit as st | |
| import numpy as np | |
| from tensorflow.keras.models import load_model | |
| from tensorflow.keras.preprocessing.image import img_to_array | |
| from PIL import Image, UnidentifiedImageError | |
| # Configure Streamlit | |
| st.set_page_config( | |
| page_title="Animal Classifier", | |
| layout="centered", | |
| initial_sidebar_state="auto" | |
| ) | |
| # Load model and class labels | |
| def load_model_once(): | |
| return load_model("animal_model.keras") | |
| def load_labels(): | |
| return np.load("class_labels.npy", allow_pickle=True).item() | |
| model = load_model_once() | |
| class_indices = load_labels() | |
| class_labels = list(class_indices.keys()) | |
| # Title | |
| st.title("Animal Image Classifier") | |
| st.markdown("Upload up to **3 images** to get predictions") | |
| # File uploader | |
| uploaded_files = st.file_uploader( | |
| "Upload animal images", | |
| type=["jpg", "jpeg", "png"], | |
| accept_multiple_files=True | |
| ) | |
| if uploaded_files: | |
| uploaded_files = uploaded_files[:3] # Limit to 3 files | |
| cols = st.columns(len(uploaded_files)) | |
| for idx, uploaded_file in enumerate(uploaded_files): | |
| with cols[idx]: | |
| st.markdown(f"### Image {idx + 1}") | |
| try: | |
| image = Image.open(uploaded_file).convert("RGB") | |
| preview = image.copy() | |
| preview.thumbnail((150, 150)) | |
| st.image(preview, caption="Preview", use_container_width=False) | |
| # Resize and preprocess | |
| resized = image.resize((128, 128)) | |
| img_array = img_to_array(resized) / 255.0 | |
| img_array = np.expand_dims(img_array, axis=0) | |
| # Prediction | |
| preds = model.predict(img_array)[0] | |
| top_index = np.argmax(preds) | |
| top_label = class_labels[top_index] | |
| # Display top prediction only | |
| st.success(f"Top Prediction: **{top_label.capitalize()}**") | |
| except UnidentifiedImageError: | |
| st.error("Error: Invalid image file.") | |
| except Exception as e: | |
| st.error(f"Unexpected error: {str(e)}") | |