🔍 Source-Independent Full Waveform Inversion for GPR using Deep Learning
A PyTorch-based implementation of a source-independent full waveform inversion (FWI) framework tailored for ground-penetrating radar (GPR) data, leveraging deep learning techniques to reconstruct subsurface permittivity models. This method is particularly suitable for GPR investigation in permafrost environments or undulating strata.
📌 Features:
🚀 Source-independent inversion: The model learns to invert waveforms even with varying GPR sources.
🧠 Noise simulation: The dataset can simulate real noisy environments.
🌍 Using gprMax to establish reliable datasets in three-dimensional simulation scenarios
📉 Support initial model or none, time-depth conversion, depth-time conversion, GSSI data conversion and other functions...
📂 Project Structure
GPR-SIDL-inv/
├── dataset/ # Training/testing data and synthetic datasets
├── data.csv # Already generated dataset (70MHz Ricker wavelet)
├── label.csv # Already generated dataset (70MHz Ricker wavelet)
├── field_data/ # Used to store field data for inversion
├── gprMax/ # Forward modeling package developed by the University of Edinburgh
├── IMG/ # Used for storing data processing and inversion result graphs
├── impulse/ # Used to store simulated and measured source wavelet files
├── log/ # operation log
├── Network/ # Used for storing network models and data loading programs
├── readgssi/ # Software package for reading and converting raw data
├── SAVE/ # Save the trained model
├── time_result_csv/ # Inverse results in the time domain
├── utils/ # tool kit
├── Model.py/ # network model with transformer
├── Mydataset.py/ # Loading and preprocessing datasets
├── 1_model_generator.py # Randomly generate in files as needed to support forward modeling of gprMax in 3D media.
├── 2_forward_simulation.py # Run the forward modeling program to generate A-scan results
├── 3_combine_dataset.py # Filter all A-scan data and generate a dataset
├── 4_gssi_data_convert.py # Convert the dzt file of the measured GSSI GPR to CSV format
├── 5_data_preprocess.py # Preprocess the measured raw data (dewow, direct wave removal, static correction, etc.)
├── 6_extract_impulse.py # Extract the true source wavelet from the processed data
├── 7_network_train.py # Training a deep learning network for inversion
├── 8_prediction.py # Predicting real measured data
├── 9_time_depth_convert.py # Convert the predicted results into the deep domain through integration
├── config.yaml # Configuration file
├── requirements.txt # Python dependencies
└── README.md # This file
🛠️ Installation
1. Clone the repository
git clone https://gitee.com/sduem/gpr-sidl-inv
cd GPR-FWI-DeepLearning
2. Install gprMax (optional but recommended)
3. Install dependencies
pip install -r requirements.txt
📊 Usage
We provide an interface program for calling gprMax to generate custom datasets. If you need to generate a dataset, you can start running it from the first step. If you already have a simulated dataset, you can skip the first three steps. Steps four to six are used for personalized processing of our measured data, and we provide a frozen soil area measured data for testing. If you need to test new field data, please make targeted modifications.
1. Dataset generation
.......
.......
2. Field data convertion and prepocessing
3. Source wavelet select and network training
4. Prediction and time-depth convertion
📝 Citation
If you use this code in your research, please cite:
@article{your2025sourceindependent, title={Source-independent Full Waveform Inversion for GPR Using Deep Learning}, author={Junkai Ge, Rui Liu, Shirong Zhang, Xiaodong Li, Huaifeng Sun, Bo Tian, Ziqiang Zheng}, journal={Computers & Geosciences}, year={2025}, doi={under review} }
📫 Contact
If you have questions, reach out to:
Rui Liu Email: your.email@domain.com Affiliation: Institute / Lab Name