乘客 EEG 危险感知解码——EEG 作为自动驾驶 SOTIF 辅助监督信号

论文信息

  • 标题: EEG-Driven Decoding Framework for Passenger Hazard Perception in Highly Automated Vehicles
  • 作者: Yingkai Yang, Ashton Yu Xuan Tan 等 (清华大学 + Imperial College + Penn State)
  • arXiv: 2609.07128
  • 期刊: Automotive Innovation (已接收)
  • 代码: https://github.com/SOTIF-AVLab/EEG2023
  • 数据: https://doi.org/10.21227/jw72-m261
  • 核心: 3D-CRNN 解码乘客 EEG,风险预测 95.3% BA,危险识别 85.0% BA

核心创新

  1. 乘客认知模型 (PCM):建模乘客(非驾驶员)的神经危险感知
  2. 风险感知序列标注 (RSL):利用时间序列标签提升 DI 从 80.9% → 85.0%
  3. 3D-CRNN 模型:3D CNN + RNN 联合解码 EEG 时空特征
  4. 乘客 EEG 解码策略 (PEDS):完整的从采集到解码管道
  5. 跨被试泛化:未见被试 64.9% BA,已见被试 77.4% BA

方法详解

1. 任务定义

任务 缩写 描述 性能
风险预测 (Risk Prediction) RP 在危险事件发生前预测风险 95.3% BA
危险识别 (Danger Identification) DI 识别已发生的危险事件 85.0% BA

2. 3D-CRNN 架构

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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
"""
3D-CRNN: 3D CNN + RNN 联合 EEG 解码

论文核心模型:
1. 3D CNN: 提取 EEG 时空频特征 (通道×时间×频率)
2. RNN (GRU): 建模时序依赖
3. 分类头: RP + DI 双任务

输入: EEG (C×T×F) — 通道×时间×频率
输出: RP logits + DI logits
"""

import torch
import torch.nn as nn
import torch.nn.functional as F
from typing import Dict, Tuple, Optional
import numpy as np

class EEG3DCNN(nn.Module):
"""
3D CNN: EEG 时空频特征提取

输入: (B, C, T, F) — 通道×时间×频率
输出: (B, D, T') — 时序特征

论文使用 3D 卷积捕获通道-时间-频率联合模式
"""
def __init__(self, n_channels: int = 32, n_freq_bins: int = 8,
hidden_dim: int = 128):
super().__init__()
# 第一层: 3D 卷积
self.conv1 = nn.Sequential(
nn.Conv3d(1, 16, kernel_size=(3, 5, 3), stride=(1, 1, 1),
padding=(1, 2, 1)),
nn.BatchNorm3d(16),
nn.ELU(),
nn.MaxPool3d(kernel_size=(1, 2, 1))
)
# 第二层
self.conv2 = nn.Sequential(
nn.Conv3d(16, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1),
padding=(1, 1, 1)),
nn.BatchNorm3d(32),
nn.ELU(),
nn.MaxPool3d(kernel_size=(1, 2, 1))
)
# 第三层
self.conv3 = nn.Sequential(
nn.Conv3d(32, hidden_dim, kernel_size=(3, 3, 1), stride=(1, 1, 1),
padding=(1, 1, 0)),
nn.BatchNorm3d(hidden_dim),
nn.ELU(),
nn.AdaptiveAvgPool3d((1, None, 1)) # 保持时间维度
)

def forward(self, x: torch.Tensor) -> torch.Tensor:
"""
Args:
x: (B, 1, C, T, F) — 批×通道×时间×频率

Returns:
features: (B, D, T') — 时序特征
"""
x = self.conv1(x) # (B, 16, C', T//2, F')
x = self.conv2(x) # (B, 32, C'', T//4, F'')
x = self.conv3(x) # (B, D, 1, T', 1)
return x.squeeze(2).squeeze(-1) # (B, D, T')


class TemporalRNN(nn.Module):
"""GRU 时序建模"""
def __init__(self, hidden_dim: int = 128, n_layers: int = 2):
super().__init__()
self.gru = nn.GRU(
hidden_dim, hidden_dim,
num_layers=n_layers,
batch_first=True,
dropout=0.3 if n_layers > 1 else 0
)

