Generate 5m super-resolved images from Sentinel-2 L2A (Theia) products (bands B02, B03, B04, B05, B06, B07, B08, B8A, B11 and B12) using Single Image Super-Resolution model trained in the frame of the [[https://www.evo-land.eu/][EVOLAND Horizon Europe]].
The network has been trained in the course of the project using the [[https://doi.org/10.5281/zenodo.6514159][Sen2Venµs dataset]], complimented with B11 and B12 patches.
Michel, J.; Vinasco-Salinas, J.; Inglada, J.; Hagolle, O. SEN2VENµS, a Dataset for the Training of Sentinel-2 Super-Resolution Algorithms. Data 2022, 7, 96. https://doi.org/10.3390/data7070096
** CPU inference
Installing the tool should then be straightforward with pip :
$ pip install git+https://framagit.org/jmichel-otb/sentinel2_superresolution.git
** Additional steps for GPU inference
In order to perform GPU inference (using the ~--gpu~ command-line switch), first make sure that the following package are installed:
You can then install gpu support with:
$ pip install "sentinel2_superresolution[gpu] @ git+https://github.com/Evoland-Land-Monitoring-Evolution/sentinel2_superresolution.git"
** Pixel rows / columns region of interest
Example of use with a pixel (rows / columns of the 10m input image) ROI :
$ sentinel2_superesolution -v -i SENTINEL2A_20200808-105933-164_L2A_T31TCG_C_V2-2/ -o results/ --bicubic -roip 2000 2000 2500 2500
Note the ~--bicubic~ flag, that allows to also generate a bicubic-upsampled image to 5 meters in order to compare with the SISR result.
** UTM coordinates region of interest Example of use with a UTM (coordinates of the product) ROI:
$ sentinel2_superesolution -v -i SENTINEL2A_20200808-105933-164_L2A_T31TCG_C_V2-2/ -o results/ --bicubic -roi 300160.000 4590400.000 304000.000 4594240.000
Note the ~--bicubic~ flag, that allows to also generate a bicubic-upsampled image to 5 meters in order to compare with the SISR result.
** Using L1C product as input
$ sentinel2_superesolution -i S2B_MSIL1C_20231126T105309_N0509_R051_T31TCJ_20231126T113937.SAFE/ -roip 0 0 512 512 --l1c -o results/
Note: Do not forget the ~--l1c~ flag, as the tool will not detect the product format automatically.
** Inference on GPU
sentinel2_superesolution -i SENTINEL2B_20230219-105857-687_L2A_T31TCJ_C_V3-1 -o resumts/ --gpu
Add the ~--gpu~ switch. If there are no GPUs available or correctly configured, the tool will fallback to CPU inference.
Here is a list of questions that have been frequently asked.
** Bands order Bands in output image follow the following order: B2, B3, B4, B8, B5, B6, B7, B8A, B11, B12
** L2A only Processed bands are the FRE variants (Flat Reflectence).
** L1C only Upon reading of the product, sensorsio applies the -1000 radiometric offset depending on the product version.
** FileNotFoundError : Could not find root XML file
If you encounter the following:
raise FileNotFoundError( FileNotFoundError: Could not find root XML file in product directory data/S2B_MSIL2A_20240424T054639_N0510_R048_T43SCS_20240424T080948.SAFE****
It is likely that you are trying to process Sen2corr L2A. Currently sentinel2_superresolution only supports Theia L2A products from [[https://theia.cnes.fr]].
Here are orders of magnitude for full products inference time:
| | CPU (1 core) | CPU (8 cores) | GPU (A100) | |-------+----------------+-----------------+------------------| | L1C | 6 hours | 1 hour | 6 minutes | | L2A | 5 hours | 50 minutes | 5 minutes |
Credits
This work was partly performed using HPC resources from GENCI-IDRIS (Grant 2023-AD010114835)
This work was partly performed using HPC resources from CNES.