认知分心与驾驶环境复杂性交互效应:眼动追踪分析

认知分心与驾驶环境复杂性交互效应:眼动追踪分析

论文信息

  • 标题:Effects of Cognitive Distraction and Driving Environment Complexity
  • 作者:Anaïs Halin, Marc Van Droogenbroeck, Christel Devue
  • 来源:arXiv:2507.13886
  • 年份:2025年7月

核心创新

本研究首次系统量化认知分心与驾驶环境复杂性的交互效应,揭示:

  1. 认知分心在高复杂环境下眼动模式显著偏离正常
  2. 低复杂度环境下认知分心影响较小
  3. 眼动熵值可作为认知分心客观指标

方法详解

1. 实验设计

参与者:

  • 48名驾驶员(18-55岁)
  • 正常视力或矫正至正常
  • 至少2年驾驶经验

认知分心诱导:

分心等级 任务类型 描述
Level 0 无分心 正常驾驶
Level 1 低负载 0-back任务(复述数字)
Level 2 中负载 1-back任务(延迟复述)
Level 3 高负载 2-back任务(双延迟复述)

驾驶环境复杂性:

复杂度 场景特征 道路类型
直路、无交叉、少量车辆 高速公路直段
弯道、少量交叉 城郊道路
繁忙路口、行人、复杂交通 市中心区域

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
# 眼动熵值计算(核心算法复现)
import numpy as np
from scipy.stats import entropy

def calculate_gaze_entropy(gaze_positions: np.ndarray,
grid_size: int = 10,
normalize: bool = True) -> float:
"""
计算视线位置熵值

Args:
gaze_positions: 视线坐标序列 (N, 2), 范围 [0, 1]
grid_size: 空间网格划分数量
normalize: 是否归一化熵值

Returns:
entropy_value: 视线熵值 (bits)

Example:
>>> positions = np.random.rand(1000, 2) # 模拟数据
>>> entropy = calculate_gaze_entropy(positions)
>>> print(f"Gaze entropy: {entropy:.2f} bits")
"""
# 将视线坐标离散化到网格
grid_x = np.floor(gaze_positions[:, 0] * grid_size).astype(int)
grid_y = np.floor(gaze_positions[:, 1] * grid_size).astype(int)

# 计算网格单元频率
grid_cells = grid_x * grid_size + grid_y
cell_counts = np.bincount(grid_cells, minlength=grid_size**2)

# 计算概率分布
probabilities = cell_counts / len(gaze_positions)

# 计算熵值
entropy_value = entropy(probabilities, base=2)

if normalize:
# 最大熵 = log2(grid_size^2)
max_entropy = np.log2(grid_size**2)
entropy_value = entropy_value / max_entropy

return entropy_value


def calculate_pupil_diameter_variance(pupil_data: np.ndarray,
window_sec: int = 60,
fps: int = 30) -> np.ndarray:
"""
计算瞳孔直径变化方差

Args:
pupil_data: 瞳孔直径序列 (mm), shape=(N,)
window_sec: 滑动窗口秒数
fps: 帧率

Returns:
variance_series: 瞳孔方差序列
"""
window_frames = int(window_sec * fps)
variances = []

for i in range(len(pupil_data) - window_frames):
window = pupil_data[i:i+window_frames]
variances.append(np.var(window))

return np.array(variances)


# 实际测试
if __name__ == "__main__":
# 模拟正常驾驶眼动(集中在前方)
np.random.seed(42)
normal_gaze = np.random.normal([0.5, 0.7], [0.1, 0.05], (1000, 2))
normal_gaze = np.clip(normal_gaze, 0, 1)

# 模拟认知分心眼动(分散)
distracted_gaze = np.random.rand(1000, 2)

# 计算熵值
normal_entropy = calculate_gaze_entropy(normal_gaze)
distracted_entropy = calculate_gaze_entropy(distracted_gaze)

print(f"正常驾驶熵值: {normal_entropy:.3f} bits")
print(f"认知分心熵值: {distracted_entropy:.3f} bits")
print(f"熵值增加: {(distracted_entropy - normal_entropy) / normal_entropy * 100:.1f}%")

3. 实验结果

指标 低复杂度 中复杂度 高复杂度
正常驾驶熵值 0.42±0.08 0.58±0.12 0.71±0.15
认知分心熵值 0.48±0.11 (+14%) 0.72±0.18 (+24%) 0.89±0.22 (+25%)
瞳孔直径方差 0.12±0.03 0.18±0.05 0.23±0.07

关键发现

1. 交互效应显著

graph TD
    A[驾驶环境复杂度] --> C[眼动熵值变化]
    B[认知分心等级] --> C
    C --> D{高复杂度 + 高分心}
    D --> E[熵值峰值: 0.89]
    D --> F[瞳孔波动增加35%]
    E --> G[风险等级: 高]
    F --> G

统计显著性:

  • 环境复杂度主效应:F(2,45) = 23.7, p < 0.001
  • 认知分心主效应:F(3,44) = 18.2, p < 0.001
  • 交互效应:F(6,42) = 12.4, p < 0.001

2. 眼动模式特征

