NTSM: 神经生理学引导的三流选择性状态空间模型——EEG+EOG实时疲劳检测新突破

论文信息

  • 标题: NTSM: Neurophysiology-Guided Tri-Stream Selective State Space Model for Real-Time Driver Fatigue Detection with EEG-EOG Signals
  • 作者: Jiantao Yuan, Jing Tang, Haijun Han, Rui Yin, Shengli Liu, Jue Wang, Celimuge Wu
  • 期刊: IEEE Journal of Biomedical and Health Informatics (J-BHI)
  • DOI: 10.1109/JBHI.2026.3727477
  • 时间: 2026年8月26日在线发表
  • PubMed ID: 42647705

核心创新

NTSM提出三流(Tri-Stream)选择性状态空间模型,融合EEG和EOG信号进行实时驾驶员疲劳检测。核心创新是神经生理学引导的流分配策略——不同EEG频段和EOG特征分配到不同的流进行处理。

关键贡献

  1. 三流架构 — 分别处理EEG不同频段 + EOG特征
  2. 选择性状态空间模型 (Selective SSM) — 基于Mamba的高效时序建模
  3. 神经生理学引导 — 根据脑电频段生理意义分配流
  4. 实时性 — 满足车载实时检测需求

技术架构

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
EEG信号 (多通道)                    EOG信号 (眼电)
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 频段分解 │ │ 特征提取 │
│ │ │ │
│ • δ (0.5-4Hz)│ │ • 眨眼频率 │
│ • θ (4-8Hz) │ │ • 闭眼时长 │
│ • α (8-13Hz) │ │ • 扫视模式 │
│ • β (13-30Hz)│ │ │
│ • γ (30-50Hz)│ │ │
└──────┬───────┘ └──────┬───────┘
│ │
┌────┴──────────┐ │
│ │ │
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐
│流1: δ+θ│ │流2: α+β│ │流3: EOG│
│(慢波) │ │(快波) │ │(眼动) │
│ │ │ │ │ │
│ Select │ │ Select │ │ Select │
│ SSM │ │ SSM │ │ SSM │
└───┬────┘ └───┬────┘ └───┬────┘
│ │ │
└──────────────┼────────────────────┘
│
▼
┌───────────────┐
│ 融合+分类 │
│ 疲劳/清醒 │
└───────────────┘

神经生理学引导的流分配

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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
"""
NTSM: Neurophysiology-Guided Tri-Stream Selective State Space Model

论文: IEEE J-BHI 2026, doi:10.1109/JBHI.2026.3727477

核心方法: 基于Mamba的选择性状态空间模型
三流分别处理不同EEG频段和EOG特征
"""

import torch
import torch.nn as nn
import torch.nn.functional as F
import math

class SelectiveSSM(nn.Module):
"""
选择性状态空间模型 (基于Mamba架构)

与传统Transformer不同, SSM的推理复杂度为O(N)而非O(N²)
选择性机制允许模型根据输入内容动态调整参数
"""

def __init__(self, d_model: int, d_state: int = 16, d_conv: int = 4):
super().__init__()
self.d_model = d_model
self.d_state = d_state

# 输入线性投影
self.in_proj = nn.Linear(d_model, d_model * 2) # 分为gate和input

# 1D卷积 (局部特征提取)
self.conv1d = nn.Conv1d(
d_model, d_model,
kernel_size=d_conv,
padding=d_conv - 1
)

# SSM参数投影 (选择性)
self.x_proj = nn.Linear(d_model, d_state * 2 + 2 * d_model) # Δ, B, C, gate

# 可学习参数 A (通过A_log参数化保证稳定性)
A = torch.randn(d_model, d_state) * 0.01
self.A_log = nn.Parameter(torch.log(torch.abs(A) + 1e-6))
self.D = nn.Parameter(torch.ones(d_model))

# 输出投影
self.out_proj = nn.Linear(d_model, d_model)

def forward(self, x):
"""
Args:
x: (B, L, D) 输入序列

Returns:
y: (B, L, D) 输出序列
"""
B, L, D = x.shape

# 线性投影
xz = self.in_proj(x) # (B, L, 2*D)
x_in, z = xz.chunk(2, dim=-1) # 各(B, L, D)

# 1D卷积
x_in = self.conv1d(x_in.transpose(1, 2)).transpose(1, 2) # (B, L, D)
x_in = F.silu(x_in)

# SSM参数 (选择性)
ssm_params = self.x_proj(x_in) # (B, L, d_state*2 + 2*D)
dA, dB, C, gate = torch.split(
ssm_params,
[self.d_model, self.d_state, self.d_model, self.d_state],
dim=-1
)

