Spaces:
Sleeping
Sleeping
# 1. app.py | |
# Main Streamlit app for UI and user interaction | |
import streamlit as st | |
from PIL import Image | |
from dataset_utils import preprocess_image, DatasetHandler | |
from model_utils import BugClassifier | |
st.set_page_config( | |
page_title="Bug-O-Scope ππ", | |
page_icon="π", | |
layout="wide" | |
) | |
def load_model(): | |
return BugClassifier() | |
def main(): | |
st.title("Bug-O-Scope ππ") | |
st.markdown( | |
""" | |
Welcome to Bug-O-Scope! Upload a photo of an insect to identify it and learn about its ecological importance. | |
""" | |
) | |
st.sidebar.header("About Bug-O-Scope") | |
st.sidebar.markdown( | |
""" | |
Bug-O-Scope is powered by AI to help you: | |
- Identify insects | |
- Learn about species | |
- Understand their ecological roles | |
""" | |
) | |
model = load_model() | |
tab1, tab2 = st.tabs(["Single Bug Analysis", "Bug Comparison"]) | |
with tab1: | |
single_bug_analysis(model) | |
with tab2: | |
st.markdown("Bug comparison feature coming soon!") | |
def single_bug_analysis(model): | |
uploaded_file = st.file_uploader("Upload a bug photo", type=['png', 'jpg', 'jpeg']) | |
if uploaded_file: | |
image = Image.open(uploaded_file) | |
st.image(image, caption="Uploaded Image", use_container_width=True) | |
with st.spinner("Analyzing your bug..."): | |
prediction, confidence = model.predict(image) | |
st.success("Analysis Complete!") | |
st.markdown(f"**Identified Species**: {prediction}") | |
st.markdown(f"**Confidence**: {confidence:.2f}%") | |
if prediction != "Unknown Insect": | |
species_info = model.get_species_info(prediction) | |
st.markdown("### About This Species") | |
st.markdown(species_info) | |
if __name__ == "__main__": | |
main() |