FusionLightSR Multimodal Data Extraction Pipeline: VIIRS NTL, WorldPop & ESA WorldCover Retrieval Scripts
Description
For Bangalore, three complementary geospatial datasets were extracted using Google Earth Engine to support multimodal super‑resolution. First, monthly nighttime light (NTL) radiance was obtained from the VIIRS DNB collection, filtered for the year 2020 and clipped to a polygon defining the Bangalore metropolitan area. The median composite of all monthly images was converted to 32‑bit float to preserve radiometric precision, then exported at multiple spatial resolutions (30 m through 500 m) for analysis of scale effects. Second, population density data from the WorldPop 100 m product were averaged over the same time period and region, yielding a continuous surface of estimated inhabitants per grid cell. This layer was similarly exported at the set of target scales, providing an auxiliary modality that reflects human settlement patterns. Third, land‑cover information was drawn from the ESA WorldCover 2020 map, clipped to Bangalore, and exported at 10 m resolution; its categorical classes supply contextual information on urban, vegetation, and other land‑use types. To apply the identical workflow in Delhi, one only need to redefine the study area polygon. In place of the Bangalore coordinates, the following polygon may be used to clip all three datasets for the Delhi region: var delhiPolygon = ee.Geometry.Polygon([ [76.7, 28.2], [76.7, 29.0], [77.9, 29.0], [77.9, 28.2], [76.7, 28.2] ]); With this single change, the VIIRS NTL, WorldPop population, and ESA WorldCover layers will be extracted and exported for Delhi in exactly the same manner as for Bangalore.
Files
Steps to reproduce
To ensure full reproducibility, all raw geospatial inputs were obtained via scripted workflows in Google Earth Engine (GEE). First, the study regions (Bangalore and, by analogy, Delhi) were defined as simple GeoJSON‑style polygons in the Earth Engine Code Editor. Using the VIIRS DNB monthly composite collection (“NOAA/VIIRS/DNB/MONTHLY_V1/VCMSLCFG”), images were filtered by date and clipped to the polygon. A median reducer produced a single representative NTL image, which was cast to 32‑bit float and exported to Google Drive at multiple scales (30 m–500 m) via automated JavaScript loops. The same pattern was repeated for WorldPop 100 m population rasters (mean over 2020) and for the ESA WorldCover 2020 land‑cover map (10 m resolution), simply by swapping the collection identifier and adjusting visualization parameters. Once downloaded, all TIFFs were ingested into a Python preprocessing pipeline running in Google Colab on a T4 GPU. Each image was resized to 256×256 pixels using PIL’s resize routine, then normalized to [0,1] via min–max scaling. These normalized arrays were stacked into three‑channel tensors (NTL, population, land cover) to form the multimodal inputs, while the original high‑resolution NTL served as the single‑channel ground truth. Patches of 256×256 were extracted at random positions to maximize spatial coverage; data augmentations (flips, rotations, brightness/contrast/gamma adjustments, Gaussian noise) were applied uniformly across all channels. Low‑resolution inputs were simulated by bilinear downsampling by a factor of four. Model training and evaluation were orchestrated in PyTorch within the same Colab environment. The FusionLightSR architecture was instantiated, transferred to GPU, and trained for 200 epochs using the Adam optimizer (learning rate 1×10⁻⁴) with L1 loss. Checkpointing and TensorBoard logging captured convergence behavior. Validation used the saved weights in evaluation mode to generate super‑resolved outputs, which were then compared to held‑out high‑resolution patches via PSNR, SSIM, UIQI, CC and PIQE. All code—GEE extraction scripts and Python preprocessing/training notebooks—is provided in the Mendeley Data repository to allow readers to reproduce every step of the data‑gathering and modeling workflow.
Institutions
- VIT University