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你会发现一些直接影响模型训练的重要特征震级分布不均绝大多数事件是M3的小震大震M5非常稀。这是地震活动的自然规律但会导致数据集的严重不平衡。如果直接用原始分布训练模型模型会对小震过拟合而对大震的检测和表征能力不足。空间覆盖不均地震和台站主要集中在圣安德烈亚斯断裂带等活跃区域图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, namestation_test, splittest) # 查看一条数据样例 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(fRead from cloud: {len(stream)} traces)通过配置fsspec你甚至可以将S3存储桶“挂载”为本地目录实现无缝访问。云原生处理流程在AWS上启动计算实例如EC2实例所在区域最好与数据存储区域NCEDC在us-west-2SCEDC在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], bins50, alpha0.7, labelP picks) plt.hist(picks_df[picks_df[phase_type]S][phase_time], bins50, alpha0.7, labelS 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工程师提供了一套标准化、高性能的“乐高积木”让大家能更快地搭建起通往新发现桥梁。当然如何巧妙地使用这些“积木”避开数据分布的“陷阱”构建出稳健、泛化能力强的模型依然是摆在每一位研究者面前的挑战而这正是研究的乐趣所在。