--- license: apache-2.0 tags: - earth-observation - remote-sensing - forest-monitoring - climate - sentinel-2 - vision-transformer - multi-modal - temporal - soil-prediction - carbon datasets: - sentinel-2 - global-forest-change - openlandmap language: - en pipeline_tag: image-segmentation library_name: pytorch --- # Naturecode Earth **A Multi-Modal Temporal Vision Transformer for Forest Monitoring and Earth Observation** Naturecode Earth is a foundation model designed for comprehensive forest monitoring, combining satellite imagery analysis with soil property prediction. Built on a hierarchical vision transformer architecture, it processes multi-temporal Sentinel-2 imagery to provide actionable insights for climate and conservation applications. ## Model Description Naturecode Earth is a **10.9M parameter** model (nano variant) that processes: - **Sentinel-2 imagery**: 6 spectral bands (B2, B3, B4, B8, B11, B12) across 4 quarterly timestamps - **Location encoding**: Latitude/longitude embeddings for geographic context - **Temporal encoding**: Day-of-year embeddings for seasonal awareness ### Architecture ``` Input: (B, T, C, H, W) = (batch, 4 timestamps, 6 bands, 64, 64) + timestamps: (B, T, 2) [year, day_of_year] + locations: (B, 2) [lat, lon] Encoder: - Patch embedding (8x8 patches) - Factorized temporal + spatial attention - 4 transformer layers Decoder Heads: - Segmentation: Forest cover classification (3 classes) - Biomass: Above-ground biomass estimation (Mg/ha) - Change Detection: Deforestation/degradation mapping - Soil Properties: SOC, clay, sand, bulk density, water content ``` ## Intended Uses ### Primary Use Cases - **Forest Cover Mapping**: Classify land into low/medium/high forest cover - **Deforestation Monitoring**: Detect forest loss and degradation - **Carbon Stock Estimation**: Estimate above-ground biomass - **Soil Carbon Prediction**: Predict soil organic carbon content ### Supported Regions Trained on data from major tropical forest regions: - Amazon Basin (West, Central, East) - Congo Basin - Borneo ## Training Data | Dataset | Description | Resolution | |---------|-------------|------------| | Sentinel-2 SR Harmonized | Surface reflectance imagery | 10m | | Global Forest Change (Hansen) | Tree cover, loss, gain | 30m | | OpenLandMap | Soil properties (SOC, clay, sand, bulk density) | 250m | **Training Configuration:** - 300 tiles (64x64 pixels at 10m = 640m x 640m) - 4 quarterly composites per tile (2024) - 100 epochs on NVIDIA A100 ## How to Use ### Installation ```bash pip install torch rasterio huggingface_hub ``` ### Inference ```python import torch from huggingface_hub import hf_hub_download # Download model model_path = hf_hub_download( repo_id="naturecodeproject/naturecode-earth", filename="model.pt" ) # Load model checkpoint = torch.load(model_path, map_location="cpu") config = checkpoint["config"] # Your ForestFM model class here from forestfm.model import ForestFM from forestfm.config import ForestFMConfig model_config = ForestFMConfig(**config) model = ForestFM(model_config) model.load_state_dict(checkpoint["model_state_dict"]) model.eval() # Inference # images: (1, 4, 6, 64, 64) - 4 timestamps, 6 bands, 64x64 # timestamps: (1, 4, 2) - year and day_of_year # locations: (1, 2) - lat, lon with torch.no_grad(): outputs = model(images, timestamps, locations) # Forest segmentation seg_probs = outputs["segmentation"].softmax(dim=1) # Biomass estimation biomass = outputs["biomass"]["mean"] # Soil properties soc = outputs["soil"]["soc"] clay = outputs["soil"]["clay"] ``` ## Model Outputs | Output | Shape | Description | |--------|-------|-------------| | `segmentation` | (B, 3, H, W) | Forest cover logits (low/medium/high) | | `biomass.mean` | (B,) | Above-ground biomass (Mg/ha) | | `biomass.aleatoric_std` | (B,) | Uncertainty estimate | | `change.change_logits` | (B, 2, H, W) | Change detection logits | | `soil.soc` | (B,) | Soil organic carbon (g/kg) | | `soil.clay` | (B,) | Clay content (%) | | `soil.sand` | (B,) | Sand content (%) | | `soil.bulk_density` | (B,) | Bulk density (kg/m3) | | `soil.water_content` | (B,) | Water content at 33kPa (%) | ## Performance ### Segmentation Accuracy | Metric | Value | |--------|-------| | Overall Accuracy | 73.7% (5 epochs, nano) | | Full Training | 94.4% (100 epochs, A100) | ### Soil Prediction (MAE) | Property | MAE | |----------|-----| | SOC | 0.074 (normalized) | ## Limitations - **Resolution**: Optimized for 64x64 pixel tiles (640m x 640m at 10m resolution) - **Temporal**: Best performance with 4 quarterly composites - **Geographic**: Trained primarily on tropical forests; may need fine-tuning for temperate/boreal forests - **Cloud Cover**: Relies on cloud-free composites from Google Earth Engine ## Environmental Impact This model was trained with environmental sustainability in mind: - Uses spot/preemptible GPU instances to reduce costs and energy - Efficient nano architecture (10.9M params) suitable for edge deployment - Supports forest conservation and climate monitoring applications ## Citation ```bibtex @software{naturecode_earth_2024, title={Naturecode Earth: Multi-Modal Temporal Vision Transformer for Forest Monitoring}, author={Naturecode}, year={2024}, url={https://huggingface.co/naturecodeproject/naturecode-earth} } ``` ## License Apache 2.0 ## Acknowledgments - Sentinel-2 data from ESA/Copernicus - Global Forest Change from University of Maryland - Soil data from OpenLandMap/ISRIC - Google Earth Engine for data processing