Skip to content

Repository files navigation

Plant Disease Classification Using Deep Learning

A comprehensive deep learning project for automated plant disease detection using the PlantDoc dataset. This project implements and compares multiple CNN architectures to classify 28 different plant disease classes across 13 plant species, addressing real-world agricultural challenges with authentic dataset constraints.

Project Overview

Agricultural diseases cause significant crop losses worldwide, with billions of dollars in economic impact annually. This project develops an automated plant disease detection system using computer vision and deep learning techniques, specifically designed to work with the constraints of real agricultural datasets.

Key Challenge: Working with the actual PlantDoc dataset reveals significant real-world constraints including severe class imbalance (90.5:1 ratio), limited sample sizes (2-181 images per class), and variable image quality typical of field-collected agricultural data.

Dataset - Real Characteristics

PlantDoc Dataset Analysis Results

  • Total Images: 2,445 (2,215 training, 230 testing)
  • Disease Classes: 28 across 13 plant species
  • Severe Class Imbalance: Ranges from 2 images ("Tomato spider mites") to 181 images ("Corn leaf blight")
  • Dataset Split: 90.6% training, 9.4% testing
  • Image Characteristics:
    • Dimensions: 180px to 5,184px width (mean: 1,002px)
    • File sizes: 5KB to 8.7MB (mean: 331KB)
    • Variable quality reflecting real field conditions

Top Disease Classes by Sample Size:

  1. Corn leaf blight: 181 images
  2. Tomato Septoria leaf spot: 148 images
  3. Squash Powdery mildew leaf: 123 images
  4. Raspberry leaf: 116 images
  5. Potato leaf early blight: 114 images

Plant Species Distribution:

  1. Tomato: 717 images (29% of dataset, 9 disease types)
  2. Corn: 357 images (3 disease types)
  3. Apple: 254 images (3 disease types)
  4. Potato: 218 images (2 disease types)
  5. Others: 899 images across 9 species

Health Status Distribution:

  • Diseased plants: 1,525 images (62.4%)
  • Healthy plants: 920 images (37.6%)

Methodology

1. Exploratory Data Analysis (EDA)

  • Dataset structure and class distribution analysis
  • Image characteristics assessment (dimensions, quality, color properties)
  • Class imbalance identification and mitigation strategies
  • Species-level performance analysis

2. Model Architectures

Three approaches were implemented and compared:

  1. Custom CNN

    • 4 convolutional blocks with batch normalization
    • Global average pooling and dropout regularization
    • 2.1M parameters
  2. Transfer Learning (ResNet50)

    • Pre-trained ResNet50 with frozen feature layers
    • Custom classification head
    • 25.6M parameters
  3. Fine-tuned ResNet50

    • Pre-trained ResNet50 with last 20 layers unfrozen
    • Lower learning rate for fine-tuning
    • 25.6M parameters

3. Training Strategy

  • Data augmentation (rotation, flip, zoom, shift)
  • Early stopping and learning rate reduction
  • Cross-validation for robust evaluation
  • Comprehensive hyperparameter optimization

Results - Real Dataset Performance

Model Accuracy Precision Recall F1-Score Parameters Use Case
Efficient CNN 71.0% 69.2% 70.1% 69.8% 1.2M Mobile applications
EfficientNet Transfer 82.0% 81.1% 81.5% 81.3% 4.0M Cloud services
ResNet50 Fine-tuned 85.0% 84.3% 84.6% 84.1% 25.6M Research platforms

Key Findings - Real Dataset Constraints

  • Transfer learning provides 14% accuracy improvement over custom CNN (critical for small datasets)
  • Strong correlation between sample size and performance: Classes with 100+ samples achieve 85%+ F1-score, while classes with <20 samples struggle to reach 60%
  • Species-specific patterns: Single-disease species (Blueberry, Peach) perform better than multi-disease species (Tomato with 9 disease types)
  • Challenging classes: "Tomato spider mites" (2 samples, 35% F1), "Corn Gray leaf spot" (64 samples, 68% F1)
  • Best performing: "Corn leaf blight" (181 samples, 89% F1), "Blueberry leaf" (107 samples, 87% F1)

Project Structure

plant-disease-classification/
├── README.md
├── requirements.txt
├── plant_disease_classification.ipynb    # Main analysis notebook
├── data/                                # Dataset directory
│   ├── train/                          # Training images
│   └── test/                           # Test images
├── models/                             # Saved model files
├── results/                            # Output visualizations and metrics
└── presentation/                       # Project presentation materials

Installation and Usage

Prerequisites

  • Python 3.8+
  • GPU recommended for training (optional)

Setup

  1. Clone the repository:
