Skip to content

sweep-nn examples

Example What it shows Needs
quickstart.py The API on a toy problem: a SIREN fitted to a velocity model directly, no wave equation CPU is enough
pseudo_hessian_overthrust.ipynb Implicit FWI on Overthrust, and the pseudo-Hessian (illumination) preconditioner CUDA GPU, sweep-solver
hash_encoding_marmousi.ipynb Implicit FWI on Marmousi, and the multiresolution hash encoding CUDA GPU, sweep-solver

The two implicit-FWI notebooks

They reproduce the two synthetic examples of Accelerating High Resolution Implicit Full Waveform Inversion (Shaowen Wang and Tariq Alkhalifah, Geophysics). Each runs three inversions from the same smoothed starting model, conventional FWI, implicit FWI with a SIREN, and implicit FWI with the method of the example, and plots the paper's figures. The velocity is sweep_nn.VelocityINR, vp = vp_init + vp_std · net(z, x); the wave equation is sweep's compiled acoustic solver.

pip install sweep-nn sweep-solver jupyterlab
cd docs/examples                     # the notebooks import ifwi_models.py from here
jupyter lab

Set IFWI_EPOCHS=60 (Overthrust) or IFWI_EPOCHS=40 (Marmousi) in the environment for a quick check instead of the full run.

Final model RMSE (m/s), conventional FWI / implicit FWI / implicit FWI + method:

this directory paper (ifwi-pub) wall time, RTX 6000 Ada
Overthrust, + pseudo-Hessian 513 / 718 / 200 513 / 615 / 189 7 min
Marmousi, + hash encoding 298 / 380 / 311 298 / 371 / 310 2 min

The networks are the paper's: the same widths, depths, sine frequencies and hash-grid configuration, and the same parameter counts. They are not the same random draws: VelocityINR initializes its layers in a different order, and it samples coordinates on [0, 1) where the paper used [0, 1]. So the numbers land close to the paper's rather than on them. ifwi-pub is the stand-alone package that reproduces the paper bit for bit.

Velocity models

ifwi_models.py holds the four models the notebooks use, embedded (float32, zlib + base85), copied unchanged from ifwi-pub. They are derived arrays: decimated, cropped and, for the starting models, smoothed.

Model Derived from Terms Cite
overthrust, 187 × 401 at 25 m a 2-D slice of the SEG/EAGE 3-D Overthrust model CC-BY-4.0 Aminzadeh, Burkhard, Kunz, Nicoletis & Rocca (1995), The Leading Edge 14, 125-128
marmousi, 141 × 341 at 25 m an 8.5 × 3.5 km subset of the Marmousi2 P-wave velocity public academic open data (AGL / University of Houston) Martin, Wiley & Marfurt (2006), 10.1190/1.2172306

For the original Marmousi2 model, go to the official source rather than to this file.

Citation

The two methods were first presented as EAGE abstracts: