SAR-to-EO Image Translation β€” Pix2Pix Generator

U-Net generator trained on the SEN1-2 dataset for translating Sentinel-1 SAR (VV) patches into Sentinel-2 EO (RGB) imagery. Part of a GalaxEye Satellite AI Research Intern assessment.

Model Description

Property Value
Architecture U-Net (8 encoder levels, 7 decoder + final)
Parameters ~55M
Input 1-channel SAR VV, 256Γ—256, normalized to [-1, 1]
Output 3-channel RGB, 256Γ—256, Tanh activation in [-1, 1]
Training data SEN1-2 (16,000 paired patches, 4 terrain classes)
Training duration 200 epochs
Loss L1 (Ξ»=100) + adversarial (BCE)

Usage

import torch
from models import UNetGenerator

G = UNetGenerator(in_channels=1, out_channels=3)
state = torch.load("gen_best.pth", map_location="cuda", weights_only=True)
G.load_state_dict(state)
G.eval()

# SAR tensor: [1, 1, 256, 256] normalized to [-1, 1]
with torch.no_grad():
    eo = G(sar_tensor)  # [1, 3, 256, 256] in [-1, 1]

Performance

Metric Validation Test
LPIPS ↓ 0.3824 0.3848
FID ↓ 94.83 96.33
SSIM ↑ 0.2768 0.2740
PSNR ↑ (dB) 17.76 17.59

Ablation

Compared against an L1-only baseline (same U-Net, no discriminator). The adversarial loss improves LPIPS by βˆ’34% and FID by βˆ’42%, at the cost of pixel-level accuracy (SSIM βˆ’35%, PSNR βˆ’13%).

Files

  • gen_best.pth β€” Generator weights (best by validation L1, epoch 180)

References

  • Isola et al., "Image-to-Image Translation with Conditional Adversarial Networks" (Pix2Pix), CVPR 2017
  • Schmitt et al., "SEN1-2: A Dataset of Sentinel-1 and Sentinel-2 Image Pairs", 2018
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Dataset used to train NeuralNomad0101/sar2eo-pix2pix