This repository presents Python files to reproduce the results published in our paper
One of the most important major driving forces behind climate change and environmental issues that the Earth is currently facing is the pollution of the air which remains a key symptom of negative human influence on the environment. Air pollution is often invisible to the eye which can make its detection challenging, unlike the destruction of the land or waterways. Given that air-quality monitoring stations are typically ground-based, their abilities to detect pollutant distributions are often restricted to wide areas. Satellites, however, have the potential for studying the atmosphere at large; the European Space Agency (ESA) Copernicus project satellite, “Sentinel-5P” is a newly launched satellite capable of measuring a variety of pollutant information with publicly available data outputs. This paper seeks to create a multi-modal machine learning model for predicting air-quality metrics with high precision so that it will be applicable to locations where monitoring stations do not exist. The inputs of this model will include a fusion of ground measurements and satellite data with the goal of highlighting pollutant distribution and motivating change in societal and industrial behaviours. A contemporary method for fusing satellite information with pollution measurements is studied, suggesting that simpler models can work as effectively as neural network models that are constructed with state-of-the-art architectures. A new dataset of continental European pollution monitoring station measurements is created with features including altitude, population density, environmental classification of local areas, and satellite data from the ESA Copernicus project. This dataset is used to train a multi-modal ML model, Air Quality Network (AQNet) capable of fusing these various types of data sources to output predictions of various pollutants. These predictions are then aggregated to create an “air-quality index” that could be used to compare air quality over different regions. Three pollutants,
Folders and their content can be given below:
These folders contain the documents necessary for regenerating outputs.
\Checkpoints
- One pretrained ResNet50 network from previous project.
- One multimodal, MobileNet backboned model for testing OOS cases.
\Datadir
- Folder to include Sentinel 2 and Sentinel 5P imagery from https://zenodo.org/record/5764262#.YfJiPS1XYUs
\Data
\data
\basic
- Contains the original supporting data from the StGallen resources.
\editted
- And here are sample lookups and generator created during this project to facilitate multioutput predictions.
\timeseries_data
- Outputs from running the "discomap_extractor.ipynb" notebook, aggregated pollution measurements.
\Notebooks
- Notebooks used in the the sourcing or testing of data in this project.
\Modules
- Contains two subfolders, one for each iteration of testing/modelling.
\SingleOutput
- .py files for modelling with 1 pollutant with mulitmodal architecture
\ThreeOutput
- .py files for modelling with 3 pollutants with mulitmodal architecture
The requirements are easily installed via Anaconda (recommended):
conda create --name aqnet --file requirements.txt
After the installation is completed, activate the environment:
conda activate aqnet
After setting up the environment, before running the experiments, You have to download Sentinel 2 and Sentinel 5P images.
Please download satellite imagery files from Scheibenreif et. al. into /Datadir
folder.
**To train single output model without tabular data (AQNet (No Tabular)) for 40 epochs, run the following code from the /Modules/SingleOutput
directory.
**
python training_single.py --epochs=40 --tabular=False
**To train single output model (AQNet-Single) for 10 epochs, run the following code from the /Modules/SingleOutput
directory.
**
python training_single.py --epochs=10
**To train three output model (AQNet) for 20 epochs, run the following code from the /Modules/ThreeOutput
directory.
**
python training_3poll.py --epochs=20
To cite our work, please use:
- Rowley, Andrew, and Oktay Karakuş. "Predicting air quality via multimodal AI and satellite imagery." Remote Sensing of Environment 293 (2023): 113609.*
@article{ROWLEY2023113609,
title = {Predicting air quality via multimodal AI and satellite imagery},
journal = {Remote Sensing of Environment},
volume = {293},
pages = {113609},
year = {2023},
issn = {0034-4257},
doi = {https://doi.org/10.1016/j.rse.2023.113609},
url = {https://www.sciencedirect.com/science/article/pii/S0034425723001608},
author = {Andrew Rowley and Oktay Karakuş}
}
Please contact Dr Oktay Karakus via email.
GitHub page ==> (https://github.com/CoDIS-Lab/AQNet)