| import streamlit as st | |
| import numpy as np | |
| from PIL import Image | |
| from tensorflow.keras.models import load_model | |
| from tensorflow.keras.applications.resnet50 import preprocess_input | |
| class_names = [ | |
| 'Asian Green Bee-Eater', | |
| 'Brown-Headed Barbet', | |
| 'Cattle Egret', | |
| 'Common Kingfisher', | |
| 'Common Myna', | |
| 'Common Rosefinch', | |
| 'Common Tailorbird', | |
| 'Coppersmith Barbet', | |
| 'Forest Wagtail', | |
| 'Gray Wagtail', | |
| 'Hoopoe', | |
| 'House Crow', | |
| 'Indian Grey Hornbill', | |
| 'Indian Peacock', | |
| 'Indian Pitta', | |
| 'Indian Roller', | |
| 'Jungle Babbler', | |
| 'Northern Lapwing', | |
| 'Red-Wattled Lapwing', | |
| 'Ruddy Shelduck', | |
| 'Rufous Treepie', | |
| 'Sarus Crane', | |
| 'White Wagtail', | |
| 'White-Breasted Kingfisher', | |
| 'White-Breasted Waterhen' | |
| ] | |
| model = load_model("src/indianBirds_InceptionV3Model.keras") | |
| st.title("Indian Bird Species Classifier") | |
| uploaded_file = st.file_uploader("Upload a bird image", type=["jpg", "jpeg", "png"]) | |
| if uploaded_file: | |
| image = Image.open(uploaded_file).convert("RGB") | |
| st.image(image, use_container_width=True) | |
| img = image.resize((224, 224)) | |
| x = np.expand_dims(np.array(img), axis=0) | |
| x = preprocess_input(x) | |
| preds = model.predict(x) | |
| idx = np.argmax(preds[0]) | |
| st.markdown(f"### Predicted Species: **{class_names[idx]}**") |