EEG+眼动融合认知评估:从轻度认知障碍检测到座舱认知分心监测的跨界启发

论文信息

  • 标题: Exploratory Integration of EEG Spectral Features and Gaze Variability for Mild Cognitive Impairment Discrimination
  • 作者: Takeru Mukunoki, Mamoru Hiroe, Minoru Nakayama, Yujia Zheng, Yuma Sonoda, Hisatomo Kowa, Takashi Nagamatsu
  • 会议: ETRA 2026 (Symposium on Eye Tracking Research and Applications)
  • 时间: 2026年6月1-4日,马拉喀什
  • DOI: 10.1145/3797246.3805854
  • 链接: https://arxiv.org/html/2607.29493v1

核心创新

该研究首次系统性地验证了EEG频谱特征与眼动变异性融合对轻度认知障碍(MCI)的判别能力。关键发现:单独使用EEG特征AUC仅0.52(接近随机),经LASSO降维后提升至0.64,而融合眼动变异性特征后AUC跃升至0.78——提升了50%。

这一”神经+行为”双模态融合思路对座舱认知分心检测具有直接启发意义。


方法详解

1. 问题定义

轻度认知障碍(MCI)是正常衰老与痴呆之间的中间阶段。传统评估需要训练有素的专业人员面对面进行,开发简单客观的数字指标是老龄化社会的迫切需求。

对IMS的映射: 座舱中的”认知分心”同样是驾驶状态与完全失控之间的过渡态——检测难度大、信号微弱、单模态检测容易遗漏。

2. 数据采集

2.1 参与者

组别 人数 平均年龄
MCI组 17 75.9 ± 3.1
健康对照组 21 74.8 ± 6.0

分组基于MoCA(蒙特利尔认知评估)得分。

2.2 任务设计

参与者执行注视任务:盯着屏幕上的一个固定点,每次试验20秒,取前4秒数据进行分析。

对IMS的映射: 注视任务本质上模拟了”驾驶员凝视前方道路”这一基本场景。注视稳定性差 = 认知状态下降 = 驾驶分心风险。

3. 特征提取

3.1 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
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
import numpy as np
from scipy.signal import welch
from sklearn.linear_model import Lasso
from sklearn.preprocessing import StandardScaler

# EEG采集参数(论文复现)
EEG_CHANNELS = ['Fp1','Fp2','F3','F4','Fz','C3','C4','Cz','P3','P4','Pz','O1','O2','T5','T6','F7','F8']
SAMPLING_RATE = 500 # Hz
BANDS = {
'delta': (1, 4),
'theta': (4, 8),
'alpha': (8, 13),
'low_beta': (13, 20),
'high_beta': (20, 30),
'gamma': (30, 45)
}

def extract_eeg_features(eeg_data, fs=500):
"""
从EEG信号中提取频谱特征

Args:
eeg_data: shape=(n_channels, n_samples)
fs: 采样率

Returns:
features: dict, {channel_band: power_value}
"""
features = {}
for ch_idx, ch_name in enumerate(EEG_CHANNELS):
# Welch法估计功率谱密度
freqs, psd = welch(eeg_data[ch_idx], fs=fs, nperseg=fs*2)

for band_name, (fmin, fmax) in BANDS.items():
# 计算频段平均功率
idx = np.logical_and(freqs >= fmin, freqs <= fmax)
band_power = np.mean(psd[idx])
features[f"{ch_name}_{band_name}"] = band_power

return features


def select_eeg_features_lasso(X, y, n_select=2):
"""
使用L1正则化(LASSO)选择最具判别力的EEG特征

Args:
X: shape=(n_samples, n_features), EEG特征矩阵
y: shape=(n_samples,), 标签 (0=健康, 1=MCI)
n_select: 选择的特征数

Returns:
selected_indices: 选中的特征索引
selected_names: 选中的特征名
"""
# 标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# LASSO特征选择
lasso = Lasso(alpha=0.01, max_iter=10000)
lasso.fit(X_scaled, y)

# 按系数绝对值排序
importance = np.abs(lasso.coef_)
selected_indices = np.argsort(importance)[-n_select:]

return selected_indices, importance

论文关键发现: LASSO选出的两个最具判别力的特征是:

  • O1_delta(枕叶delta频段功率)—— 反映视觉处理区域的基础活动变化
  • T6_low_beta(颞叶低beta频段功率)—— 反映注意力控制区域的功能变化

3.2 眼动特征

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
def extract_gaze_features(gaze_x, gaze_y, sample_rate=1000):
"""
从眼动数据中提取注视稳定性特征

Args:
gaze_x: shape=(n_samples,), X坐标(度)
gaze_y: shape=(n_samples,), Y坐标(度)
sample_rate: 采样率

Returns:
features: dict, 眼动变异性特征
"""
# 排除扫视区间(仅保留注视数据)
# 实际实现需使用IVMC或Eyelink自带扫视检测

