Using convolutional autoencoders to remove random noise from seismic data.
This repo contains code that uses a deep convolutional autoencoder to automatically detect and remove random noise from seismic images.
The methodology consists of 2 stages:
Synthetic seismograms of a random number of seismic events are generated using a ricker wavelet. Random characteristics of these seismic events include:
The models trained on the synthetic data are then used as a starting point to train on real data. However, the ground truth clean seismic image is not know for the real seismic data. Therefore a psuedo-unsupervised training scheme is implemented by editing the loss function to minimise the correllation coefficient between the input image and the output image.
Above shows two zoomed sections of the input seismic data, output of the denoising process and the removed noise.
There is noise still left within the data that I think could be removed by refining this method. In particular, some more hyperparameter tuning of batchsize, window size and possibly the optimizer.
Having observed results in the other papers I’m sure that the ones I’m getting can be improved. But this was initially meant as a PoC so improvements can be made!
Real seismic data displayed here can be found here: https://walrus.wr.usgs.gov/namss/
The methodology brings together those found in two papers: