ZDDWLIG's picture
Upload README.md with huggingface_hub
a5aa565 verified
|
Raw
History Blame
8.73 kB
metadata
tags:
  - seismic
  - ground-roll
  - denoising
  - unet
  - resunet
  - dncnn
  - attention-unet
  - pytorch
library_name: pytorch

Ground-Roll Attenuation Benchmark

Deep-learning-based coherent noise (ground roll) suppression on pre-stack seismic shot gathers, using the SEG C3 synthetic dataset.

Task

Given a noisy shot gather contaminated by dispersive ground-roll noise, the model predicts the additive noise component. The denoised signal is obtained by:

denoised = noisy_input - predicted_noise

This is a paired regression task trained with a noise-label objective (the ground-truth noise component). The supervision target is the residual between the noisy input and the clean reference.

Dataset

  • Source: SEG C3 pre-stack synthetic data, 9 regular shot gathers
  • Geometry: 201 traces × 625 time samples per shot, dt = 2 ms
  • Noise modeling: Reflection signals modeled with the acoustic wave equation; ground roll modeled with the elastic wave equation to capture its dispersive, low-velocity character
  • Split: Shot-level (FFID) sequential 7:1:1 — 7 training shots, 1 validation, 1 held-out test

Noise Intensity Levels

Five ground-roll intensity levels produce paired noisy / noise-label records:

Level SNR (dB) PSNR (dB) SSIM MAE MSE RMSE
1.0 2.7129 21.8322 0.9527 0.015312 0.006558 0.080982
3.0 -6.8295 18.3104 0.9477 0.022968 0.014756 0.121473
5.0 -11.2665 17.3952 0.9466 0.025520 0.018217 0.134970
7.0 -14.1891 16.9715 0.9461 0.026796 0.020084 0.141719
9.0 -16.3720 16.7268 0.9458 0.027561 0.021248 0.145768

Metrics computed on the test set (2D flattened shot gathers) in the normalized domain before denoising.

Model Architectures

  • Attention UNet-Plus (atten_unet_plus) — Wider Attention UNet variant. Base channels: 64, depth: 4.
  • ResUNet-Plus (res_unet_plus) — Wider ResUNet variant. Base channels: 64, depth: 4.
  • UNet-Plus (unet_plus) — Wider UNet variant. Base channels: 64, depth: 4.

Preprocessing

  • Normalization: max_abs, global scope — the entire dataset scaled to [-1, 1]
  • Patching: Overlapping 2D patches (128 × 256) with 50% overlap, channel-last format (1, H, W)

Repository Structure

models/
├── unet/
│   ├── level1.0_seed42/
│   │   ├── best.pt          # Best checkpoint (minimum validation loss)
│   │   └── config.yaml      # Full training configuration
│   ├── level1.0_seed43/
│   ├── level1.0_seed44/
│   ├── level3.0_seed42/
│   └── ...
└── res_unet/
    └── ...

Each subdirectory corresponds to one experiment: a model architecture trained at a specific noise level with a specific random seed.

Training Details

Hyperparameter Value
Loss MSE (noise-prediction models) / GAN+L1 (pix2pix) / L1 (DDPM) / hybrid MSE+AFM (enhanced)
Optimizer Adam / AdamW (lr=1e-4–1e-3, varies per model)
Scheduler Cosine annealing (min_lr=1e-6)
Epochs 100–200 (varies per model)
Gradient clipping 1.0 (max norm)
Seeds 42, 43, 44 per experiment

Usage

import torch
from huggingface_hub import hf_hub_download

# Download a checkpoint
repo = "GeoBrain/coherent-noise-attenuation"
model_key = "res_unet"
level = "3.0"
seed = "42"

ckpt_path = hf_hub_download(
    repo_id=repo,
    filename=f"models/{model_key}/level{level}_seed{seed}/best.pt",
)

# Load state dict
state_dict = torch.load(ckpt_path, map_location="cpu", weights_only=True)

# For full model loading, instantiate the corresponding architecture
# and load the state dict (see config.yaml for exact architecture params).

See the companion benchmark documentation for detailed experimental setup and full evaluation results.

Results

Mean ± std over 3 seeds on the held-out test shot (FFID=9), evaluated on 2D-flattened data in the normalized domain. Raw (noisy) is the input before denoising.

Noise Level 1.0

Method Params (M) SNR (dB) PSNR (dB) SSIM MAE MSE RMSE
Raw (noisy) 2.7129±0.0000 21.8322±0.0000 0.9527±0.0000 0.015312±0.000000 0.006558±0.000000 0.080982±0.000000
UNet 7.76 28.3886±1.0929 47.5080±1.0930 0.9972±0.0004 0.000673±0.000129 0.000018±0.000004 0.004235±0.000524
ResUNet 8.11 31.6226±0.5664 50.7420±0.5664 0.9980±0.0001 0.000659±0.000105 0.000008±0.000001 0.002907±0.000186
DnCNN 0.14 19.7355±0.3250 38.8548±0.3250 0.9846±0.0014 0.004684±0.000236 0.000130±0.000010 0.011415±0.000425
Attention UNet 7.85 29.4786±1.3513 48.5979±1.3514 0.9974±0.0007 0.000577±0.000109 0.000014±0.000004 0.003745±0.000557

