Methodology
Simple Project Methodology
This project follows a standard machine learning workflow to create a potato disease classifier.
Project Goals
- Learn CNN image classification
- Build a FastAPI backend
- Create a React frontend
- Document the project with Quarto
Approach
- Dataset: Use PlantVillage potato disease dataset
- Model: Train a simple CNN with TensorFlow
- API: Serve model with FastAPI
- Frontend: React app for image upload
- Documentation: Quarto website
Data Collection & Preparation
Dataset Overview
- Source: Kaggle PlantVillage Dataset
- Total Images: ~2,100 potato leaf images
- Classes: 3 (Early Blight, Late Blight, Healthy)
- Image Format: JPG, various resolutions
- Collection Method: Controlled laboratory conditions
Data Distribution
Class | Training | Validation | Test | Total |
---|---|---|---|---|
Early Blight | 800 | 100 | 100 | 1,000 |
Healthy | 600 | 75 | 75 | 750 |
Late Blight | 560 | 70 | 70 | 700 |
Total | 1,960 | 245 | 245 | 2,450 |
Preprocessing Pipeline
- Image Resizing: All images standardized to 256×256 pixels
- Normalization: Pixel values scaled to [0,1] range
- Data Augmentation:
- Random rotation (±30°)
- Horizontal flipping
- Brightness adjustment (±20%)
- Zoom range (±10%)
# Data augmentation configuration
= tf.keras.Sequential([
data_augmentation "horizontal"),
tf.keras.layers.experimental.preprocessing.RandomFlip(0.1),
tf.keras.layers.experimental.preprocessing.RandomRotation(0.1),
tf.keras.layers.experimental.preprocessing.RandomZoom(0.2)
tf.keras.layers.experimental.preprocessing.RandomBrightness( ])
Model Architecture Design
CNN Architecture Selection
After evaluating multiple architectures, we selected a custom CNN design optimized for: - Computational efficiency for deployment - Feature extraction capability for plant diseases - Generalization performance across different conditions
Network Architecture
graph TD
A[Input: 256×256×3] --> B[Conv2D: 32 filters, 3×3]
B --> C[MaxPool2D: 2×2]
C --> D[Conv2D: 64 filters, 3×3]
D --> E[MaxPool2D: 2×2]
E --> F[Conv2D: 128 filters, 3×3]
F --> G[MaxPool2D: 2×2]
G --> H[Flatten]
H --> I[Dropout: 0.5]
I --> J[Dense: 128 units, ReLU]
J --> K[Dense: 3 units, Softmax]
Design Rationale
- Convolutional Layers: Extract hierarchical features from leaf images
- MaxPooling: Reduce spatial dimensions and computational load
- Progressive Filters: Increase filter count (32→64→128) for complex feature learning
- Dropout: Prevent overfitting with 50% dropout rate
- Dense Layers: Final classification with ReLU activation
Training Methodology
Training Configuration
compile(
model.=tf.keras.optimizers.Adam(learning_rate=0.001),
optimizer='sparse_categorical_crossentropy',
loss=['accuracy']
metrics )
Hyperparameter Selection
Parameter | Value | Justification |
---|---|---|
Learning Rate | 0.001 | Balanced convergence speed |
Batch Size | 32 | Memory efficiency + stable gradients |
Epochs | 50 | Sufficient for convergence |
Optimizer | Adam | Adaptive learning rate |
Loss Function | Sparse Categorical Crossentropy | Multi-class classification |
Training Strategy
- Early Stopping: Monitor validation loss with patience=10
- Learning Rate Scheduling: Reduce on plateau
- Model Checkpointing: Save best model based on validation accuracy
- Cross-validation: 5-fold validation for robustness assessment
Evaluation Methodology
Metrics Selection
Primary Metrics: - Accuracy: Overall classification correctness - Precision: True positives / (True positives + False positives)
- Recall: True positives / (True positives + False negatives) - F1-Score: Harmonic mean of precision and recall
Secondary Metrics: - Confusion Matrix: Detailed error analysis - ROC-AUC: Multi-class classification performance - Inference Time: Model efficiency assessment
Validation Strategy
- Hold-out Validation: 80/10/10 train/val/test split
- Stratified Sampling: Maintain class distribution across splits
- Cross-validation: 5-fold CV for robustness verification
- Real-world Testing: Field validation with agricultural experts
System Architecture
Full-Stack Development Approach
graph LR
A[React Frontend] <--> B[FastAPI Backend]
B <--> C[TensorFlow Model]
C --> D[Model Inference]
D --> B
B --> E[JSON Response]
E --> A
Technology Stack Rationale
Frontend (React): - Component-based architecture for maintainability - Material-UI for professional interface - Responsive design for mobile compatibility
Backend (FastAPI): - High-performance API framework - Automatic API documentation generation - Async support for concurrent requests
ML Framework (TensorFlow): - Industry-standard deep learning framework - Excellent deployment options - Strong community support
Deployment Methodology
API Design Principles
- RESTful Architecture: Standard HTTP methods and status codes
- Stateless Design: Each request contains all necessary information
- Error Handling: Comprehensive error responses and logging
- CORS Configuration: Enable cross-origin requests
Performance Optimization
- Model Optimization:
- H5 format for efficient loading
- Float32 precision for speed
- Batch prediction capability
- API Optimization:
- Async request handling
- Image preprocessing pipeline
- Response caching (future implementation)
Quality Assurance
Testing Strategy
Unit Testing: - Individual function validation - API endpoint testing - Model inference verification
Integration Testing: - End-to-end workflow validation - Frontend-backend communication - Error handling scenarios
User Acceptance Testing: - Farmer feedback collection - Usability assessment - Performance validation
Validation Criteria
- Model accuracy ≥ 85% on test set
- API response time ≤ 500ms for 95% of requests
- User interface usability score ≥ 4.0/5.0
- Zero critical security vulnerabilities
Experimental Controls
Bias Mitigation
- Data Bias: Ensured balanced class representation
- Selection Bias: Random train/test splits
- Confirmation Bias: Blind evaluation protocols
- Temporal Bias: Images from multiple time periods
Reproducibility Measures
- Seed Setting: Fixed random seeds for reproducible results
- Version Control: All code and data versioned
- Environment Documentation: Complete dependency specifications
- Experiment Logging: Detailed training logs and metrics
Ethical Considerations
Data Privacy
- No personal information in image metadata
- Secure handling of uploaded images
- Data retention policies defined
Algorithmic Fairness
- Equal performance across disease types
- No bias toward specific image conditions
- Transparent prediction explanations
Environmental Impact
- Efficient model design reduces computational requirements
- Edge deployment minimizes cloud computing needs
Limitations & Assumptions
Known Limitations
- Dataset Scope: Limited to controlled laboratory conditions
- Geographic Bias: Images primarily from specific regions
- Seasonal Variation: Limited temporal diversity in training data
- Equipment Dependency: Requires digital camera/smartphone
Key Assumptions
- Image Quality: Assumes reasonable image quality and lighting
- Disease Stages: Model trained on visible symptom stages
- Single Disease: Assumes one primary disease per image
- Crop Variety: Limited to common potato varieties
Future Research Directions
Immediate Improvements
- Expand dataset with field conditions
- Implement transfer learning approaches
- Add disease severity assessment
- Mobile app development
Long-term Vision
- Multi-crop disease detection
- Integration with IoT sensors
- Predictive disease modeling
- Treatment recommendation system
This methodology provides a systematic approach to developing, validating, and deploying machine learning solutions for agricultural applications, ensuring scientific rigor and practical utility.