/VI-Non-IID

Seismic Random Noise Attenuation Based on Non-IID Pixel-Wise Gaussian Noise Modeling

Primary LanguagePython

Seismic random noise attenuation based on non-IID pixel-wise Gaussian noise modeling

Requirements and Dependencies

  • Ubuntu 16.04, cuda 10.0
  • Python 3.6, Pytorch 1.1.0
  • More detail (See environment.yml)
  • Training and testing can also be performed on Windows systems.

Datasets

Generating training data

Seismic Data Training with Synthesis Noise (when clean labels (groundtruth) are unavailable)

  1. Download the seismic from the above links and synthesize the clean data using the Marmousi model

  2. Prepare the testing datasets with different Non-IID noise coming from seismic feild data:

    python datasets/mat/generate_niid_noise_from_field.py
  1. Begining training:
    python train_NonIID-Unet_with_SynthesisSample --simulate_dir source_imgs_path --eps2 1e-6

Seismic field data training when clean labels (groundtruth) are available

Training:

  1. Writing the training and validation datasets into hdf5 fromat:
    python datasets/prepare_data/segy/big2small_seismic_train.py --data_dir field_data_path
    python datasets/prepare_data/segy/big2small_seismic_test.py --data_dir field_data_path
  1. Begin training:
    # model: NonIID-Unet recommended
    python train_NonIID-Unet_with_LabeledSample.py --SIDD_dir sidd_data_path --eps2 1e-6
    # model: NonIID-DnCNN
    python train_NonIID-DnCNN_with_LabeledSample.py --SIDD_dir sidd_data_path --eps2 1e-6

During the testing phase, we provide the corresponding trained model.

Testing VI-Non-IID model if the reference clean label of test data is unavailable

Here, test your arbitrary data. Our model can simultaneously output noise attenuation results and corresponding noise level estimation (sigma) map.

    # you can choose NonIID-Unet (recommended) or  NonIID-DnCNN
    python test_NonIID_Model_on_SEGY-field-noisy-data.py
    
    #baseline      model can be Unet or DnCNN
    python test_MSE_Model_on_SEGY-field-noisy-data.py
    

Testing if the reference clean label of test data is available

    # you can choose NonIID-Unet (recommended) or  NonIID-DnCNN
    python test_NonIID_model_CompareWithLabel.py 
    
    # baseline
    python test_MSE-model_CompareWithLabel.py
    
    

Testing on synthesis Non-IID noise

    # you can choose VI-NonIID-Unet or VI-NonIID-DnCNN
    python test_NonIID_model_on_Synthesis_IID-or-NonIID_noise.py
    
    # Baseline
    python test_MSE-model_on_Synthesis_IID-or-NonIID_noise.py
    

A note about field data

Since the field data is provided by commercial companies, it is not convenient to make it public. Users can directly replace it with their own data. 

More Description

The readsegy function can be modified based on your own data. Any other users confused about this function can contact the author directly.

Citation

If you use this code for your research, please consider citing:

@article{meng2022seismic,
  title={Seismic random noise attenuation based on non-IID pixel-wise Gaussian noise modeling},
  author={Meng, Chuangji and Gao, Jinghuai and Tian, Yajun and Wang, Zhiqiang},
  journal={IEEE Transactions on Geoscience and Remote Sensing},
  volume={60},
  pages={1--16},
  year={2022},
  publisher={IEEE}
}
    

Contact

If you have any problem about our code, feel free to contact