乘客EEG解码危险感知:当大脑成为自动驾驶的辅助安全传感器

论文信息

  • 标题: EEG-Driven Decoding Framework for Passenger Hazard Perception in Highly Automated Vehicles
  • 作者: Yingkai Yang, Ashton Yu Xuan Tan, Bowen Li, Xiaorong Gao, Sifa Zheng, Jianqiang Wang, Xinyu Gu, Yang Zhao, Yuxin Zhang, Sharon X. Huang, Tania Stathaki, Jun Li, Hong Wang
  • 期刊: Automotive Innovation (已接收)
  • arXiv: 2609.07128 (2026年9月7日)
  • 代码: https://github.com/SOTIF-AVLab/EEG2023
  • 数据: https://doi.org/10.21227/jw72-m261

核心创新

本文首次提出将乘客脑电(EEG)信号作为自动驾驶的辅助安全监督信号,用于风险预测(RP)和危险识别(DI)。核心创新是建模”乘客”而非”驾驶员”的认知反应——匹配真实自动驾驶场景。

三大创新点

  1. Passenger Cognitive Model (PCM) — 乘客认知模型,建模乘客对交通事件的神经反应
  2. Risk-aware Sequential Labeling (RSL) — 风险感知序列标注策略,提升DI性能
  3. Passenger EEG Decoding Strategy (PEDS) — 集成3D-CRNN的联合EEG解码框架

方法详解

整体架构

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
交通事件视频 → 乘客观看 → EEG信号采集 (Neuroscan)
│
▼
┌───────────────────────────┐
│ Passenger EEG Decoding │
│ Strategy (PEDS) │
│ │
│ ┌─────────────────────┐ │
│ │ PCM (乘客认知模型) │ │
│ │ • 事件前(-2s~-1s) │ │
│ │ • 事件中(-0.2s~1s) │ │
│ │ • P300成分分析 │ │
│ └──────────┬──────────┘ │
│ │ │
│ ┌──────────┴──────────┘ │
│ │ RSL (风险序列标注) │ │
│ │ • 高风险: E1,2,7,8, │ │
│ │ 13,14 │ │
│ │ • 低风险: 其余 │ │
│ └──────────┬──────────┘ │
│ │ │
│ ┌──────────┴──────────┘ │
│ │ 3D-CRNN │ │
│ │ • 3D卷积: 空间-时序 │ │
│ │ • 循环: 序列建模 │ │
│ │ • 输出: RP + DI │ │
│ └─────────────────────┘ │
└───────────────────────────┘

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
"""
论文:EEG-Driven Decoding Framework for Passenger Hazard Perception
arXiv: 2609.07128
代码:https://github.com/SOTIF-AVLab/EEG2023

核心方法:3D-CRNN 用于EEG信号的风险预测和危险识别
"""

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

class CRNN3D(nn.Module):
"""
3D Convolutional Recurrent Neural Network

论文Section 3描述的3D-CRNN模型:
- 3D卷积层: 提取EEG空间-时序特征
- 循环层: 建模时序依赖
- 分类头: 风险预测(RP) + 危险识别(DI)

输入: EEG信号, shape=(batch, channels, time, freq) 或 (batch, 1, channels, time)
输出: RP logits + DI logits
"""

def __init__(self,
num_channels: int = 32, # Neuroscan EEG通道数
time_steps: int = 1200, # 时间步数
num_classes_rp: int = 2, # 风险预测: 高风险/低风险
num_classes_di: int = 2): # 危险识别: 有危险/无危险
super().__init__()

# 3D卷积块1: 提取空间-时序特征
self.conv3d_1 = nn.Conv3d(
in_channels=1, # 单通道输入
out_channels=16, # 特征图数
kernel_size=(3, 3, 3), # (时间, 通道, 频率)
stride=(1, 1, 1),
padding=(1, 1, 1)
)
self.bn1 = nn.BatchNorm3d(16)
self.pool1 = nn.MaxPool3d(kernel_size=(2, 1, 1)) # 仅池化时间维

# 3D卷积块2
self.conv3d_2 = nn.Conv3d(
in_channels=16,
out_channels=32,
kernel_size=(3, 3, 3),
stride=(1, 1, 1),
padding=(1, 1, 1)
)
self.bn2 = nn.BatchNorm3d(32)
self.pool2 = nn.MaxPool3d(kernel_size=(2, 1, 1))

# 3D卷积块3
self.conv3d_3 = nn.Conv3d(
in_channels=32,
out_channels=64,
kernel_size=(3, 3, 3),
stride=(1, 1, 1),
padding=(1, 1, 1)
)
self.bn3 = nn.BatchNorm3d(64)
self.pool3 = nn.MaxPool3d(kernel_size=(2, 1, 1))