# 计算注视点位置标准差
std_x = np.std(gaze_x)
std_y = np.std(gaze_y)

features = {
'R_std_x': std_x, # X方向注视稳定性
'L_std_x': std_x, # 论文中使用的命名
'R_std_y': std_y,
'L_std_y': std_y,
'gaze_dispersion': np.sqrt(std_x**2 + std_y**2),
'gaze_area': np.pi * std_x * std_y # 注视椭圆面积
}

return features

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import LeaveOneOut
from sklearn.metrics import roc_auc_score

def fused_cognitive_classifier(eeg_features, gaze_features, labels):
"""
EEG+眼动融合认知状态分类器

论文方法复现:
1. 模型(a): 全EEG特征
2. 模型(b): LASSO选择的EEG特征
3. 模型(c): LASSO-EEG + 眼动特征

Args:
eeg_features: shape=(n_samples, n_eeg_features)
gaze_features: shape=(n_samples, n_gaze_features)
labels: shape=(n_samples,)

Returns:
results: dict, 三个模型的AUC
"""
loocv = LeaveOneOut()

# 模型(a): 全EEG特征
model_a = LogisticRegression(class_weight='balanced', max_iter=5000)
pred_a = _loocv_predict(model_a, eeg_features, labels, loocv)
auc_a = roc_auc_score(labels, pred_a)

# 模型(b): LASSO选择后的EEG特征
selected_idx, _ = select_eeg_features_lasso(eeg_features, labels, n_select=2)
eeg_selected = eeg_features[:, selected_idx]
model_b = LogisticRegression(class_weight='balanced', max_iter=5000)
pred_b = _loocv_predict(model_b, eeg_selected, labels, loocv)
auc_b = roc_auc_score(labels, pred_b)

# 模型(c): LASSO-EEG + 眼动特征
fused = np.hstack([eeg_selected, gaze_features])
model_c = LogisticRegression(class_weight='balanced', max_iter=5000)
pred_c = _loocv_predict(model_c, fused, labels, loocv)
auc_c = roc_auc_score(labels, pred_c)

return {
'model_a_all_eeg': auc_a, # 0.52
'model_b_lasso_eeg': auc_b, # 0.64
'model_c_fused': auc_c # 0.78
}


def _loocv_predict(model, X, y, loocv):
"""留一交叉验证预测"""
preds = np.zeros(len(y))
for train_idx, test_idx in loocv.split(X):
model.fit(X[train_idx], y[train_idx])
preds[test_idx] = model.predict_proba(X[test_idx])[:, 1]
return preds

实验结果

模型 特征 AUC 相对提升
(a) 全EEG 17通道×6频段=102维 0.52 基线
(b) LASSO-EEG 2维(O1_delta + T6_low_beta) 0.64 +23%
(c) LASSO-EEG+Gaze 4维(2 EEG + 2 Gaze) 0.78 +50%
纯眼动 2维(R_std_x, L_std_x) 0.55 +6%

关键发现

  1. 高维EEG反而不如低维:102维EEG特征AUC仅0.52,说明高维特征引入了噪声
  2. LASSO降维有效:仅2维特征即达0.64,说明信息集中在少数频段
  3. 眼动是关键互补信息:融合后AUC从0.64→0.78,提升50%,眼动捕获了EEG无法反映的行为变异
  4. 纯眼动弱于纯EEG(选择后):0.55 vs 0.64,但融合后增量最大

IMS应用启示

1. 认知分心检测新架构

2. 直接可落地的技术路线

阶段 方法 精度目标 数据需求
Phase 1: 纯视觉 眼动变异性+PERCLOS+扫视熵 AUC ≥ 0.65 50人×2h驾驶
Phase 2: 视觉+生理 +rPPG心率变异性 AUC ≥ 0.72 30人×1h实验室
Phase 3: 多模态融合 +座舱EEG(方向盘/头枕) AUC ≥ 0.78 30人×30min

3. 关键特征选择

论文给出的两个最优EEG特征对座舱场景的映射:

论文特征 频段 脑区 座舱场景映射
O1_delta 1-4Hz 枕叶(视觉处理) 驾驶员视觉注意力下降时枕叶delta增强
T6_low_beta 13-20Hz 颞叶(注意力控制) 认知负荷增加时颞叶beta变化

4. 眼动特征的选择依据

论文仅用了注视点标准差(R_std_x, L_std_x)这一最简单的眼动特征即获得显著提升。座舱场景中可用的更丰富眼动特征:

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
def cabin_gaze_features(gaze_data, fps=30):
"""
座舱场景眼动特征提取(增强版)

相比论文的2维特征,座舱场景可提取更丰富的眼动指标
"""
features = {}

