7.6 KiB
🔍 基于深度学习的探地雷达源无关全波形反演程序
本项目为一个基于 PyTorch 实现的探地雷达(GPR)源无关全波形反演(FWI)框架,采用深度学习方法实现地下介电常数模型的重建。该方法适用于冻土环境或起伏地层下的GPR探测任务。
程序名称: GPR-SIDL-inv
程序大小: 98.6 Mb.
开发语言: Python 3.10.4
📌 主要特点:
🚀 源无关反演:反演程序能够适应不同GPR源子波条件下的全波形反演。
🧠 噪声模拟功能:支持在数据集中模拟真实环境下的噪声干扰。
🌍 集成gprMax:支持在三维模拟环境中建立可靠的数据集。
📉 支持功能全面:包括初始模型输入(可选)、时深转换、深时转换、劳雷探地雷达格式数据的转换和初步处理(依赖readgssi软件包)等。
📂 项目结构
GPR-SIDL-inv/
├── dataset/ # 存放训练/测试数据及合成数据集
├── data.csv # 已预先生成的模拟数据集(70MHz Ricker子波)
├── label.csv # 已预先生成的标签数据集
(注:data.csv 与 label.csv 已打包为 dataset.rar 文件)
├── field_data/ # 存放用于反演的实测数据
├── IMG/ # 数据处理及反演结果图像存储
├── impulse/ # 存放模拟和实测的源子波文件
├── Log/ # 操作日志文件
├── Network/ # 存放网络模型与数据加载程序
├── Model.py/ # Transformer网络模型
├── Mydataset.py/ # 数据加载与预处理
├── readgssi/ # GSSI原始数据读取与转换模块程序包
├── SAVE/ # 存储训练好的模型文件
├── time_result_csv/ # 时间域反演结果存储
├── utils/ # 工具包
├── layers_generator.py/ # 生成随机地层、并赋予属性程序
├── train_val_lr.py/ # 网络训练与验证管理
├── plot.py/ # 2D图像绘制工具
├── 1_model_generator.py # 随机生成用于 gprMax 三维建模的输入文件
├── 2_forward_simulation.py # 运行正演模拟程序,生成A-scan结果
├── 3_combine_dataset.py # 筛选、排序并整合生成数据集
├── 4_gssi_data_convert.py # 将GSSI采集的DZT文件转换为CSV格式
├── 5_data_preprocess.py # 实测数据预处理(去直流漂移、去直达波、静校正等)
├── 6_extract_impulse.py # 从实测数据中提取真实源子波
├── 7_network_train.py # 训练深度学习网络用于反演
├── 8_prediction.py # 对实测数据进行反演预测
├── 9_time_depth_convert.py # 将反演结果从时间域转换为深度域
├── config.py # 配置文件,定义路径、参数等
├── requirements.txt # Python依赖库列表
└── README.md # 项目说明文件(本文件)
💡 硬件要求
请根据自身需求选择合适的硬件设备。本项目已在以下配置下完成测试,仅供参考:
处理器:Intel(R) Core (TM) i7-12700H
内存:最大可用内存 15.7 GiB
显卡:NVIDIA RTX 3070 Ti Laptop GPU,显存7.8 GiB
📚 软件环境
本项目无需额外软件,所有依赖项均可通过 requirements.txt 安装。
🛠️ 安装步骤
1. 克隆项目仓库
git clone https://gitee.com/sduem/gpr-sidl-inv
cd GPR-FWI-DeepLearning
2. 安装 gprMax(非必要但推荐)
官网链接: https://www.gprmax.com/
3. 安装依赖项
pip install -r requirements.txt
📊 使用说明
本项目提供了调用 gprMax 生成自定义数据集的接口程序。如需自行生成数据集,可从第一步开始执行;若已有模拟数据集,可跳过前三步。第4至第6步用于对实测数据进行个性化处理。我们提供了在青藏高原冻土区采集的实测数据供测试使用,并提供训练好的网络模型以便用户直接运行反演程序进行测试。
1. 模拟数据集生成
步骤1: 运行 1_model_generator.py 生成gprMax输入文件,在config.py中设置模型数量、子波类型、模型尺寸、介电常数范围等参数。
步骤2: 运行 2_forward_simulation.py 生成正演结果,在config.py中设置移除直达波的参数(静校正、直达波时间等)。建议在服务器多线程运行加快速度。
步骤3: 运行 3_combine_dataset.py 将正演数据进行筛选、排序、归一化并整合成完整数据集。
2. 实测数据转换与预处理
步骤4: 运行 4_gssi_data_convert.py 将GSSI地质雷达采集的原始DZT文件转换为CSV格式。如使用其他型号设备,请进行相应的数据转换。
步骤5: 运行 5_data_preprocess.py 对原始实测数据进行去直流、去直达波、静校正等预处理操作。
3. 子波提取与网络训练
步骤6: 运行 6_extract_impulse.py 从预处理后的数据中提取真实源子波。
步骤7: 运行 7_network_train.py 训练深度学习反演网络,可在config.py中设置学习率、批量大小等参数。
4. 反演预测与时深转换
步骤8: 运行 8_prediction.py 使用训练好的模型对实测数据进行预测反演。
步骤9: 运行 9_time_depth_convert.py 将时间域反演结果转换为深度域结果。
🙏 🙏 致谢
我们诚挚地感谢本项目中使用的以下开源工具的开发者:
- gprMax: 一款开源的电磁波仿真软件,广泛应用于探地雷达(GPR)建模与科研领域。
- readgssi: 一款开源的 Python 工具,用于读取和处理 GSSI 设备采集的探地雷达数据。
gprMax 和 readgssi 均遵循 GNU 通用公共许可证第 3 版(GPL-3.0)。该许可证由开源促进会(OSI)批准,属于强传染性的开源协议,已在全球及中国的开源社区中被广泛采用。
我们感谢这些工具的开发者为科学研究与开源生态系统所作出的贡献。
🧾 许可证
本项目根据[GNU通用公共许可证v3]获得许可(https://www.gnu.org/licenses/gpl-3.0.html)用于开源学术用途。
如果您希望将此软件用于商业目的,并且无法遵守GPL v3,则可以使用单独的商业许可证。
请通过以下方式联系我们[sunhuaifeng@email.sdu.edu.cn],获取商业许可证。
📝 参考文献
若您在研究中使用本代码,请引用以下文献:
@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} }
📫 联系方式
如有疑问,请联系:
孙怀凤 教授
山东大学土建与水利学院工程软件系
山东大学岩土与地下工程研究院
山东大学隧道工程灾变防控与智能建养全国重点实验室
📧 邮箱:sunhuaifeng@email.sdu.edu.cn
📮 地址:中国山东省济南市,山东大学,250061