Built to order

Satellite Change Detection using Siamese CNN

This project builds a Siamese convolutional neural network that takes a before/after pair of Sentinel-2 satellite images and outputs a pixel-level change map — the core of automated urban monitoring, deforestation tracking and disaster assessment. It trains on the OSCD benchmark (Onera Satellite Change Detection: 24 Sentinel-2 image pairs with pixel-wise urban-change labels) using a Siamese encoder with shared weights — one branch per time step — whose feature difference feeds a decoder that labels every pixel changed or unchanged. A demo app loads a before/after pair, runs the pipeline and

AI & Machine Learning scikit-learnNumPyPython 3.10patch training)13 bands10 m)Software
Satellite Change Detection using Siamese CNN — project thumbnail preview
More project photos (3)

The problem

Cities grow, forests shrink and disasters reshape landscapes — but manually comparing satellite images across years is slow, inconsistent and impossible at scale. Change detection automates it: given two co-registered images of the same area taken at different times, produce a map of exactly which pixels changed. The Siamese CNN is the canonical deep-learning design for this — two identical encoder branches with shared weights process the before and after images, and their feature difference is decoded into a binary change mask. This project implements that pipeline end to end on the OSCD benchmark of Sentinel-2 multispectral imagery: patch extraction and co-registration handling, a Siamese encoder-decoder trained with a change-class-weighted loss (changed pixels are rare), and a demo that renders predicted change maps over real imagery with per-pair changed-area statistics. Because the output is a visual map over real satellite photos, it demos powerfully — and the pixel-level evaluation keeps the report honest about the hard cases: seasonal vegetation shifts, shadows and sensor noise.

SYSTEM FLOW

5 components 5 connections

Live flow
Drag to explore
100%
storageOSCD Sentinel-2 pairs

24 before/after pairs with pixel-wise change labels.

Follow the working sequence

How it works

  1. OSCD Sentinel-2 pairs (13 bands, 10 m resolution) are normalized and cut into overlapping patches; pixel-wise change labels give the ground-truth masks; changed pixels are oversampled to fight class imbalance.
  2. A Siamese encoder (shared weights) embeds the before and after patches; the absolute difference of the two embeddings feeds a decoder that outputs a per-pixel change probability.
  3. Training uses a weighted binary cross-entropy + Dice loss for about 50 epochs; every epoch logs precision, recall and F1 on the change class for held-out pairs.
  4. At inference, the demo app tiles the input pair, runs the model per patch, stitches the probability map and thresholds it into the final change overlay.
  5. The overlay renders on the "after" image with the changed-area percentage, changed pixel count and a confidence legend.
  6. The threshold slider re-binarizes the cached probability map live, showing the precision/recall trade-off without re-running the model.

Tech stack:

  • Python 3.10, PyTorch (Siamese encoder-decoder, patch training loop)
  • Sentinel-2 multispectral imagery via the OSCD benchmark (24 pairs, 13 bands)
  • NumPy, rasterio-style patch handling, scikit-learn (metrics)
  • Matplotlib (training curves, change-ratio charts)
  • Single-file HTML/CSS/JS demo app (detector, dataset explorer, model views)
  • Trained weights exported from the included training run
Parameter Value
Model Siamese CNN: shared-weight encoder ×2, feature-difference fusion, change-mask decoder
Dataset OSCD (Onera Satellite Change Detection): 24 Sentinel-2 pairs, 13 bands, 10 m resolution
Labels Pixel-wise binary change masks (urban change)
Input Co-registered before/after multispectral pairs, tiled into patches
Output Per-pixel change probability map + thresholded overlay, changed-area stats
Training ~50 epochs, weighted BCE + Dice loss; design target change-class F1 ≈ 0.55–0.65
Evaluation Precision, recall, F1 on the change class — computed by the notebook on your build
Inference Patch-tiled forward pass; a 512×512 pair processes in seconds on CPU

Project features

  • [Change-map predictor] Load any before/after satellite pair and get a pixel-level change map rendered as an overlay on the imagery, with changed-area percentage and pixel counts.
  • [Siamese encoder with shared weights] Two identical CNN branches process the two time steps with tied weights; their absolute feature difference feeds the decoder — the architecture is inspectable in the demo's model view.
  • [OSCD training pipeline] Trains on the OSCD benchmark (24 Sentinel-2 image pairs, 13 spectral bands, pixel-wise urban-change labels) with patch-based sampling and a weighted loss for the rare change class.
  • [Dataset explorer view] Browse OSCD pair statistics — cities, dates, band counts, change-pixel ratios — with real before/after patch pairs inside the demo app.
  • [Training-curve view] Per-epoch change-class F1 and train/validation loss plots that the notebook reproduces during the build.
  • [Threshold control] Adjustable decision threshold on the change probability map with live overlay updates, demonstrating the precision/recall trade-off.
  • [Full evaluation logging] Precision, recall and F1 on the change class computed on held-out OSCD pairs — never pre-claimed.

