πŸŽ‰ 75% of content is free forever β€” Unlock Premium from $10/mo β†’
CW
Search courses…
πŸ’Ό Servicesℹ️ Aboutβœ‰οΈ ContactView Pricing Plansfrom $10

Satellite Image Analysis and Land Use Classification

Computer VisionSatellite Image Analysis and Land Use Classification🟒 Free Lesson

Advertisement

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.

Need Expert Computer Vision Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement