library_name: diffusers
pipeline_tag: image-to-image
tags:
- seismic-inversion
- impedance-inversion
- diffusion
- ddpm
- overthrust
Seismic-LDDPM
Seismic-LDDPM is a latent DDPM pipeline for seismic impedance inversion. The
pipeline takes a low-frequency impedance image (dipin) and a synthetic seismic
record (record) and predicts the impedance image.
This repository includes:
- Diffusers-format model components:
vq_model,unet,scheduler, andcondition_encoder. SeismicImpInvLDDPMPipelineincodes/pipeline.py.- A complete Overthrust benchmark sample at
data/Overthrust_trueimp.mat. - Root
infer.pyand supporting inference code undercodes/.
Installation
git clone https://huggingface.co/mally-2000/saii-cldm-synthetic
cd saii-cldm-synthetic
pip install -r requirements.txt
Overthrust Evaluation
The Overthrust evaluation script is intentionally fixed to the bundled
data/Overthrust_trueimp.mat. It cuts the full model into six 256 x 256
patches, synthesizes the seismic records and low-frequency impedance inputs,
runs inference, stitches the six predictions back together, and computes the
metrics.
python codes/eval_overthrust.py \
--model . \
--output outputs/overthrust \
--num-inference-steps 1000
Outputs:
outputs/overthrust/full_target.npyoutputs/overthrust/full_prediction.npyoutputs/overthrust/full_reconstruction.npyoutputs/overthrust/comparison_impedance.pngoutputs/overthrust/metrics_summary.json
Benchmark Result
Evaluated locally on the bundled Overthrust benchmark with 1000 DDPM steps,
noise_snr=15, dipin_v=0.012, f0=30, phase=0, seed=1234, and patch
indices [0, 1, 2, 3, 4, 5].
| Space | PSNR | SSIM | PCC | RRE | NMSE |
|---|---|---|---|---|---|
| Normalized | 30.7698 | 0.9339 | 0.9963 | 0.0435 | 0.001894 |
| Impedance | 33.4413 | 0.9554 | 0.9957 | 0.0324 | 0.001050 |
| VQ reconstruction | 37.7954 | 0.9677 | 0.9983 | 0.0209 | 0.000435 |
Single-Sample Inference
For a single default Overthrust patch:
python infer.py
The script builds one Overthrust test sample internally, synthesizes the
low-frequency impedance and seismic record, and saves prediction.npy,
target.npy, and comparison.png under outputs/infer_LDDPM.
For SAII-CLDM model-driven sampling:
python infer.py CLDM
Python Usage
import torch
from codes.pipeline import SeismicImpInvLDDPMPipeline
pipe = SeismicImpInvLDDPMPipeline.from_pretrained(
"mally-2000/saii-cldm-synthetic",
torch_dtype=torch.float32,
trust_remote_code=True,
).to("cuda")
result = pipe(
dipin=dipin, # torch.Tensor, BCHW
record=record, # torch.Tensor, BCHW
num_inference_steps=1000,
seed=1234,
)
prediction = result.impedance_samples
Notes
codes/dataset.pycontains a lightweightSeismicBaseandOverthrustTrueimpDataset; it does not depend on the original training repository'sldm.data.seisimic.- Synthetic record generation is seeded through the benchmark configuration so the published Overthrust evaluation is reproducible.
- The bundled Overthrust file is used only as a compact benchmark input for reproducing this model's inference pipeline.