Noise Level 3.0

Method Params (M) SNR (dB) PSNR (dB) SSIM MAE MSE RMSE
Raw (noisy) -6.8295±0.0000 18.3104±0.0000 0.9477±0.0000 0.022968±0.000000 0.014756±0.000000 0.121473±0.000000
UNet 7.76 23.0729±0.0993 48.2128±0.0994 0.9961±0.0001 0.000676±0.000022 0.000015±0.000000 0.003885±0.000044
ResUNet 8.11 22.6469±0.9303 47.7869±0.9303 0.9924±0.0015 0.001194±0.000660 0.000017±0.000003 0.004095±0.000424
DnCNN 0.14 17.2389±0.2322 42.3788±0.2322 0.9883±0.0008 0.002676±0.000161 0.000058±0.000003 0.007606±0.000205
Attention UNet 7.85 24.3939±1.2177 49.5338±1.2177 0.9964±0.0011 0.000630±0.000141 0.000011±0.000003 0.003358±0.000453

Noise Level 5.0

Method Params (M) SNR (dB) PSNR (dB) SSIM MAE MSE RMSE
Raw (noisy) -11.2665±0.0000 17.3952±0.0000 0.9466±0.0000 0.025520±0.000000 0.018217±0.000000 0.134970±0.000000
UNet 7.76 20.2195±0.3210 48.8813±0.3210 0.9958±0.0001 0.000656±0.000033 0.000013±0.000001 0.003599±0.000133
ResUNet 8.11 18.1078±2.1170 46.7695±2.1170 0.9898±0.0021 0.001265±0.000143 0.000023±0.000011 0.004679±0.001134
DnCNN 0.14 15.5662±0.2235 44.2280±0.2236 0.9898±0.0006 0.002042±0.000221 0.000038±0.000002 0.006147±0.000159
Attention UNet 7.85 21.9546±1.0678 50.6163±1.0678 0.9965±0.0011 0.000618±0.000068 0.000009±0.000002 0.002961±0.000359

Noise Level 7.0

Method Params (M) SNR (dB) PSNR (dB) SSIM MAE MSE RMSE
Raw (noisy) -14.1891±0.0000 16.9715±0.0000 0.9461±0.0000 0.026796±0.000000 0.020084±0.000000 0.141719±0.000000
UNet 7.76 17.8984±0.2809 49.0590±0.2809 0.9955±0.0003 0.000620±0.000054 0.000012±0.000001 0.003526±0.000114
ResUNet 8.11 16.6023±1.4399 47.7628±1.4399 0.9895±0.0039 0.001264±0.000417 0.000017±0.000005 0.004128±0.000649
DnCNN 0.14 15.1741±0.1268 46.3346±0.1268 0.9925±0.0003 0.001628±0.000134 0.000023±0.000001 0.004823±0.000071
Attention UNet 7.85 17.9454±2.7925 49.1059±2.7925 0.9947±0.0031 0.000686±0.000241 0.000014±0.000008 0.003623±0.001098

Noise Level 9.0

Method Params (M) SNR (dB) PSNR (dB) SSIM MAE MSE RMSE
Raw (noisy) -16.3720±0.0000 16.7268±0.0000 0.9458±0.0000 0.027561±0.000000 0.021248±0.000000 0.145768±0.000000
UNet 7.76 16.5997±0.4636 49.6984±0.4636 0.9956±0.0005 0.000673±0.000096 0.000011±0.000001 0.003277±0.000177
ResUNet 8.11 13.8944±1.2448 46.9932±1.2448 0.9873±0.0053 0.001799±0.000734 0.000021±0.000006 0.004502±0.000670
DnCNN 0.14 14.8737±0.1844 47.9725±0.1845 0.9942±0.0003 0.001366±0.000120 0.000016±0.000001 0.003994±0.000085
Attention UNet 7.85 15.7861±2.7603 48.8849±2.7604 0.9940±0.0033 0.000822±0.000303 0.000015±0.000008 0.003715±0.001128

References

  • Ronneberger et al., U-Net: Convolutional Networks for Biomedical Image Segmentation, MICCAI 2015
  • He et al., Deep Residual Learning for Image Recognition, CVPR 2016
  • Zhang et al., Image Denoising via Deep CNN (DnCNN), IEEE TIP 2017
  • Oktay et al., Attention U-Net: Learning Where to Look for the Pancreas, MIDL 2018
  • SEG C3 Velocity Model: https://wiki.seg.org/wiki/C3