# 计算Flatten后的尺寸
# 时间维: 1200 → 600 → 300 → 150
time_after_conv = time_steps // 8
flat_size = 64 * time_after_conv * num_channels

# LSTM循环层
self.lstm = nn.LSTM(
input_size=64 * num_channels,
hidden_size=128,
num_layers=2,
batch_first=True,
bidirectional=True,
dropout=0.3
)

# 风险预测头 (RP)
self.rp_head = nn.Sequential(
nn.Linear(256, 64), # 256 = 128*2 (双向LSTM)
nn.ReLU(),
nn.Dropout(0.5),
nn.Linear(64, num_classes_rp)
)

# 危险识别头 (DI)
self.di_head = nn.Sequential(
nn.Linear(256, 64),
nn.ReLU(),
nn.Dropout(0.5),
nn.Linear(64, num_classes_di)
)

def forward(self, x):
"""
前向传播

Args:
x: EEG信号, shape=(B, 1, T, C, F)
B=batch, T=time, C=channels, F=freq

Returns:
rp_logits: 风险预测 logits
di_logits: 危险识别 logits
"""
# 3D卷积提取空间-时序特征
x = F.relu(self.bn1(self.conv3d_1(x)))
x = self.pool1(x)

x = F.relu(self.bn2(self.conv3d_2(x)))
x = self.pool2(x)

x = F.relu(self.bn3(self.conv3d_3(x)))
x = self.pool3(x)

# Reshape for LSTM: (B, T', C'*F')
B, C, T, Ch, F = x.shape
x = x.permute(0, 2, 1, 3, 4) # (B, T', C, Ch, F)
x = x.reshape(B, T, C * Ch * F)

# LSTM时序建模
lstm_out, _ = self.lstm(x)

# 取最后时刻输出
last_output = lstm_out[:, -1, :]

# 双任务头
rp_logits = self.rp_head(last_output)
di_logits = self.di_head(last_output)

return rp_logits, di_logits


# 对比模型: CSP + XGBDIM (论文基线)
class CSPFeatureExtractor(nn.Module):
"""
Common Spatial Pattern (CSP) 特征提取

论文中的基线方法:
1. CSP: 空间滤波,最大化两类方差比
2. XGBDIM: XGBoost用于危险识别
3. EEGNet/DeepConvNet: 深度学习基线
"""

def __init__(self, num_channels: int = 32, num_filters: int = 6):
super().__init__()
# CSP通过空间滤波器增强两类区分度
self.num_filters = num_filters
# 实际CSP需在fit时计算空间滤波器矩阵W
# W = argmax(tr(WΣ₁Wᵀ) / tr(WΣ₂Wᵀ))

def forward(self, x):
"""CSP特征提取"""
# 这里简化实现,实际需scikit-learn CSP
return x


# 测试
if __name__ == "__main__":
# 模拟EEG数据
# Neuroscan设备: 32通道, 1000Hz采样率
batch_size = 8
time_steps = 1200 # 1.2秒 @ 1000Hz
num_channels = 32

# 输入: (B, 1, T, C, 1) — 单频率维
x = torch.randn(batch_size, 1, time_steps, num_channels, 1)

model = CRNN3D(num_channels=num_channels, time_steps=time_steps)
rp_logits, di_logits = model(x)

print(f"输入形状: {x.shape}")
print(f"RP logits形状: {rp_logits.shape}")
print(f"DI logits形状: {di_logits.shape}")
print(f"\n模型参数量: {sum(p.numel() for p in model.parameters()):,}")

# 论文结果对比
print("\n=== 论文实验结果 ===")
print("3D-CRNN:")
print(f" RP Balanced Accuracy: 95.3% ± 2.7%")
print(f" DI (单被试): 80.9% → 85.0% (RSL提升)")
print(f" DI (跨会话): 77.0% ± 5.3%")
print(f" DI (跨被试, 已见): 77.4% ± 1.1%")
print(f" DI (跨被试, 未见): 64.9% ± 8.5%")

print("\n基线对比:")
print(" CSP+XGBDIM: 基线性能")
print(" EEGNet: 深度学习基线")
print(" DeepConvNet: 深度学习基线")

实验结果

论文报告的性能

任务 指标 3D-CRNN 基线提升
风险预测 (RP) Balanced Accuracy 95.3% ± 2.7% 最好
危险识别 (DI, 单被试) Balanced Accuracy 85.0% ± 3.2% 80.9%→85.0% (RSL)
DI (跨会话) Balanced Accuracy 77.0% ± 5.3% 验证泛化性
DI (跨被试, 已见) Balanced Accuracy 77.4% ± 1.1% 良好
DI (跨被试, 未见) Balanced Accuracy 64.9% ± 8.5% 可接受

