Professional Documents
Culture Documents
机器学习到时构建高精度地震目录流程
机器学习到时构建高精度地震目录流程
地震⽬录
张淼
达尔豪斯⼤学(加拿⼤)
程序参与贡献⼈员:
刘敏、冯甜、王蕊嘉、朱尉强
地震学算法和程序
2021/08/10 LOC-FLOW
地震定位
面波
P S
图⽚来⾃每⽇头条
详细综述见佘⼭学堂报告录屏
B站地址:
https://www.bilibili.com/video/BV1bM4y157XV?from 2
=search&seid=18181729434983325333
基于到时的地震定位流程
连续波形输⼊
预处理
检测
到时识取
关联
定位
特征化(后续分析)
Park Y et al., GRL, 2020 Wang KW et al., GRL, 2020 Wang JC et al., GRL, 2021
4
赵明等,地球物理学报,2021 Tan Y et al., TSR, 2021
苏⾦波、刘敏等,地球物理学报,2021
6
Feng T et al., ongoing
事例 1:2019年Ridgecrest地震
PhaseNet到时识取
7
事例 1:2019年Ridgecrest地震
8
原始数据 -> ⾼精度地震⽬录
事例 2:2021年云南漾濞地震
9
提纲
• LOC-FLOW 的⼯作流程
• LOC-FLOW 包含的主要程序
• LOC-FLOW逐步讲解
• 讨论
• ⽰例截图
• 现场演⽰
10
提纲
• LOC-FLOW 的⼯作流程
• LOC-FLOW 包含的主要程序
• LOC-FLOW逐步讲解
• 讨论
• ⽰例截图
• 现场演⽰
11
https://github.com/Dal-mzhang/LOC-FLOW
12
https://github.com/Dal-mzhang/LOC-FLOW
13
https://github.com/Dal-mzhang/LOC-FLOW
14
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
15
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
16
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
17
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
18
“站在巨⼈肩膀上”
LOC-FLOW
科学问题
ObsPy, PhaseNet,
REAL, VELEST,
HYPOINVERSE,
hypoDD,
FDTCC,
GrowClust,
Match&Locate
19
修改⾃图⽚⽹站 https://www.freeimages.com/
提纲
• LOC-FLOW 的⼯作流程
• LOC-FLOW 中包含的主要程序
• LOC-FLOW逐步讲解
• ⽰例截图
• 现场演⽰
20
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
各个源程序包下载:src/software_download.py 21
① STA/LTA 到时识取
https://docs.obspy.org/tutorial/code_snippets/trigger_tutorial.html 22
①PhaseNet到时识取
https://github.com/wayneweiqiang/PhaseNet 23
②快速地震关联定位算法
(REAL)
25
台站归⼀化后的范围
如果同⼀个事件被多次关联,选择距离加权后震相数⽬最⼤的那个。
最⼩距离:cos(0)= 1;
最⼤距离:cos(pi/3)= 0.5;
做模拟退⽕定位时候,⾛时残差按照同样策略进⾏距离加权。
两步⾛:
1)固定深度和发震时刻,更新⽔平位置;
2)固定⽔平位置,更新深度和发震时刻。
26
③定位程序VELEST
经度,纬度,深度,发震时刻 分层速度模型
两个模式:
0: 同时定位,更新模型,获得台站矫正
(慎⽤;数据多,质量⾼情况才考虑)
Kissling et al., JGR, 1994 1: 只定位
原始版本:https://seg.ethz.ch/software/velest.html
使⽤的版本包含在 https://github.com/Dal-mzhang/REAL 27
③定位程序HYPOINVERSE
⾛时残差的⼀阶泰勒展开:
奇异值分解(SVD)
⽀持多种类型模型
29
Klein, USGS, 2014
距离加权
残差加权
⾮常多的其他功能,如:
震级计算;
到时加权;
台站⾛时延迟输⼊;
参考深度调整;
…
30
Klein, USGS, 2014
④双差定位hypoDD
差的差 – 双差
按照相似性从⾼到低配对定位
Trugman and Shearer, SRL, 2017
33
https://github.com/dttrugman/GrowClust
34
Trugman and Shearer, SRL, 2017
④快速互相关双差⾛时计算
(FDTCC)
推荐设置搜索区域为0,
检测完后续⽤
GrowClust做互相关双
差定位
OpenMP-version: Zhang and Wen, GJI, 2015; GPU-version: Liu et al., SRL, 2020
https://github.com/Dal-mzhang/MatchLocate2 36
https://github.com/MinLiu19/GPU-MatchLocate1.0
提纲
• LOC-FLOW 的⼯作流程
• LOC-FLOW 中包含的主要程序
• LOC-FLOW逐步讲解
• ⽰例截图
• 现场演⽰
37
程序下载安装
⼿动下载hypoinverse: https://www.usgs.gov/software/hypoinverse-earthquake-location
PhaseNet 装到“phasenet”虚拟环境 [ObsPy包含在内,数据下载和处理都需要ObsPy!]
38
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
39
数据下载
ObsPy: get_waveforms
指定台站⽬录,下载连续地震数据
https://docs.obspy.org/packages/autogen/obspy.clients
.fdsn.client.Client.get_waveforms.html
40
指定台⽹,台站,通道,时间范围等信息
合并,插值,去响应,裁剪等
去除仪器响应
(慢,也可⾃⾏存储成mseed后再去)
台站信息写⼊SAC的道头
waveform_download.py
41
数据下载
ObsPy: mass_downloader
无需指定台站⽬录,⾃动
下载覆盖区域的地震数据
https://docs.obspy.org/pack
ages/autogen/obspy.clients.f
dsn.mass_downloader.html
42
指定下载的台站区域
时间范围、台⽹等约束
默认使⽤所有可能的FDSN数据中⼼
mseed和响应⽂件下载并存储
整合,插值,裁剪,去响应,加道头,旋转等操作
后续存为SAC⽂件 waveform_download_mseed.py 43
(速度较快)
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
44
STALTA到时识取 trigger_p_amp.py
&
trigger_s_amp.py
(类似,但⽤E&N)
滤波处理
设置长短窗参数
这⾥采⽤较⼩的触发阈
值(turn on),来缓解
paz_wa为Wood Anderson 响应⽂件
到时靠后问题。再判断
仿真到Wood Anderson响应
后续的STALTA⽐是不是
⾜够⼤,决定是否保留
此到时。
存储:到时,“信噪⽐”,振幅
45
PhaseNet到时识取
运⾏PhaseNet runphasenet.py
注意:运⾏环境切换
此步骤包括经验性地转换PGV到Wood-Anderson振幅,为
了后续震级估计;精确震级可以利⽤calc_mag.py再计算。
⽣成REAL需要的到时⽂件
格式:年⽉⽇/台⽹.台站.P.txt
年⽉⽇/台⽹.台站.S.txt
46
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
47
runREAL.pl
https://github.com/Dal-mzhang/REAL
48
评估关联结果:
1. 把那些最差的关联事件(关联到的到时数⽬少,台站间隙⾓⼤,⾛时残差⼤等)
的ID记录下来,⽤eventverify_pick.py 和 eventverify_all.py分别把关联到的震相波
形和所有台站波形截取下来,按震中距从⼩到⼤排列,⽤SAC在⼩窗⼝内验证是否
为真实事件。
2. 画出⾛时-距离曲线,看看是否合理。
3. 应⽤HYPOINVERSE进⾏定位,检查那些定位结果标记为不稳定的事件波形
(“–”),验证是否为真实地震。
4. 反复调整阈值并测试。
5. 对绝对定位后的地震进⾏筛选(如:台站间隙⾓、⾛时残差、定位误差等)
49
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
50
run_velest.sh
模式1: 只定位
模式0: 定位+模型更新+台站矫正
在模式0中,⽤⾼质量地震作为输⼊,⽣成的速度
和台站矫正作为model1的输⼊,对所有事件定位。
51
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
52
run_hypoinverse.sh
两层不能⼀样速度,不能有
低速层,否则需要⼿动调整
⽣成HYPOINVERSE
需要的震相⽂件
运⾏hypoINVERSE 53
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
54
run_hypoinverse_corr.sh
两层不能⼀样速度,不能有
低速层,否则需要⼿动调整
⽣成HYPOINVERSE
需要的震相⽂件
⽣成每个台站对应的
P和S的⾛时矫正⽂件
hyp.command
控制⽂件:
运⾏HYPOINVERSE P和S的速度模型、台
55
站对应到时矫正
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
56
run_hypoDD_dtct.sh
hypo=0, ⽤REAL的模
拟退⽕定位结果
hypo=1, ⽤
VELEST定位结果
hypo=2, ⽤
HYPOINVERSE
定位结果
hypo=3, ⽤VELEST
+ HYPOINVERSE
定位结果
运⾏ph2dt配对地震
运⾏hypoDD双差定位57
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
58
⽤hypoDD.reloc (dt.ct)结
果更新震相⽬录中的位置
⽤ph2dt进⾏地震配对
run_hypoDD_dtcc.sh
应⽤FDTCC进⾏互相关
双差⾛时dt.cc计算
59
运⾏hypoDD
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
60
run_growclust.sh
地震配对:ph2dt
⽣成互相关⾛时差:FDTCC 61
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
62
calc_mag.py
仿真到Wood-Anderson仪器响应
注意:毫⽶
仅仅是个例⼦,不同国家和区域,震
幅测量⽅式和震级公式可能不同 63
国家标准
GB 1774200-2017
注意:
微⽶, DD-1响应
64
hypo=1
hypo=2
hypo=3
hypo=0
https://github.com/Dal-mzhang/LOC-FLOW
65
Match&Locate
参数⽰例
后续通过计算 现在2.1版本合并到2.0版本,把滤波作
dt.cc,应⽤ 为选项,波形无需滤波后再存一份
GrowClust来定位
66
提纲
• LOC-FLOW 的⼯作流程
• LOC-FLOW 包含的主要程序
• LOC-FLOW逐步讲解
• 讨论
• ⽰例截图
• 现场演⽰
67
使⽤LOC-FLOW有什么建议么?
1、我们提供的只是接⼝、框架和⽅案,每⼀步参数都需
要按照对应的程序说明,搞明⽩参数并调试。不同数据
质量,不同研究区域,不同台站分布,不同地震数⽬等
等,程序参数可能不同。
2、跑通、理解、⽤对、⽤好。
3、可以修改或采⽤⾥⾯的步骤,但是建议有对应引⽤或
致谢,并⼀定要引⽤对应源程序的⽂献。
68
不同研究地区需要重新训练么?
泛化能⼒强的
模型可以适⽤
于其他区域,
但迁移学习可
以提⾼。
迁移学习
仅仅⽤了3,500 个波形做迁移学习
69
Chai et al., GRL, 2020 (原始训练集的0.45%)
利⽤长宁地区⼀个⽉19个台站的事件记录进⾏迁移学习
迁移学习后,建议概率阈值下调 :从0.5到0.3
赵明等,地球物理学报,2021 新模型地址:https://github.com/mingzhaochina/PhaseNet70
数据采样率和原始训练不同有影响么?
机器学习到时
识取,逐点输
⼊,没有时间
概念。
⼀般情况要保
持与原训练集
采样率⼀致,
也有例外。
2. 在运⾏VELEST(mode=0)更新模型的情
况,注意划分速度模型的层间厚度,
VELEST只更新层间速度,对厚度不做更新。
3. 建议速度模型中的零深度为台站的平均海
拔(不是海平⾯)。虽然有些绝对定位程序
能处理负深度,但是这⾥的相对定位程序不
适合。海拔影响可以⽤台站延迟时间抵消
(hypo=3)。 72
多⼤的研究范围机器学习到时适⽤性最好?
1. 对于PhaseNet和⼤多数其他机器学习到时
识取程序,受训练集限制,对于近震效果最
好(如:< ~200 km范围内)。
2. 对于⼤震中距,可以考虑重新训练或迁移
训练,或采⽤多步⾛的策略。
73
有没有推荐的其他定位流程?
74
类似流程
房⽴华研究员提供
从局部尺度(local scale; <110 km)
到
区域尺度(regional scale; 110 km-550 km)
的挑战
远震中距波形与近震中距波
数据集带来的限制:⽬前最⼤的公开 较⼤的震相拾取误差会影响
形模式差异⼤,导致在近震
数据集STEAD(Mousavi et al., 2020) 中 后续的震相关联,地震定位
中距数据上训练的深度学习
92%的数据震中距在110 km以内。 以及层析成像研究。
模型震相拾取精度下降。
肖卓伟提供
https://github.com/MrXiaoXiao/SiameseEarthquakeTransformer
区域范围地震⽬录⾃动构建流程
肖卓伟提供
有没有在线运⾏的机器学习
地震定位系统?
78
在线处理实例
智能地动
https://earthx.com.cn/
79
在线处理实例
地震智能处理系统(RISP)
2021年漾濞地震
Yes Fine-scale Relocated
ML⒔5.0 earthquake earthquake
relcaotion sequence
Yes
Focal Focal
mechanism mechanism
inversion solution
自动(左)和人工(右)处理结果对比
4G实时传输节点式地震仪
李俊伦教授提供
81
在线处理实例
实时密集流动监测台阵
事例:2021年
2021年漾濞地震
• 根据地震活动性快速针对性布设
• 4G密集流动台网自动监测最小震级约
为M-2.0,事件数约为4倍
• 4G密集流动台网最小完备震级 M-
0.3,CNNC为M0.2
李俊伦教授提供
82
提纲
• LOC-FLOW 的⼯作流程
• LOC-FLOW 包含的主要程序
• LOC-FLOW逐步讲解
• 讨论
• ⽰例截图
• 现场演⽰
83
使⽤2016年10⽉14⽇意⼤利中部地震检测定位为例。如果笔记本
或台机的配置⽐较⼀般,建议⽤前50分钟(3000 sec)测试。
三⾓:台站
红点:⽬录地震
84
REAL的关联结果
85
Time [s]
关联到的事件⽰例(仅显⽰Z分量) 86
Catalog 2
Catalog 1
Catalog 3 Catalog 4
87
对于hypoDD_dtct, hypoDD_dtcc和GrowClust
只显⽰拥有5个P双差⾛时差以上约束的事件
88
(plot_3dmatlab⾥⾯参数nddp)
89
90
(nddp=5 in plot_3dgmt.sh)
提纲
• LOC-FLOW 的⼯作流程
• LOC-FLOW 包含的主要程序
• LOC-FLOW逐步讲解
• 讨论
• ⽰例截图
• 现场演⽰
91