martijnende / jDAS

Coherence-based Deep Learning denoising of DAS data

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

jDAS logo

Deep Learning denoising of DAS data

Documentation Status


Contents: overview | example | quickstart | 5-minute explainer video | citing jDAS


Overview

jDAS is a self-supervised Deep Learning model for denoising of Distributed Acoustic Sensing (DAS) data. The principle that underlies jDAS is that spatio-temporally coherent signals can be interpolated, while incoherent noise cannot. Leveraging the framework laid out by Batson & Royer (2019; ICML), jDAS predicts the recordings made at a target channel using the target's surrounding channels. As such, it is a self-supervised method that does not require "clean" (noise-free) waveforms as labels.

Retraining the model on new data is quick and easy, and will produce an optimal separation between coherent signals and incoherent noise for your specific dataset:

from jDAS import JDAS
jdas = JDAS()
data_loader = jdas.init_dataloader(data)
model = jdas.load_model()
model.fit(data_loader, epochs=50)

Denoising your data is then done through a single function call:

clean_data = JDAS.denoise(data)

That's all!

For a more detailed description of the methods, see the documentation. In-depth examples on jDAS denoising and retraining are provided in the examples directory.


Example

The example below is taken from a submarine DAS experiment conducted offshore Greece. At around 25 seconds and earthquake hits the DAS cable and induces a spatio-temporally coherent strain field. jDAS removes the incoherent background noise while keeping the earthquake signals.

Example of jDAS denoising performance

Note that some aliasing artifacts have been introduced in rendering this static JPEG. A code example to reproduce this figure is included in the examples directory of the project.


Quickstart

jDAS depends on the following Python libraries:

  • TensorFlow (>= 2.2.0): while training and inference is much faster on a GPU, the CPU version of TensorFlow is sufficient in case problems arise installing the CUDA dependencies.
  • NumPy and SciPy for numerical manipulations.
  • Matplotlib for visualisation.
  • h5py for IO.
  • (Optional) Jupyter notebook or lab to run the examples

All of these dependencies can be installed with Anaconda:

conda install -c conda-forge numpy scipy matplotlib h5py "tensorflow-gpu>=2.2.0"

To obtain the jDAS source code, you can pull it directly from the GitHub repository:

git clone https://github.com/martijnende/jDAS.git

No additional building is required. To test the installation, try running one of the examples Jupyter notebooks in the examples directory.

Please open a ticket under the tab "Issues" on the GitHub repository if you have trouble setting-up jDAS.


Explainer video

Example of jDAS denoising performance


Citing jDAS

For use of jDAS in scientific applications, please consider citing the following publication:

@article{vandenEnde2021,
    author={van den Ende, Martijn Peter Anton and Lior, Itzhak and Ampuero, Jean-Paul and Sladen, Anthony and Ferrari, André and Richard, Cédric},
    title={A Self-Supervised Deep Learning Approach for Blind Denoising and Waveform Coherence Enhancement in Distributed Acoustic Sensing Data}, 
    publisher={IEEE Transactions on Neural Networks and Learning Systems}, doi={10.1109/TNNLS.2021.3132832}, year={2021}, volume={0}
}

An identical preprint is available from EarthArxiv: https://eartharxiv.org/repository/view/2136/.

About

Coherence-based Deep Learning denoising of DAS data

License:MIT License


Languages

Language:Python 100.0%