# 离散化 (零阶保持)
A = -torch.exp(self.A_log) # (D, d_state)
dt = F.softplus(dA) # (B, L, D)

# 简化的SSM递归 (实际Mamba用并行扫描)
y = torch.zeros_like(x_in)
h = torch.zeros(B, D, self.d_state, device=x.device)

for t in range(L):
dt_t = dt[:, t, :] # (B, D)
A_discrete = torch.exp(A.unsqueeze(0) * dt_t.unsqueeze(-1)) # (B, D, d_state)
B_discrete = dB[:, t, :].unsqueeze(1) * dt_t.unsqueeze(-1) # (B, D, d_state)

# h = A * h + B * x
h = A_discrete * h + B_discrete * x_in[:, t, :].unsqueeze(-1)
# y = C * h
y[:, t, :] = (h * C[:, t, :].unsqueeze(1)).sum(-1) + self.D * x_in[:, t, :]

# Gate
y = y * F.silu(z)

# 输出投影
y = self.out_proj(y)

return y


class TriStreamNTSM(nn.Module):
"""
NTSM: 三流选择性状态空间模型

流1: EEG慢波 (δ+θ) — 与疲劳正相关
流2: EEG快波 (α+β) — 与警觉正相关
流3: EOG特征 — 眨眼/眼动模式

神经生理学依据:
- δ(0.5-4Hz): 深睡眠, 高δ→深度困倦
- θ(4-8Hz): 浅睡眠, 高θ→疲劳初期
- α(8-13Hz): 放松清醒, 低α→警觉下降
- β(13-30Hz): 活跃思考, 高β→高度警觉
- EOG: PERCLOS, 眨眼频率下降→疲劳
"""

def __init__(self,
eeg_channels: int = 32,
eog_channels: int = 4,
seq_length: int = 1000,
sampling_rate: float = 250.0):
super().__init__()

self.sampling_rate = sampling_rate

# 频段定义 (Hz)
self.bands = {
"delta": (0.5, 4.0),
"theta": (4.0, 8.0),
"alpha": (8.0, 13.0),
"beta": (13.0, 30.0),
"gamma": (30.0, 45.0)
}

d_model = 128

# 流1: 慢波 (δ+θ) — 疲劳相关
self.stream_slow = nn.Sequential(
nn.Linear(eeg_channels, d_model),
SelectiveSSM(d_model),
nn.LayerNorm(d_model)
)

# 流2: 快波 (α+β) — 警觉相关
self.stream_fast = nn.Sequential(
nn.Linear(eeg_channels, d_model),
SelectiveSSM(d_model),
nn.LayerNorm(d_model)
)

# 流3: EOG — 眼动特征
self.stream_eog = nn.Sequential(
nn.Linear(eog_channels, d_model),
SelectiveSSM(d_model),
nn.LayerNorm(d_model)
)

# 跨流注意力融合
self.fusion = nn.MultiheadAttention(d_model * 3, num_heads=8, batch_first=True)
self.fusion_norm = nn.LayerNorm(d_model * 3)

# 分类头
self.classifier = nn.Sequential(
nn.Linear(d_model * 3, 256),
nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(256, 64),
nn.ReLU(),
nn.Dropout(0.2),
nn.Linear(64, 2) # 疲劳/清醒
)

def bandpass_filter(self, x, low, high):
"""简单带通滤波 (实际用Butterworth)"""
# 简化: 实际实现需scipy.signal.butter
return x # placeholder

def forward(self, eeg: torch.Tensor, eog: torch.Tensor) -> torch.Tensor:
"""
Args:
eeg: (B, C, T) EEG信号
eog: (B, C_eog, T) EOG信号

Returns:
logits: (B, 2) 疲劳分类
"""
# 频段分解 (简化: 假设输入已分频段)
# 实际: 用滤波器分解
eeg_slow = eeg # δ+θ 分量
eeg_fast = eeg # α+β 分量

# 三流处理
# 转置: (B, C, T) → (B, T, C) 适配SSM
eeg_slow_t = eeg_slow.transpose(1, 2)
eeg_fast_t = eeg_fast.transpose(1, 2)
eog_t = eog.transpose(1, 2)

feat_slow = self.stream_slow(eeg_slow_t) # (B, T, d_model)
feat_fast = self.stream_fast(eeg_fast_t) # (B, T, d_model)
feat_eog = self.stream_eog(eog_t) # (B, T, d_model)

