AI News HubLIVE
站内改写4 分钟阅读

Zyphra发布ZUNA1.1:一个支持0.5至30秒可变长度输入的Apache 2.0 EEG基础模型

Zyphra于2026年7月16日发布了ZUNA1.1,这是一个基于Apache 2.0许可的开源脑电图(EEG)基础模型。该模型是一个3.8亿参数的掩码扩散自编码器,能够处理任意通道布局的EEG信号,并支持0.5至30秒的可变长度输入,相比之前固定5秒的ZUNA1更加灵活。通过改进训练策略(包括四种丢失模式和逐通道质量过滤)以及更大的语料库(约350万通道小时),ZUNA1.1在重建归一化均方误差上保持或优于ZUNA1。

来源MarkTechPost作者: Asif Razzaq

本周,Zyphra在Apache 2.0许可下发布了ZUNA1.1。这款脑电图(EEG)基础模型能够跨任意通道布局重建、去噪和上采样数据。它建立在Zyphra之前的开源EEG基础模型ZUNA1之上。

主要变化在于灵活性,而非原始精度的跃升。真实的EEG记录是混乱的:会话长度不一,通道可能中途出现噪声或丢失,电极帽配置从四电极头带到256通道研究帽各不相同。ZUNA1只能处理固定的5秒片段,而ZUNA1.1则接受0.5至30秒的可变长度输入。

ZUNA1.1是什么?

要理解这种灵活性,首先要了解模型的功能。ZUNA1.1是一个拥有3.8亿参数的掩码扩散自编码器,专门处理头皮EEG信号。给定一个通道子集,它可以对现有EEG片段和通道进行去噪、重建缺失的通道,还能根据头皮上的物理坐标预测新的通道信号。

参数数量与ZUNA1相同,可在消费级GPU上运行,并在许多工作负载下能在CPU上接受。权重存放在Hugging Face上;推理和预处理代码在GitHub上。通过pip install zuna即可安装。Zyphra还提供了一个免费的浏览器端EEG Playground,所有这些仅用于研究目的。

架构工作原理

灵活性依赖于分词化。ZUNA是一个变压器编码器-解码器扩散自编码器。它将每个通道分割成0.125秒的片段(在256 Hz下对应32个样本)。每个片段成为一个连续值令牌。令牌按通道×时间顺序序列化。

位置编码是关键:每个令牌携带一个4D旋转位置编码,包含(x, y, z, t)四个维度,即电极的3D头皮坐标和粗粒度时间索引。由于位置而非数组索引告诉模型通道的位置,ZUNA是通道无关的。它可以接受任何电极布局,并能生成从未记录过的位置的信号。这一能力使得通过位置进行任意通道上采样成为可能。

编码器将信号压缩为潜在表示,该潜在表示通过自适应RMS归一化条件化解码器。解码器使用整流流目标进行训练。ZUNA1.1的架构变更主要针对训练稳定性,例如增加了归一化层。

与ZUNA1的变化

由于架构相近,差异主要来自训练。

  1. 可变长度输入(0.5–30秒):ZUNA1.1在训练时对每个样本采样一个片段长度,并取整到0.125秒令牌网格。长度从四个区间中抽取,覆盖从极短到长。中间1.5–10秒范围被过采样,因为这是最常见的操作点。由于令牌数量变化,Zyphra将多个片段打包到一个批次中,直至固定预算。使用具有样本感知掩码的柔性注意力阻止令牌跨样本交互。因此,一个模型无需重新配置即可同时处理0.5秒的片段和30秒的长片段。
  1. 更丰富的重建任务混合:ZUNA1只训练了一种丢失模式:均匀随机整通道。ZUNA1.1训练了四种。第一种是整通道丢失,涵盖稀疏电极帽和死电极。第二种是移除所有通道上的短时间片段。第三种仅从部分通道移除这些片段,在空间和时间上聚类空白。第四种是散落在各个时间点的缺失值。
  1. 质量感知的预处理和更大的语料库:ZUNA1在全记录级别进行通道质量判断,丢弃了可用信号。ZUNA1.1改为计算每个通道每秒的质量分数,在加载时进行阈值处理。这使得语料库从约200万通道小时扩展到约350万通道小时公共EEG数据。Zyphra团队还为每条记录预计算两种滤波变体:0.1–45 Hz带通,以及0.01 Hz高通加陷波。泛化预处理策略是一个既定目标,但尚未有基准测试结果。

