Built to order

Oil Spill Detection from Satellite SAR Images using CNN

This project trains a convolutional neural network to find oil spills in satellite synthetic-aperture-radar imagery: oil damps the sea's capillary waves and shows up as dark patches in SAR, but so do harmless look-alikes like low-wind zones — the network learns to tell them apart. It is built on the public MKLab benchmark (1,112 Sentinel-1 scenes, five annotated classes), ships with a full training notebook, per-class IoU evaluation, and a web demo that runs the detector over real SAR scenes. Suitable for B.E./B.Tech final-year projects in Computer Science, IT and AI & Machine Learning.

AI & Machine Learning Jupyter notebookGitNumPy · MatplotlibHTML5 · JavaScript demoPython 3 · PyTorchU-Net segmentationMKLab SAR benchmarkSentinel-1 VV imagerySoftware
Oil Spill Detection from Satellite SAR Images using CNN — project thumbnail preview
More project photos (2)

The problem

When oil hits the sea surface it damps the tiny wind-driven capillary waves that radar reflects off, so spills appear as dark patches in synthetic-aperture-radar images — visible day and night, through cloud cover. The catch is that low-wind zones, biogenic films and other look-alikes produce the same dark signature, and telling them apart is the whole problem. This project takes the modern approach: a U-Net style encoder-decoder CNN trained for five-class semantic segmentation on the MKLab oil-spill benchmark, learning shape, texture and context instead of relying on hand-crafted dark-spot features. The training notebook covers SNAP-style preprocessing, augmentation, weighted loss functions for the class imbalance, and honest per-class IoU reporting. A web demo lets you pick real SAR scenes — including the TerraSAR-X Montara and Gulf of Mexico spill imagery — and watch the detector classify each scene with per-class probabilities and a segmentation overlay.

SYSTEM FLOW

5 components 4 connections

Live flow
Drag to explore
100%
sensorSentinel-1 SAR

VV-polarization SAR scenes from the MKLab benchmark.

Follow the working sequence

How it works

  1. Sentinel-1 VV-polarization SAR scenes are preprocessed (region cropping, radiometric calibration, speckle filtering, dB-to-luminance conversion) following the benchmark's published pipeline.
  2. The 1,112 annotated scenes (1,002 train / 110 test) provide five-class masks: sea surface, oil spill, look-alike, ship and land.
  3. A U-Net encoder-decoder is trained with weighted cross-entropy (plus focal-loss experiments) to handle the severe class imbalance — spill pixels are rare.
  4. Augmentation (rotation, flipping) expands the effective training set, since SAR scenes are robust to affine transforms.
  5. The test split is evaluated once: per-class IoU, with the oil-spill class as the headline metric, plus qualitative overlay inspection.
  6. In the web demo, a selected scene passes through the saved model; the app shows the five class probabilities, the verdict, and the toggleable segmentation overlay.

