EyeCue:眼动+自我中心视频的驾驶员认知分心检测——IJCAI 2026 论文解读与代码复现

论文信息

  • 标题: EyeCue: Driver Cognitive Distraction Detection via Gaze-Empowered Egocentric Video Understanding
  • 作者: Lang Zhang, JinYi Yoon, Matthew Corbett, Abhijit Sarkar, Bo Ji
  • 会议: IJCAI 2026(第35届国际人工智能联合会议)
  • arXiv: 2605.07859(2026年5月8日)
  • 代码: https://github.com/langzhang2000/EyeCue
  • 数据集: CogDrive(多场景认知分心数据集)
  • 核心创新: 眼动+自我中心视频跨模态交互建模,74.38% 准确率,比 11 个基线高 7%+

1. 核心问题

1.1 认知分心为什么难检测?

分心类型 表现 检测难度 EyeCue 方案
手动分心 手离开方向盘 ⭐ 易 物理检测
视觉分心 视线离开道路 ⭐⭐ 中 视线追踪
认知分心 思维走神,外观正常 ⭐⭐⭐⭐⭐ 极难 眼动+场景交互

认知分心的挑战:

  • 驾驶员看起来在正常驾驶(手在方向盘上,眼睛看前方)
  • 但思维被非驾驶任务占据(想工作、想生活、听播客)
  • 需要从微妙的眼动-场景交互模式中推断

1.2 EyeCue 的核心洞察

“认知分心体现在眼动与视觉上下文的交互中”

  • 正常驾驶:眼动与道路场景高度关联(看弯道、看行人)
  • 认知分心:眼动与场景关联减弱(虽然看前方,但目光呆滞或扫视无目的)

2. 方法详解

2.1 架构

2.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
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
import torch
import torch.nn as nn
import torch.nn.functional as F

class EyeCueModel(nn.Module):
"""
EyeCue: 眼动+自我中心视频认知分心检测

论文:IJCAI 2026, arXiv:2605.07859
核心:跨模态交互建模眼动-场景关系

输入:
- video: (B, T, C, H, W) 自我中心视频
- gaze: (B, T, 4) 眼动数据 (x, y, pupil_l, pupil_r)
输出:
- logits: (B, 2) 认知分心/正常
"""

def __init__(self, hidden_dim=256, n_heads=4):
super().__init__()

# 1. 视觉编码器(轻量CNN)
self.visual_encoder = nn.Sequential(
nn.Conv2d(3, 32, 3, stride=2, padding=1), nn.ReLU(),
nn.Conv2d(32, 64, 3, stride=2, padding=1), nn.ReLU(),
nn.Conv2d(64, 128, 3, stride=2, padding=1), nn.ReLU(),
nn.AdaptiveAvgPool2d((4, 4)),
)
self.visual_proj = nn.Linear(128 * 16, hidden_dim)

# 2. 眼动编码器
self.gaze_encoder = nn.Sequential(
nn.Linear(4, 64), nn.ReLU(),
nn.Linear(64, hidden_dim), nn.ReLU(),
)

# 3. 跨模态交互(Cross-Modal Attention)
# 眼动作为Query,视觉作为Key/Value
self.cross_attention = nn.MultiheadAttention(
embed_dim=hidden_dim,
num_heads=n_heads,
batch_first=True,
)

# 4. 时序聚合
self.temporal_lstm = nn.LSTM(
input_size=hidden_dim * 2, # 视觉+眼动交互后
hidden_size=hidden_dim,
num_layers=2,
batch_first=True,
dropout=0.1,
)

# 5. 分类头
self.classifier = nn.Sequential(
nn.Linear(hidden_dim, 64), nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(64, 2)
)

def forward(self, video, gaze):
"""
Args:
video: (B, T, C, H, W) 自我中心视频序列
gaze: (B, T, 4) 眼动序列 (x, y, pupil_l, pupil_r)

Returns:
logits: (B, 2) 认知分心/正常
attention_weights: 跨模态注意力权重(可解释性)
"""
B, T, C, H, W = video.shape

# 1. 视觉编码
video_flat = video.view(B * T, C, H, W)
vis_feat = self.visual_encoder(video_flat) # (B*T, 128*16)
vis_feat = self.visual_proj(vis_feat) # (B*T, hidden)
vis_feat = vis_feat.view(B, T, -1) # (B, T, hidden)

