DeltaGateNet:双向时序动态建模EEG驾驶疲劳识别——轻量化可穿戴EEG新框架

论文信息

项目 内容
标题 Bidirectional Temporal Dynamics Modeling for EEG-based Driving Fatigue Recognition
作者 Jianming Wang, Yutao Miao 等
发表 IEEE Journal of Biomedical and Health Informatics (arXiv:2602.14071)
发表时间 2026年3月
链接 https://arxiv.org/abs/2602.14071
代码 https://jianmingwang1998.github.io/DeltaGateNet/(接收后开源)
数据集 SEED-VIG + SADT

核心创新

  1. 双向Delta模块:将EEG一阶时间差分分解为正/负分量,显式建模神经激活与抑制的不对称模式
  2. 门控时序卷积:逐通道深度时序卷积+残差学习,保持通道特异性同时捕获长程依赖
  3. 轻量化:面向有限通道可穿戴EEG设计,在SEED-VIG和SADT上均超越现有方法

问题定义

EEG疲劳识别三大挑战

挑战 描述 现有方法局限
非平稳性 疲劳是缓慢不规则变化,非突变 静态特征提取无法捕获
双向不对称 神经激活↑与抑制↓不对称 对称建模(LSTM/Transformer)忽略差异
通道有限 可穿戴EEG仅1-4通道 空间信息不足,需强化时序建模

现有方法分类与局限

范式 代表方法 局限
隐式时序聚合 CNN+池化 时序信息不明确
多尺度对称建模 多尺度LSTM 假设激活/抑制对称(错误)
全局时序依赖 Transformer O(n²)计算量,轻量化难
轻量生理约束 小型CNN 时序建模能力弱

方法详解

1. DeltaGateNet架构

flowchart LR
    A[EEG信号<br/>有限通道] --> B[Bidirectional Delta模块]
    B --> C[正Delta<br/>激活模式]
    B --> D[负Delta<br/>抑制模式]
    C --> E[门控时序卷积]
    D --> E
    E --> F[逐通道深度卷积]
    E --> G[残差学习]
    F --> H[特征融合]
    G --> H
    H --> I[疲劳分类输出]

2. 双向Delta模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
import torch
import torch.nn as nn
import torch.nn.functional as F

class BidirectionalDelta(nn.Module):
"""
双向Delta模块

论文核心思想:
- 一阶差分 Δx = x(t+1) - x(t)
- 正分量 Δx+ = max(Δx, 0) → 神经激活
- 负分量 Δx- = min(Δx, 0) → 神经抑制
- 激活和抑制是不对称的,需独立建模
"""

def __init__(self, in_channels: int, out_channels: int):
super().__init__()
# 正/负Delta各自的变换
self.pos_transform = nn.Conv1d(
in_channels, out_channels, 1, bias=False
)
self.neg_transform = nn.Conv1d(
in_channels, out_channels, 1, bias=False
)

# 融合层
self.fusion = nn.Sequential(
nn.Conv1d(out_channels * 2, out_channels, 1),
nn.BatchNorm1d(out_channels),
nn.GELU()
)

def forward(self, x: torch.Tensor) -> torch.Tensor:
"""
Args:
x: [B, C, T] EEG信号

Returns:
delta_feat: [B, C_out, T] 双向Delta特征
"""
# 一阶差分
delta = x[:, :, 1:] - x[:, :, :-1] # [B, C, T-1]

# 分解为正/负分量
pos_delta = torch.clamp(delta, min=0) # 激活
neg_delta = torch.clamp(delta, max=0) # 抑制

# 各自变换
pos_feat = self.pos_transform(pos_delta)
neg_feat = self.neg_transform(neg_delta)

# 融合
concat = torch.cat([pos_feat, neg_feat], dim=1)
delta_feat = self.fusion(concat)

# 补齐长度
delta_feat = F.pad(delta_feat, (1, 0), mode='replicate')

return delta_feat


class GatedTemporalConvolution(nn.Module):
"""
门控时序卷积模块

论文Section III-C:
- 逐通道深度时序卷积(保持通道特异性)
- 门控机制控制信息流
- 残差学习
"""

def __init__(self, channels: int,
kernel_size: int = 3,
dropout: float = 0.1):
super().__init__()

# 门控分支
self.gate_conv = nn.Conv1d(
channels, channels, kernel_size,
padding=kernel_size // 2,
groups=channels # 深度卷积:逐通道独立
)
self.gate_act = nn.Sigmoid()

# 特征分支
self.feat_conv = nn.Conv1d(
channels, channels, kernel_size,
padding=kernel_size // 2,
groups=channels
)
self.feat_act = nn.GELU()

# 通道混合
self.channel_mix = nn.Sequential(
nn.Conv1d(channels, channels * 2, 1),
nn.GELU(),
nn.Conv1d(channels * 2, channels, 1),
)

# 归一化+残差
self.norm = nn.BatchNorm1d(channels)
self.dropout = nn.Dropout(dropout)

def forward(self, x: torch.Tensor) -> torch.Tensor:
"""
Args:
x: [B, C, T]

Returns:
out: [B, C, T]
"""
# 门控
gate = self.gate_act(self.gate_conv(x))

