初代VelocityGAN
------源自:VelocityGAN: Subsurface Velocity Image Estimation Using Conditional Adversarial Networks
------2019 IEEE Winter Conference on Applications of Computer Vision
快速检索:条件GAN;编解码结构
侧重VelocityGAN的有效性和效率
-
痛点:
传统的声波与弹性波波形反演 (AEWI) 是地球科学中重建地下速度图像的重要方法,但它面临两大核心挑战:
- 算法局限性: 现有的物理驱动方法属于典型的非线性、病态反演问题。它们极易陷入局部极小值,并遭受周期跳跃的困扰,导致成像不准确。
- 计算昂贵: 物理驱动方法需要迭代计算,每一步都涉及正向和反向波场的计算以及非线性线搜索,导致计算成本极高,难以满足实时成像的需求。
-
创新点:
- 范式转换: 首次将条件生成对抗网络应用于 AEWI 问题。它将传统的物理反演过程转化为图像到图像(Image-to-Image)的映射问题,从而规避了物理方法中的局部极小值和高昂计算成本。
- 改进的网络结构: 提出了一种改进的编码器-解码器结构作为生成器,专门针对地震波形数据与速度图像之间的映射关系进行了优化。
- 混合损失函数: 为了提高成像质量,论文提出结合平均绝对误差(MAE)和均方误差(MSE)作为生成器的内容损失。实验证明,这种组合能同时捕捉地质层界面(MAE擅长)和地质断层/高波速区域(MSE擅长)。
-
具体实现:
- VelocityGAN 框架由生成器和判别器两部分组成:
- 生成器 (Generator):
- 结构: 采用改进的编码器-解码器结构。
- 输入: 原始地震波形数据(32个接收器,时间序列长度1000,6个通道)。
- 输出: 对应的速度图像(100x100 或 150x100 像素)。
- 特征提取: 使用了7个卷积层(k×1核)提取波形特征,随后通过步长为2的卷积进行编码,最后通过转置卷积进行解码和上采样。
- 判别器 (Discriminator):基于 CNN 架构,包含5个卷积块、全局平均池化层和全连接层,用于区分真实速度图像和生成的伪图像。
- 生成器 (Generator):
- 损失函数:
- 判别器:带有梯度惩罚的Wasserstein损失。
- 生成器: 对抗损失(判别器对生成数据的期望打分越小越好)加内容损失(mae+mse),结合MAE和MSE的VelocityGAN可以在地质层界面和断层的质量之间实现更好的权衡。
- VelocityGAN 框架由生成器和判别器两部分组成:
-
基线模型:
- 物理驱动方法: AEWI-Pre(基于波能预处理)、AEWI-MTV(基于改进全变分正则化)
- 深度学习基线: FCN(全卷积网络)、U-Net、modifiedFCN(针对FWI修改的FCN)
-
实验设置:
- 数据集构建:构建了两个数据集,类似OpenFWI的Flat和Curve
- 第一个是平坦类STData:共55000,速度模型尺寸为100×100100 \times 100100×100,具有不同的倾斜角、层厚度和层速度
- 第二个是曲线类CurvedData:共50000,速度模型尺寸为150×100150 \times 100150×100,包含更多地质层
- 在两个数据集中,速度模型包括了一个小的地质断层
- 3炮,32个接收器
- 中心频率为50 Hz的Ricker子波作为震源时间函数,并结合带完美匹配分层吸收边界条件的错位网格有限差分法,生成二维合成地震反射数据
- 输入大小为(32,1000,6)
- 对于每个数据集,均随机选择5000测试,5000验证,剩余的图像作为训练集
- 模型的输入被归一化为[-1,1]
- batchsize为50
- 遵循WGAN的策略,对判别器进行5次梯度下降迭代,然后对生成器进行1次迭代
- 学习率调整策略:在前120个 epoch 中,学习率设置为 10−410^{-4}10−4。经过前120个 epoch 后,接下来的170个 epoch 中将学习率线性衰减至0
- 评价指标:MAE、MSE
- 数据集构建:构建了两个数据集,类似OpenFWI的Flat和Curve
-
实验结果:从定量指标、效果图、剖面图进行分析,证明了VelocityGAN在捕捉全局和局部地质特征方面,能够对速度图像进行更精确的重建。
2020版本VelocityGAN
------源自:Data-Driven Seismic Waveform Inversion: A Study on the Robustness and Generalization
------TGRS,2020
快速检索:条件GAN;编解码结构
侧重VelocityGAN的鲁棒性和泛化性(引入了迁移学习)
- 痛点:
- 现有的基于物理驱动的波形反演方法存在病态性和周期跳跃的问题,且计算成本较高。
- 大多数深度学习框架都存在泛化能力和过拟合的问题,即泛化性和鲁棒性。
作者开发了一种实时数据驱动技术,称之为VelocityGAN,以准确地重建地下速度。
-
创新点:
- VelocityGAN将物理驱动方法的逆过程转化为一个图像映射问题。因此,它能够缓解局部极小值和计算效率低下的问题。
- 建立在GAN结构上,该结构由生成器和判别器组成:
- 生成器(Generator)是一个编码器-解码器结构,将原始地震波形数据映射到速度图像。
- 判别器(Discriminator)是一个卷积神经网络(CNN),旨在对真实速度图像和假速度图像进行分类。VelocityGAN通过判别器直接从数据中学习正则化项,并进一步将学习到的正则化项施加给生成器。
- 将平均绝对误差(MAE)损失与均方误差(MSE)损失相结合,以提高速度图像的质量。
-
具体实现:
- 生成器:
- 编码器:
- 为了提取每个接收机的信号特征,首先部署了九个具有k×1k \times 1k×1核的卷积层。每个卷积层后面是BN和LeakyReLU层。
- 高度维度减少到32后,添加3×33 \times 33×3、步长为2的卷积核,来编码整个提取的特征。
- 在编码器的最后一层,使用8×88 \times 88×8卷积核来消除空间信息的影响。
- 对于解码器来说,它由五个upconv块、一个卷积层和一个中心裁剪层组成。
- 每个upconv块由转置卷积层、BN和激活函数层组成。应用转置卷积层来增加图像的高度和宽度维度并解码提取的特征。
- 卷积层旨在将特征映射到与地面真相标签相同的维度。
- 中心裁剪层用于将特征地图裁剪到所需的维度。
- 为了将输出的值限制在特定范围内,中心裁剪层后面跟随一个Tanh层。
- 编码器:
- 判别器:它由五个卷积块、一个全局平均池层和全连接层组成。
- 每个卷积块涉及卷积层、BatchNormalization层、LeakyReLU层和MaxPooling层的组合。
- 作者在判别器中使用了 PatchGAN(一种经典的GAN架构)。它的核心功能不是判断整张图片是真是假,而是专门用来捕捉图像的局部风格统计信息(例如纹理、边缘细节、局部结构)。
- 作者将 PatchGAN 的"观察窗口"大小设定为 4x4(通常指像素块)。判别器会扫描整张图像的所有局部区域,计算每个小区域的损失值,然后取平均值作为最终的判别结果。
- 作者指出了地震速度图(Velocity Maps)数据集的特性:全局差异巨大。不同的地质模型,其地层的倾斜角度、厚度、速度值可能完全不同。如果用一个"全局判别器"(GlobalGAN)去判断整张图的真假,可能会因为全局结构变化太大而难以收敛。
- 选择 PatchGAN 的核心逻辑:虽然全局不一样,但局部的物理规律是通用的。例如,地质断层(Faults)和地层界面(Interfaces)在局部上通常表现为速度的剧烈变化(即边缘/梯度)。PatchGAN 只需要学会识别"这里有没有断层"、"这里是不是边缘",而不需要管整张图的地层是怎么倾斜的。
- 生成器:
-
基线模型:
- FWI-MTV:在FWI优化过程中,采用修改后的总变分正则化(MTV)作为正则化项。MTV旨在保留分段常数结构中的锐利界面。
- FWI-MTV (Plus):这是 FWI-MTV 的增强版。将源点数量增加到 32 个。随着接收器获取的信息增多,重建结果的精度往往会得到提升。
- Generator:VelocityGAN 的生成器。采用全卷积层作为编码器,并将转置卷积层与卷积层结合作为解码器。
-
实验设置
- 数据集构建:构建了一个大数据集验证VelocityGAN的有效性,以及两个小数据集验证泛化性
- CurvedData:50000对地震模型,速度模型尺寸为150×100150 \times 100150×100;生成的速度图像随不同的倾斜角度、层厚度和层速度而变化;所有速度图像均包含一条断层
- 2-Fault CurvedData:断层的数量调整为两个,数据量1400
- 0-Fault CurvedData:断层的数量调整为零个,数据量700
- 验证时采用的盐数据:
- SEG/EAGE数据集包含 1700 张由 Yang 和 Ma [50] 生成的模拟速度图,以及从原始 3D SEG/EAGE 盐穹速度模型不同位置提取的 140 张独特的 2D 速度图。
- 这1700个模拟模型的速度值范围为2000至4500 m/s。相比之下,140个盐层速度模型的值范围为1500至4482 m/s。
- 作者生成的地震数据与Yang和Ma [50]的方法类似。对于每张速度图,29个震源和301个接收器均匀分布于地表。采用25 Hz的Ricker小波作为震源函数。炮集的模拟使用了与先前测试相同的地震建模工具。
- 随机选择20%的数据作为测试集,10%的数据作为验证集来调整超参数,其余为训练集
- 输入被标准化为(-1 -1)
- Batchsize为50
- 遵循Wasserstein GAN的优化策略,对判别器进行5次梯度下降迭代,然后对生成器进行1次迭代
- 在第一个epoch的学习率设置为0.0001,在剩余epoch将学习率线性衰减为0
- 评价指标:Mean Absolute Error (MAE)、Mean Relative Error (rel)、Mean log10 error(log10)、The Percentage of mim_imi (acc.)
- 数据集构建:构建了一个大数据集验证VelocityGAN的有效性,以及两个小数据集验证泛化性
-
实验:
- 采用MAE损失的VelocityGAN在处理地质层边界方面表现良好;然而,它忽略了地质断层和高波速区域。采用MSE损失的VelocityGAN虽能生成地质断层,但地质层的边界却较为模糊。而结合MAE与MSE损失的VelocityGAN,则能在地质层界面质量与断层识别之间取得更好的平衡。
- 在相同的损失函数和网络结构下,采用MAE损失的VelocityGAN虽然在某些特定区域表现模糊,但仍能揭示出正确的地质断层。相比之下,采用MAE损失的生成器则完全忽略了地质断层。这一现象进一步证明了对抗训练策略的有效性。
- 泛化性实验:
- 痛点:本文的数据来源都是通过计算机模拟(合成)生成的。无论怎么切分这些模拟数据,训练集和验证集本质上都遵循完全相同的物理规则和统计分布。这种验证方式无法检测出模型在面对真实世界复杂情况(例如地质结构的微小差异、噪声等)时的鲁棒性。模型可能会在一个分布上表现完美,换一个稍微不同的分布就彻底失效。
- 为了解决上述问题,作者设计了专门的实验(即0-Fault 和 2-Fault 实验)。具体做法:模型在一个特定的数据集(例如包含1个断层的数据集)上训练,然后在结构不同(例如包含0个或2个断层)的全新数据集上测试。目的是人为制造"分布差异",模拟模型在真实勘探中遇到未知地质结构的情况,从而真正检验模型的泛化能力。
- 实验结果:
- 表中指标可以看出:
- FWI-MTV(plus)在0-Fault CurvedData中获得了比VelocityGAN-TF更好的结果;对于2-Fault CurvedData,VelocityGAN-TF实现了所有这些模型中最好的量化结果。作者将原因归因于训练数据集的大小。
- 结论:数据驱动方法的性能取决于训练集的大小。
- 从定性效果图中(0-Fault CurvedData)可以看出:
- 完全基于0-Fault CurvedData训练的VelocityGAN在这些模型中表现最差。这是因为0-Fault CurvedData的数据量不足以训练出优质的深度神经网络。
- 然而,VelocityGAN-org和VelocityGAN-TF的视觉效果远优于FWI-MTV和FWI-MTV (plus)。
- 对于物理驱动的方法,尤其是FWI-MTV,在深部区域和高速区存在大量振荡(图8)。数据驱动方法生成的地质界面和断层更为清晰锐利。这可能是因为我们仅计算了物理驱动方法中选定四张图像的平均损失;定量结果可能会产生误导。
- 与 VelocityGAN-TF 相比,我们可以清楚地观察到 VelocityGAN-org 的反演结果仍包含部分地质断层。这一比较进一步证实了迁移学习策略能够有效地对深度神经网络进行微调。
- 从定性效果图中(2-Fault CurvedData)可以看出:
- VelocityGAN-TF 的表现略优于 VelocityGAN-org,同时远优于包括 FWI-MTV (plus) 在内的其他基线模型。
- 在0-Fault CurvedData和2-Fault CurvedData中,VelocityGAN-org在一定程度上展现了其泛化能力。例如,当两条断层之间的距离相对较大时(图9的前四行),VelocityGAN-org和VelocityGAN-TF能够正确地定位两条断层,尽管其中部分定位结果较为模糊不清。当距离相对较近时(图9的第5、6行),VelocityGAN-org和VelocityGAN-TF无法正确重建断层。在此条件下,基于物理原理的方法FWI-MTV和FWI-MTV (plus) 同样表现不佳。
- 结论:作者提出的VelocityGAN在一定程度上具备泛化能力。例如,仅基于单断层速度图像训练的VelocityGAN,也能输出包含零个或两个断层的速度图像。借助迁移学习策略,VelocityGAN可进一步提升其泛化效果,其表现可与物理驱动的方法相媲美。
- 表中指标可以看出:
- 在更贴近实际的测试集上对其进行验证:
- 选取SEG/EAGE 盐岩数据作为测试数据(与 [50 Deep-learning inversion: A next-generation seismic velocity model building method] 中所用数据相同),因为盐穹速度的准确性对盐下区域至关重要(图10)。另一方面,盐穹反演对传统地震反演而言一直是个极具挑战性的难题 [47 Full-waveform inversion for salt: A coming of age]。
- 由于和之前数据集分布不同,无法直接将基于 CurvedData 训练得到的参数作为初始权重使用。模型是在140张盐速图像上重新训练的。随机选择130个速度图作为训练集,并选择10个速度图作为测试集。
- 将地震数据和速度模型均归一化到(-1 ∼ 1)的范围。初始学习率设为10−410^{-4}10−4,并在512个epoch 内线性衰减至0。
- 实验结果:图11所示,VelocityGAN模型通过与真实数据进行对比,成功捕捉到了高速盐穹的特征。此外,尽管存在部分信息缺失,VelocityGAN模型仍能准确揭示大部分速度层。这些结果证明,将VelocityGAN模型应用于真实世界数据具有广阔的前景。