# import streamlit as st # import train # # import tr # # import prd # x = st.slider('Select a value') # st.write(x, 'squared is', x * 86) import streamlit as st import cv2 import numpy as np from tensorflow.keras.preprocessing import image import tensorflow as tf from huggingface_hub import from_pretrained_keras model = from_pretrained_keras("okeowo1014/catsanddogsmodel") # Load the saved model (replace with your model filename) # model = tf.keras.models.load_model('cat_dog_classifier.keras') # Image dimensions for the model img_width, img_height = 224, 224 def preprocess_image(img): """Preprocesses an image for prediction.""" img = cv2.resize(img, (img_width, img_height)) img = img.astype('float32') / 255.0 img = np.expand_dims(img, axis=0) return img def predict_class(image): """Predicts image class and probabilities.""" preprocessed_img = preprocess_image(image) prediction = model.predict(preprocessed_img) class_names = ['cat', 'dog'] # Adjust class names according to your model print(np.argmax(prediction), np.max(prediction)) p=np.max(prediction) if p >0.5: cn=1 else: cn=0 return class_names[cn], p def display_results(class_name, probability): """Displays prediction results in a progress bar style.""" st.write(f"**Predicted Class:** {class_name}") # # Create a progress bar using st.progress # progress = st.progress(0) # for i in range(100): # progress.progress(i + 1) # if i == int(probability * 100): # break # st.write(f"**Probability:** {probability:.2f}") def main(): """Main app function.""" st.title("Image Classifier") st.write("Upload an image to classify it as cat or dog.") uploaded_file = st.file_uploader("Choose an image...", type="jpg") if uploaded_file is not None: image = cv2.imdecode(np.frombuffer(uploaded_file.read(), np.uint8), cv2.IMREAD_COLOR) st.image(image, caption="Uploaded Image", use_column_width=True) predicted_class, probability = predict_class(image) display_results(predicted_class, probability) main()