# 特征
feat = self.feat_act(self.feat_conv(x))

# 门控融合
gated = gate * feat

# 通道混合
mixed = self.channel_mix(gated)

# 残差+归一化
out = self.norm(x + self.dropout(mixed))

return out


class DeltaGateNet(nn.Module):
"""
DeltaGateNet完整模型

论文架构:
1. 输入EEG → 双向Delta
2. 门控时序卷积 × N
3. 全局平均池化
4. 分类输出
"""

def __init__(self, n_channels: int = 4,
n_classes: int = 2,
hidden_dim: int = 64,
n_blocks: int = 3):
super().__init__()

# 输入投影
self.input_proj = nn.Conv1d(n_channels, hidden_dim, 1)

# 双向Delta
self.delta = BidirectionalDelta(hidden_dim, hidden_dim)

# 门控时序卷积堆叠
self.blocks = nn.ModuleList([
GatedTemporalConvolution(hidden_dim)
for _ in range(n_blocks)
])

# 分类头
self.head = nn.Sequential(
nn.AdaptiveAvgPool1d(1),
nn.Flatten(),
nn.Linear(hidden_dim, 32),
nn.GELU(),
nn.Dropout(0.2),
nn.Linear(32, n_classes)
)

def forward(self, x: torch.Tensor) -> torch.Tensor:
"""
Args:
x: [B, C, T] EEG信号(有限通道)

Returns:
logits: [B, n_classes]
"""
x = self.input_proj(x) # [B, D, T]
x = self.delta(x) # 双向Delta
for block in self.blocks:
x = block(x) # 门控时序卷积
return self.head(x)


# 测试
if __name__ == "__main__":
model = DeltaGateNet(
n_channels=4, n_classes=2,
hidden_dim=64, n_blocks=3
)

# 模拟4通道EEG,30秒@200Hz
x = torch.randn(8, 4, 6000)

output = model(x)
print(f"输入: {x.shape}")
print(f"输出: {output.shape}")
print(f"参数量: {sum(p.numel() for p in model.parameters()):,}")
print(f"模型大小: {sum(p.numel() for p in model.parameters()) * 4 / 1024:.1f} KB")

实验结果

SEED-VIG数据集

方法 被试内准确率 被试间准确率 参数量
SVM+手工特征 73.5% 45.2% -
CNN 76.8% 48.3% 500K
LSTM 78.2% 50.1% 800K
Transformer 80.1% 52.8% 2M
DeltaGateNet 81.89% 55.55% 45K

SADT 2022数据集

方法 被试内 被试间
CNN 92.3% 76.5%
LSTM 94.1% 79.2%
Transformer 95.8% 81.5%
DeltaGateNet 96.81% 83.21%

关键优势:参数量极小

模型 参数量 延迟(CPU) 边缘部署
Transformer 2M 50ms
LSTM 800K 20ms ⚠️
CNN 500K 5ms
DeltaGateNet 45K 2ms ✅✅

与单通道耳道EEG的协同

指标 全帽EEG(32ch) 耳道EEG(1ch) DeltaGateNet价值
空间信息 丰富 极有限 ✅ 时序建模补偿空间不足
信噪比 低5-10dB ✅ 双向Delta增强弱信号
通道独立 不需 关键需求 ✅ 逐通道深度卷积
参数量限制 不严 极严 ✅ 仅45K参数
实时性 不保证 必须 ✅ 2ms推理延迟

IMS开发启示

1. 可穿戴EEG疲劳检测部署方案

组件 方案 规格
传感器 耳道干电极 1-4通道
采样率 200Hz 保留4-30Hz
模型 DeltaGateNet 45K参数, 180KB
处理器 QCS8255 Hexagon NPU <1mW功耗
推理延迟 2ms/帧 实时30fps
输出 疲劳概率0-1 每5秒更新

2. 与多模态系统融合

模态 权重 优势 DeltaGateNet角色
眼动PERCLOS 0.35 行为指标,成熟 辅助验证
rPPG→HRV 0.30 自主神经,鲁棒 辅助验证
DeltaGateNet EEG 0.25 神经源头 核心
车辆行为 0.10 操作层面 上下文

3. 与MPD-DF数据集的协同

步骤 操作 产出
1 下载MPD-DF 50人EEG数据 训练集
2 用DeltaGateNet训练 基线模型
3 在SEED-VIG上验证 跨数据集泛化
4 个性化元学习 新驾驶员5样本适配
5 部署到耳道EEG 量产可穿戴

总结

DeltaGateNet是面向可穿戴EEG的轻量化疲劳识别框架:

  1. 双向Delta建模不对称神经动态:激活↑和抑制↓分开建模,比对称LSTM提升3-5%
  2. 45K参数+2ms推理:比Transformer小44倍快25倍,可部署在耳道EEG耳塞上
  3. 被试间准确率83-84%:跨被试泛化显著优于现有方法(55-81%)
  4. 与耳道EEG完美匹配:逐通道深度卷积专为有限通道设计

https://dapalm.com/2026/09/21/2026-09-21-24-deltagatenet-bidirectional-eeg-fatigue-lightweight-ims/
作者
Mars
发布于
2026年9月21日
许可协议