Dual Surface-Subsurface Adapter (DSSA)
Official pre-trained model weights for Dual Surface-Subsurface Adapter (DSSA) for multimodal land-cover classification using ground-level RGB photography and topsoil physicochemical properties.
- GitHub Codebase: https://github.com/siam4201/DSSA-LUCAS
- Hugging Face Model Hub: https://huggingface.co/Papahaven/DSSA-LUCAS
1. Models Included
| Model Variant | Parameters | Latency (B=1) | Throughput (B=64) | Peak VRAM | Test Accuracy | Macro F1 | Cohen's Kappa |
|---|---|---|---|---|---|---|---|
| DSSA-Lite (Edge) | 3.99M | 9.85 ms | 3,724.4 img/s | 698.0 MB | 80.63% | 0.7487 | 0.7553 |
| DSSA-Standard (Proposed) | 8.42M | 13.87 ms | 3,344.9 img/s | 893.7 MB | 86.20% | 0.8287 | 0.8286 |
best_dssa_full_standard.pth(32.5 MB):- Full proposed architecture (8.42M parameters).
- Integrates Spatial Attention Decomposition, Physics-Guided Modality Relevance (PGMR) routing, and Adaptive Zero-Soil canopy gating.
- Achieves 86.20% Accuracy and 0.8287 Macro F1 on the frozen LUCAS benchmark (N = 2,917).
dssa_lite_best_seed42.pth(15.5 MB):- Edge-optimized architecture (3.99M parameters, 52.6% parameter reduction).
- Truncates EfficientNet-B0 at Stage 5 and discards the 1,280-channel expansion head, keeping adapter overhead down to just 528k parameters.
- Optimized for real-time edge surveying (<10 ms latency, 698 MB VRAM).
2. Hardware Environment & Training Compute
All models were trained and profiled under the following hardware environment:
- GPU: NVIDIA GeForce RTX 5070 Ti (16 GB GDDR7 VRAM, Blackwell SMs)
- CPU: x86-64 Host Processor
- Software: PyTorch 2.6.0, CUDA 12.8, cuDNN 9.x, FP32 Single Precision
Training Durations (Approximate)
- DSSA-Standard:
- ~45โ55 seconds per epoch (batch size = 64, 13,608 training samples).
- Total Training Time: ~20โ25 minutes (converged in 25โ28 epochs with early stopping patience = 15).
- DSSA-Lite:
- ~25โ35 seconds per epoch.
- Total Training Time: ~10โ12 minutes (converged in 20โ24 epochs).
3. Quick Inference Examples
A. Run Inference with Proposed DSSA-Standard (8.42M)
import torch
from huggingface_hub import hf_hub_download
from models.dssa_model import DSSAModel
# 1. Download checkpoint
ckpt_path = hf_hub_download(repo_id="Papahaven/DSSA-LUCAS", filename="best_dssa_full_standard.pth")
# 2. Instantiate DSSA-Standard
feature_cols = ['pH_H2O', 'pH_CaCl2', 'OC', 'CaCO3', 'N', 'P', 'K', 'EC']
visible_cols = ['pH_H2O', 'pH_CaCl2', 'OC', 'CaCO3', 'EC']
subsurface_cols = ['N', 'P', 'K', 'EC']
model = DSSAModel(
feature_cols=feature_cols,
visible_cols=visible_cols,
subsurface_cols=subsurface_cols,
num_classes=6,
shared_dim=256,
num_heads=4,
use_spatial_attention=True,
use_physics_guidance=True,
use_soil_gating=True,
pretrained=False,
)
state_dict = torch.load(ckpt_path, map_location="cpu", weights_only=True)
model.load_state_dict(state_dict)
model.eval()
# 3. Predict: (B, 3, 224, 224) RGB image and (B, 8) normalized soil vector
img = torch.randn(1, 3, 224, 224)
soil = torch.randn(1, 8)
with torch.no_grad():
logits = model(img, soil)
pred = logits.argmax(dim=-1).item()
print("DSSA-Standard Predicted Class:", pred)
B. Run Inference with Edge-Optimized DSSA-Lite (3.99M)
import torch
from huggingface_hub import hf_hub_download
from models.dssa_lite import DSSALiteModel
# 1. Download checkpoint
ckpt_path = hf_hub_download(repo_id="Papahaven/DSSA-LUCAS", filename="dssa_lite_best_seed42.pth")
# 2. Instantiate DSSA-Lite
model_lite = DSSALiteModel(
num_classes=6,
d=128,
num_heads=4,
pretrained=False,
dropout=0.15,
)
state_dict = torch.load(ckpt_path, map_location="cpu", weights_only=True)
model_lite.load_state_dict(state_dict)
model_lite.eval()
# 3. Predict: (B, 3, 224, 224) RGB image and (B, 8) normalized soil vector
img = torch.randn(1, 3, 224, 224)
soil = torch.randn(1, 8)
with torch.no_grad():
logits = model_lite(img, soil)
pred = logits.argmax(dim=-1).item()
print("DSSA-Lite Predicted Class:", pred)
4. Citation
@article{dssa2026,
title={Dual Surface-Subsurface Adapter for Ground-Level Land Cover Classification with Soil Physicochemical Context},
author={Siam, Sarker and Mim, Farhana Nur},
journal={IEEE Transactions / Conference Submission},
year={2026},
url={https://github.com/siam4201/DSSA-LUCAS}
}