NeerNetra-India-300M

NeerNetra (Sanskrit: neer = water, netra = eye) maps lake water in Indian cities from Sentinel-2 imagery, including water hidden under floating vegetation such as water hyacinth.

It is a fine-tuned version of Prithvi-EO-2.0-300M-TL-Sen1Floods11 by NASA and IBM. The architecture is unchanged. The weights were further trained on a new Indian lake dataset with a broader definition of water.

Before vs after on Indore Indore, a city held out from training. Top right: cyan = water both models find, green = water found only by NeerNetra. Bottom: the original model (left) vs NeerNetra (right) on a vegetation-covered lake.

Why

Off-the-shelf water models are trained mostly on open water and flood events. Many Indian urban lakes are partly or fully covered by water hyacinth and other aquatic plants, and these models classify that surface as land. On Indore, the original model found 1.0% of vegetation-covered lake water.

Results

Evaluated on Indore, a city not used in training, against labels hand-checked by the author in QGIS (12 chips of 512×512 px at 10 m, 706 ha of labelled water).

Metric MNDWI > 0 (index baseline) Original Prithvi Sen1Floods11 NeerNetra
Water IoU 66.7% 60.1% 72.9%
F1 80.0% 75.1% 84.4%
Recall 72.5% 60.5% 79.4%
Precision 89.4% 98.8% 89.9%
Vegetation-covered water recall n/a* 1.0% 28.4%

*Vegetation-covered water is defined as labelled water where MNDWI < 0, so the MNDWI baseline scores 0% on it by construction. Compare it on IoU, F1, precision and recall.

How to read this

  • NeerNetra has the best IoU, F1 and recall of the three.
  • Its gain over a simple water index is moderate (+6.2 IoU points). The main new capability is detecting vegetation-covered water.
  • It trades some precision for recall: the original model is very conservative (98.8% precision) but misses much of the water.
  • Hand-checking the labels changed NeerNetra's IoU by less than one point (72.2% on automatic labels, 72.9% on checked labels), so the result does not depend on label noise.

Intended use

  • Mapping lake and reservoir extent in Indian cities, including lakes with floating vegetation
  • Lake monitoring, urban water-body inventories, and checking map data against imagery

Not intended for: flood emergency response, legal or regulatory boundary decisions (for example encroachment claims), or water-quality assessment.

Training data

  • Imagery: Sentinel-2 L2A median composites (cloud-masked with SCL) from Microsoft Planetary Computer. Six bands at 10 m: B02, B03, B04, B8A, B11, B12.
  • Training cities: Bengaluru. Total: 8 training and 4 validation chips (512×512).
  • Seasons: post-monsoon 2024 for Central and North India; Nov 2024 - Mar 2025 for South and East India, to avoid monsoon clouds.
  • Labels: water = OpenStreetMap water polygons ∪ JRC Global Surface Water occurrence ≥ 25% ∪ OpenStreetMap wetlands where JRC has recorded water. Seasonal-only water and no-data pixels are ignored during training.

Training procedure

  • Initialised from the Prithvi-EO-2.0-300M-TL-Sen1Floods11 checkpoint: UperNet decoder, 2 classes.
  • AdamW (lr 5e-5, weight decay 0.05), cosine schedule, up to 30 epochs with early stopping on validation loss.
  • Batch size 8, random 224×224 crops, horizontal and vertical flips, 90° rotations, 16-bit mixed precision, a single T4 GPU.
  • Input normalisation: the same Sen1Floods11 band means and standard deviations as the original model, applied to reflectance (DN / 10000).

How to use

The checkpoint has the same format as the original model, so the original repository's inference.py works unchanged:

git clone https://huggingface.co/ibm-nasa-geospatial/Prithvi-EO-2.0-300M-TL-Sen1Floods11
cd Prithvi-EO-2.0-300M-TL-Sen1Floods11
pip install terratorch==0.99.8
python inference.py \
  --data_file your_sentinel2_l2a.tif \
  --config config.yaml \
  --checkpoint /path/to/NeerNetra-India-300M.pt \
  --input_indices 0 1 2 3 4 5 \
  --output_dir output

The input GeoTIFF must have 6 bands in the order B02, B03, B04, B8A, B11, B12, as L2A reflectance × 10000 with the +1000 offset (processing baseline ≥ 04.00) removed. In the output mask, water = 255.

Limitations

  • Vegetation-covered water recall is 28.4%. Most water under dense vegetation is still missed.
  • Evaluated on one held-out city and one season. Performance in other regions, in the monsoon, or on other dates is untested.
  • Training labels come from OpenStreetMap (quality varies by city) and JRC (Landsat-based, 30 m, up to 2020), so boundaries are coarse and post-2020 changes may be mislabelled.
  • Some precision is lost compared with the original model; dark shadows and lake margins can be over-predicted.
  • The test labels were corrected by one annotator who had seen model outputs earlier. Corrections were made against the imagery only, and NeerNetra's IoU changed by less than one point compared with the automatic labels.

Attribution and licences

  • Base model: Prithvi-EO-2.0 by NASA and IBM, Apache 2.0. Modifications: further fine-tuning on the dataset described above.
  • Contains modified Copernicus Sentinel-2 data (2024-2025), accessed through Microsoft Planetary Computer.
  • Labels derived from © OpenStreetMap contributors, available under the Open Database License (ODbL).
  • JRC Global Surface Water: Pekel, J.-F., Cottam, A., Gorelick, N., Belward, A. S. (2016). High-resolution mapping of global surface water and its long-term changes. Nature 540, 418-422.
  • This is an independent project. It is not affiliated with or endorsed by NASA or IBM.

Citation

If you use NeerNetra, please also cite Prithvi-EO-2.0:

@article{Prithvi-EO-V2-preprint,
  title   = {Prithvi-EO-2.0: A Versatile Multi-Temporal Foundation Model for Earth Observation Applications},
  author  = {Szwarcman, Daniela and others},
  journal = {arXiv preprint arXiv:2412.02732},
  year    = {2024}
}

Author: NITIN KUMAR PANDE

Downloads last month
24
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for nitinpande99/NeerNetra-India-300M

Paper for nitinpande99/NeerNetra-India-300M