git clone https://github.com/rylanturner02/plant-disease-deep-learning.git
cd plant-disease-deep-learning
  1. Install dependencies:
pip install -r requirements.txt
  1. Download the PlantDoc dataset:
# Download from: https://github.com/pratikkayal/PlantDoc-Dataset
# Extract to data/ directory
  1. Run the analysis:
jupyter notebook plant_disease_classification.ipynb

Model Performance Analysis - Real Dataset

Deployment Considerations

Model Size (MB) Inference Time (ms) Memory (MB) Accuracy Best Use Case
Efficient CNN 4.8 35 150 71.0% Mobile apps, offline capability
EfficientNet 29.1 65 400 82.0% Cloud services, balanced performance
ResNet50 102.3 85 600 85.0% Research platforms, maximum accuracy

Performance by Dataset Characteristics

  • Large classes (100+ samples): 85-89% F1-score
  • Medium classes (50-99 samples): 75-84% F1-score
  • Small classes (20-49 samples): 65-74% F1-score
  • Very small classes (<20 samples): 35-64% F1-score

Real-World Implementation Challenges

  • Small test set (230 images) limits generalization confidence
  • Extreme class imbalance affects minority class reliability
  • Variable image quality requires robust preprocessing
  • Limited geographical diversity may not generalize across regions

Future Work - Based on Real Dataset Analysis

Critical Data Collection Needs

  1. Balanced Dataset Collection: Minimum 100 samples per disease class
  2. Geographical Diversity: Multi-regional data collection for better generalization
  3. Disease Progression Stages: Include early, mid, and late-stage disease samples
  4. Environmental Context: Add metadata for weather, season, and growing conditions
  5. Quality Standardization: Develop image capture protocols for consistent quality

Advanced Model Development

  1. Hierarchical Classification: Species identification → disease classification
  2. Few-shot Learning: Techniques for rare diseases with limited samples
  3. Attention Mechanisms: Focus on disease-specific visual symptoms
  4. Ensemble Methods: Combine multiple models for improved robustness
  5. Domain Adaptation: Adapt models across different geographical regions

Production Deployment Requirements

  1. Mobile Application: Offline-capable farmer diagnostic tool
  2. Expert Integration: Confidence thresholds with expert referral system
  3. Feedback Loops: User validation for continuous model improvement
  4. Multi-language Support: Disease names and treatment advice in local languages
  5. Integration Platforms: Agricultural extension services and research systems

Timeline for Production Readiness: 2-3 years with systematic data collection

Real-World Impact

This system enables:

  • Early disease detection to prevent crop losses
  • Accessible diagnostic tools for resource-limited farmers
  • Support for precision agriculture practices
  • Integration with mobile and IoT devices for field deployment

Technical Highlights - Real Dataset Analysis

  • Comprehensive Real Dataset Analysis: Complete characterization of PlantDoc dataset constraints and opportunities
  • Class Imbalance Solutions: Implemented class-weighted training for 90.5:1 imbalance ratios
  • Small Dataset Optimization: Aggressive data augmentation and transfer learning strategies
  • Multi-Model Comparison: Systematic evaluation of efficiency vs. accuracy trade-offs
  • Deployment-Ready Analysis: Complete pipeline from data analysis to production considerations
  • Realistic Performance Assessment: Honest evaluation of limitations and generalization challenges
  • Agricultural Domain Expertise: Deep understanding of real-world deployment constraints

Real-World Impact Assessment

Current Capabilities:

  • Research and Education: Ready for academic research and agricultural training programs
  • Proof of Concept: Demonstrates feasibility of AI for plant disease detection
  • Extension Services: Could assist trained agricultural specialists

Production Limitations:

  • Small test set limits confidence in generalization
  • Class imbalance affects reliability for rare diseases
  • Regional bias may not transfer to different growing conditions
  • Dataset size insufficient for critical agricultural decisions

Path to Production:

  1. Data Collection Campaign: Scale to 100+ samples per disease class
  2. Multi-Regional Validation: Test across different climates and regions
  3. Expert Integration: Build systems with human oversight and feedback
  4. Continuous Learning: Implement update mechanisms for new diseases and conditions

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/improvement)
  3. Commit your changes (git commit -am 'Add new feature')
  4. Push to the branch (git push origin feature/improvement)
  5. Create a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • PlantDoc dataset creators: Singh et al. (2020) for providing real agricultural data
  • Agricultural research community: For highlighting the importance of authentic dataset analysis
  • Deep learning community: TensorFlow, Keras, and transfer learning research
  • Open source contributors: For tools and libraries that make agricultural AI accessible

About

CSCA 5642 final project for my Master's program at CU-Boulder.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages