1. 项目概述:一个为AI地震学准备的数据“弹药库”
如果你正在研究如何用机器学习算法从地震波形里自动识别地震信号、精准拾取P波和S波的到时,或者想训练一个能预测地震动强度的模型,那你大概率遇到过同一个头疼的问题:去哪找足够多、质量又够好的训练数据?尤其是在加州这种地震频繁、台网密集的地区,历史数据浩如烟海,但格式不一、分散存储,光是数据清洗和格式对齐就能耗掉几个月的时间。
这正是加州地震事件数据集(California Earthquake Event Dataset, CEED)要解决的核心痛点。我把它理解为一个为地震学机器学习研究量身打造的“标准弹药库”。它不是什么全新的观测数据,而是将北加州地震数据中心(NCEDC)和南加州地震数据中心(SCEDC)这两个权威机构从2000年到2023年积累的、经过人工校核的宝贵数据,进行了统一的清洗、格式化与整合。
简单来说,CEED替你完成了最耗时、最繁琐的数据工程工作:它把超过65万次地震事件、410多万个三分量波形样本(均包含人工标注的P波和S波到时)打包成了一种机器学习和云计算友好型的格式。无论你是想复现经典的PhaseNet、GPD模型,还是想开发下一代多台站联合定位算法(如PhaseNO),甚至是探索用Transformer做地震动预测,这个数据集都试图为你提供一个坚实、一致的起点。它的价值不在于发现了新数据,而在于让已有的、高质量的数据变得极其“好用”。
2. 核心设计思路:为什么是“基于事件”的HDF5?
当你拿到海量地震数据时,首先面临的是组织方式的抉择。早期很多机器学习数据集,比如著名的STEAD,采用的是“基于样本”的组织方式:每个数据文件就是一个截取好的波形片段(例如30秒长度),以及对应的标签(如P波、S波到时)。这种方式对于训练PhaseNet这类单台站模型非常直接。
但地震分析从来不是单台站的游戏。确定一个地震的位置、深度和震级,需要多个台站的观测进行交汇;反演震源机制解,更需要多个台站的初动极性信息。基于样本的格式割裂了同一个地震在不同台站的记录之间的天然联系,使得训练能够利用台站间关联信息的“多台站模型”或“网络模型”变得非常麻烦。
CEED团队敏锐地意识到了这一点,因此选择了基于事件的层次化HDF5格式作为数据集的骨架。这是CEED设计上最精妙、也最体现其前瞻性的地方。
2.1 层次化结构解析
你可以把CEED的HDF5文件想象成一个结构清晰的文件夹:
- 第一层:按年份分。数据按年份组织(如
2000.h5,2001.h5…),这既符合数据自然产生的时间顺序,也便于增量更新和按时间范围取用数据。 - 第二层:按事件ID分。每个年份文件内,以地震事件的唯一ID(如
ci38457511,对应USGS的ComCat事件页面)为组(Group)。这个组里存放该事件的源信息属性:发震时间、经纬度、深度、震级等。 - 第三层:按台站分。在每个事件ID组下,以台站代码(如
CI.CCC..HHZ)为名创建数据集(Dataset)。这个数据集里存储的是该台站记录到的这个事件的原始三分量波形数据(E, N, Z方向)。同时,在该数据集的属性(Attributes)中,存放这个台站针对该事件的所有标签信息:P/S波到时(精确到采样点)、初动极性(上/下/未知)、以及计算出的峰值地动速度(PGV)和峰值地动加速度(PGA)值。
2.2 这样设计的好处
- 保持事件完整性:研究者可以轻松提取一次地震的所有台站记录,用于发展事件检测、关联定位或震源机制反演模型。
- 灵活支持多种任务:单台站模型训练时,可以遍历所有事件的所有台站,构造样本;多台站模型训练时,可以直接读取一个事件下的所有台站数据作为一次输入。
- 便于与权威目录交叉引用:事件ID与USGS ComCat系统直接对应,方便用户验证、补充元数据,或进行更深入的地震序列分析。
- 高效的I/O性能:HDF5格式特别适合存储和快速读写大型科学数据集。按事件组织,在读取特定地震的所有数据时,能减少磁盘寻址时间。
实操心得:在开始用CEED之前,花点时间熟悉HDF5的数据结构是值得的。用Python的
h5py库浏览一下文件,理解事件组 -> 台站数据集 -> 波形数据与属性这个层次,后续写数据加载代码会事半功倍。你可以很容易地根据事件ID筛选特定区域或震级范围的地震,这是基于样本的数据集很难高效完成的。
3. 数据集内容深度拆解:里面到底有什么“干货”?
CEED不是一个简单的波形打包,它提供了多维度、高质量的标签,覆盖了地震分析的核心环节。理解这些内容的分布和特点,对于正确使用数据集、避免建模陷阱至关重要。
3.1 波形数据与预处理
数据集包含了来自加州数百个台站的三分量波形数据。原始数据经过了最小化的预处理:
- 去均值:移除波形的直流偏移。
- 重采样:统一采样率至100 Hz。这是一个在计算效率和信号保真度之间的平衡选择,对于大多数区域地震(震中距<1000公里)的体波分析来说足够了。
- 旋转分量:确保所有波形数据都已旋转到地理坐标系下的东-北-垂向(ENZ)。
- 单位转换:数据已转换为速度(米/秒)或加速度(米/秒²)的物理单位。
一个关键且明智的决策是:数据集保留了仪器响应。预处理流程中没有进行去仪器响应操作。这是因为去响应需要精确的仪器参数,且过程不可逆。CEED选择提供原始的、带响应的数据,同时附上相应的仪器响应文件(RESP或XML格式)。这样,用户可以根据自己的研究目的(如需要位移波形做震源研究,或需要加速度波形做工程应用)灵活地进行去除响应操作。
3.2 核心标签详解
- 震相到时(Phase Arrival Times):这是数据集的基石。包含了超过410万对人工标注的P波和S波到时。标注来源于NCEDC和SCEDC经过分析师校核的目录,质量很高。图3展示了到时标注随时间的变化,可以看到随着台网升级和分析流程优化,每年标注的数量在稳步增长。
- 初动极性(First-Motion Polarity):这是推断震源机制(断层面解)的关键信息。CEED包含了约240万个明确的(上“U”或下“D”)极性标注。极性标注的分布(图4)显示其数量随时间增加,但相比到时标注更少,因为确定极性对波形质量要求更高,且部分事件初动不清。
- 地震动强度(Ground Motion Intensity):数据集计算并提供了每个台站记录的峰值地动速度(PGV)和峰值地动加速度(PGA)。图5以散点图形式展示了PGV/PGA随震级和震源距的衰减关系。这些数据是训练地震动预测模型(如文中提到的QuakeFormer)的宝贵资源。
- 事件与台站元数据:每个事件都有发震时间、位置(经纬度、深度)、震级。每个台站记录都有对应的震中距、反方位角、信噪比(SNR)等信息。图6和图7系统展示了这些参数的统计分布。
3.3 数据分布的启示与挑战
仔细研究数据集统计图(图2,图6),你会发现一些直接影响模型训练的重要特征:
- 震级分布不均:绝大多数事件是M<3的小震,大震(M>5)非常稀��。这是地震活动的自然规律,但会导致数据集的严重不平衡。如果直接用原始分布训练模型,模型会对小震过拟合,而对大震的检测和表征能力不足。
- 空间覆盖不均:地震和台站主要集中在圣安德烈亚斯断裂带等活跃区域(图1)。这意味着训练出的模型可能对加州这些区域过拟合,而应用到台网稀疏或地质构造不同的区域时,泛化能力会下降。
- 深度与距离范围:事件深度多在0-20公里(上地壳),震源距多在300公里以内(图6a, b)。这决定了数据集主要适用于浅源、区域地震的研究。
注意事项:CEED的论文坦诚地指出了数据中存在错误标签和未标注事件的问题。这是任何大规模人工标注数据集都无法避免的。错误标签可能来自分析师误判、到时关联错误等;未标注事件则是指那些存在于波形中但未被官方目录收录的小震。直接用这样的数据训练,可能会让模型学到错误模式。论文建议的解决方案是“用训练好的深度学习模型去检测数据集中可能的错误标签和遗漏事件,再进行人工复核”,这形成了一个“数据改进模型,模型清洗数据”的正向循环。作为使用者,在训练关键模型前,对训练集进行适量的可视化检查和清洗是必要的。
4. 从数据到应用:实战指南与案例
有了高质量的数据,下一步就是让它“跑”起来。CEED团队不仅提供了数据,还通过Hugging Face平台和详细的示例,极大地降低了使用门槛。
4.1 数据获取与加载
数据托管在Hugging Face Datasets平台,这是目前AI社区共享数据集的事实标准。获取数据异常简单:
import datasets # 加载北加州(NC)的测试集(最新年份) dataset_nc = datasets.load_dataset("AI4EPS/CEED", name="station_test", split="test") # 查看一条数据样例 example = dataset_nc[0] print(example.keys()) # 输出:dict_keys(['data', 'phase_time', 'phase_index', ... , 'station_location']) # 波形数据 shape: (3个分量, 8192个采样点) waveform = example['data'] # shape: (3, 8192) p_arrival_time = example['phase_time'][0] # P波到时 station_loc = example['station_location'] # 台站位置datasets库会自动处理下载、缓存和格式解析,你直接得到一个类似Python字典的易用接口。数据已经按事件-台站组织好,phase_index直接对应波形数据数组中的采样点位置,方便至极。
4.2 云端数据访问与处理
地震波形是TB级别的大数据。CEED的另一个前瞻性设计是拥抱云计算。NCEDC和SCEDC的连续波形数据已公开存储在AWS S3上(总计超过300TB)。这意味着你无需在本地下载庞大数据,可以直接在云上(如AWS EC2实例)进行分析。
论文给出了两种云端访问方法:
使用
fsspec直接读取:这是最灵活的方式,允许你像访问本地文件一样访问S3文件。import fsspec import obspy # 构建S3路径(示例为南加州CI.CCC台站2019年某天的HHZ分量) s3_path = "s3://scedc-pds/continuous_waveforms/2019/2019_187/CICCC__HHZ___2019187.ms" # 使用fsspec打开并读取 with fsspec.open(s3_path, s3={"anon": True}) as f: stream = obspy.read(f) print(f"Read from cloud: {len(stream)} traces")通过配置
fsspec,你甚至可以将S3存储桶“挂载”为本地目录,实现无缝访问。云原生处理流程:在AWS上启动计算实例(如EC2),实例所在区域最好与数据存储区域(NCEDC在
us-west-2,SCEDC在us-east-2)一致,以获得最高的数据读取速度(图12)。然后,你可以使用Kubernetes编排容器化应用,或使用AWS Batch进行大规模并行作业,对整个加州多年的连续波形进行扫描,检测遗漏地震。
4.3 案例:使用CEED数据运行PhaseNet进行震相拾取
假设你想用预训练的PhaseNet模型,对一段云端或本地的连续波形进行自动震相拾取。CEED的示例代码提供了清晰的流水线:
# 1. 准备输入文件列表 (mseed.txt) # 每行包含一个台站的三个分量文件路径(Z, E, N),用逗号分隔 # 例如: # s3://scedc-pds/.../CICCC__HHZ___2019187.ms,s3://.../CICCC__HHE___2019187.ms,s3://.../CICCC__HHN___2019187.ms # 2. 调用PhaseNet预测脚本(假设已克隆EQNet代码库) import subprocess cmd = [ "python", "EQNet/predict.py", "--model", "phasenet", "--data_list", "mseed.txt", "--result_path", "./results", "--format", "mseed", "--device", "cuda" # 使用GPU加速 ] subprocess.run(cmd) # 3. 读取和可视化结果 import pandas as pd import matplotlib.pyplot as plt picks_df = pd.read_csv("./results/picks_phasenet/CICCC__HHZ___2019187.ms.csv", parse_dates=["phase_time"]) plt.figure(figsize=(12, 4)) plt.hist(picks_df[picks_df["phase_type"]=="P"]["phase_time"], bins=50, alpha=0.7, label='P picks') plt.hist(picks_df[picks_df["phase_type"]=="S"]["phase_time"], bins=50, alpha=0.7, label='S picks') plt.legend() plt.xlabel("Time") plt.ylabel("Number of Picks") plt.title("Phase Picks Distribution on CI.CCC") plt.show()这个流程清晰地展示了如何将CEED的组织理念(基于事件/台站)与现有AI工具链结合。你可以用CEED的数据训练自己的PhaseNet变体,然后用训练好的模型去处理新的连续数据。
5. 潜在问题与进阶使用技巧
在实际使用CEED进行研究和开发时,你可能会遇到一些挑战。以下是我结合经验总结的常见问题与解决思路。
5.1 数据不平衡与模型泛化
这是使用CEED面临的最大挑战之一。如前所述,数据在震级、空间、时间上都不平衡。
- 对策1:数据重采样:
- 上采样(Oversampling):复制少数类别(如大震、特定区域的事件)的样本。简单但可能导致过拟合。
- 下采样(Undersampling):随机丢弃多数类别(如大量小震)的样本。会损失数据,但能加快训练。
- 合成少数类过采样技术(SMOTE):在特征空间中为少数类样本生成新的合成样本。对于波形数据,需要谨慎设计,因为简单的插值可能生成物理上不合理的波形。
- 对策2:加权损失函数:在训练时,为少数类样本分配更高的损失权重,迫使模型更多关注它们。
- 对策3:分层抽样:在划分训练集、验证集和测试集时,不是随机划分,而是按照震级区间、区域等进行分层抽样,确保每个集合内的数据分布与整体相似,评估结果更可靠。
- 对策4:领域自适应(Domain Adaptation):如果你最终的目标是将模型应用于加州以外的地区,可以在CEED上预训练模型,然后在目标区域的少量标注数据上进行微调(Fine-tuning)。
5.2 处理缺失数据与异常波形
连续波形中常有数据缺失、仪器尖峰噪声、人为干扰(如交通振动)等问题。CEED保留了这些“不完美”的数据以增强模型鲁棒性,但训练时仍需处理。
- 技巧:数据增强(Data Augmentation):在训练时实时对波形进行变换,可以显著提升模型泛化能力。常用的地震数据增强方法包括:
- 添加高斯噪声:模拟背景噪��。
- 随机时间偏移:轻微移动波形和标签,模拟到时拾取误差。
- 随机振幅缩放:模拟不同震级或传播路径的影响。
- 通道丢弃(Channel Dropout):随机将某个分量(如E分量)置零,模拟通道损坏,迫使模型不依赖单一分量。
- 混合(Mixup):将两个样本的波形和标签按比例线性组合,生成新样本。这对地震数据有一定挑战,需确保物理合理性。
5.3 利用多标签进行多任务学习
CEED提供了到时、极性、PGV/PGA多种标签。这为多任务学习(Multi-Task Learning)提供了绝佳机会。
- 模型设计思路:可以设计一个共享底层特征编码器(Encoder)的神经网络,然后接多个任务头(Head):
- 任务头1(回归):输出P波和S波的到达概率时间序列(如PhaseNet)。
- 任务头2(分类):输出初动极性(上/下)。
- 任务头3(回归):输出PGV和PGA的预测值。
- 优势:多个相关任务共享特征表示,可以相互促进,提升模型整体性能,并得到一个能同时完成震相拾取、极性判断和强度估计的“全能”模型。这正是PhaseNet+等模型探索的方向。
5.4 从单台站到多台站模型的跨越
CEED基于事件的格式,天生适合训练多台站模型。这类模型一次性输入一个事件在多个台站的波形,直接输出该事件的定位结果,甚至震源机制。
- 数据准备:你需要编写一个数据加载器,对于一个给定的事件ID,读取其所有可用台站的波形数据(可能长度不一,需要填充或截断),并整理成
[Num_Stations, 3(Components), Time_Samples]的张量。 - 模型架构:可以采用图神经网络(GNN),将台站作为节点,台站间的空间关系作为边;或者使用Transformer,将不同台站的波形特征作为序列输入,利用自注意力机制学习台站间的关联。
- 挑战:不同事件记录到的台站数量、列表不同,处理可变大小的输入是多台站模型的关键。图神经网络和集合学习(Set Learning)方法是目前的主流解决方案。
6. 未来展望与社区共建
CEED不是一个封闭的成品,而是一个活的、持续发展的社区资源。论文中提到了几个重要的未来方向:
- 数据质量的持续迭代:正如前文所述,利用社区训练出的先进模型(如高灵敏度的PhaseNO)反哺数据,检测并修正原始目录中的错误标签和遗漏事件,形成“数据-模型”协同进化的闭环。
- 数据模态的扩展:目前CEED主体是传统地震仪数据。团队已开始纳入分布式声学传感(DAS)数据(如
quakeflow_das数据集)。DAS能将光纤变成数万个连续分布的“传感器”,提供前所未有的空间分辨率。融合传统地震仪与DAS数据,有望在断层成像、余震精定位等领域取得突破。 - 与全球数据集的整合:CEED是区域数据集的典范。它与意大利的INSTANCE、中国的DiTing、全球的STEAD等数据集一起,构成了训练下一代“通用”地震AI模型的拼图。未来,能够无缝处理加州、日本、意大利等不同构造环境地震的模型,将真正具备全球适用性。
对于使用者而言,积极参与社区是提升研究效率的好方法。你可以在Hugging Face的CEED数据集页面提交问题(Issue),报告你发现的数据异常,或者分享你基于CEED训练的优秀模型。这种开放协作的模式,正是科学数据基础设施走向成熟的关键。
从我个人的使用体验来看,CEED的最大贡献在于它极大地降低了地震AI研究的工程门槛。过去,一个博士生可能要花上半年到一年的时间才能搭建起一个可用的训练数据集。现在,通过几行代码就能加载高质量、统一格式的数据,研究者可以将宝贵的时间精力集中在模型创新和科学问题的探索上。它就像给地震学家和AI工程师提供了一套标准化、高性能的“乐高积木”,让大家能更快地搭建起通往新发现桥梁。当然,如何巧妙地使用这些“积木”,避开数据分布的“陷阱”,构建出稳健、泛化能力强的模型,依然是摆在每一位研究者面前的挑战,而这正是研究的乐趣所在。