结果

因此,问题在于灵活性是否牺牲了准确性。在保留任务上,ZUNA1.1达到了与ZUNA1相同或更好的重建NMSE。两者均明显优于MNE中的经典球面样条插值。为了公平比较,这些评估集严格使用5秒样本。

Zyphra还进行了一项基于区域的测试:删除一个脑区的电极,然后从其余七个区域重建。这种设置比随机通道丢失更现实。ZUNA1.1在此测试中优于球面样条和ZUNA1。

交互式说明

为使这些机制更加具体,下方演示动画展示了端到端流程。

ZUNA1 vs ZUNA1.1

总体而言,两个版本的差异主要在于训练,而非架构。

| 属性 | ZUNA1 | ZUNA1.1 | |------|-------|---------| | 参数 | 380M | 380M | | 架构 | 变压器编码器-解码器扩散自编码器 | 相同,增加了额外的归一化层 | | 输入长度 | 固定5秒 | 0.5–30秒,取整到0.125秒网格 | | 令牌 | 0.125秒/32个样本(256 Hz) | 相同 | | 位置编码 | 4D RoPE (x, y, z, t) | 相同 | | 解码器目标 | 整流流 | 整流流 | | 训练中的丢失方案 | 1种(均匀随机整通道) | 4种(通道、时间、通道×时间、散点) | | 训练语料 | ~200万通道小时 | ~350万通道小时 | | 质量过滤 | 全记录级别 | 每个通道每秒得分,加载时阈值 | | 预处理变体 | 单一 | 两种(0.1–45 Hz带通;0.01 Hz高通+陷波) | | 许可 | Apache 2.0 | Apache 2.0 | | 重建NMSE | 基线 | 相同或更好 |

运行

实际应用中,reconstruct_fif可直接处理.fif文件,无需经过.pt格式。之前的四步流程仍附带提供。

from zuna import reconstruct_fif

reconstruct_fif(
    input_dir="fif_in",
    output_dir="fif_out",
    figures_dir="figures",
    gpu_device=0,  # GPU编号,或""表示CPU
    segment_sec=5.0,  # 窗口长度;默认5.0,非完整的30秒
    montage="standard_1020",  # 备用,仅在文件无位置时使用
    repair_channels=["Cz"],  # 需要完全重建的通道
    target_channel_count=["Fz", "Pz"],  # 按名称添加/上采样新通道(或使用int自动选择)
    bad_segments=[(5, 6), (10, 11, "C3")],  # 标记时间跨度不良(全部通道或单个)
    sample_steps=50,  # 扩散步数
)

注意默认值:segment_sec为5.0,因此0.5–30秒范围需要明确设置。电极位置从文件本身读取。montage参数仅在缺少位置时作为备用,没有3D坐标的通道将被丢弃。

重建目标是并集:它结合了文件自身的MNE坏通道和BAD_注释,以及上述请求的任何内容。会写入两个目录:full_reconstruction/包含模型在所有位置上的输出,hybrid/保留原始并仅填充推断的单元,外加一个_mask.npz文件。

应用示例

由于掩码现在更加灵活,几个实用模式由此展开。

  • 死电极:标记repair_channels=["Cz"],从相邻通道重建该通道。
  • 试验中的运动伪影:传递bad_segments=[(10, 11, "C3")],清理单个通道上的一个时间段。
  • 头带上采样:输入四个电极,然后请求额外的standard_1005位置。
  • UI驱动的清洗:通过mask_dir提供每文件掩码,与目标合并。

查看模型权重、GitHub仓库和技术细节。此外,欢迎在Twitter上关注我们,别忘了加入我们的15万+机器学习SubReddit并订阅我们的通讯。你在使用Telegram吗?现在你也可以在Telegram上加入我们。

需要与我们合作推广你的GitHub仓库或Hugging Face页面或产品发布或网络研讨会等?请联系我们。

文章《Zyphra发布ZUNA1.1:一个支持0.5至30秒可变长度输入的Apache 2.0 EEG基础模型》最早出现在MarkTechPost上。