def forward(self, x: torch.Tensor) -> torch.Tensor:
"""x: (B, D, T) → (B, T, D)"""
x = x.transpose(1, 2) # (B, T, D)
out, _ = self.gru(x)
return out # (B, T, D)


class RiskAwareSequentialLabeling(nn.Module):
"""
RSL: 风险感知序列标注

论文核心改进: 利用时间序列标签
- 标准 DI: 每个时间点独立分类
- RSL: 利用前后时序上下文修正标签

DI 从 80.9% → 85.0% BA
"""
def __init__(self, hidden_dim: int = 128, n_classes: int = 2):
super().__init__()
# 序列标注头
self.label_generator = nn.Sequential(
nn.Linear(hidden_dim, hidden_dim),
nn.GELU(),
nn.Dropout(0.3),
nn.Linear(hidden_dim, n_classes)
)

# 时序一致性约束 (CRF 简化版)
self.transition = nn.Parameter(
torch.randn(n_classes, n_classes) * 0.1
)

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

Returns:
logits: (B, T, n_classes)
"""
logits = self.label_generator(x) # (B, T, C)

# 加入转移概率 (CRF 简化)
# P(y_t | y_{t-1}) = transition[y_{t-1}, y_t]
return {'logits': logits, 'transition': self.transition}


class ThreeDCRNN(nn.Module):
"""
3D-CRNN: 完整模型

管道:
1. EEG → STFT → (C, T, F)
2. 3D CNN → 时空频特征
3. GRU → 时序依赖
4. RP 头 + DI/RSL 头

双任务:
- RP (Risk Prediction): 预测未来风险
- DI (Danger Identification): 识别当前危险
"""
def __init__(self, n_channels: int = 32, n_freq_bins: int = 8,
hidden_dim: int = 128, n_classes: int = 2):
super().__init__()
self.cnn = EEG3DCNN(n_channels, n_freq_bins, hidden_dim)
self.rnn = TemporalRNN(hidden_dim, n_layers=2)

# 双任务头
self.rp_head = nn.Linear(hidden_dim, n_classes) # 风险预测
self.di_head = RiskAwareSequentialLabeling(hidden_dim, n_classes) # 危险识别

def forward(self, eeg_stft: torch.Tensor) -> Dict[str, torch.Tensor]:
"""
Args:
eeg_stft: (B, 1, C, T, F) — EEG STFT

Returns:
rp_logits: (B, n_classes) — 风险预测
di_logits: (B, T, n_classes) — 危险识别序列
"""
# 3D CNN
features = self.cnn(eeg_stft) # (B, D, T')

# RNN
temporal = self.rnn(features) # (B, T', D)

# RP: 全局池化后分类
pooled = temporal.mean(dim=1) # (B, D)
rp_logits = self.rp_head(pooled) # (B, C)

# DI: 序列标注
di_output = self.di_head(temporal)

return {
'rp_logits': rp_logits,
'di_logits': di_output['logits'],
'transition': di_output['transition'],
'features': temporal
}


# IMS 座舱应用: 乘客认知辅助监督
class PassengerCognitiveSupervisor:
"""
IMS 乘客认知辅助监督系统

基于 EEG 危险感知论文方法

应用:
1. SOTIF 辅助: 乘客 EEG 可提供额外安全监督
2. AV 决策辅助: 乘客感知到危险 → AV 减速/避让
3. 信任度评估: 乘客 EEG 反映对 AV 的信任
4. 个性化: 不同乘客的风险感知阈值不同

非侵入式 EEG 方案:
- 头靠嵌入式 EEG 电极 (无需佩戴头套)
- 耳道 EEG (消费级耳塞)
- 近期可行: 商用头靠 EEG 已有
"""
def __init__(self):
self.model = ThreeDCRNN(n_channels=8, n_freq_bins=8, hidden_dim=64)
self.rp_threshold = 0.7 # 风险预测阈值
self.di_threshold = 0.6 # 危险识别阈值

def monitor(self, eeg_stft: np.ndarray) -> dict:
"""
监控乘客认知状态

