Source code and trained model for noise reduction for seismic record sections with DDPM
Abstract
This repo includes the code to train and apply the DDPM for wide-angle seismic survey data, along with the trained model. To train the model or to apply the trained model on your own data, you will need .segy files for seismic survey waveforms and modify the data handler in profiledd.py according to the SEG-Y header. If you would like to test the trained model on the Noto dataset, please download it from DOI: 10.5281/zenodo.18593830. Below is a brief explanation of each file: model-final.pt: The PyTorch file for the trained model. diffusion.py: Modified from Ricard Durall's work (https://github.com/dlseis/diffseis). The module that defines the DDPM architecture. Note that we use our own functions in profiledd for training and inference. profiledd.py: This module handles the record section data, including preprocessing, trimming, diversity stacking, and normalizing. refine_train.py: This optional module reads the pretrained results to get the first arrival time in every trace, to include the noise as much as possible for normalization. unet.py: Modified from Ricard Durall's work (https://github.com/dlseis/diffseis). The module that defines the U-Net architecture for predicting noise components from input 2D arrays. train.py: The script used for training the DDPM. Users can prepare their data and train their model here. rebuild.py: The script used for inference. Users can prepare their data and apply the trained model here.
Fields of Study & Subjects
Image and Signal Denoising Methods
Seismic Imaging and Inversion Techniques
Seismic Waves and Analysis
Publication details
- Journal / source
- Zenodo (CERN European Organization for Nuclear Research)
- Publication date
- 12 February 2026
- Language
- EN