What is included

  • Complete source code (patch extraction, Siamese model, training loop, tiled inference, demo app)
  • Jupyter training and evaluation notebook (buyer-run procedure: train, evaluate, inspect failure patches)
  • Project report PDF (background, OSCD analysis, Siamese architecture, methodology, evaluation, error analysis)
  • PPT presentation for final review
  • Viva Q&A preparation document (CNNs, Siamese networks, segmentation losses, class imbalance, remote sensing)
  • Setup guide (environment, OSCD download, training, running the demo)

Advantages

  • Siamese encoder with shared weights processes the before-and-after pair; the absolute feature difference feeds a decoder that labels every pixel changed or unchanged.
  • Trains on the OSCD benchmark — 24 Sentinel-2 image pairs with 13 spectral bands and pixel-wise urban-change labels — with patch-based sampling and a weighted loss for the rare change class.
  • Pixel-level change map rendered as an overlay on the imagery, with changed-area percentage and pixel counts.
  • Dataset explorer view to browse OSCD pair statistics — cities, dates, band counts, change-pixel ratios — with real before-and-after patch pairs.
  • Training-curve view with per-epoch change-class F1 and loss plots that the notebook reproduces during the build.
  • Adjustable decision threshold with live overlay updates demonstrating the precision and recall trade-off, plus full evaluation logging of precision, recall and F1 on held-out OSCD pairs — never pre-claimed.

Disadvantages

  • Trained on OSCD's urban-change labels — it detects built-up change, not deforestation, crop change or flood extent, which need their own labelled data.
  • Input pairs must be co-registered (aligned); misaligned images produce false change along every edge.
  • Seasonal vegetation change, cloud shadows and sensor noise are the classic false positives, shown openly in the error analysis.
  • Sentinel-2's 10 m resolution cannot resolve small structures — sub-pixel and single-building-edge changes are below the detection floor.
  • Training the full model needs a GPU; the notebook documents expected runtimes and a reduced-patch quick-run mode.

Limitations & prerequisites

  • The model is trained on OSCD's urban-change labels — it detects built-up change, not deforestation, crop change or flood extent, which need their own labeled data.
  • Input pairs must be co-registered (aligned); misaligned images produce false change along every edge, and the report documents this requirement.
  • Seasonal vegetation change, cloud shadows and sensor noise are the classic false positives; the error analysis shows them openly.
  • Sentinel-2's 10 m resolution cannot resolve small structures — sub-pixel and single-building-edge changes are below the detection floor.
  • Training the full model needs a GPU; the notebook documents expected runtimes and a reduced-patch quick-run mode.

Frequently Asked Questions

Which dataset is used?

OSCD (Onera Satellite Change Detection): 24 co-registered Sentinel-2 image pairs with 13 spectral bands at 10 m resolution and pixel-wise labels of urban change.

What is a Siamese CNN and why use it here?

Two identical encoder branches with shared (tied) weights process the before and after images; sharing forces both time steps into one comparable feature space, and their difference is what the decoder turns into the change map.

Is the accuracy guaranteed?

No. The design target is change-class F1 ≈ 0.55–0.65 on held-out OSCD pairs — change detection is a hard, imbalanced task — and final performance is measured by the training notebook during your build.

Can it detect deforestation or floods?

Not as trained — the labels cover urban change. The same architecture retrains for other change types, but that needs labeled data for those classes.

What are the main limitations?

Urban change only; pairs must be co-registered; seasonal/shadow false positives; 10 m resolution floor; GPU needed for full training.

Is this project suitable for a final-year project?

Yes — for Computer Science, AI/ML and Data Science programs. It demonstrates CNNs, Siamese architectures, segmentation-style losses, class-imbalance handling and remote-sensing data, all strong viva material. Suitable for B.E./B.Tech final-year projects in Computer Science, AI/ML and Data Science.

Components & software requirements
  • Python 3.10, PyTorch (Siamese encoder-decoder, patch training loop)
  • Sentinel-2 multispectral imagery via the OSCD benchmark (24 pairs, 13 bands)
  • NumPy, rasterio-style patch handling, scikit-learn (metrics)
  • Matplotlib (training curves, change-ratio charts)
  • Single-file HTML/CSS/JS demo app (detector, dataset explorer, model views)
  • Trained weights exported from the included training run
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download free synopsis (PDF)

Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.

Urban Change Detection for Multispectral Earth Observation Using Convolutional Neural Networks (Daudt et al., IGARSS 2018)

Get a quotation