文章目录
- 一、前言
- 二、创意收集
- 2.1 多任务学习
- 2.1.1 多任务学习的定义与优势
- 2.1.2 多任务学习的分类
- 2.2 边缘检测
- 2.2.1 基础理论
- 2.2.2 sobel代码介绍
- 2.2.3 canny代码介绍
- 三、《地震速度模型超分辨率的多任务学习》
- 3.1 M-RUDSR架构
- 3.2 详细介绍
- 3.3 实验设置
- 四、实验
- 五、小结
- 5.1 存在的疑问
- 5.2 下周安排
一、前言
上周对网络进行了修改,并跑了实验。
本周阅读论文《地震速度模型超分辨率的多任务学习》,继续完成实验,并学习了一些新的概念,如多任务学习、sobel算子。
二、创意收集
2.1 多任务学习
2017年介绍多任务学习概述的论文:《An Overview of Multi-Task Learning in Deep Neural Networks》,链接为:https://arxiv.org/pdf/1706.05098.pdf。
2.1.1 多任务学习的定义与优势
多任务学习(Multi-task learning,简称MTL)是一个在机器学习领域中备受关注的领域,它通过使用包含在相关任务的监督信号中的领域知识来改善泛化性能。多任务学习可以被视为一种归纳迁移机制,是迁移学习的一种,主要目标是利用隐含在多个相关任务的训练信号中的特定领域信息来提高泛化能力。它通过共享相关任务之间的表征,使模型能够更好地概括原始任务。多任务学习作为迁移学习的一个分支有着其自己独特的学习背景和应用。在给定几个相关联任务的输入数据和输出数据的情况下,多任务学习能够发挥任务之问的关系,同时学习多个模型。这种方法在图像识别、语音识别、自然语言处理等领域都有广泛的应用。
传统的机器学习方法主要是基于单任务的学习(Single-task Learning)模式进行学习,对于复杂的学习任务也可将其分解为多个独立的单任务进行学习,然后对学习得到的结果进行组合,得到最终的结果。
多任务学习的关键在于寻找任务之间的关系,若任务之间的关系衡量恰当,那不同任务之间能相互提供额外的有用信息,利用这些额外信息,可以训练出表现更好、更鲁棒的模型。反之,如果关系衡量不恰当,不仅不会引入额外的信息,反而会给任务本身引来噪声,模型学习效果不升反降。当单个任务的训练数据集不充分的时候,此时多任务学习的效果能够有比较明显的提升,这主要是因为单个任务无法通过自身的训练数据集得到关于数据分布的足够信息。如果有多个任务联合学习,那么这些任务将能从相关联的任务中得到额外的信息,因此学习效果将有显著的提升。
与单任务学习相比,主要有以下几个方面的优势:
- A.多任务学习通过挖掘任务之间的关系,能够得到额外的有用信息,大部分情况下都要比单任务学习的效果要好。在有标签样本比较少的情况下,单任务学习模型往往不能够学习得到足够的信息,表现较差,多任务学习能克服当前任务样本较少的缺点,从其他任务里获取有用信息,学习得到效果更好、更鲁棒的机器学习模型。
- B.多任务学习有更好的模型泛化能力,通过同时学习多个相关的任务,得到的共享模型能够直接应用到将来的某个相关联的任务上。
2.1.2 多任务学习的分类
深度学习中的两种MTL方法:
- (1). 基于硬约束的多任务学习方法,如下图所示:表示的是不同任务通过分享一些底部的层学习一些共有的低层次的特征,为了保证任务的独特性,每个任务在顶部拥有自己独特的层学习高层次的特征。这种方法底层共享的参数是完全相同的。
- (2). 基于软约束的多任务学习方法,如下图所示:该方法不要求底部的参数完全一样,而是对不同任务底部的参数进行正则化。相对于硬参数约束的多任务深度学习模型,软约束的多任务学习模型的约束更加宽松,当任务关系不是特别紧密的时候,有可能学习得到更好的结果。多任务深度学习模型需要同时学习一个适合多个任务的网络构架,一般来说模型具有更好的鲁棒性,不容易过拟合。软约束的多任务学习方法是隐藏层参数软共享,不同的任务使用不同的网络,但是不同任务的网络参数,采用正则化作为约束,与硬约束的多任务学习不同的是,底层的参数不一定完全一致,而是鼓励参数相似化。
为什么多任务学习有效:假定有两个相关的任务A和B,它们依赖共享隐藏层。
-
(1).隐式数据扩充(Implicit data augmentation):MTL有效地增加了用于训练模型的样本量。由于所有任务或多或少存在一些噪音,因此在针对某个任务A训练模型时,我们的目标是得到任务A的一个好的表示,忽略与数据相关的噪声。由于不同的任务具有不同的噪声模式,因此同时学习两个任务的模型可以得到一个更为泛化的表示。如果仅学习任务A要承担对任务A过拟合的风险,然而同时学习任务A和任务B则可以对噪声模式进行平均,可以使模型获得更好的表示。
-
(2).注意力机制(Attention focusing):如果一个任务非常嘈杂或数据量有限且维数很高,则模型很难区分相关和不相关特征。MTL可以帮助模型将注意力集中在重要的特征上,因为其他任务将为这些特征的相关性或不相关性提供更多证据。
-
(3).窃听(Eavesdropping):一些特征G很容易被任务B学习,但是对于其他任务A则很难学习。这可能是因为A以更复杂的方式与特征进行交互,或者是因为其他特征阻碍了模型学习G的能力。通过MTL,我们可以允许模型进行”窃听”,即通过任务B学习G。最简单的方法是通过”提示”,即直接训练模型来预测最重要的特征。
-
(4).表征偏置(Representation bias):MTL biases the model to prefer representations that other tasks also prefer。这也将有助于该模型将来泛化到新任务,因为在足够多的训练任务上表现良好的假设空间,只要它们来自相同环境,对于学习新任务也将表现良好。
-
(5).正则化(Regularization):MTL通过引入归纳偏置(inductive bias)作为正则化项。因此,它降低了过拟合的风险以及模型的Rademacher复杂度,即拟合随机噪声的能力。
2.2 边缘检测
2.2.1 基础理论
边缘检测大幅度减少了数据量,且剔除了不相关的信息,保留了图像重要的结构属性。边缘检测是图像处理和计算机视觉中的基本问题,目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。
从边缘检测的实现方式来看,可以分为基于搜索与基于零穿越的两大类。这两类边缘检测方法都是基于导数的,基于搜索的方法利用灰度的一阶或二阶导数来寻找边缘,而基于零穿越的方法则是在基于搜索的基础上,进一步求二阶导数来确定边缘的位置。
-
基于搜索的边缘检测方法:通过寻找图像一阶导数中的最大值和最小值来检测边界。这个过程通常是将边界定位在梯度最大的方向。具体来说,它首先计算边缘强度,通常使用一阶导数来表示,例如梯度模。然后,计算估计边缘的局部方向,通常使用梯度的方向。最后,利用此方向找到梯度模的最大值,从而确定边缘的位置。在实际应用中,代表算法如Sobel算子和Scharr算子,它们结合了高斯平滑和微分操作,因此在抗噪声能力方面表现优秀。尤其是当对效率要求较高,而对细纹理不太关注时,这类方法非常适用。(原理:边缘附近的像素值会有明显突变,即变化最大,也就是一阶导数最大。那么找到最大的一阶导数也就找到了像素变化最大的点,即边缘点。)
-
基于零穿越的边缘检测方法:通过寻找图像二阶导数的零穿越点来定位边缘。这通常涉及到Laplacian过零点或者非线性差分表示的过零点。这种方法利用二阶导数信息,可以更精确地定位边缘位置。该方法中,Laplacian算子是一个典型的代表。它通过计算图像的二阶导数,并找到其过零点来确定边缘的位置。这种方法对噪声较为敏感,在应用时通常需要结合其他技术来提高鲁棒性。(原理:在一阶导数的基础上再求一次导,那么此时零点就是变化最大的点,即边缘点。)
一些边缘检测算子优缺点概括如下:
算子 | 优点 | 缺点 |
---|---|---|
Sobel算子 | 对灰度渐变和噪声较多的图像处理效果较好,边缘定位效果不错 | 对噪声敏感,边缘可能不连续且较粗糙,可能会忽略一些细微的边缘 |
Roberts算子 | 对具有陡峭的低噪声的图像处理效果较好 | 可能在处理复杂图像或噪声较多的图像时表现不佳 |
Prewitt算子 | 实现简单,对噪声具有一定的抑制作用,能够准确地检测图像中的边缘 | 对边缘定位精度要求较高,如果图像中的边缘较为模糊或复杂,其检测结果可能会存在误差 |
Laplacian算子 | 对孤立点及线端的检测效果好 | 边缘方向信息丢失,对噪声敏感,易造成不连续的检测边缘 |
LOG算子(Laplacian of a Gaussian) | 结合了高斯平滑和拉普拉斯锐化,能在平滑噪声的同时检测边缘 | 对噪声敏感,很少用于检测边缘,用于判断边缘像素位于图像的明区或暗区 |
Canny算子 | 高准确性、抑制噪声、边缘连接、基于边缘梯度方向的非极大值抑制 | 高低阈值需要手动设定,可能将噪点误判为边界,在处理大规模图像时,可能需要更多的计算资源 |
2.2.2 sobel代码介绍
import cv2
import numpy as np img = cv2.imread('test.png', cv2.IMREAD_GRAYSCALE) # 定义 Sobel 滤波器卷积核
sobel_x = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], dtype=np.float32)
sobel_y = np.array([[-1, -2, -1], [0, 0, 0], [1, 2, 1]], dtype=np.float32) # 对图像应用 Sobel 滤波器
edge_x = cv2.filter2D(img, cv2.CV_32F, sobel_x)
edge_y = cv2.filter2D(img, cv2.CV_32F, sobel_y) # 计算边缘强度
edge_strength = cv2.magnitude(edge_x, edge_y) # 归一化到0-255范围
# 使用cv2.NORM_MINMAX归一化类型,将最小值映射到0,最大值映射到255
normalized_strength = cv2.normalize(edge_strength, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U) # 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Edge Strength', normalized_strength)
cv2.waitKey(0)
cv2.destroyAllWindows()
图片展示:
2.2.3 canny代码介绍
import cv2
import numpy as npimage = cv2.imread('test2.png', cv2.IMREAD_GRAYSCALE)# 应用Canny边缘检测
low_threshold = 9
high_threshold = 15
edges = cv2.Canny(image, low_threshold, high_threshold)# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Edge', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
使用canny边缘检测算子与sobel算子对图片进行了测试,结果显示确实canny效果好很多。
三、《地震速度模型超分辨率的多任务学习》
标题:Multitask Learning for Super-Resolution of Seismic Velocity Model—地震速度模型超分辨率的多任务学习
作者:Yinshuo Li , Jianyong Song , Wenkai Lu , Member, IEEE, Patrice Monkam ,and Yile Ao
期刊:IEEE地球科学与遥感学报,第59卷,第9期,2021年9月
简介:本文提出了一种基于深度学习的超分辨率(SR)方法,用于提高地震速度模型的分辨率。此外,地震速度模型的边缘图像在地震物理学中也有广泛的应用,因此采用具有硬参数共享的多任务学习(MTL)网络,以实现地震速度模型及其边缘图像的超分辨率。提出的多任务学习(MTL)模型被称为M-RUDSR,包括一个全局残差跳跃连接、一个Unet的编码器-解码器结构和一个密集的跳跃连接结构(其中“M”代表多任务,“R”代表残差,“U”代表U-Net,“D”代表密集)。此外,本文还提供了两个用于比较的网络,即RUDSR和M-RUDSR。RUDSR是M-RUDSR的单任务版本,在输入和输出层方面不同,而M-RUSR是M-RUDSR的简化版本,没有密集跳跃结构。与RUDSR和M-RUSR相比,M-RUDSR在各种模糊程度下都产生了最好的结果,并获得了更好的视觉细节。本文提出,FWI后跟随超分辨率可以帮助减少FWI在频谱的高频部分的计算成本,并实现更好的高频细节恢复。实验结果表明,M-RUDSR是一种实用的地震速度模型超分辨率恢复方法,可以有效地应用于真实的数据集。
Index terms-关键词:深度学习-Deep learning、边缘图像-edge image、多任务学习(MTL)-multitask learning、地震速度模型-seismic velocity model、超分辨率(SR)-super-resolution
创新点:
- A. 速度模型及其边缘图像的同步超分辨率:本文提出的M-RUDSR将边缘图像的SR视为地震速度模型SR的辅助任务。值得注意的是,由于地震速度模型和其边缘图像之间的高相关性,M-RUDSR模型采用了硬参数共享。M-RUDSR在每个任务中的性能均优于具有相同结构的单任务网络。
- B. 带跳跃连接的多类型结构:提出的 M-RUDSR 包括全局残差跳跃连接、编码器-解码器结构和 U-Net 的局部残差跳跃连接,以及密集跳跃连接结构。在这些结构的组合下,M-RUDSR 可以避免梯度消失问题,并快速获得真实的 SR 结果。
- C. 混合损失函数:M-RUDSR的损失函数由均方误差(MSE; L2-loss)和总变差(TV)组成。M-RUDSR的输入是由地震速度模型及其垂直和水平边缘组成的三通道数据。由于每个通道的输入单位不同,因此在均方误差中添加了能量参数。此外,TV范数函数可以防止噪声和波动的引入。
- D.提高FWI的效率和精度:提出的SR方法称为M-RUDSR,可以改善FWI后地震速度模型的分辨率,有助于减少FWI的计算成本。具体来说,结果表明,FWI后跟随SR不仅可以帮助减少高频部分FWI的计算成本,还可以实现更好的高频细节恢复。
3.1 M-RUDSR架构
M-RUDSR的架构如图1所示,其中多任务学习通过硬参数共享实现。网络完全由卷积层组成,使用“SAME”卷积方法,在普通卷积层之后,特征图的大小没有改变。此外,通过“stride”参数,下采样和上采样层调整输出特征图的大小。下采样层由一个卷积层实现,其“stride”参数为2。因此,经过这一层处理的特征图大小从 h × w × c i n h × w × c _{in} h×w×cin变为 h / 2 × w / 2 × c o u t h/2 × w/2 × c_{out} h/2×w/2×cout,其中h和w分别是高度和宽度, c i n c_{in} cin和 c o u t c_{out} cout是通道数。同样地,上采样层由“stride”参数为2的转置卷积层实现,因此特征图的大小从 h × w × c i n h × w × c _{in} h×w×cin变为 h / 2 × w / 2 × c o u t h/2 × w/2 × c_{out} h/2×w/2×cout。由于降采样和上采样层是对称的,输入图像的大小可以是任意的。此外,网络的输入和输出是尺寸相同的图像 h × w × c h × w × c h×w×c,其中 h h h、 w w w和 c c c分别是高度、宽度和通道数。
- (1) MTL与硬参数共享:MTL是机器学习中一个有前景的领域,它共享多个学习任务中包含的有用信息,以帮助更准确地预测每个任务的结果。完整的边界信息存储在边缘图像可以辅助原始图像的超分辨率任务。由于地震速度模型及其边缘图像高度相关,因此硬参数共享更有效。边缘图像是原始图像通过Sobel算子进行卷积的结果,因此将共享层的比例扩展到极致,即所有隐藏层都是共享层,而输出层是特定于任务的层。如图1(a)所示,M-RUDSR的输入是一个具有三个通道的特征,包括垂直(y)和水平(x)方向上的初始背景速度模型及其边缘图像。 所有卷积层都以“SAME”模式工作,而稠密结构之外的层使用3×3卷积核。在每个隐藏层中都使用Leaky-ReLU,除了密集部分。由于高度相关,初始背景速度模型及其边缘图像在所有隐藏层中共享参数。因此,输出层是任务特定。
- (2) 全局残差跳跃结构:残差学习可以通过跳跃连接来实现,该连接将某一层的输入特征绕过到另一层。在SISR-图像超分辨率重建问题中,目标高分辨率(HR)图像和输入低分辨率(LR)图像携带大量相似信息。因此,可以使用全局残差学习来让网络学习HR图像和LR图像之间的差异。
- (3) 编码-解码和局部残差跳跃连接:编码-解码结构受到一种流行的分割网络U-Net 的启发,它包含两个部分:特征提取和上采样。特征提取是一个降尺度的过程,其中特征的长度和宽度减半,通道的数量通常翻倍。上采样操作与降尺度对称,其中特征图的长度和宽度加倍,通道的数量通常减半。每个上采样操作后都跟随着局部残差跳跃连接。在局部残差跳跃连接中,特征图不是直接相加,而是进行连接(concatenated),以实现特征图的丰富组合。这样的结构使得反向传播信号能够直接传递到底层,可以缓解梯度消失的问题。此外,这种直接连接结构有助于产生清晰的图像。
- (4) 密集跳跃连接:DenseNet 首次提出了密集跳跃连接,其中特征图被串联起来。密集跳跃连接基于块单元。图1(c)展示了块的结构。每个块包含三个部分,即用于参数减少的1×1卷积层(瓶颈层),用于非线性变换的ReLU激活函数,以及用于特征提取的3×3卷积层。这一部分的所有块都由密集跳跃连接覆盖,如图1(b)所示。
3.2 详细介绍
- (1) 流程:框架的流程如图2所示。训练过程从给定的高分辨率(HR)地震速度模型开始。利用HR地震速度模型,通过Sobel算子在垂直(y)和水平(x)方向上生成边缘图像。然后,将HR地震速度模型及其边缘图像组合成三个通道的HR数据。低分辨率(LR)地震速度模型是从相应的HR地震速度模型中利用平滑生成的。同样地,将LR地震速度模型及其边缘图像组合成三个通道的LR数据。然后,将LR数据切割成补丁以形成所提出网络的输入,得到的结果是恢复的SR补丁。HR数据也被切割成代表所提出网络目标的补丁。在输出SR补丁和目标HR补丁之间应用均方误差(MSE)以及TV正则化,然后使用Adam优化器。对于测试过程,操作从LR地震速度模型开始,而SR地震速度模型及其边缘图像是通过补丁融合和通道分离获得的。
- (2) 损失函数与优化器:本文提出的多任务深度网络的损失函数由均方误差(mse)(L2损失)和TV组成,它们的表达式如下:
l o s s ( Φ ) = m s e ( Φ ) + T V ( Φ ) m s e ( Φ ) = 1 N M ∑ k = 1 3 α k ∑ i = 1 N ∑ j = 1 M ( f ( I L , Φ ) i , j , k − I H i , j , k ) 2 T V ( Φ ) = β 1 1 K 1 ∑ i = 1 N ∑ j = 2 M ∣ f ( I L , Φ ) i , j , 1 − f ( I L , Φ ) i , j − 1 , 1 ∣ + β 2 1 K 2 ∑ i = 2 N ∑ j = 1 M ∣ f ( I L , Φ ) i , j , 1 − f ( I L , Φ ) i − 1 , j , 1 ∣ w h e r e K 1 = N ( M − 1 ) , K 2 = ( N − 1 ) M (1) \begin{aligned} \mathbf{loss}(\Phi) &= \mathbf{mse}(\Phi) + \mathbf{TV}(\Phi) \\ \mathbf{mse}(\Phi) &= \frac{1}{NM} \sum^{3}_{k=1} \alpha_{k} \sum^{N}_{i=1} \sum^{M}_{j=1}\big(f(I_{L},\Phi)^{i,j,k} - I_{H}^{i,j,k}\big)^2 \\ \mathbf{TV}(\Phi) &= \beta_{1} \frac{1}{K_{1}} \sum^{N}_{i=1} \sum^{M}_{j=2} \vert f(I_{L}, \Phi)^{i,j,1} - f(I_{L}, \Phi)^{i,j-1,1} \vert + \beta_{2} \frac{1}{K_{2}} \sum^{N}_{i=2} \sum^{M}_{j=1} \vert f(I_{L}, \Phi)^{i,j,1} - f(I_{L}, \Phi)^{i-1,j,1} \vert \\ where K_1 &= N(M-1), K_2 = (N-1)M \tag{1} \end{aligned} loss(Φ)mse(Φ)TV(Φ)whereK1=mse(Φ)+TV(Φ)=NM1k=1∑3αki=1∑Nj=1∑M(f(IL,Φ)i,j,k−IHi,j,k)2=β1K11i=1∑Nj=2∑M∣f(IL,Φ)i,j,1−f(IL,Φ)i,j−1,1∣+β2K21i=2∑Nj=1∑M∣f(IL,Φ)i,j,1−f(IL,Φ)i−1,j,1∣=N(M−1),K2=(N−1)M(1)
其中, f ( I L , Φ ) f(I_L,\Phi) f(IL,Φ)表示具有参数的模型输出 S R SR SR图像, I H I_H IH表示目标HR图像, i i i和 j j j是垂直和水平方向采样点的位置, β 1 β_1 β1、 β 2 β_2 β2和 α k α_k αk是系数。使用 L 2 L_2 L2损失函数,可以在很大程度上规避过拟合,而TV范数函数可以帮助防止噪声和波动的引入。
值得一提的是,(1)中的αk是能量系数,它们用于在损失函数的层面上协调多任务深度学习过程,满足以下关系:
∑ k = 1 3 α k = 1 α k l 1 ( I H − I L ) ∣ c = k ≡ C , k = 1 , 2 , 3 (2) \begin{aligned} \sum^{3}_{k=1} \alpha_{k} &=1 \\ \alpha_{k}l_{1}(I_H - I_L) \vert_{c=k} & \equiv C ,k=1,2,3 \tag{2} \end{aligned} k=1∑3αkαkl1(IH−IL)∣c=k=1≡C,k=1,2,3(2)
其中,1代表L1范数函数,表示图像的能量。
随后,根据(1)中所示的损失函数的偏导数,采用Adam来更新权重。在训练过程中,采用了学习率衰减方法,其表达式为初始学习率(η0)、衰减周期(T)和衰减率(α)。训练过程中的实际学习率表达为:
η i = α i η 0 (3) \eta_{i} = \alpha^{i} \eta_{0} \tag{3} ηi=αiη0(3)
其中,i代表学习率的衰减次数。
3.3 实验设置
本文从他们的研究组织(Easy-Signal Laboratory)的私人数据库中收集了120个尺寸为1000×1000的合成地震速度模型。如图3所示,这些随机生成的合成数据充满了倾斜折叠地层和断层信息,可以帮助深度学习模型适应各种复杂的真实数据。这些数据被随机划分为一个容量为100的训练集和一个容量为20的测试集。然后,根据图2所示的流程进行训练实验。在裁剪过程中,补丁的大小为256×256,而步幅为128,选择峰值信噪比(PSNR)和结构相似性(SSIM)来评估处理结果。
在训练过程中,通过读取所有训练数据,并将每个LR图像在每个模糊级别下与HR图像绑定,形成一个训练样本。由于在多个尺度上训练的模型在所训练的尺度上表现良好,因此同时训练模型时使用多个模糊级别的数据。根据公式(2),计算了训练数据的l1范数,并将 α 1 ∼ 3 α_{1∼3} α1∼3分别设为0.31、0.21和0.48。此外,将β1和β2设为0.1,并使用衰减学习率,初始学习率为0.0002,衰减周期为0.5个训练周期,衰减率为0.985。损失和学习率曲线如图4所示。在多任务网络中采用混合损失函数,与通常网络中的损失函数不同。因此,在图4(a)中仅比较了M-RUDSR和M-RUSR在相同衰减学习率下的损失曲线,如图4(b)所示。由于每个样本的损失不同,损失曲线每个周期更新一次以获得平滑曲线,而学习率每个周期衰减大约两次。衰减的学习率使得损失曲线迅速下降并最终稳定。M-RUDSR的损失曲线在前20个周期中波动,而M-RUSR始终平滑,表明密集的跳跃连接会增加训练的难度。此外,M-RUDSR的最终训练效果优于M-RUSR,证明了密集的跳跃连接可以帮助提高网络性能。
分别使用了平均滤波器大小为17、25、33和41来测试M-RUDSR。如图5所示,M-RUDSR在所有种类的模糊水平下恢复了地震速度模型的断层信息和纹理细节。多任务学习模型可以从不明显的边缘图像中提取清晰的边缘纹理,如图6所示。在相同的颜色范围内,具有高模糊级别的LR边缘图像几乎是不可见的。然而,提出的M-RUDSR可以高效地从这些不可见的图像中恢复完整的边缘信息。
与采样相比,时间滤波是从地震速度模型中获取初始背景速度模型的更合适的方法。因此,在本文中,我们利用时间域中的平均滤波来获得初始背景速度模型。VDSR 是一种经典的采样SR方法,它基于预上采样。由于其输入和输出大小相同,VDSR被用作基准模型。
表I显示了在模糊级别从17×17到41×41的范围内的平均PSNR/SSIM。这些PSNR/SSIM值的比较表明,M-RUDSR在地震速度模型及其边缘图像(地质模型)的SR中产生了最佳结果。此外,M-RUSR是M-RUDSR的简化版本,没有密集的跳跃连接结构,具有最低的时间成本。因此,密集的跳跃连接结构和多任务学习都可以改善SR的结果,尽管密集的跳跃连接结构会增加时间成本。此外,值得注意的是,M-RUDSR、M-RUSR和RUDSR(M-RUDSR的单任务版本)的计算成本明显低于VDSR。在滤波器大小为41×41时的不同方法性能分析(见图7)表明,M-RUDSR在速度和地质模型中实现了最准确的结果。图8中显示的图像重建误差图表明,M-RUDSR的恢复结果最接近HR。此外,值得注意的是,VDSR和RUDSR是分别针对地震速度模型和边缘图像进行训练的。
另外,提出的 M-RUDSR 在 Marmousi 合成数据集、中国石油西南油气田四川盆地的一条二维地震测线的真实初始速度模型上进行了评估。
四、实验
本周对上周的一些想法进行了验证,实验基本设置为:data_set = CurveVel A ,train_size = 5000,val_size = 500,test_size = 1000,epoch = 200,batch_size = 20,learning_rate = 0.01。
- 存在的问题:
- 边缘结构不够清晰;
- 随着地下深度加深,反演效果较差(这一部分数据较少,网络学习不够);
实验结果如下表:
ModelName | MSE | MAE | UQI | LPIPS |
---|---|---|---|---|
ABA-FWI | 0.006015 | 0.036651 | 0.850646 | 0.045692 |
UNet-200epoch | 0.004831 | 0.031535 | 0.865028 | 0.029023 |
UNet-150epoch | 0.005344 | 0.034202 | 0.862208 | 0.03136 |
UNet-120epoch | 0.004869 | 0.031962 | 0.863848 | 0.031504 |
五、小结
5.1 存在的疑问
-
- 从实验的结果来看,速度图像的边缘信息不够明显,计划选择一种合适的方式更加关注边缘。
-
- loss下降不是特别平滑,有一些波动。看了一些贴子,有些回答使用Adam这个震荡是正常的,后续可以尝试降低学习率(衰减学习率)。
-
- 关于网络的设计:跳跃连接、可变形卷积、UNet架构(是否要降低到1024通道)。
5.2 下周安排
-
- 看一篇论文;
-
- 整理代码文件;