Metinhsimi's picture
Upload 3 files
09ba665 verified
import streamlit as st
from tensorflow.keras.preprocessing import image
import numpy as np
from PIL import Image
import tensorflow as tf
# Load the model
@st.cache_resource
def load_model():
model = tf.keras.models.load_model('model_butter.h5') # Path to your model
return model
model = load_model()
# Class labels
class_labels = [
'SOUTHERN DOGFACE', 'ADONIS', 'BROWN SIPROETA', 'MONARCH', 'GREEN CELLED CATTLEHEART',
'CAIRNS BIRDWING', 'EASTERN DAPPLE WHITE', 'RED POSTMAN', 'MANGROVE SKIPPER',
'BLACK HAIRSTREAK', 'CABBAGE WHITE', 'RED ADMIRAL', 'PAINTED LADY', 'PAPER KITE',
'SOOTYWING', 'PINE WHITE', 'PEACOCK', 'CHECQUERED SKIPPER', 'JULIA',
'COMMON WOOD-NYMPH', 'BLUE MORPHO', 'CLOUDED SULPHUR', 'STRAITED QUEEN',
'ORANGE OAKLEAF', 'PURPLISH COPPER', 'ATALA', 'IPHICLUS SISTER', 'DANAID EGGFLY',
'LARGE MARBLE', 'PIPEVINE SWALLOW', 'BLUE SPOTTED CROW', 'RED CRACKER',
'QUESTION MARK', 'CRIMSON PATCH', 'BANDED PEACOCK', 'SCARCE SWALLOW', 'COPPER TAIL',
'GREAT JAY', 'INDRA SWALLOW', 'VICEROY', 'MALACHITE', 'APPOLLO',
'TWO BARRED FLASHER', 'MOURNING CLOAK', 'TROPICAL LEAFWING', 'POPINJAY',
'ORANGE TIP', 'GOLD BANDED', 'BECKERS WHITE', 'RED SPOTTED PURPLE',
'MILBERTS TORTOISESHELL', 'SILVER SPOT SKIPPER', 'AMERICAN SNOOT', 'AN 88',
'ULYSES', 'COMMON BANDED AWL', 'CRECENT', 'METALMARK', 'SLEEPY ORANGE',
'PURPLE HAIRSTREAK', 'ELBOWED PIERROT', 'GREAT EGGFLY', 'ORCHARD SWALLOW',
'ZEBRA LONG WING', 'WOOD SATYR', 'MESTRA', 'EASTERN PINE ELFIN',
'EASTERN COMA', 'YELLOW SWALLOW TAIL', 'CLEOPATRA', 'GREY HAIRSTREAK',
'BANDED ORANGE HELICONIAN', 'AFRICAN GIANT SWALLOWTAIL', 'CHESTNUT',
'CLODIUS PARNASSIAN'
]
# Title
st.title("πŸ¦‹ Butterfly Classifier")
# Image Upload
st.header("Upload an Image")
uploaded_file = st.file_uploader("Please upload a butterfly image...", type=["jpg", "jpeg", "png"])
if uploaded_file is not None:
# Open and display the image
img = Image.open(uploaded_file)
st.image(img, caption='Uploaded Image', use_column_width=True)
st.write("πŸ” **Analyzing the image...**")
# Preprocess the image
img = img.resize((128, 128)) # Resize according to how your model was trained
img_array = image.img_to_array(img)
img_array = np.expand_dims(img_array, axis=0)
img_array /= 255.0
# Predict
prediction = model.predict(img_array)
predicted_class = np.argmax(prediction, axis=1)[0]
# Display the result
st.write(f"πŸ¦‹ **It's a {class_labels[predicted_class]}!**")
else:
st.write("πŸ‘ˆ Upload an image to get started!")