--- tags: - seismic - ground-roll - denoising - unet - resunet - dncnn - attention-unet - pytorch library_name: pytorch --- # Ground-Roll Attenuation Benchmark Deep-learning-based 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 - **DFB-CNN** (`dfb_cnn`) — Dual-Filter-Bank CNN with two DnCNN-style subnetworks (5×5 kernel for low-freq, 3×3 for high-freq) operating in the radial-trace (RT) domain. Low-freq CNN: 9 layers, 100 feat; High-freq CNN: 5 layers, 64 feat. ### 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 ```python 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 *Results pending — run batch_evaluate.py to populate.* ## 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