Tech stack:

  • Python 3, PyTorch (or TensorFlow/Keras — buyer's choice)
  • NumPy, Matplotlib, scikit-learn (metrics)
  • Jupyter Notebook (training & evaluation)
  • HTML5 + JavaScript (detection-studio web demo)
  • SNAP-style SAR preprocessing chain
  • MKLab oil-spill SAR benchmark
  • Git

Dataset & model details

  • Dataset: MKLab oil-spill SAR benchmark (Krestenitis et al., "Oil Spill Identification from Satellite Images Using Deep Neural Networks", Remote Sensing 11(15), 2019) — 1,112 Sentinel-1 C-band SAR scenes (VV polarization) at 1250×650 px, fixed 1002/110 train/test split. Events span 28 Sep 2015 – 31 Oct 2017, confirmed by EMSA CleanSeaNet. RGB visualisation masks plus single-channel integer masks (0–4) are provided.
  • Task: 5-class semantic segmentation; input = 1250×650×1 SAR scene, output = per-pixel class map over {sea surface, oil spill, look-alike, ship, land}.
  • Model: U-Net encoder-decoder (contracting path + expansive path with skip connections); weighted cross-entropy loss with focal-loss variant; rotation/flip augmentation.
  • Metrics: Per-class IoU; reported literature baselines are ≈0.54 IoU on the oil-spill class for U-Net/DeepLabv3+ (Krestenitis et al., 2019). The built-to-order training run targets comparable performance — stated as a design target, with the report documenting the actual achieved figures after training. No accuracy is claimed as measured until the training run is executed for the order.
Parameter Value
Input 1250 × 650 single-channel SAR, VV polarization
Classes 5 (sea surface, oil spill, look-alike, ship, land)
Dataset 1,112 scenes; 1002 train / 110 test (fixed split)
Model U-Net encoder-decoder (design)
Oil-spill IoU Approximately 0.54 (design target, not a measured claim)
Training time Several hours on a GPU (expected; CPU training not recommended)
Inference Approximately 1.2 s per scene on GPU (expected)
Demo Single-file web app; SAR scenes embedded

Project features

  • [U-Net segmentation model] Encoder-decoder CNN with skip connections for five-class pixel-wise segmentation — sea surface, oil spill, look-alike, ship and land.
  • [Real SAR demo scenes] The web demo runs over genuine TerraSAR-X radar imagery (Montara platform spill, Gulf of Mexico oil-polluted area, clean open sea) with per-class probability bars.
  • [Segmentation overlay] Toggleable mask overlay on each scene showing where the model places the spill boundary.
  • [Full training notebook] Data loading, augmentation, model definition, weighted cross-entropy and focal loss, training loop and evaluation in one reproducible notebook.
  • [Per-class IoU reporting] Intersection-over-union for every class, with explicit analysis of the oil-spill vs look-alike confusion that defines this task.
  • [Look-alike analysis] Dedicated evaluation of the hardest distinction in the field — dark patches that are not oil — documented for the viva.
  • [Exported trained model] Saved weights plus the preprocessing pipeline, so the demo runs the real network without retraining.

What is included

  • Complete training & evaluation Jupyter notebook
  • Trained segmentation model weights with preprocessing code
  • Detection-studio web demo with real SAR scenes, probability bars and overlay toggle
  • Per-class IoU report and look-alike confusion analysis
  • Project report PDF (SAR principles, dataset, architecture rationale, methodology, results)
  • PPT presentation for final review
  • Viva Q&A preparation document (SAR backscatter, Doppler-free imaging, U-Net, IoU, class imbalance, look-alikes)

Limitations & prerequisites

  • The model segments what the training data teaches: rare spill morphologies (long thin slicks) are the known weak point in the literature and in this build.
  • SAR detection needs wind in a working band — near-zero wind or storm cells make slicks undetectable regardless of the model; this is physics, not a model flaw.
  • 0.54 IoU is a design target anchored to published baselines — the report documents the actual achieved figure after the training run.
  • Training needs a GPU; a CPU-only laptop will take impractically long, stated plainly before purchase.
  • The demo's inference is simulated in-browser to keep it a single file; the shipped notebook trains and runs the real network.
  • This is an educational/environmental-monitoring build, not a certified operational spill-response system.

Frequently Asked Questions

Which dataset is used and why?

The MKLab benchmark (Krestenitis et al., Remote Sensing 2019) — 1,112 Sentinel-1 SAR scenes with five-class annotations and a fixed train/test split. It is the standard public benchmark for this task, with events verified by the European Maritime Safety Agency.

Why is oil-spill detection hard?

Oil and harmless look-alikes (low-wind zones, biogenic films) both appear as dark patches in SAR. Brightness alone cannot separate them — the network must learn shape, texture and context, which is exactly what the segmentation approach trains for.

What does the model output?

A per-pixel map over five classes plus scene-level class probabilities. The demo shows the probability bars, the verdict, and a toggleable overlay of the predicted spill region on the SAR scene.

How is it evaluated?

Per-class Intersection-over-Union on the fixed 110-scene test split, with the oil-spill class as the headline number. Published U-Net baselines sit near 0.54 IoU; the report records what the actual training run achieves.

Can it run on a normal laptop?

Inference yes — the demo runs in a browser. Training needs a GPU; CPU training is impractically slow and the report says so upfront.

Is this project suitable for a final-year project?

Yes — for Computer Science, IT and AI/ML programs. It combines remote-sensing domain knowledge, a real benchmark dataset, segmentation architecture design, disciplined evaluation and a working demo on real satellite imagery. Suitable for B.E./B.Tech final-year projects in Computer Science, IT and AI & Machine Learning.

Components & software requirements
  • Python 3, PyTorch (or TensorFlow/Keras — buyer's choice)
  • NumPy, Matplotlib, scikit-learn (metrics)
  • Jupyter Notebook (training & evaluation)
  • HTML5 + JavaScript (detection-studio web demo)
  • SNAP-style SAR preprocessing chain
  • MKLab oil-spill SAR benchmark
  • Git

Dataset & model details

  • Dataset: MKLab oil-spill SAR benchmark (Krestenitis et al., "Oil Spill Identification from Satellite Images Using Deep Neural Networks", Remote Sensing 11(15), 2019) — 1,112 Sentinel-1 C-band SAR scenes (VV polarization) at 1250×650 px, fixed 1002/110 train/test split. Events span 28 Sep 2015 – 31 Oct 2017, confirmed by EMSA CleanSeaNet. RGB visualisation masks plus single-channel integer masks (0–4) are provided.
  • Task: 5-class semantic segmentation; input = 1250×650×1 SAR scene, output = per-pixel class map over {sea surface, oil spill, look-alike, ship, land}.
  • Model: U-Net encoder-decoder (contracting path + expansive path with skip connections); weighted cross-entropy loss with focal-loss variant; rotation/flip augmentation.
  • Metrics: Per-class IoU; reported literature baselines are ≈0.54 IoU on the oil-spill class for U-Net/DeepLabv3+ (Krestenitis et al., 2019). The built-to-order training run targets comparable performance — stated as a design target, with the report documenting the actual achieved figures after training. No accuracy is claimed as measured until the training run is executed for the order.
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 email — the synopsis PDF downloads immediately. We may send occasional project updates; no spam, unsubscribe anytime.

Related guides

All guides

Image Segmentation: U-Net and Mask R-CNN

When projects need pixel-level answers, segmentation delivers. This guide explains semantic vs instance vs panoptic segmentation, U-Net's encoder-decoder with skip connections, Mask R-CNN's parallel mask head, Dice and IoU evaluation, paired augmentation, and how to choose the right architecture for your data and question.

Read guide

CNN Transfer Learning for Students: Fine-Tuning ResNet and MobileNet in PyTorch

Train image classifiers on small datasets with transfer learning: load an ImageNet-pretrained backbone, freeze its early layers, replace the classification head for your classes, train the head first, then unfreeze late layers with a small learning rate for fine-tuning. This guide covers backbone choice (ResNet vs MobileNet vs EfficientNet), the exact PyTorch workflow, freezing strategy, data needs per class, and the errors that waste the most time.

Read guide

YOLO Object Detection for Final-Year Projects: Datasets, Colab Training, mAP and Deployment

How do you build a YOLO object detection project for your final year? Start with a labelled dataset in YOLO format (300-500+ images per class with real variation), train a small pretrained model on Google Colab with early stopping, evaluate with mAP@0.5 and mAP@0.5:0.95 on a held-out test set, and deploy the exported model on your demo hardware. This guide covers the full pipeline - version choice, labelling discipline, Colab training, honest evaluation, common errors, and deployment - with the decision tables and checklists your report needs.

Read guide
Get a quotation