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 npfrom scipy.signal import welchfrom sklearn.linear_model import Lassofrom sklearn.preprocessing import StandardScalerEEG_CHANNELS = ['Fp1' ,'Fp2' ,'F3' ,'F4' ,'Fz' ,'C3' ,'C4' ,'Cz' ,'P3' ,'P4' ,'Pz' ,'O1' ,'O2' ,'T5' ,'T6' ,'F7' ,'F8' ] SAMPLING_RATE = 500 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): 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(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, 眼动变异性特征 """ std_x = np.std(gaze_x) std_y = np.std(gaze_y) features = { 'R_std_x' : std_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 LogisticRegressionfrom sklearn.model_selection import LeaveOneOutfrom sklearn.metrics import roc_auc_scoredef 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() 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) 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) 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, 'model_b_lasso_eeg' : auc_b, 'model_c_fused' : auc_c } 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%
关键发现
高维EEG反而不如低维 :102维EEG特征AUC仅0.52,说明高维特征引入了噪声
LASSO降维有效 :仅2维特征即达0.64,说明信息集中在少数频段
眼动是关键互补信息 :融合后AUC从0.64→0.78,提升50%,眼动捕获了EEG无法反映的行为变异
纯眼动弱于纯EEG(选择后) :0.55 vs 0.64,但融合后增量最大
IMS应用启示 1. 认知分心检测新架构
graph TD
A[座舱摄像头] --> B[眼动特征提取<br/>注视稳定性/扫视特征/PERCLOS]
C[可穿戴EEG/座舱传感器] --> D[EEG频谱特征提取<br/>delta/theta/alpha/beta]
B --> E[特征融合层<br/>LASSO降维+拼接]
D --> E
E --> F[认知状态分类器<br/>Logistic Regression/MLP]
F --> G{认知状态判定}
G -->|正常| H[持续监控]
G -->|轻度分心| I[一级提醒]
G -->|严重认知脱离| J[二级警告+ADAS介入]
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 = {} features['fixation_std_x' ] = np.std(gaze_data['x' ]) features['fixation_std_y' ] = np.std(gaze_data['y' ]) ear = gaze_data['ear' ] features['perclos_80' ] = np.mean(ear < 0.2 ) * 100 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)) features['off_road_ratio' ] = np.mean( (np.abs (gaze_data['x' ]) > 15 ) | (np.abs (gaze_data['y' ]) > 10 ) ) * 100 saccade_vel = np.sqrt(np.diff(gaze_data['x' ])**2 + np.diff(gaze_data['y' ])**2 ) features['microsaccade_rate' ] = np.mean(saccade_vel > 50 ) return features
5. 对Euro NCAP认知分心要求的落地指导 Euro NCAP 2026协议要求DMS检测”mind wandering”但未给出具体技术方案。本论文提供了可行路径:
NCAP要求
论文方法映射
实现难度
检测认知脱离
眼动变异性↑+EEG delta↑
⭐⭐⭐ 需EEG传感器
检测注意力下降
注视稳定性↓+扫视熵↓
⭐⭐ 纯视觉可实现
实时性要求(<3s)
滑动窗口4s+LR推理<10ms
⭐ 满足
误报率<5%
融合后AUC 0.78≈误报率~15%
⭐⭐ 需进一步优化
局限性与改进方向 论文局限
样本量小 :38人,统计功效有限
特征选择未完全分离 :LASSO在全数据集上做,AUC为上界估计
眼动特征过于简单 :仅用注视标准差,未利用扫视、微扫视等
实验室环境 :非真实驾驶场景
座舱落地改进路线 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 : 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' , 'gaze_entropy' , 'off_road_ratio' , 'microsaccade_rate' , 'blink_rate' , 'pupil_diameter_cv' , 'saccade_peak_velocity' , 'fixation_duration_cv' , ]
总结 这篇ETRA 2026论文的核心价值不在于MCI检测本身,而在于它验证了一个关键假设:神经信号+行为信号融合 > 任何单一模态 。对IMS的启示是:
认知分心检测不能只靠视觉 :纯眼动AUC 0.55,纯EEG(选择后)0.64,融合0.78
特征选择比增加特征更重要 :102维→2维反而提升
行为变异性是认知状态的最佳代理 :注视稳定性反映了注意力控制的底层状态
座舱落地最可行路径 :Phase 1用增强眼动特征(10维)逼近纯EEG效果,Phase 2融合rPPG/EEG达到融合效果
优先级建议 :认知分心是Euro NCAP 2026最难突破的方向,本论文的方法论为IMS提供了可落地的技术路线图。