Skip to main content

🌍 MUSS — Multimodal Unified Satellite System

MUSS is a dynamic dataset builder and modeling framework for multimodal remote sensing.

It allows users to:

  • 📡 Fetch satellite data (Sentinel-1, Sentinel-2, etc.)
  • 🧠 Build datasets on-the-fly
  • ⚡ Train deep learning models directly on generated data
  • 🧩 Combine multiple modalities (optical, SAR, indices)

🚀 Key Features

  • ⚡ Dynamic dataset generation (no pre-download required)
  • 🛰️ Multi-source support (Sentinel-1, Sentinel-2, etc.)
  • 🧠 Built-in preprocessing (tiling, reprojection, normalization)
  • 📦 Torch-compatible datasets (NonGeoDataset)
  • 🔄 Lazy / Cache / Prebuild modes
  • 📊 Index-based learning (NDVI, NDWI, etc.)
  • 🤖 Ready for deep learning (PyTorch + TorchGeo)

📁 Project Structure

.
├── README.md
├── pyproject.toml
├── requirements.txt
├── cache/                  # Generated tiles
├── dist/                   # Build artifacts
├── muss/
│   ├── builder/            # Dataset builder engine
│   ├── providers/          # STAC data providers
│   ├── datasets/           # Torch datasets
│   ├── processing/         # Preprocessing pipeline
│   ├── models/             # Deep learning models
│   ├── tiling/             # Spatial tiling logic
│   ├── storage/            # Cache management
│   ├── configs/            # YAML configs
│   └── test/
└── sample.png

⚙️ Installation

Install from source

pip install -e .

Build package

python -m build

Install from PyPI (when published)

pip install muss-dataset

🧩 Configuration

Example config (configs/config.yaml):

data:
  bbox: [lon_min, lat_min, lon_max, lat_max]
  resolution: 10
  time:
    start: "2022-01-01"
    end: "2022-12-31"

processing:
  temporal:
    method: median
  reprojection:
    target_crs: "EPSG:3857"

📡 Supported Providers

  • Sentinel-2 (optical)
  • Sentinel-1 (SAR)
  • (optional) land cover datasets (e.g., WorldCover)

🏗️ Dataset Usage

from muss.datasets import MussDataset
from torch.utils.data import DataLoader

dataset = MussDataset(
    config_file="configs/config.yaml",
    mode="lazy",  # lazy | cache-only | prebuild
)

loader = DataLoader(dataset, batch_size=8, num_workers=4)

for batch in loader:
    x = batch["image"]
    print(x.shape)

🧠 Training Example (Soft Labels)

for batch in loader:
    x = batch["image"]

    y_soft = build_soft_labels(x)
    y_pred = model(x)

    loss = soft_cross_entropy(y_pred, y_soft)

    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

📊 Indices-Based Learning

MUSS supports weak supervision via remote sensing indices:

  • NDVI → vegetation
  • NDWI → water
  • SAR → structure

Soft labels are computed as:

Y* = sigmoid((I - μ) / σ)

🧠 Models

Inside muss/models/:

  • Diffusion Residual Autoencoder (Diff-RAE)
  • ResNet-based encoders/decoders

⚡ Build Dataset CLI

muss-build --config configs/config.yaml

This will:

  • Query STAC API
  • Download data
  • Build tiles
  • Cache results

📦 Modes

Mode Description
lazy build on demand
cache-only use existing tiles only
prebuild build all tiles first

⚠️ Known Issues

  • STAC API rate limits (Planetary Computer)
  • CRS missing in some Sentinel-1 items (use sentinel-1-rtc)
  • Tile size mismatch (must enforce fixed size)

🛠️ Requirements

  • Python ≥ 3.10
  • PyTorch
  • TorchGeo
  • xarray
  • rasterio
  • stackstac
  • pystac-client

📸 Example Output

Sample


🤝 Contributing

Contributions are welcome:

  • new providers
  • new models
  • performance optimizations

📜 License

MIT License


🚀 Roadmap

  • More datasets (Dynamic World, Landsat)
  • Distributed tile building
  • Cloud-native training
  • HuggingFace integration

👤 Author

Developed as part of a research project DroMUPS. Dr. Yassine Gacha


Metadata

Release files for muss-dataset 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for muss-dataset 0.1.5
File Size Uploaded
muss_dataset-0.1.5.tar.gz 19.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for muss-dataset 0.1.5
File Interpreter ABI Platform
muss_dataset-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 47.0 kB

Release files / muss_dataset-0.1.5.tar.gz

Download URL muss_dataset-0.1.5.tar.gz
Size 19.3 kB
Tags Source
SHA-256 checksum
How to use checksums
d0d75128f3134e6a85d8047209c14085eb7632483ef4eb07cceaa23c62cc3734
BLAKE2b-256 checksum
How to use checksums
0270175d2bf1b4009c7871e91b40924bad8d676a6867129c8da976a1635a7ea2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / muss_dataset-0.1.5-py3-none-any.whl

Download URL muss_dataset-0.1.5-py3-none-any.whl
Size 27.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
98d1865140cf958ea3a688cbed108240674ff633ec2b2cd4c4ff1ef7b60ff0e5
BLAKE2b-256 checksum
How to use checksums
161bf0bc0c76e8488a5648e28e898c281b7c2dfc7a115432e26f5802affc4f9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page