# 1. 注视稳定性(论文方法)
features['fixation_std_x'] = np.std(gaze_data['x'])
features['fixation_std_y'] = np.std(gaze_data['y'])

# 2. PERCLOS(闭眼比例)
ear = gaze_data['ear'] # 眼睛纵横比
features['perclos_80'] = np.mean(ear < 0.2) * 100 # 80%闭眼阈值

# 3. 扫视熵(视线方向分布的熵)
gaze_bins = np.histogram2d(gaze_data['x'], gaze_data['y'],
bins=9, range=[[-30,30],[-30,30]])[0]
gaze_probs = gaze_bins / gaze_bins.sum() + 1e-10
features['gaze_entropy'] = -np.sum(gaze_probs * np.log(gaze_probs))

# 4. 视线偏离道路时间比
features['off_road_ratio'] = np.mean(
(np.abs(gaze_data['x']) > 15) | (np.abs(gaze_data['y']) > 10)
) * 100

# 5. 微扫视频率(认知负荷指标)
saccade_vel = np.sqrt(np.diff(gaze_data['x'])**2 + np.diff(gaze_data['y'])**2)
features['microsaccade_rate'] = np.mean(saccade_vel > 50) # >50°/s视为微扫视

return features

5. 对Euro NCAP认知分心要求的落地指导

Euro NCAP 2026协议要求DMS检测”mind wandering”但未给出具体技术方案。本论文提供了可行路径:

NCAP要求 论文方法映射 实现难度
检测认知脱离 眼动变异性↑+EEG delta↑ ⭐⭐⭐ 需EEG传感器
检测注意力下降 注视稳定性↓+扫视熵↓ ⭐⭐ 纯视觉可实现
实时性要求(<3s) 滑动窗口4s+LR推理<10ms ⭐ 满足
误报率<5% 融合后AUC 0.78≈误报率~15% ⭐⭐ 需进一步优化

局限性与改进方向

论文局限

  1. 样本量小:38人,统计功效有限
  2. 特征选择未完全分离:LASSO在全数据集上做,AUC为上界估计
  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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""
座舱认知分心检测改进方案

改进1: 滑动窗口实时检测
"""
class RealTimeCognitiveDetector:
def __init__(self, window_sec=4, fps=30):
self.window = int(window_sec * fps)
self.model = LogisticRegression(class_weight='balanced')
self.buffer = []

def update(self, gaze_features, eeg_features=None):
"""实时更新认知状态评估"""
self.buffer.append((gaze_features, eeg_features))
if len(self.buffer) > self.window:
self.buffer.pop(0)

if len(self.buffer) >= self.window // 2: # 至少2s数据
features = self._aggregate()
prob = self.model.predict_proba([features])[0, 1]
return prob # 认知分心概率
return 0.0

def _aggregate(self):
"""聚合窗口内特征"""
gaze_arr = [f[0] for f in self.buffer if f[0] is not None]
eeg_arr = [f[1] for f in self.buffer if f[1] is not None]

agg = {}
if gaze_arr:
agg['gaze_std'] = np.std([g['fixation_std_x'] for g in gaze_arr])
agg['gaze_entropy_mean'] = np.mean([g['gaze_entropy'] for g in gaze_arr])
if eeg_arr:
agg['eeg_delta'] = np.mean([e['O1_delta'] for e in eeg_arr])
agg['eeg_beta'] = np.mean([e['T6_low_beta'] for e in eeg_arr])

return list(agg.values())


"""
改进2: 增强眼动特征集(替代EEG)
在无EEG传感器时,用更丰富的眼动特征达到接近的性能
"""
ENHANCED_GAZE_FEATURES = [
'fixation_std_x', # 论文原始特征
'fixation_std_y', # 论文原始特征
'perclos_80', # PERCLOS
'gaze_entropy', # 视线熵
'off_road_ratio', # 视线偏离比
'microsaccade_rate', # 微扫视频率
'blink_rate', # 眨眼频率
'pupil_diameter_cv', # 瞳孔直径变异系数
'saccade_peak_velocity', # 扫视峰值速度
'fixation_duration_cv', # 注视持续时间变异系数
]

总结

这篇ETRA 2026论文的核心价值不在于MCI检测本身,而在于它验证了一个关键假设:神经信号+行为信号融合 > 任何单一模态。对IMS的启示是:

  1. 认知分心检测不能只靠视觉:纯眼动AUC 0.55,纯EEG(选择后)0.64,融合0.78
  2. 特征选择比增加特征更重要:102维→2维反而提升
  3. 行为变异性是认知状态的最佳代理:注视稳定性反映了注意力控制的底层状态
  4. 座舱落地最可行路径:Phase 1用增强眼动特征(10维)逼近纯EEG效果,Phase 2融合rPPG/EEG达到融合效果

优先级建议:认知分心是Euro NCAP 2026最难突破的方向,本论文的方法论为IMS提供了可落地的技术路线图。