Skip to content

Latest commit

 

History

History
95 lines (70 loc) · 6.13 KB

File metadata and controls

95 lines (70 loc) · 6.13 KB

Semi-Supervised Sequence Modeling for Elastic Impedance Inversion

Motaz Alfarraj, and Ghassan AlRegib

Codes and data for a manuscript published in Interpretation Journal, Aug 2019.

This repository contains the codes for the paper:

M. Alfarraj, and G. AlRegib, "Semi-Supervised Sequence Modeling for Elastic Impedance Inversion," in Interpretation, Aug. 2019. [ArXiv] [SEG Digital Library]

Abstract

Recent applications of machine learning algorithms in the seismic domain have shown great potential in different areas such as seismic inversion and interpretation. However, such algorithms rarely enforce geophysical constraints — the lack of which might lead to undesirable results. To overcome this issue, we have developed a semisupervised sequence modeling framework based on recurrent neural networks for elastic impedance inversion from multiangle seismic data. Specifically, seismic traces and elastic impedance (EI) traces are modeled as a time series. Then, a neural-network-based inversion model comprising convolutional and recurrent neural layers is used to invert seismic data for EI. The proposed workflow uses well-log data to guide the inversion. In addition, it uses seismic forward modeling to regularize the training and to serve as a geophysical constraint for the inversion. The proposed workflow achieves an average correlation of 98% between the estimated and target EI using 10 well logs for training on a synthetic data set.

Sample Results

Estimated EI Section

Incident Angle (degrees) Estimated EI True EI Absolute Difference
0
10
20
30

Scatter plots

0 degrees 10 degrees 20 degrees 30 degrees

Sample traces

x=3300 meters x=8500 meters

Data

The data used in this code are from the elastic model of Marmousi 2 The synthesis of the seismic data is described in the paper

dl=0

The data file should be downloaded automatically when the code is run.

Alternatively, you can download the data file manually at this link and place it in the same folder as main.py file

Both elastic impedance and seismic are saved in the same data.npy file..

Running the code

Requirements:

These are the python libraries that are needed to run the code. Newer version should work fine as well.

bruges==0.3.4
matplotlib==3.1.1
numpy==1.17.0
pyparsing==2.4.1.1
python-dateutil==2.8.0
torch==1.1.0
torchvision==0.3.0
tqdm==4.33.0
wget==3.2

Note: This code is built using PyTorch with GPU support. Follow the instructions on PyTorch's website to install it properly. The code can also be run without GPU, but it will be much slower.

Training and testing

To train the model using the default parameters (as reported in the paper), and test it on the full Marmousi 2 model, run the following command:

python main.py

However, you can choose those parameters by including the arguments and their values. For example, to change the number of training traces, you can run:

python main.py -num_train_wells 10

The list arguments can be found in the file main.py.

Citation:

If you have found our code and data useful, we kindly ask you to cite our work

@article{alfarraj2019semi,
  title={Semi-supervised Sequence Modeling for Elastic Impedance Inversion},
  author={Alfarraj, Motaz and AlRegib, Ghassan},
  journal={Interpretation},
  volume={7},
  number={3},
  pages={1--65},
  year={2019},
  publisher={Society of Exploration Geophysicists and American Association of Petroleum~…}
}