Skip to content

Latest commit

 

History

History
155 lines (127 loc) · 8.44 KB

README.md

File metadata and controls

155 lines (127 loc) · 8.44 KB

🌍 🌱 sr-da-bvoc 🌱 🌍

This repository contains the code implementation for the paper:

Giganti, A.; Mandelli, S.; Bestagini, P.; Tubaro, S. "Learn from Simulations, Adapt to Observations: Super-Resolution of Isoprene Emissions via Unpaired Domain Adaptation". Remote Sens. 2024, 16, 3963. https://doi.org/10.3390/rs16213963

Remote Sensing

Table of Contents

Overview

Abstract

Plants emit Biogenic Volatile Organic Compounds (BVOCs), such as isoprene, significantly influencing atmospheric chemistry and climate. BVOC emissions estimated from bottom-up (BU) approaches (derived from numerical simulations) usually exhibit denser and more detailed spatial information concerning the ones estimated through top-down (TD) approaches (derived from satellite observations). Moreover, numerically simulated emissions are typically easier to obtain, even if they are less reliable than satellite acquisitions which, being derived from actual measurements, are considered a more trustworthy instrument to perform chemistry and climate investigations. Given the coarseness and relative lack of satellite-derived measurements, fine-grained numerically simulated emissions could be exploited to enhance them. However, simulated (BU) and observed (TD) emissions usually differ regarding value range and spatiotemporal resolution. In this work, we present a novel Deep Learning (DL)-based approach to increase the spatial resolution of satellite-derived isoprene emissions, investigating the adoption of efficient Domain Adaptation (DA) techniques to bridge the gap between numerically simulated emissions and satellite-derived ones, avoiding the need of retraining a specific Super-Resolution (SR) algorithm on them. To do so, we propose a methodology based on the Cycle Generative Adversarial Network (CycleGAN) architecture, which has been extensively used for adapting natural images (like digital photographs) of different domains. In our work, we depart from the standard CycleGAN framework, proposing additional loss terms that allow for better DA and emissions’ SR. We extensively demonstrate the proposed method’s effectiveness and robustness in restoring fine-grained patterns of observed isoprene emissions. Moreover, we compare different setups and validate our approach using different emission inventories from both domains. Eventually, we show that the proposed DA strategy paves the way towards robust SR solutions even in case of spatial resolution mismatch between the training and testing domains and in case of unknown testing data.

System

deployment

Installation

Clone this repository to your local machine:

git clone https://github.com/polimi-ispl/sr-da-bvoc.git

Requirements

All the required packages are contained in the bvoc-env.yml file.

You can install all the packages using Conda, by executing the following commands:

conda env create -f bvoc-env.yml
conda activate bvoc-env

More info here.

Project Structure

<usr_dir>
├── sr								# Super-Resolution folder
│  	 ├── metrics/
│	 ├── models/
│	 ├── dataset.py
│	 ├── train.py
│	 └── test.py
├── da								# Domain Adaptation folder
│	 ├── models.py
│	 ├── utils.py
│	 └── data_utils.py
├── runs/ 							# Runs folder
│	 ├── end2end
│	 │	    └── logs/				        # Tensorboard logs folder
│	 └── sr				
├── utils.py
├── dataset.py
├── train.py
├── test.py
├── bvoc-env.yaml					        # Conda environment settings
├── bash.sh					
└── README.md						        # This file ;)

Usage

To train the models, you can execute the following command:

python train.py --source_domain_dataset <source_domain_dataset> --target_domain_dataset <target_domain_dataset> --em_consistency_loss --feature_alignment_loss --gamma 0.5 --delta 0.0 --ptr_sr --ptr_sr_run_flag <pretrained_sr_net_run_flag>

To test the models, you can execute the following command:

python test.py --train_run_timestamp <train_run_timestamp> --main_dataset <lr_dataset> --source_domain_dataset <source_domain_dataset> --target_domain_dataset <target_domain_dataset>  --ptr_sr --ptr_sr_run_flag <pretrained_sr_net_run_flag>

Refer to the train.py and test.py files for a more detailed explanation.

Biogenic Inventories

The train and test emission are pairs of high resolution (HR) and low resolution (LR) emission map patches. The dataset folder structure is:

<dataset_dir>
├── HR/							  	# high-resolution maps
│   ├── train/
│   │   ├── map1
│   │   ├── ...
│   ├── val/
│   └── test/
└── LR/							 	# low-resolution maps
    ├── train/
    │   ├── map1
    │   ├── ...
    ├── val/
    └── test/

Citation

@article{giganti2024bvoc,
author = {Giganti, Antonio and Mandelli, Sara and Bestagini, Paolo and Tubaro, Stefano},
title = {Learn from Simulations, Adapt to Observations: Super-Resolution of Isoprene Emissions via Unpaired Domain Adaptation},
journal = {Remote Sensing},
volume = {16},
year = {2024},
number = {21},
doi = {10.3390/rs16213963}
}

License

This project is licensed under the MIT License.

Acknowledgement

ISPL logo Polimi logo PON logo MUR logo UE logo

Misc

👥 About Us

🎤 Podcast Version

A podcast version of the article is available at https://youtu.be/lNCfx9XUou0?si=GsBUOI6vQr3PuF51

📑 Our BVOC Related Works

A collection of the works from our team focused on BVOC emissions are available at https://github.com/polimi-ispl/sr-bvoc