DALI vs VLI:眼动追踪与车辆运动学认知负荷评估新框架

DALI vs VLI:眼动追踪与车辆运动学认知负荷评估新框架

慕尼黑工业大学发布 DALI 量表与眼动指标对比研究,揭示”认知负荷”与”感知负荷”的本质差异。同时 MDPI Sensors 提出基于车辆运动学的 VLI 跨源预测框架,无需眼动仪即可估计视觉负荷。两项研究为 DMS 认知分心检测提供了新路径。

1 研究背景

1.1 认知负荷评估的困境

认知分心是 Euro NCAP 2026 的重点功能,也是最难检测的模块:

评估方法 优势 劣势
主观量表(NASA-TLX/DALI) 直接、可解释 驾驶中无法实时填写
眼动追踪 客观、实时 量产车难以部署高精度眼动仪
车辆行为 已有传感器 与认知负荷间接相关
EEG/生理信号 直接反映大脑活动 不可穿戴、侵入性强

1.2 两篇关键研究

研究 来源 核心发现
DALI vs 眼动指标 慕尼黑工业大学, JEMR 2026 DALI 反映感知负荷,眼动注视指标反映认知负荷
VLI 跨源预测 MDPI Sensors 2026 用车辆运动学即可预测视觉负荷,无需眼动仪

2 DALI 量表深度解析

2.1 DALI 定义

DALI(Driver Activity Load Index) 是驾驶场景专用的认知负荷评估量表,基于 NASA-TLX 改编:

维度 说明 评分范围
视觉需求 需要多少视觉注意力 0-100
听觉需求 需要多少听觉注意力 0-100
认知需求 思考/决策需求 0-100
运动需求 物理/操作需求 0-100
时间压力 时间紧迫感 0-100
努力程度 主观努力程度 0-100
挫折感 情绪状态 0-100

2.2 慕尼黑工大实验设计

参数
参与者 50 人
场景 低复杂度 vs 高复杂度驾驶
采集 注视行为、眨眼、瞳孔直径
量表 DALI
发表 JEMR 2026, Vol 19(2), Article 28

2.3 核心发现

高负荷场景的眼动特征:

眼动指标 低负荷 高负荷 变化
注视持续时间 较短 较长
每分钟注视数 较多 较少
眨眼频率 正常 减少
瞳孔直径 较小 扩大

关键洞察:DALI 与眼动指标反映不同的负荷维度

