A newer version of the Streamlit SDK is available: 1.60.0
EcoPulse System Architecture
This document provides a technical deep-dive into the EcoPulse pipeline, explaining the interaction between the foundation models and the classification head.
Design Philosophy
EcoPulse is built on the principle of Modular Decoupling. By separating the segmentation of objects from the classification of those objects, we can swap out individual models (e.g., upgrading from ResNet to EfficientNet) without re-engineering the entire pipeline.
The Three-Phase Pipeline
Phase 1: Classification (Feature Extraction)
The core classifier is a ResNet-50 architecture.
- Dataset: EuroSAT (13 spectral bands, though EcoPulse uses the RGB version for broader compatibility).
- Optimization: Trained using Adam optimizer with Automatic Mixed Precision (AMP) to leverage NVIDIA Tensor Cores.
- Responsibility: Accepts a 64x64 patch and outputs a probability distribution across 10 land-cover classes.
Phase 2: Segmentation & Quantification (Orchestration)
The orchestration layer, found in src/greenery_estimator.py, manages the data flow:
- Instance Segmentation: Meta's Segment Anything Model (SAM) processes the high-resolution input image. It generates a collection of boolean masks representing distinct environmental features.
- Dynamic Cropping: For each mask, the system calculates a bounding box and extracts the corresponding pixels from the original image.
- Classification: Each cropped patch is fed into the ResNet-50 classifier.
- Weighted Aggregation: If a mask is classified as a "greenery" category (Forest, Pasture, Herbaceous Vegetation, or Permanent Crop), its total pixel count is added to the regional tally.
Phase 3: Interpretability (Explainable AI)
To prevent "black-box" decisions, EcoPulse implements Grad-CAM (Gradient-weighted Class Activation Mapping):
- Hooks: The system registers forward and backward hooks on the
layer4convolutional block of the ResNet-50 model. - Activation Maps: During inference, the system captures the gradients of the target class score flowing into the feature maps.
- Heatmaps: A weighted combination of these feature maps produces a heatmap, highlighting the textural patterns (like canopy density or leaf structure) that led to the classification.
Data Schema
Results are aggregated into a standardized dictionary format:
{
'greenery_percentage': float,
'green_pixels': int,
'total_pixels': int,
'mask_classifications': [
{
'mask_id': int,
'class': str,
'is_green': bool,
'pixels': int,
'bbox': list,
'segmentation': np.ndarray
},
...
]
}
Performance Considerations
- Memory Management: SAM is a memory-intensive model (~2.5GB VRAM). The Streamlit GUI uses
@st.cache_resourceto prevent redundant memory allocation. - Processing Time: Segmentation is the bottleneck. The system uses a centralized
config.yamlto allow users to adjust segmentation granularity to balance speed and precision.