In this repository, I implemented the physics-informed neural network for full-waveform inversion. The networks is an autoencoder based on Dhara and Sen (2022) with some modifications. The architecture of their study is shown in the following figure.
For runing the code, you should use this notebook. The required parameters for running this notebook should be set in this config file.
Note: I have commented cell 3 in this notebook, you should run this cell whenever you change an acquisition parameter (and for the first time using the codes).
Note: Please use the requirements file (written in the jupyter file) to install the packages with specified versions to be sure everything works.
pip install -r requirements.txt
The result of running this notebook for three shots is shown in the following figure.
The estimated velocity at an imaginary well location (dashed red line) is
As you see, the networks work properly enough to create the familiar structures of the Marmousi model, but optimum hyperparameters and acquisition parameters should be found. I have not used the parameters based on the paper. If you want to reproduce Dhara's work, use the following table.
Parameter | Description | I used | In the paper |
---|---|---|---|
N_SHOTS |
Number of shots | 22 | 18 |
DH |
Spatial sampling | 5 m | 1 m |
VP_MIN |
Minimum velocity | 1450 m/s | 1500 m/s |
VP_MAX |
Maximum velocity | 4550 m/s | 4700 m/s |
N_RECEIVERS |
Number of receivers | 447 | 200 |
ITERATION |
Number of iterations | 300 | 4000 |
Reference:
@article{
Physics-guided deep autoencoder to overcome the need for a starting model in full-waveform inversion
Dhara, Arnab and Mrinal K. Sen
The Leading Edge (2022),41(6): 375
https://doi.org/10.1190/tle41060375.1
To cite this repository, please use the following BibTex entry,
@misc{Mardan2023pinnfwi,
author = {Mardan, Amir},
title = {Physics-informed full-waveform inversion},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/AmirMardan/pinn_fwi}},
doi = {10.5281/zenodo.10206532},
release = {0.1.0}
}