ZDDWLIG's picture
Upload README.md with huggingface_hub
b64515d verified
|
Raw
History Blame Contribute Delete
4.37 kB
---
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