A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

Industrial Smoke Plume Detection

Characterization of Industrial Smoke Plumes from Remote Sensing Data.
https://github.com/HSG-AIML/IndustrialSmokePlumeDetection

Category: Emissions
Sub Category: Emission Observation and Modeling

Keywords

deep-learning earth-observation greenhouse-gas-emissions machine-learning pollution-prediction remote-sensing

Keywords from Contributors

self-supervised-learning semantic-segmentation

Last synced: about 3 hours ago
JSON representation

Repository metadata

Code Repository for: "Characterization of Industrial Smoke Plumes from Remote Sensing Data", presented at Tackling Climate Change with Machine Learning workshop at NeurIPS 2020.

https://github.com/HSG-AIML/IndustrialSmokePlumeDetection/blob/main/

          # Industrial Smoke Plume Detection

This repository contains the code base for our publication *Characterization of Industrial Smoke Plumes from
Remote Sensing Data*, presented at the *Tackling Climate Change with Machine
 Learning* workshop at NeurIPS 2020.


![segmentation example images](segmentation.png "Segmentation Example Images")

 
## About this Project

The major driver of global warming has been identified as the anthropogenic release
of greenhouse gas (GHG) emissions from industrial activities. The quantitative
monitoring of these emissions is mandatory to fully understand their effect on the
Earth’s climate and to enforce emission regulations on a large scale. In this work,
we investigate the possibility to detect and quantify industrial smoke plumes from
globally and freely available multiband image data from ESA’s Sentinel-2 satellites.
Using a modified ResNet-50, we can detect smoke plumes of different sizes with
an accuracy of 94.3%. The model correctly ignores natural clouds and focuses on
those imaging channels that are related to the spectral absorption from aerosols and
water vapor, enabling the localization of smoke. We exploit this localization ability
and train a U-Net segmentation model on a labeled subsample of our data, resulting
in an Intersection-over-Union (IoU) metric of 0.608 and an overall accuracy for
the detection of any smoke plume of 94.0%; on average, our model can reproduce
the area covered by smoke in an image to within 5.6%. The performance of our
model is mostly limited by occasional confusion with surface objects, the inability
to identify semi-transparent smoke, and human limitations to properly identify
smoke based on RGB-only images. Nevertheless, our results enable us to reliably
detect and qualitatively estimate the level of smoke activity in order to monitor
activity in industrial plants across the globe. Our data set and code base are publicly
available.

The full publication is available on arxiv.

The data set is available on [zenodo](http://doi.org/10.5281/zenodo.4250706).

## Content

`classification/`: Resnet-50 classifier code, training and evaluation
 routines
`segmentation/`: U-Net segmentation model code, training and evaluation
 routines

 
## How to Use

Download this repository as well as the 
[data](http://doi.org/10.5281/zenodo.4250706) and decompress the latter. For
both model training and evaluation, you will have to modify the directory
paths appropriately so that they point to the image and segmentation label
data.
   
It is expected that the data are split into separate data sets for training, 
validation, and evaluation. For our publication, this has been done in such a
way that all observations of a single location are contained in a 
single data set. Other strategies are possible and will be left to the user. 

Either model can be trained by invoking:

    python train.py
    
with the following optional parameters:
    
* `-bs ` to define a batch size,
* `-ep ` to define the number of training epochs,
* `-lr ` to define a starting learning rate, and
* `-mo ` to define a momentum value.

The models can be evaluated on the test data set by calling the corresponding
 `eval.py` script.
 
 
## Acknowledgements

If you use this code for your own project, please cite the following
conference contribution:

    Mommert, M., Sigel, M., Neuhausler, M., Scheibenreif, L., Borth, D.,
    "Characterization of Industrial Smoke Plumes from Remote Sensing Data",
    Tackling Climate Change with Machine Learning Workshop,
    NeurIPS 2020.

        

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 6 days ago

Total Commits: 6
Total Committers: 3
Avg Commits per committer: 2.0
Development Distribution Score (DDS): 0.5

Commits in past year: 0
Committers in past year: 0
Avg Commits per committer in past year: 0.0
Development Distribution Score (DDS) in past year: 0.0

Name Email Commits
Michael Mommert m****t@u****h 3
Michael Mommert m****i 2
Damian Borth d****h@g****m 1

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 1
Total pull requests: 0
Average time to close issues: N/A
Average time to close pull requests: N/A
Total issue authors: 1
Total pull request authors: 0
Average comments per issue: 1.0
Average comments per pull request: 0
Merged pull request: 0
Bot issues: 0
Bot pull requests: 0

Past year issues: 0
Past year pull requests: 0
Past year average time to close issues: N/A
Past year average time to close pull requests: N/A
Past year issue authors: 0
Past year pull request authors: 0
Past year average comments per issue: 0
Past year average comments per pull request: 0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/HSG-AIML/IndustrialSmokePlumeDetection

Top Issue Authors

  • Myhuang1996 (1)

Top Pull Request Authors


Top Issue Labels

Top Pull Request Labels


Dependencies

requirements.txt pypi
  • geopandas ==0.8.1
  • matplotlib ==3.1.3
  • numpy ==1.17.4
  • rasterio ==1.2.dev0
  • scikit-learn ==0.22.1
  • tensorboard ==2.3.0
  • torch ==1.5.0
  • torchvision ==0.6.0
  • tqdm ==4.40.2

Score: 4.836281906951478