Spaces:
Sleeping
Sleeping
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 | |
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!") | |