Spaces:
Sleeping
Sleeping
| # Run this file using Streamlit command: streamlit run main.py | |
| import streamlit as st | |
| import tensorflow as tf | |
| import numpy as np | |
| from PIL import Image | |
| import io | |
| class CoffeeLandClassifier: | |
| def __init__(self, model_path, class_labels): | |
| self.model = tf.keras.models.load_model(model_path) | |
| self.class_labels = class_labels | |
| def run(self): | |
| st.title("Coffee Land Classifier") | |
| # Create a file uploader widget | |
| uploaded_image = st.file_uploader("Please upload an image", type=["jpg", "jpeg", "png"]) | |
| if uploaded_image is not None: | |
| # Load and preprocess the uploaded image | |
| img = Image.open(uploaded_image) | |
| img = img.resize((64, 64)) # Resize the image to match the model's input shape | |
| img = np.array(img) | |
| img = img.astype('float32') / 255.0 | |
| img = np.expand_dims(img, axis=0) | |
| # Make a prediction | |
| predictions = self.model.predict(img) | |
| class_index = np.argmax(predictions) | |
| predicted_class = self.class_labels[class_index] | |
| # Display the uploaded image | |
| st.image(img[0]) | |
| # Show the prediction result | |
| st.write(f"Prediction: {predicted_class}") | |
| st.write("Class Probabilities:") | |
| for i, prob in enumerate(predictions[0]): | |
| st.write(f"{self.class_labels[i]}: {prob * 100:.2f}%") | |
| def main(): | |
| model_path = "model/model.h5" | |
| class_labels = ["Coffee Land", "Not Coffee Land"] # Class labels | |
| classifier = CoffeeLandClassifier(model_path, class_labels) | |
| classifier.run() | |
| if __name__ == "__main__": | |
| main() | |