2023 7.17~7.23 周报 (最近读的论文方法论分析)

news2024/11/24 11:09:07

0 上周回顾

上周完成了RTM的研究学习, 完成了进一步阅读论文所需的知识储备.
同时从代码层面深度解析了正演和RTM存在的关系, 发掘了很多富有参考意义的信息.

1 本周计划

深度剖析论文《Deep-Learning Full-Waveform Inversion Using Seismic Migration Images》的方法体系, 构思复现的可能 (但是不一定真要去复现), 探索RTM在实际DL-FWI中的应用潜力.

2 完成情况

简单来说, 这篇的论文主要分为两大部分: 首先是准备背景速度, 其次是训练迭代网络. 原文中提供了如下的伪代码来描述:
在这里插入图片描述

2.1 算法流程: 准备背景速度

输入到算法中的变量有两个, 一个是观测数据 ( P obs \mathbf{P}_{\text{obs}} Pobs), 一个是偏移速度模型 m mig \mathbf{m}_{\text{mig}} mmig, 其实就是初始速度模型. 这个初始模型是基于目标速度模型的速度变化生成的一个线性的增长的层次图像.

For example, our approach uses the linearly increasing velocity model along the depth direction from 1500 to 2500 m/s as the migration velocity model in the following experiments. As a result, our proposed approach does not rely on a good starting (migration) model.

alt

Fig1. 论文中给出的观测数据图像 (实际上就是共源炮集地震数据)

在这里插入图片描述

Fig2. 偏移速度模型, 或者说初始速度模型

然后作者基于这个初始速度模型作为基础的背景, 以及观测信息提供的地震资料得到RTM图像, 因为观察信息有15个炮集, 因此这里RTM也有15张. 这里对应伪代码中的 “Compute the prestack RTM image I ( m mig ) \mathbf{I}(\mathbf{m}_{\text{mig}}) I(mmig)

而后, 将15个张RTM图像和初始速度模型 “按照通道维度拼接在一起”, 形成通道数为16的图像集 (因为RTM和速度模型的维度一致, 可以这么做), 输入到已经训练完备的网络 Γ θ ( ⋅ ) \Gamma_\theta(·) Γθ()中, 这个网络如下图:

在这里插入图片描述

Fig3. 论文中提到的第一个类U-Net网络结构

显而易见, 这个网络用的U-Net结构. 因为这里输入和输出的图像尺寸是一致的, 而且大小变化都是显而易见的x2和÷2的变化, 因此作者没有必要表明尺寸参数, 一定不要误以为这里都是针对向量的操作. (因为我最开始拿到这篇论文一瞟的时候, 我 就是这么认为的). 这其实算是表现了网络的灵活性.
这个网络有些残差网络的味道, 最后在输出1通道的图像后, 他将初始速度模型 m mig \mathbf{m}_{\text{mig}} mmig和这个图像进行了求和, 最终得到了背景速度 m back \mathbf{m}_{\text{back}} mback. 这就是伪代码里面的 m back = Γ θ [ m back , I ( m mig ) ] \mathbf{m}_{\text{back}}=\Gamma_{\theta}[\mathbf{m}_{\text{back}}, \mathbf{I}(\mathbf{m}_{\text{mig}})] mback=Γθ[mback,I(mmig)]的含义.

其实想一想也就说得通了, 作者为什么在论文多称这个初始速度模型为 “Migration velocity model” 而不是 “Initial velocity model”. 因为这个图像本身没有速度模型的基本结构 (Fig2 展示了它是一个通用图像), 而是需要与另一个网络的输出求和才能得到目标速度模型, 因此自身更像是一个 “偏移量”, 需要与一个 “基准” 结合才能得到目标.

那么这个网络 Γ θ ( ⋅ ) \Gamma_\theta(·) Γθ()是怎么训练呢? 通过阅读, 我感觉应该是在算法启动之前就要训练好. 原文的公式15给出了计算损失函数的公式:
L 3 = 1 2 ∥ m back  − S m true  ∥ 2 2 , m back  = Γ θ [ m mig  , I ( m mig  ) ] L_{3}=\frac{1}{2}\left\|\mathbf{m}_{\text {back }}-\mathbf{S m}_{\text {true }}\right\|_{2}^{2}, \mathbf{m}_{\text {back }}=\Gamma_{\theta}\left[\mathbf{m}_{\text {mig }}, \mathbf{I}\left(\mathbf{m}_{\text {mig }}\right)\right] L3=21mback Smtrue 22,mback =Γθ[mmig ,I(mmig )]
可见, 用的是MSE, 但是这个 S \mathbf{S} S是什么呢? 这是一个高斯算子, 用来平滑的. 怎么平滑呢?

S \mathbf{S} S is a smoothed operator to remove the high wavenumber component of the true velocity model. We apply a Gaussian smoothing filter to the true velocity model. There are a total of 30 times repeated filter applications. The standard deviation of the Gaussian function is 5. The window size of the filter is 5 × 5. It has to be noted that the principle of smoothing the velocity model is that we should remove the high wavenumber component and the resulting background model can guarantee correct kinematic behavior.

S m true \mathbf{S m}_{\text {true}} Smtrue含义就是用了一个标准差为5, 滤波器窗口为5×5的高斯算子 S \mathbf{S } S作用于标准的速度模型 m true \mathbf{m}_{\text {true}} mtrue, 并且反复作用30次.
在担心这样会不会使得速度模型糊得太离谱, 于是我自己试了下, 大概就是这种差距↓ 感觉…还行√
在这里插入图片描述

Fig4. 左图为原速度模型, 右图为高斯平滑后的目标

简单来说, 我们第一个网络 Γ θ \Gamma_{\theta} Γθ的学习目标是得到比较模糊的基础速度背景:

  • 是一个从 m mig \mathbf{m}_{\text {mig}} mmig m back \mathbf{m}_{\text {back}} mback 的改变
  • 是从一个"投至四海皆准"的通用的初始速度 (Fig2) 到 与 真实速度模型有着类似运动学构造的模糊地层结构 (Fig4 右)

所以这个网络 Γ θ \Gamma_{\theta} Γθ的目标是找方向, 而不是一锤定音的东西.

得到 m back \mathbf{m}_{\text {back}} mback之后, 紧接着基于这个背景, 再度进行一次RTM得到 I i ( m back ) \mathbf{I}_i(\mathbf{m}_{\text{back}}) Ii(mback), 因为观察数据有15个通道, 因此这里 I i ( m back ) \mathbf{I}_i(\mathbf{m}_{\text{back}}) Ii(mback)也有15个.
这里我们讨论的都是叠前RTM图像, 因此这些图像可以进行叠加, 这里作者的叠加手段就是将这里的15张图像全部加在一起, 从而得到叠加的RTM图像:
I stack  = ∑ i = 1 n s I i \mathbf{I}_{\text {stack }}=\sum_{i=1}^{n s} \mathbf{I}_{i} Istack =i=1nsIi
这里就囊括了伪代码中的如下几步:
在这里插入图片描述

2.2 算法流程: 迭代神经网络

通过第一步的操作, 我们现在手上有那些已知的关键信息?

  • 观察信息 P obs \mathbf{P}_{\text{obs}} Pobs (已用不上)
  • 初始速度模型 m mig \mathbf{m}_{\text{mig}} mmig (已用不上)
  • I 0 ( m back ) \mathbf{I}_0(\mathbf{m}_{\text{back}}) I0(mback) I 14 ( m back ) \mathbf{I}_{14}(\mathbf{m}_{\text{back}}) I14(mback)
  • I stack ( m back ) \mathbf{I}_{\text{stack}}(\mathbf{m}_{\text{back}}) Istack(mback)
  • m 0 \mathbf{m}_0 m0 (其实就是 m back \mathbf{m}_{\text{back}} mback)

然后这里将引入作者介绍的迭代神经网络 Λ θ k \Lambda^{k}_{\theta} Λθk(·), 它的结构如下:
在这里插入图片描述

Fig5. 第二个网络结构
这个网络结构非常小, 它的输入是由四个图像结构按照通道拼接而成, 其用公式可表示为:

m k + 1 = Λ θ k [ m k , I ( m back ) , I stack ( m back ) , ∇ ψ ( m k ) ] , k = 0 , 1 , … , N − 1 \mathbf{m}_{k+1} = \Lambda^{k}_{\theta}[\mathbf{m}_{k}, \mathbf{I}(\mathbf{m}_{\text{back}}), \mathbf{I}_{\text{stack}}(\mathbf{m}_{\text{back}}), \nabla \psi (\mathbf{m}_{k})], k=0,1,\dots,N-1 mk+1=Λθk[mk,I(mback),Istack(mback),ψ(mk)],k=0,1,,N1
这里的前三者都是已知的, 但是 ∇ ψ ( m k ) \nabla\psi (\mathbf{m}_{k}) ψ(mk)可能有点生疏, 通过作者介绍, 这里是Dirichlet energy的表示, 即
ψ ( m k ) = 1 2 ∣ ∣ ∇ m ∣ ∣ 2 2 \psi (\mathbf{m}_{k}) = \frac{1}{2}\mid\mid\nabla \mathbf{m} \mid\mid^2_2 ψ(mk)=21∣∣m22
因此 ∇ ψ ( m k ) \nabla\psi (\mathbf{m}_{k}) ψ(mk)可以表示为 ∇ ∗ ( ∇ m k ) \nabla^{*}(\nabla \mathbf{m}_k) (mk).
但是这里在代码中我不确定怎么表示, m m m是当前迭代的速度模型, 但是它的梯度可以通过确定的手段得到吗? 这我有点疑问和不确定.
但是总的来说, 输入部分应当是清晰的, 我们将他们打包为通道数为1+15+1+1 = 18的图集输入到网络中.
这里依旧使用了残差的手段, 网络直接输出部分加上了当前迭代的速度模型 m k \mathbf{m}_k mk之后才进行的输出.
然后输出的结果还会作为作为下一回合循环的输入部分 m k + 1 \mathbf{m}_{k+1} mk+1, 这个输入部分和已有信息再通过1+15+1+1形成新的18通道的输入, 如此就构成了循环结构, 这个循环结构会执行 N N N次 (作者设定的 N = 10 N=10 N=10)

这个过程当中, 并没有求导和逆向传播, 这就很有意思了. 而是在循环最后一轮, 通过最终的 m N − 1 \mathbf{m}_{N-1} mN1来进行Loss计算, 公式如下:

L 4 = 1 2 ∥ Λ θ N ( B ) − m true  ∥ 2 2 , B = [ m N − 1 , I ( m back ) , I stack ( m back ) , ∇ ψ ( m N − 1 ) ] L_{4}=\frac{1}{2}\left\|\Lambda^{N}_{\theta}(\mathbf{B})-\mathbf{m}_{\text {true }}\right\|_{2}^{2}, \mathbf{B} = [\mathbf{m}_{N-1}, \mathbf{I}(\mathbf{m}_{\text{back}}), \mathbf{I}_{\text{stack}}(\mathbf{m}_{\text{back}}), \nabla \psi (\mathbf{m}_{N-1})] L4=21 ΛθN(B)mtrue  22,B=[mN1,I(mback),Istack(mback),ψ(mN1)]

仍然是MSE, 而且这次我们不再拟合平滑后的速度模型了, 而是直接向真实的速度模型靠拢. 如果说 Γ θ \Gamma_{\theta} Γθ的学习目标是得到比较模糊的基础速度背景, 那么 Λ θ N \Lambda^{N}_{\theta} ΛθN网络就是彻底得到高清的速度模型. 它不再是从 m mig \mathbf{m}_{\text {mig}} mmig m back \mathbf{m}_{\text {back}} mback 的改变, 而是:

  • 是一个从 m back \mathbf{m}_{\text {back}} mback m ture \mathbf{m}_{\text {ture}} mture 的改变
  • 是从一个与真实速度模型有着类似运动学构造的模糊地层结构(Fig4 右) 到 刻画细致的高清地层图(Fig4 左)

最终, 不妨想想, 这个网络真的小吗? 其实一次循环完后他并没有求导, 如果我们将一次forward的持续时间规定为遇到求导即为结束的话, 那么循环在持续的话网络就没有结束, 因此, 这里作者设置的 Λ θ N \Lambda^{N}_{\theta} ΛθN实际很长, 应该有接近30多层. 但又因为通道数不大, 因此学习的参数量应该不会很大.

上述这就是伪代码中后续部分的含义:
在这里插入图片描述

3 存在的主要问题

方法理清楚是这么个理.
但是站在代码复现角度, 仍然有些疑惑, 我感觉是读完论文没能完全搞清楚的

  1. 第二个网络中的输入参数 ∇ ψ ( m k ) = ∇ ∗ ( ∇ m k ) \nabla\psi (\mathbf{m}_{k})=\nabla^{*}(\nabla \mathbf{m}_k) ψ(mk)=(mk)究竟如何用代码来复现呢? 这篇论文并没有公布源码, 只是提供了一个关键词 “Dirichlet energy”. 这里的正则项 ψ ( m k ) \psi (\mathbf{m}_{k}) ψ(mk)正是来源于这个东西, 它本身又表示为: ψ ( m k ) = 1 2 ∣ ∣ ∇ m ∣ ∣ 2 2 \psi (\mathbf{m}_{k}) = \frac{1}{2}\mid\mid\nabla \mathbf{m} \mid\mid^2_2 ψ(mk)=21∣∣m22. 我觉得要了解这个之前需要学习一下Dirichlet energy的含义.
  2. 本文我用橙色地方标注了一句话: “以及观测信息提供的地震资料得到RTM图像”. 作者这里直接就通过观测信息 P obs \mathbf{P}_{\text{obs}} Pobs, 即多炮的共源炮集图像直接作为了RTM的资料, 这似乎没有解决我之前认识RTM的过程中提出的疑惑.
    之前我尝试做RTM的时候, 一次互相关构建需要所有时刻的波场快照, 而现场我们只能得到一炮释放后固定位置接收器接收到的共源炮集图像, 按照我的思路, 没法仅仅依靠后者得到RTM图像. 而这里作者是只通过后者得到的, 这和我的思路有出入.
    我只能猜测两种解释:
    • 仅仅 已知接收器获取的共源炮集图像 (就是长得像山峰那样的图像) 且 不知道全时刻的波场快照的情况下, 是可以直接得到RTM图像的.
    • 共源炮集图像 可以推到出 全时刻的波场快照.

关于第二个问题, 作者在文中引出了它采用的生成RTM图像的方法:

Here, we apply an inverse scattering imaging condition to produce the RTM image, for a common source recording, which can be formulated mathematically as [39]

作者采用了 “inverse scattering imaging condition” 来生成RTM图像, 作者也给出了相关论文的支撑.

[39] H. Douma, D. Yingst, I. Vasconcelos, and J. Tromp, “On the connection between artifact filtering in reverse-time migration and adjoint tomography,” Geophysics, vol. 75, no. 6, pp. 219–223, 2010

也许这里面会有答案.

4 下一步工作