# 2. 眼动编码
gaze_feat = self.gaze_encoder(gaze) # (B, T, hidden)

# 3. 跨模态交互(眼动Query → 视觉Key/Value)
# 眼动作为Query询问视觉场景中哪个区域与当前注视相关
attn_out, attn_weights = self.cross_attention(
query=gaze_feat, # (B, T, hidden)
key=vis_feat, # (B, T, hidden)
value=vis_feat, # (B, T, hidden)
)

# 拼接交互结果和原始视觉特征
combined = torch.cat([attn_out, vis_feat], dim=-1) # (B, T, hidden*2)

# 4. 时序聚合
lstm_out, _ = self.temporal_lstm(combined) # (B, T, hidden)
feat = lstm_out[:, -1, :] # 取最后时刻 (B, hidden)

# 5. 分类
logits = self.classifier(feat) # (B, 2)

return {
'logits': logits,
'attention_weights': attn_weights, # (B, T, T) 注意力热力图
}


# 测试
if __name__ == "__main__":
model = EyeCueModel()

# 模拟输入:30秒@2fps = 60帧
video = torch.randn(2, 60, 3, 64, 64) # 60帧视频
gaze = torch.randn(2, 60, 4) # 60个眼动样本

output = model(video, gaze)

print(f"输入视频: {video.shape}")
print(f"输入眼动: {gaze.shape}")
print(f"分类输出: {output['logits'].shape}")
print(f"注意力权重: {output['attention_weights'].shape}")
print(f"参数总数: {sum(p.numel() for p in model.parameters()):,}")

# 预测
pred = F.softmax(output['logits'], dim=-1)
print(f"\n预测概率: 正常={pred[0,0]:.2%}, 认知分心={pred[0,1]:.2%}")

2.3 CogDrive 数据集

属性 规格
来源 4个现有驾驶数据集增强
标注 认知分心/正常 二分类
场景 多种路况/时段/天气
规模 多场景覆盖
公开 ✅ GitHub开源

2.4 性能对比

方法 准确率 模型类型
EyeCue 74.38% 眼动+视频跨模态
基线1-11 56.2%-67.2% 6个模型族
场景 准确率
高速公路 74%+
城市道路 70%+
夜间 70%+
雨天 70%+

3. Euro NCAP DSM 场景映射

Euro NCAP 场景 EyeCue 适用性 检测要点
D-04 认知分心 ✅ 直接适用 眼动-场景交互减弱
D-01 正常驾驶 ✅ 基线对照 眼动-场景高度关联
D-03 视线偏离 ⚠️ 可辅助 视觉分心更直接
D-02 手机使用 ⚠️ 可辅助 手动+视觉+认知

4. 对 IMS 开发的启示

4.1 关键价值

价值点 说明
首个可量产级认知分心方案 74%准确率,IJCAI 2026
跨模态交互建模 眼动+视频,非单一信号
数据集开源 CogDrive 可直接用于训练
代码开源 GitHub 可复现
多场景泛化 70%+ 跨场景

4.2 部署路线

优先级 任务 时间
P0 CogDrive 数据集下载+验证 2026 Q4
P0 EyeCue 模型复现+精度验证 2026 Q4
P1 眼动信号获取方案确定 2027 Q1
P1 NPU 轻量化部署 2027 Q1
P2 Euro NCAP D-04 场景对齐 2027 Q2

4.3 与 IMS 现有模块的协同

协同价值: EyeCue 可复用 IMS 现有的人脸关键点检测器和内摄摄像头,不需要额外传感器!

5. 总结

核心洞察

  1. 认知分心的核心是眼动-场景交互减弱,而非眼动本身
  2. 跨模态注意力机制是建模这种交互的最佳方案
  3. 74%准确率虽不完美,但首次达到可量产级
  4. CogDrive 数据集填补了认知分心数据空白

对 IMS 的战略意义

  • 认知分心是 Euro NCAP 2026 DSM 的**❌ 待突破**功能
  • EyeCue 提供了首个可行技术路线
  • 开源代码+数据集降低了集成门槛
  • 与现有 DMS 硬件兼容(内摄+眼动)

参考来源: