← Projects

Mamba vs. Transformers for satellite super-resolution

My undergraduate thesis at St Andrews. I implemented SwinIR and MambaIR from scratch in PyTorch and Triton and trained them on a cross-sensor dataset I built myself (Sentinel-2 to NAIP), reaching 20.5 dB PSNR and 0.484 SSIM. I hadn't worked with satellite imagery, state-space models or Triton before this project.

Role
Solo, supervised by Dr Oggie Arandelovic
Timeline
2024 — 2025
Stack
PyTorch, Triton, SwinIR, MambaIR, Sentinel-2, NAIP
Status
Thesis and repo below

The problem

High-resolution satellite imagery is expensive, while Sentinel-2 is free at 10 m resolution. I wanted to know whether generative models could bridge that gap for non-commercial users, and whether the compute cost of a vision transformer was really necessary or a state-space model could do the same work.

What I built

A geospatial pipeline with cross-sensor alignment, tiling and augmentation, both architectures implemented from scratch with no pretrained weights, and a full evaluation suite with visual comparisons and an ablation study.

Super-resolution sample outputs
Sample outputs · click to open full size
Low-resolution input and super-resolved output
Low-res input vs. output · click to open full size

Results

20.5 dB PSNR and 0.484 SSIM on the held-out set. The ablation showed the state-space model's efficiency advantage on restoration at comparable quality, which was the answer I was hoping to find.

What I'd do differently

This was the project where I learned that I can pick up a field from zero and ship something measurable in it, and that's been the pattern ever since. The metric is the weak point, though. PSNR rewards blur. I'd add a downstream task like detection on the upscaled tiles as the real test.