Spaces:
Sleeping
Sleeping
import streamlit as st | |
import joblib | |
import numpy as np | |
from tensorflow.keras.preprocessing import image | |
from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input | |
from tensorflow.keras.preprocessing.image import load_img, img_to_array | |
# Load the trained KNN model and class names | |
model = joblib.load('knn_model.joblib') | |
with open('class_names.txt', 'r') as f: | |
class_names = f.readlines() | |
class_names = [x.strip() for x in class_names] | |
# Load pre-trained ResNet50 model for feature extraction | |
resnet_model = ResNet50(weights='imagenet', include_top=False, pooling='avg') | |
# Streamlit app | |
st.title('Animal Image Classifier') | |
st.write('Upload an image to classify it.') | |
# Upload Image | |
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"]) | |
if uploaded_file is not None: | |
# Process the image | |
img = load_img(uploaded_file, target_size=(32, 32)) | |
img = img_to_array(img) | |
img = np.expand_dims(img, axis=0) | |
img = preprocess_input(img) | |
# Extract features | |
features = resnet_model.predict(img) | |
# Make prediction | |
prediction = model.predict(features) | |
predicted_class = class_names[prediction[0]] | |
# Display result | |
st.image(uploaded_file, caption='Uploaded Image.', use_column_width=True) | |
st.write(f"Predicted Class: {predicted_class}") |