1
2
3
4
5
6
7
8
9
DALI ←——→ 感知负荷(Perceptual Load

└── 主要受视觉密度/场景复杂度驱动
└── 反映"看到太多东西"的压力

眼动注视指标 ←——→ 认知负荷(Cognitive Load

└── 主要受思维/决策需求驱动
└── 反映"想太多"的认知负担

结论: DALI 是感知负荷的特异性工具,而非认知负荷。注视指标才是认知负荷的更好代理。

2.4 对 DMS 的启示

这一发现对认知分心检测有直接影响:

原有假设 新认知
DALI 高 = 认知分心 DALI 高 = 感知过载(不等于认知分心)
注视少 = 正常 注视少可能是高认知负荷(深思)
瞳孔扩大 = 疲劳 瞳孔扩大可能是认知负荷升高
综合指标最好 需区分感知负荷 vs 认知负荷

3 VLI 跨源预测框架

3.1 VLI 定义

VLI(Visual Load Index) 是从眼动数据衍生的视觉负荷代理标签,通过车辆运动学特征进行预测。

3.2 框架架构

graph TD
    A[训练阶段] --> B[眼动数据采集]
    B --> C[VLI 代理标签构建]
    C --> D[车辆运动学特征]
    D --> E[模型训练]
    
    F[推理阶段] --> G[仅车辆运动学]
    G --> H[VLI 预测]
    H --> I[可选: 驾驶风格先验]
    
    E --> J[训练完成模型]
    J --> G

3.3 核心创新

创新点 说明
跨源预测 训练用眼动数据,推理仅用车辆运动学
驾驶员无关 不依赖特定驾驶员,跨个体泛化
混杂因素感知 控制道路类型等混杂因素
可选驾驶风格 加入驾驶风格先验提升精度

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
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
import numpy as np
from typing import Dict, List

class VLIPredictor:
"""
VLI 跨源预测框架

训练阶段: 使用眼动数据构建 VLI 代理标签
推理阶段: 仅使用车辆运动学预测 VLI

参考: MDPI Sensors 2026, 26(17), 5521
"""

def __init__(self, config: dict = None):
config = config or {}
self.window_size = config.get('window_sec', 10) # 10秒窗口
self.sample_rate = config.get('sample_rate', 10) # 10Hz

# 车辆运动学特征
self.kinematic_features = [
'speed', 'acceleration_lat', 'acceleration_lon',
'steering_angle', 'steering_velocity', 'yaw_rate',
'lane_distance', 'throttle_position', 'brake_pressure',
]

# 模型权重
self.model_weights = None

def compute_vli_proxy(self, eye_metrics: Dict) -> float:
"""
从眼动指标计算 VLI 代理标签

Args:
eye_metrics: 包含注视、眨眼、瞳孔等指标

Returns:
vli: 视觉负荷指数 (0-1)
"""
# 标准化眼动指标
fixation_duration = eye_metrics['fixation_duration_mean'] # ms
fixation_rate = eye_metrics['fixation_rate'] # 次/秒
blink_rate = eye_metrics['blink_rate'] # 次/分
pupil_diameter = eye_metrics['pupil_diameter_mean'] # mm
saccade_amplitude = eye_metrics['saccade_amplitude'] # 度

# VLI 计算公式(参考论文)
vli = (0.3 * self._normalize(fixation_duration, 200, 600) +
0.2 * (1 - self._normalize(fixation_rate, 1, 5)) +
0.15 * (1 - self._normalize(blink_rate, 5, 20)) +
0.2 * self._normalize(pupil_diameter, 2, 6) +
0.15 * (1 - self._normalize(saccade_amplitude, 2, 15)))

return np.clip(vli, 0, 1)

def extract_kinematic_features(self, vehicle_data: Dict) -> np.ndarray:
"""
从车辆数据提取运动学特征

Args:
vehicle_data: 车辆 CAN 数据

Returns:
features: shape=(window*sample_rate, n_features)
"""
features = []
for feat_name in self.kinematic_features:
if feat_name in vehicle_data:
feat = np.array(vehicle_data[feat_name])
# 滑动窗口统计
window_stats = self._window_statistics(feat)
features.append(window_stats)

return np.concatenate(features, axis=-1)

def _window_statistics(self, signal: np.ndarray) -> np.ndarray:
"""计算滑动窗口统计特征"""
window = int(self.window_size * self.sample_rate)
stats = []

for i in range(0, len(signal) - window, window):
w = signal[i:i+window]
stats.append([
np.mean(w),
np.std(w),
np.max(w) - np.min(w),
np.sum(np.abs(np.diff(w))), # 总变化量
])

return np.array(stats)

def predict_vli(self, kinematic_features: np.ndarray,
driving_style: float = None) -> float:
"""
预测 VLI(推理阶段,仅用车辆运动学)

Args:
kinematic_features: 车辆运动学特征
driving_style: 可选驾驶风格先验 (0=保守, 1=激进)

Returns:
vli: 预测的视觉负荷指数
"""
if self.model_weights is None:
# 简化线性模型
weights = np.random.randn(kinematic_features.shape[-1]) * 0.1
bias = 0.3
else:
weights, bias = self.model_weights

vli = np.sigmoid(np.dot(kinematic_features.mean(axis=0), weights) + bias)

if driving_style is not None:
# 驾驶风格先验调整
vli = vli * (0.8 + 0.4 * driving_style)

return float(np.clip(vli, 0, 1))

def _normalize(self, value, min_val, max_val):
return np.clip((value - min_val) / (max_val - min_val), 0, 1)


# 测试
if __name__ == "__main__":
np.random.seed(42)

predictor = VLIPredictor()

# 模拟眼动数据(训练阶段)
eye_metrics_low = {
'fixation_duration_mean': 250, # ms, 较短
'fixation_rate': 3.5, # 次/秒
'blink_rate': 15, # 次/分
'pupil_diameter_mean': 3.0, # mm
'saccade_amplitude': 8.0, # 度
}

eye_metrics_high = {
'fixation_duration_mean': 450, # ms, 较长
'fixation_rate': 1.5, # 次/秒, 减少
'blink_rate': 5, # 次/分, 减少
'pupil_diameter_mean': 4.5, # mm, 扩大
'saccade_amplitude': 3.0, # 度, 减少
}

vli_low = predictor.compute_vli_proxy(eye_metrics_low)
vli_high = predictor.compute_vli_proxy(eye_metrics_high)

print("=== VLI 代理标签 ===")
print(f"低负荷场景 VLI: {vli_low:.3f}")
print(f"高负荷场景 VLI: {vli_high:.3f}")

# 模拟车辆运动学数据
vehicle_data_low = {
'speed': np.random.normal(60, 2, 100),
'acceleration_lat': np.random.normal(0, 0.1, 100),
'acceleration_lon': np.random.normal(0, 0.1, 100),
'steering_angle': np.random.normal(0, 1, 100),
'steering_velocity': np.random.normal(0, 2, 100),
'yaw_rate': np.random.normal(0, 0.5, 100),
'lane_distance': np.random.normal(0, 0.1, 100),
'throttle_position': np.random.normal(30, 3, 100),
'brake_pressure': np.random.normal(0, 0.5, 100),
}

vehicle_data_high = {
'speed': np.random.normal(55, 8, 100),
'acceleration_lat': np.random.normal(0, 0.5, 100),
'acceleration_lon': np.random.normal(0, 0.4, 100),
'steering_angle': np.random.normal(0, 8, 100),
'steering_velocity': np.random.normal(0, 15, 100),
'yaw_rate': np.random.normal(0, 2.5, 100),
'lane_distance': np.random.normal(0, 0.4, 100),
'throttle_position': np.random.normal(35, 10, 100),
'brake_pressure': np.random.normal(2, 3, 100),
}

kin_low = predictor.extract_kinematic_features(vehicle_data_low)
kin_high = predictor.extract_kinematic_features(vehicle_data_high)

pred_low = predictor.predict_vli(kin_low)
pred_high = predictor.predict_vli(kin_high, driving_style=0.7)

print("\n=== VLI 车辆运动学预测 ===")
print(f"低负荷预测 VLI: {pred_low:.3f}")
print(f"高负荷预测 VLI: {pred_high:.3f}")

4 DALI vs VLI 对比

维度 DALI VLI
来源 主观量表 眼动代理→运动学预测
负荷类型 感知负荷 视觉负荷
实时性 ❌ 驾驶后填写 ✅ 实时
部署成本 零(问卷) 低(已有CAN数据)
驾驶员依赖 高(主观差异) 低(跨个体泛化)
量化精度 离散(0-100) 连续(0-1)
适用场景 研究验证 量产DMS

5 对 IMS 认知分心检测的启示

5.1 分层检测架构

graph TD
    A[认知分心检测] --> B[第一层: 感知负荷]
    A --> C[第二层: 认知负荷]
    A --> D[第三层: 综合判定]
    
    B --> B1[场景复杂度评估]
    B --> B2[视觉密度计算]
    B --> B3[DALI 代理模型]
    
    C --> C1[注视持续时间]
    C --> C2[注视频率]
    C --> C3[瞳孔直径变化]
    C --> C4[VLI 车辆运动学预测]
    
    D --> D1[感知+认知融合]
    D --> D2[分心等级判定]
    D --> D3[干预策略输出]

5.2 实施建议

优先级 任务 依据 周期
P0 VLI 车辆运动学特征提取 已有CAN数据,零硬件成本 1 月
P0 注视持续时间/频率统计 现有DMS摄像头可支持 2 周
P1 场景复杂度评估模块 DALI 研究启示 2 月
P1 感知/认知负荷分离算法 区分两类负荷 3 月
P2 瞳孔直径精确测量 需高分辨率摄像头 6 月
P2 驾驶风格个性化先验 提升VLI预测精度 3 月

5.3 测试场景

编号 场景 感知负荷 认知负荷 预期
C-01 高速直行,无交通 正常
C-02 城市复杂路口 感知负荷↑
C-03 导航规划路线 认知负荷↑
C-04 电话对话 认知负荷↑
C-05 恶劣天气+复杂路口 感知负荷↑↑
C-06 前方事故现场 双高
C-07 熟悉路线自动驾驶 正常
C-08 陌生路线+导航 认知负荷↑

6 总结

两项研究共同指向一个重要结论:认知负荷和感知负荷是两个不同维度,必须分别评估

  • DALI 反映感知负荷(视觉密度驱动),适合做场景复杂度评估
  • 眼动注视指标 反映认知负荷(思维负担驱动),是认知分心的更好代理
  • VLI 跨源预测 提供了无需眼动仪的量产方案,用车辆运动学即可估计视觉负荷

对 IMS 开发,建议构建分层检测架构:第一层用 VLI 评估感知负荷,第二层用注视特征评估认知负荷,第三层融合判定输出分心等级和干预策略。


参考来源:


DALI vs VLI:眼动追踪与车辆运动学认知负荷评估新框架
https://dapalm.com/2026/09/09/2026-09-09-dali-vs-vli-cognitive-perceptual-load-eye-tracking-vehicle-kinematics-ims/
作者
Mars
发布于
2026年9月9日
许可协议