为了获得更多启示, 接下来会尝试读论文《On the connection between artifact filtering in reverse-time migration and adjoint tomography》, 但是这篇文章数学公式有亿点多, 可能有点 hard to follow … 所以不见得马上能搞懂, 做长远打算吧.
更多来看, 我可能会接触点其他DL-FWI的论文.
有可能是经典VelocityGAN: 《Data-driven seismic waveform inversion A study on the robustness and generalization》, 这个挺好, 有源码, 但是时间有点早了, 是2020.
或者是 《Multiscale data-driven seismic full-waveform inversion with field data study》, 用自然图像做DL-FWI, 很有想法, 时间略近一点, 2021, 但是好像没有源码.
多看论文才有idea, 先不急着卡在RTM这里.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/766312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络——VLan介绍

学习视频: 网工必会,十分钟搞明白,最常用的VLAN技术_哔哩哔哩_bilibili 技术总结:VLAN,网络中最常用的技术,没有之一_哔哩哔哩_bilibili 全国也没几个比我讲得好的:VLAN虚拟局域网 本来补充了…

微服务day1——微服务入门

一、认识微服务 1、单体架构 将业务的所有功能集中在一个项目中开发,打成一个包部署。 优点 架构简单部署成本低 缺点 耦合度高 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fPfsQXAn-1689593800699)(https://picture.wangkay.tec…

探索OLED拼接屏的特点及在莱山的场景化应用

涞山oled拼接屏是一种高清晰度的显示屏,由多个oled屏幕拼接而成。它可以用于各种场合,如商业展示、广告宣传、会议演示等。涞山oled拼接屏具有以下特点: 1. 高清晰度:oled屏幕具有高对比度、高亮度、高色彩饱和度等特点&#xff0…

jeecg-boot sql注入漏洞解决

输入下面的链接地址,就会出现下面的获取数据,这个漏洞还是比较严重的啊 http://localhost:8080/nbcio-boot/sys/ng-alain/getDictItemsByTable/%20from%20sys_user/*,%20/x.js 通过上面方式可以获取用户信息了 如下: RequestMapping(valu…

层次分析模型

层次分析法是对一些较为复杂、模糊的问题做出决策的简易方法 这里涉及一个决策概念的理解 初步理解应该是一种评价类的模型 层次分析法的典型应用: 1、用于最佳方案的选取 2、用于评价类分析 3、用于指标体系的优选 层次分析法的名字中层次的原因 层次分析法的步骤…

Skywalking使用说明

需求背景 随着分布式的盛行,系统的复杂度也逐步增加,不同服务间的交互对性能的定位提出了更高的要求。任意一个节点的异常,都可能对业务系统造成损失。对于链路追踪,迫切需要一个优秀的监测工具。 需求如下 功能性需求 请求链…

怎么把word文档转换成pdf文件?这三个方法超级实用!

word文档编辑完成后,通常会将其转换为PDF格式,以使文档内容更加简洁。那么,如何将Word文档转换为PDF呢?下面将介绍三种方法,相信对你会有所帮助。 一、记灵在线工具 首先,在浏览器中打开记灵在线工具的网…

Spring+SpringMVC+JdbcTemplate小Demo

项目目录结构 创建mavenWeb项目 pom文件 spring依赖、spring-web依赖、spring-webmvc依赖、spring-test、junit依赖 servlet依赖、jsp依赖、jstl、standard依赖 jackson的core和databind和annotations依赖、fastjson依赖、 文件上传的commons-fileupload和commons-io依赖 日志c…

图片修补 EdgeConnect 论文的阅读与翻译:生成边缘轮廓先验,再填补缺失内容

本文将要介绍的论文就是:EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning,因为知乎在(2019-02-02)前,缺少详细介绍这篇论文的文章,而我最近需要复现它,所以顺便在这里…

消息重试框架 Spring-Retry 和 Guava-Retry

一 重试框架之Spring-Retry 1.Spring-Retry的普通使用方式 2.Spring-Retry的注解使用方式 二 重试框架之Guava-Retry 总结 图片 一 重试框架之Spring-Retry Spring Retry 为 Spring 应用程序提供了声明性重试支持。它用于Spring批处理、Spring集成、Apache Hadoop(等等)。…

智能应急疏散系统在公共建筑中的的应用

安科瑞 华楠 摘 要:随着大型公共建筑物的不断增多,其所产生的各种建筑安全隐患问题也在逐渐加剧,一旦出现火灾险情,要想从公共建筑中安全的脱离出来,其难度也是可想而知。因此,这就需要在进行公共建筑设计时…

Java打怪升级路线的相关知识

第一关:JavaSE阶段 1、计算机基础 2、java入门学习 3、java基础语法 4、流程控制和方法 5、数组 6、面向对象编程 7、异常 8、常用类 9、集合框架 10、IO 11、多线程 12、GUI编程 13、网络编程 14、注解与反射 15、JUC编程 16、JVM探究 17、23种设计模式 18、数据结构与算法 1…

mysql数字开头字符串排序

表结构 CREATE TABLE building (id bigint NOT NULL,name varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT 名称,full_name varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT 全称,PRIMARY KEY (id) USIN…

Qt|读写ini文件使用QSettings 节键值 设置相对路径

#include <QtWidgets/QApplication> #include <QWidget> #include <QSettings> #include <QString>int main(int argc, char *argv[]) {QApplication a(argc, argv);// Qt中使用QSettings类读写ini文件// QSettings构造函数的第一个参数是ini文件的路径…

linux之Ubuntu系列(三)远程管理指令☞Scp

cp scp cp 复制文件 是限制在本地操作 scp&#xff1a; 远程拷贝文件 cp [options] 源文件or 目录 目标文件or 目录 如果复制目录&#xff0c;要加 -r 选项 &#xff0c;同时如果目标目录不存在&#xff0c;会会创建 scp scp就是 secure copy&#xff0c;是一个在linux下用来…

如何创建 Spring Boot 项目

目录 一、Spring Boot 项目的创建 1. 安装 Spring Boot Helper 插件 2. 创建 Spring Boot 项目 3. 项目目录详解 4. 运行 Spring Boot 项目 二、Spring Boot 的优点 前言 Spring Boot 的意思就是 Spring Boot 脚手架的意思&#xff0c;已经总结完成 Spring 的学习&#x…

给httprunnermanager接口自动化测试平台加点功能(七)

文章目录 一、背景1.1、用例列表test_list1.2、套件列表suite_list 二、实现2.1、用例edit页面2.2、套件edit页面 三、数据结构3.1、更新数据结构 四、知识扩展五、总结 一、背景 前面几章优化&#xff0c;从功能bug的优化、到列表的优化、还有字段的优化&#xff0c;暂时满足…

(学习笔记-TCP连接建立)三次握手丢失后分别会发生什么?

第一次握手丢失 当客户端想和服务端建立TCP连接后&#xff0c;首先第一个发的就是SYN报文&#xff0c;然后进入到SYN_SENT状态。 在这之后如果客户端迟迟没有收到服务端的SYN-ACK报文(第二次握手)&#xff0c;就会触发[超时重传]机制&#xff0c;重传SYN报文&#xff0c;而且…

【淘宝API接口开发系列】item_review-获得淘宝商品评论

淘宝/天猫获得淘宝商品评论 API 返回值说明 taobao.item_review 公共参数 请求地址:注册Key和secret接入 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地…

韧性数据安全体系组成:运行保障与底线防御安全 |CEO专栏

「构建适应性进化的韧性数据安全体系」专栏&#xff0c;为你解读美创科技在数据安全的最新探索实践。 上期内容&#xff08;点击此处跳转&#xff09;&#xff0c;专栏重点分享了韧性数据安全体系的重要组成——资产和资产安全。数据资产是网络中最为确定性的存在&#xff0c;以…