Satellite Image Analysis and Land Use Classification
Module: Computer Vision | Difficulty: Premium
Spectral Indices
Change Detection
Pan-Sharpening
where is multispectral, is panchromatic.
| Model | NWPU-RESISC45 | AID | MillionAID | Task | |-------|--------------|-----|------------|------| | ResNet-50 | 94.7% | 96.4% | 80.2% | Classification | | SatMAE | 96.1% | 97.3% | 83.5% | Self-supervised | | RingMo | 96.8% | 97.8% | 85.1% | Foundation | | GFM | 97.2% | 98.1% | 86.3% | Foundation |
import torch
import torch.nn as nn
import torch.nn.functional as F
class NDVIComputer:
def __init__(self, nir_band=7, red_band=4):
self.nir_band = nir_band
self.red_band = red_band
def compute(self, image):
nir = image[:, self.nir_band].float()
red = image[:, self.red_band].float()
ndvi = (nir - red) / (nir + red + 1e-8)
return ndvi
class ChangeDetectionNet(nn.Module):
def __init__(self, in_channels=6, num_classes=2):
super().__init__()
self.encoder1 = self._make_encoder(in_channels // 2, 64)
self.encoder2 = self._make_encoder(in_channels // 2, 64)
self.diff_conv = nn.Sequential(
nn.Conv2d(128, 64, 3, padding=1, bias=False),
nn.BatchNorm2d(64), nn.ReLU(inplace=True),
nn.Conv2d(64, num_classes, 1),
)
def _make_encoder(self, in_ch, out_ch):
return nn.Sequential(
nn.Conv2d(in_ch, 32, 3, padding=1, bias=False),
nn.BatchNorm2d(32), nn.ReLU(inplace=True),
nn.Conv2d(32, out_ch, 3, padding=1, bias=False),
nn.BatchNorm2d(out_ch), nn.ReLU(inplace=True),
nn.MaxPool2d(2),
nn.Conv2d(out_ch, out_ch * 2, 3, padding=1, bias=False),
nn.BatchNorm2d(out_ch * 2), nn.ReLU(inplace=True),
nn.MaxPool2d(2),
)
def forward(self, t1, t2):
f1 = self.encoder1(t1)
f2 = self.encoder2(t2)
diff = torch.cat([f1, f2], dim=1)
return self.diff_conv(diff)
Research Insight: Remote sensing AI is shifting from task-specific models to foundation models (RingMo, GFM) pretrained on large-scale satellite imagery. These models learn universal representations that transfer across tasks (classification, detection, segmentation, change detection). The key challenge is the extreme scale of remote sensing data: a single Sentinel-2 tile covers 100km x 100km at 10m resolution. Efficient processing at scale requires hierarchical models and spatial pyramid approaches that handle multiple resolutions simultaneously.