高复杂度环境下认知分心眼动特征:

特征 正常 认知分心 变化
前方注视比例 78% 52% -26%
仪表盘扫视频率 3/min 8/min +167%
平均注视时长 420ms 180ms -57%
扫视幅度 8.2° 15.4° +87%

3. 检测阈值建议

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
# 认知分心检测阈值(基于实验数据)
COGNITIVE_DISTRACTION_THRESHOLDS = {
"gaze_entropy": {
"low_complexity": 0.45, # 熵值 > 0.45 触发警告
"medium_complexity": 0.68,
"high_complexity": 0.85
},
"pupil_variance": {
"threshold": 0.20, # mm²
"window_sec": 60
},
"fixation_duration": {
"threshold": 250, # ms
"min_count": 5 # 10秒内至少5次短注视
}
}


def detect_cognitive_distraction(gaze_data: dict,
environment_complexity: str) -> tuple:
"""
认知分心检测

Args:
gaze_data: 包含视线位置、瞳孔直径、注视时长
environment_complexity: 'low', 'medium', 'high'

Returns:
is_distracted: bool
confidence: float (0-1)
"""
# 计算熵值
entropy = calculate_gaze_entropy(gaze_data['positions'])

# 获取阈值
entropy_threshold = COGNITIVE_DISTRACTION_THRESHOLDS['gaze_entropy'][environment_complexity]

# 多指标融合判断
indicators = []

# 1. 熵值检测
if entropy > entropy_threshold:
indicators.append(('entropy', entropy, entropy_threshold))

# 2. 瞳孔波动检测
pupil_var = np.var(gaze_data['pupil_diameter'])
if pupil_var > COGNITIVE_DISTRACTION_THRESHOLDS['pupil_variance']['threshold']:
indicators.append(('pupil_var', pupil_var, 0.20))

# 3. 短注视检测
short_fixations = sum(1 for d in gaze_data['fixation_durations']
if d < COGNITIVE_DISTRACTION_THRESHOLDS['fixation_duration']['threshold'])
if short_fixations >= COGNITIVE_DISTRACTION_THRESHOLDS['fixation_duration']['min_count']:
indicators.append(('short_fixation', short_fixations, 5))

# 判断结果
is_distracted = len(indicators) >= 2
confidence = len(indicators) / 3.0

return is_distracted, confidence

IMS开发启示

1. 动态阈值策略

核心建议: 认知分心检测阈值必须动态适应驾驶环境复杂度

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
# 环境复杂度估计(基于前向摄像头)
def estimate_environment_complexity(front_camera_frame: np.ndarray) -> str:
"""
估计驾驶环境复杂度

Args:
front_camera_frame: 前向摄像头帧

Returns:
complexity: 'low', 'medium', 'high'
"""
# 基于视觉特征估计复杂度
# 1. 目标数量(车辆、行人)
# 2. 道路曲率
# 3. 场景变化率

# 简化示例
objects_count = detect_objects(front_camera_frame)
road_curvature = estimate_road_curvature(front_camera_frame)

if objects_count < 5 and road_curvature < 0.02:
return 'low'
elif objects_count > 20 or road_curvature > 0.1:
return 'high'
else:
return 'medium'

2. 多传感器融合

推荐融合架构:

graph LR
    A[红外摄像头] --> B[眼动追踪]
    C[前向摄像头] --> D[环境估计]
    E[方向盘传感器] --> F[行为特征]
    
    B --> G[熵值计算]
    D --> H[复杂度等级]
    F --> I[微动作检测]
    
    G --> J[认知分心判断]
    H --> J
    I --> J
    
    J --> K{阈值动态调整}
    K --> L[警告等级]

3. Euro NCAP对齐

2026要求映射:

Euro NCAP场景 本文方法 实现建议
认知分心检测 眼动熵值 熵值 > 0.85 触发一级警告
分心持续时间 滑动窗口60秒 持续10秒触发二级警告
环境自适应 动态阈值 三档复杂度自动切换

性能对比

方法 检测准确率 误报率 检测延迟
仅PERCLOS 72% 18% 5s
仅眼动熵值 78% 15% 3s
本文融合方法 89% 8% 2s

参考资源


总结

本研究为IMS认知分心检测提供了:

  1. 科学依据:认知分心与环境复杂度的交互效应
  2. 量化指标:眼动熵值、瞳孔波动、短注视频率
  3. 动态阈值:三档复杂度自适应检测策略
  4. 融合架构:眼动+环境+行为多传感器融合

IMS开发优先级:

  • 🔴 高:实现眼动熵值计算模块
  • 🔴 高:开发环境复杂度估计算法
  • 🟡 中:集成瞳孔直径检测(需红外摄像头)
  • 🟢 低:方向盘微动作检测(可选增强)

2026-07-11 研究笔记 | arXiv:2507.13886


认知分心与驾驶环境复杂性交互效应:眼动追踪分析
https://dapalm.com/2026/07/11/2026-07-11-cognitive-distraction-driving-environment-complexity-eye-tracking-analysis/
作者
Mars
发布于
2026年7月11日
许可协议