# 拼接
fused = torch.cat([feat_slow, feat_fast, feat_eog], dim=-1) # (B, T, 3*d_model)

# 跨流注意力
attn_out, _ = self.fusion(fused, fused, fused)
fused = self.fusion_norm(fused + attn_out)

# 池化
pooled = fused.mean(dim=1) # (B, 3*d_model)

# 分类
logits = self.classifier(pooled)

return logits


# 测试
if __name__ == "__main__":
B, C_eeg, C_eog, T = 8, 32, 4, 250 # 1秒@250Hz

eeg = torch.randn(B, C_eeg, T)
eog = torch.randn(B, C_eog, T)

model = TriStreamNTSM(eeg_channels=C_eeg, eog_channels=C_eog, seq_length=T)

# 参数量
params = sum(p.numel() for p in model.parameters())
print(f"模型参数量: {params:,}")

# 推理
logits = model(eeg, eog)
print(f"输入: EEG {eeg.shape}, EOG {eog.shape}")
print(f"输出: {logits.shape}")
print(f"预测: {'疲劳' if logits[0].argmax() == 0 else '清醒'}")

# 论文关键指标
print("\n=== NTSM论文关键指标 ===")
print("期刊: IEEE J-BHI 2026")
print("信号: EEG (32ch) + EOG (4ch)")
print("模型: 三流选择性状态空间 (Mamba-based)")
print("实时性: 满足车载实时需求")
print("创新: 神经生理学引导的流分配")

# 与传统方法对比
print("\n=== 对比 ===")
print("传统EEG疲劳检测: CNN/LSTM, O(N²) Transformer")
print("NTSM: Mamba SSM, O(N) 线性复杂度")
print("优势: 长序列建模更高效, 选择性关注关键时段")

与传统方法对比

维度 CNN/LSTM Transformer NTSM (SSM)
复杂度 O(N) O(N²) O(N)
长序列 一般 强 强
并行训练 ✅ ✅ ✅
选择性 ❌ 部分 ✅ (Mamba)
神经生理学 ❌ ❌ ✅ 流分配
EEG频段感知 统一处理 统一处理 分流处理
实时推理 中 慢(长序列) 快

神经生理学依据

EEG频段与疲劳关系

频段 频率 清醒状态 疲劳状态 NTSM流
δ (Delta) 0.5-4 Hz 极低 显著升高 ⬆️⬆️ 流1(慢波)
θ (Theta) 4-8 Hz 低 升高 ⬆️ 流1(慢波)
α (Alpha) 8-13 Hz 中等 变化不定 ↕️ 流2(快波)
β (Beta) 13-30 Hz 高 降低 ⬇️ 流2(快波)
γ (Gamma) 30-50 Hz 高 降低 ⬇️⬇️ (可选)

EOG疲劳特征

特征 清醒 疲劳
眨眼频率 15-20次/分 减少<10次/分
闭眼时长 <0.1s >0.5s (PERCLOS)
扫视频率 高 低
微睡眠 无 1-3s闭眼

IMS开发启示

1. SSM/Mamba在座舱中的应用

Mamba状态空间模型相比Transformer更适合车载场景:

  • 线性复杂度 — 长序列EEG处理不爆显存
  • 选择性机制 — 关注疲劳关键时段,忽略噪声
  • 实时推理 — 无需KV-cache,推理快

2. 多模态融合策略

NTSM的三流策略可推广到更多传感器:

3. 从EEG到非接触式

信号 接触方式 可行性 NTSM适用
EEG 头皮电极 实验室 ✅ 直接
EOG 眼周电极 实验室 ✅ 直接
rPPG 摄像头(非接触) 车载可行 可扩展
PERCLOS 摄像头(非接触) 车载可行 替代EOG
头部姿态 摄像头(非接触) 车载可行 辅助

4. 落地建议

阶段 目标 时间
Phase 1 EEG+EOG实验室验证NTSM 3月
Phase 2 rPPG+PERCLOS替代EEG/EOG 6月
Phase 3 Mamba SSM部署到车载NPU 12月
Phase 4 多模态疲劳检测量产 18月

参考

  • 论文: IEEE J-BHI 2026, doi:10.1109/JBHI.2026.3727477
  • PubMed: https://pubmed.ncbi.nlm.nih.gov/42647705/
  • Mamba SSM原论文: Gu & Dao, “Mamba: Linear-Time Sequence Modeling with Selective State Spaces”

发布时间: 2026-09-24 06:00
分类: EEG | EOG | 疲劳检测 | 状态空间模型 | Mamba | 论文解读