14类交通事件场景

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
# 论文使用的14类交通事件场景
traffic_events = {
# 高风险事件 (RSL标注)
"E1": {"name": "行人横穿", "risk": "high", "has_p300": True},
"E2": {"name": "对向来车", "risk": "high", "has_p300": True},
"E7": {"name": "前车急刹", "risk": "high", "has_p300": True},
"E8": {"name": "障碍物突现", "risk": "high", "has_p300": True},
"E13": {"name": "路口冲突", "risk": "high", "has_p300": True},
"E14": {"name": "变道冲突", "risk": "high", "has_p300": True},

# 低风险事件
"E3": {"name": "正常变道", "risk": "low", "has_p300": False},
"E4": {"name": "红灯停车", "risk": "low", "has_p300": False},
"E5": {"name": "绿灯起步", "risk": "low", "has_p300": False},
"E6": {"name": "弯道行驶", "risk": "low", "has_p300": False},
"E9": {"name": "跟车行驶", "risk": "low", "has_p300": False},
"E10": {"name": "倒车", "risk": "low", "has_p300": False},
"E11": {"name": "停车", "risk": "low", "has_p300": False},
"E12": {"name": "加速超车", "risk": "low", "has_p300": False}
}

# P300: 事件相关电位, 出现在危险事件后300ms
# 高风险事件引发更显著的P300 → 可用于危险识别
print(f"总场景数: {len(traffic_events)}")
print(f"高风险事件: {sum(1 for e in traffic_events.values() if e['risk']=='high')}")
print(f"P300显著事件: {sum(1 for e in traffic_events.values() if e['has_p300'])}")

SOTIF应用:从乘客EEG到自动驾驶安全

SOTIF (Safety of the Intended Functionality) 框架

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
┌──────────────────────────────────────────────┐
│ AV (自动驾驶) 决策循环 │
│ │
│ 传感器感知 → 规划 → 控制 → 执行 │
│ ↑ │
│ │ 辅助监督信号 │
│ │ │
│ ┌───┴───────────────────┐ │
│ │ 乘客EEG BCI │ │
│ │ │ │
│ │ • 风险预测 (RP) │ │
│ │ "感觉不对" → 减速 │ │
│ │ │ │
│ │ • 危险识别 (DI) │ │
│ │ "看到危险" → 紧急 │ │
│ │ │ │
│ │ • P300成分 │ │
│ │ 下意识危险感知 │ │
│ └────────────────────────┘ │
└──────────────────────────────────────────────┘

IMS开发启示

1. 从”驾驶员”到”乘客”的认知监测

传统DMS关注驾驶员,但自动驾驶时代需要监测乘客状态:

  • 乘客危险感知 → 辅助AV决策(本文贡献)
  • 乘客信任度 → 自适应人机交互
  • 乘客舒适度 → 个性化行驶风格

2. EEG在座舱中的潜在应用

应用 信号 可行性 时间表
AV辅助安全监督 P300 + RP/DI ✅ 已验证 2028+
驾驶员认知负荷 EEG + fNIRS ⚠️ 实验室级 2030+
乘客情绪识别 EEG + rPPG ⚠️ 研究 2030+
座舱BCI交互 SSVEP/P300 ✅ 已有原型 2027+

3. 与现有DMS的融合方案

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
# EEG + 视觉DMS融合架构
def fused_safety_decision(eeg_result, dms_result, av_state):
"""
融合EEG乘客感知和视觉DMS的联合安全决策

Args:
eeg_result: {"rp_confidence": float, "di_confidence": float}
dms_result: {"driver_state": "alert/fatigued/distracted",
"confidence": float}
av_state: {"autopilot_active": bool, "speed": float}

Returns:
safety_action: 安全动作建议
"""
# 如果EEG检测到高风险且AV在自动驾驶
if (eeg_result["rp_confidence"] > 0.85 and
av_state["autopilot_active"]):
if eeg_result["di_confidence"] > 0.80:
return "EMERGENCY_BRAKE: EEG确认危险"
else:
return "CAUTION_SLOW: EEG风险预警,降速"

# 如果驾驶员疲劳且EEG也检测到风险
if dms_result["driver_state"] == "fatigued":
if eeg_result["rp_confidence"] > 0.7:
return "TAKEOVER: 驾驶员疲劳+EEG风险,接管"

# 正常驾驶
return "CONTINUE: 无异常"

4. 实际落地挑战

挑战 现状 解决方向
EEG佩戴 需要电极帽 干电极头枕/头靠集成
信号噪声 车内电磁干扰严重 屏蔽+自适应滤波
个体差异 跨被试64.9% 迁移学习+个性化校准
实时性 P300需300ms+ 预测模型(预P300)
计算需求 LSTM参数量大 量化+边缘部署

参考


发布时间: 2026-09-24 04:00
分类: 认知分心 | EEG | SOTIF | 自动驾驶 | BCI | 论文解读