Args:
eeg_stft: (1, 1, C, T, F) EEG STFT

Returns:
cognitive_state: {
'risk_prediction': float, # 0-1
'danger_identification': list, # T 个时间点
'risk_level': int,
'action': str,
'av_supervision': str # AV 辅助建议
}
"""
with torch.no_grad():
output = self.model(torch.from_numpy(eeg_stft).float())

# 风险预测
rp_prob = F.softmax(output['rp_logits'], dim=-1)[0, 1].item()

# 危险识别序列
di_probs = F.softmax(output['di_logits'], dim=-1) # (T, C)
di_sequence = di_probs[0, :, 1].tolist() # T 个危险概率

# 风险等级
if rp_prob > 0.8:
risk_level = 3
action = '紧急: 乘客感知高风险, AV 应立即减速'
elif rp_prob > self.rp_threshold:
risk_level = 2
action = '警告: 乘客感知风险, AV 应提高警惕'
elif rp_prob > 0.5:
risk_level = 1
action = '注意: 乘客轻度不安, 记录'
else:
risk_level = 0
action = '正常: 乘客认知状态平稳'

# AV 辅助建议
if risk_level >= 2:
av_supervision = 'SOTIF: 乘客认知信号触发额外安全检查'
else:
av_supervision = '正常模式'

return {
'risk_prediction': rp_prob,
'danger_identification': di_sequence,
'risk_level': risk_level,
'action': action,
'av_supervision': av_supervision
}


# 测试
if __name__ == "__main__":
print("=== 3D-CRNN EEG 模型测试 ===")
model = ThreeDCRNN(n_channels=32, n_freq_bins=8, hidden_dim=128)

B, C, T, F = 4, 32, 100, 8
eeg_stft = torch.randn(B, 1, C, T, F)

output = model(eeg_stft)
print(f"输入: EEG STFT {eeg_stft.shape}")
print(f"RP logits: {output['rp_logits'].shape}")
print(f"DI logits: {output['di_logits'].shape}")

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

# 乘客认知监控
supervisor = PassengerCognitiveSupervisor()

# 模拟场景
scenarios = {
'正常驾驶': np.random.randn(1, 1, 8, 50, 8) * 0.3,
'前车急刹': np.random.randn(1, 1, 8, 50, 8) * 1.5 + 0.8,
'行人横穿': np.random.randn(1, 1, 8, 50, 8) * 1.2 + 0.5,
}

print(f"\n=== 乘客认知监控测试 ===")
for name, eeg in scenarios.items():
result = supervisor.monitor(eeg)
print(f"\n{name}:")
print(f" 风险预测: {result['risk_prediction']:.2f}")
print(f" 风险等级: {result['risk_level']}")
print(f" 动作: {result['action']}")
print(f" AV 辅助: {result['av_supervision']}")

# 论文性能
print(f"\n=== 论文性能报告 ===")
print(f"{'任务':<25} {'方法':<15} {'BA':<10} {'±'}")
print(f"{'RP (Risk Prediction)':<25} {'3D-CRNN':<15} {'95.3%':<10} {'2.7%'}")
print(f"{'DI (单标签)':<25} {'3D-CRNN':<15} {'80.9%':<10} {'3.9%'}")
print(f"{'DI + RSL':<25} {'3D-CRNN+RSL':<15} {'85.0%':<10} {'3.2%'}")
print(f"{'跨会话 DI':<25} {'3D-CRNN':<15} {'77.0%':<10} {'5.3%'}")
print(f"{'跨被试 (已见)':<25} {'3D-CRNN':<15} {'77.4%':<10} {'1.1%'}")
print(f"{'跨被试 (未见)':<25} {'3D-CRNN':<15} {'64.9%':<10} {'8.5%'}")

3. 非侵入式 EEG 方案

方案 电极位置 信号质量 舒适度 可行性
头靠嵌入式 头靠枕部 ⚠️ 中 ✅ 无感 ⚠️ 需定制
耳道 EEG 耳塞 ⚠️ 中 ✅ 高 ✅ 近期可行
额贴片 前额 ✅ 高 ⚠️ 需佩戴 ⚠️ 消费级
干电极头带 头顶 ✅ 高 ❌ 低 ❌ 不适合座舱

4. SOTIF 辅助监督

graph TD
    A[AV 传感器] --> D[AV 决策]
    B[乘客 EEG] --> C[认知解码]
    C --> E{风险预测}
    E -->|高风险| F[SOTIF 额外检查]
    E -->|低风险| G[正常模式]
    F --> H[AV 减速/避让]
    G --> D
    H --> D

IMS 应用

1. 乘客安全监督

场景 RP 概率 DI 序列 IMS 动作
正常行驶 < 0.3 全 0 正常
前车急刹 > 0.8 上升 AV 紧急制动
行人横穿 > 0.7 脉冲 AV 减速
乘客紧张 0.5-0.7 波动 记录+准备
乘客放松 < 0.3 全 0 正常

2. 与 DMS 融合

信号源 检测目标 融合方式
DMS 摄像头 驾驶员疲劳/分心 主信号
乘客 EEG 乘客危险感知 辅助信号
AV 传感器 外部环境 主决策
三模态融合 SOTIF 乘客 EEG 作为额外安全层

3. 信任度评估

乘客 EEG 特征 信任度 含义
低风险概率 + 低 DI 高信任 乘客对 AV 放心
高风险概率 + 高 DI 低信任 乘客对 AV 不安
风险波动大 中信任 乘客部分信任
持续高风险 极低信任 需人类接管

开发启示

  1. 乘客 EEG 是 SOTIF 的辅助安全层:95.3% RP BA 远超 AV 传感器单独的可靠性
  2. 3D-CRNN 是 EEG 解码的最优架构:3D CNN 捕获时空频联合模式 + GRU 时序依赖
  3. RSL 序列标注提升 DI 4.1%:利用时序上下文比独立分类更有效
  4. 跨被试泛化是挑战:未见被试仅 64.9% BA,需更多被试数据
  5. 非侵入式 EEG 近期可行:头靠嵌入式或耳道 EEG 无需佩戴头套
  6. 乘客认知 ≠ 驾驶员认知:乘客更早感知危险(无控制任务干扰)
  7. 信任度评估是新应用:EEG 可反映乘客对 AV 的信任度变化
  8. 与 DMS 互补:DMS 关注驾驶员,EEG 关注乘客,形成完整座舱安全

测试场景

EEG-01 乘客危险感知测试

前置条件:

  • 模拟器: SAE L3 自动驾驶场景
  • 乘客: 8 通道头靠 EEG
  • 危险事件: 前车急刹/行人横穿

测试步骤:

  1. 正常自动驾驶 60s(基线 EEG)
  2. 触发危险事件(前车急刹)
  3. 记录乘客 EEG 和 RP/DI 输出
  4. 恢复正常 60s

判定条件:

检测项 通过条件
RP 检测延迟 ≤ 2s
RP 准确率 ≥ 90%
DI 序列上升 ≤ 1s
误报率 ≤ 10%
恢复检测 ≤ 10s

总结

这篇 Automotive Innovation 论文为 IMS 座舱认知安全提供了新维度:

  1. 乘客 EEG 可提供 SOTIF 辅助监督:95.3% RP BA,远超单一传感器
  2. 3D-CRNN 联合时空频解码是 EEG 最优架构
  3. RSL 序列标注提升 DI 4.1%(80.9% → 85.0%)
  4. 跨被试泛化 64.9% BA,需更多数据提升
  5. 非侵入式 EEG(头靠/耳道)近期可行
  6. 乘客感知 ≠ 驾驶员感知:乘客更早感知危险
  7. 信任度评估新应用:EEG 反映乘客对 AV 的信任
  8. 三模态融合:DMS + 乘客 EEG + AV 传感器 = SOTIF 完整安全层

https://dapalm.com/2026/09/15/2026-09-15-eeg-passenger-hazard-perception-sotif-av-ims/
作者
Mars
发布于
2026年9月15日
许可协议