Spaces:
Build error
Build error
| import streamlit as st | |
| from transformers import pipeline | |
| from PIL import Image | |
| # 1. Setup the Page UI | |
| st.set_page_config(page_title="Nano Botanic Nursery - Disease Classifier", page_icon="🌿") | |
| st.title("🌿 Smart Nursery: Plant Health Monitor") | |
| st.write("Upload a clear photo of a leaf (e.g., samanthi, roses, or standard crops) and our AI will detect early signs of disease.") | |
| # 2. Load the Model (Cached to prevent reloading on every click) | |
| def load_disease_classifier(): | |
| # We use a pipeline specifically configured for the plant disease detection model | |
| return pipeline("image-classification", model="Diginsa/Plant-Disease-Detection-Project") | |
| classifier = load_disease_classifier() | |
| # 3. Image Upload Interface | |
| uploaded_file = st.file_uploader("Upload Leaf Image (JPG/PNG)", type=["jpg", "jpeg", "png"]) | |
| if uploaded_file is not None: | |
| # Display the uploaded image | |
| image = Image.open(uploaded_file) | |
| st.image(image, caption="Uploaded Leaf", use_column_width=True) | |
| # 4. Trigger the AI Inference | |
| if st.button("Analyze Leaf"): | |
| with st.spinner("Analyzing biological structures..."): | |
| # Run the Hugging Face pipeline | |
| results = classifier(image) | |
| # Parse and display the primary diagnosis | |
| st.subheader("Diagnosis:") | |
| top_result = results[0] | |
| label = top_result['label'].replace('_', ' ') # Clean up the technical label | |
| confidence = top_result['score'] * 100 | |
| st.success(f"**{label}** ({confidence:.1f}% confidence)") | |
| # Show secondary possibilities for transparency | |
| with st.expander("See detailed probability breakdown"): | |
| for res in results[1:4]: | |
| clean_label = res['label'].replace('_', ' ') | |
| st.write(f"- {clean_label}: {res['score']*100:.1f}%") |