SAE L3自动驾驶中的驾驶员状态检测:85篇文献综述

论文信息

项目 内容
标题 Driver state detection and recognition in conditional automated driving: A review
期刊 PLOS ONE
DOI 10.1371/journal.pone.0358700
发表 2026-09-17
作者 Haoran Wu, Timothy Tettey Nartey, Guangjun Wan, Yugang Wang, Linli Xu, Xun Zhou
资助 中国国家自然科学基金(52472366)
方法 PRISMA 2020指南
文献数 85篇(2021-2025)

综述范围

研究问题

SAE Level 3(有条件自动驾驶)要求驾驶员在接管请求时能够及时恢复控制。这需要持续监控驾驶员状态,但当前研究存在碎片化问题。

5个核心研究问题

编号 研究问题 关键发现
RQ1 L3场景下研究了哪些驾驶员状态构念? 6大类:分心、困倦、疲劳、情绪、认知负荷、信任
RQ2 使用了哪些感知模态? 3大类:视觉、生理、车辆性能
RQ3 使用了哪些计算方法? 传统ML+深度学习+多模态融合
RQ4 性能指标和实时性如何? 大部分未在实时/实车验证
RQ5 方法论局限和未来方向? 标准化数据集缺失、定义不一致

PRISMA搜索策略

驾驶员状态构念分类

6大状态构念

状态构念 定义 检测方法 L3特殊挑战
分心 视觉/认知注意力偏离 视线+面部+车辆 NDRT参与度影响接管
困倦 生理性睡眠需求 PERCLOS+EEG+HRV 自动驾驶中更易困
疲劳 持续任务后能力下降 EMG+反应时间+EEG L3中被动监控导致疲劳
情绪 愤怒/沮丧/焦虑 表情+语音+HRV 情绪影响接管决策
认知负荷 工作记忆需求 EEG+瞳孔+反应 接管请求瞬间负荷激增
信任 对系统信任度 问卷+行为+生理 过度信任→延迟接管

状态构念的交互关系

感知模态分析

3大感知类别

类别 传感器 优势 局限 量产可行性
视觉 摄像头(RGB/IR) 非接触、信息丰富 光照、遮挡、运动 ✅ 已量产
生理 EEG/ECG/EOG/EDA 内部状态直接测量 侵入性、运动伪影 ❌ 未量产
车辆性能 CAN总线 无需额外硬件、实时 间接、滞后 ✅ 已量产

多模态融合优势

论文综述确认:多模态融合的准确率和鲁棒性显著优于任何单模态。

融合方案 vs 单模态提升 量产可行性
视觉+车辆 +5-10% ✅ 高
视觉+生理 +10-20% 🟡 中
视觉+生理+车辆 +15-30% 🟡 中

计算方法分类

传统机器学习

方法 应用 优势 局限
SVM 分心/疲劳分类 小数据有效 特征工程依赖
随机森林 状态分类 可解释 时序建模弱
朴素贝叶斯 情绪分类 快速、轻量 独立性假设

深度学习

方法 应用 优势 局限
CNN 表情/眼动分类 自动特征提取 需大数据
LSTM 时序状态预测 时序建模 计算量大
Transformer 多模态融合 长程依赖 模型大
CVGG-19 疲劳检测 定制架构 过拟合风险
双曲正切LSTM 困倦预测 混合架构 复杂度高

多模态融合策略

策略 描述 优势 典型应用
早期融合 原始数据级拼接 信息完整 同构传感器
中期融合 特征级融合 平衡效率和性能 异构传感器
晚期融合 决策级融合 模块化、灵活 不同采样率

关键发现

1. 研究碎片化

问题 具体表现 影响
定义不一致 “疲劳”在不同研究中定义不同 无法跨研究比较
数据集不统一 没有标准L3数据集 模型不可复现
评估指标各异 准确率/F1/AUC混用 无法直接对比
采样代表性不足 多为大学生被试 泛化性存疑

2. L3特有挑战

挑战 说明
NDRT影响 非驾驶相关任务(看手机/工作)是L3的主要分心源
被动监控疲劳 L3中驾驶员不操作→更易疲劳→接管质量差
接管请求负荷 TOR瞬时认知负荷激增
信任校准 过度信任→延迟接管;信任不足→频繁不必要接管
6秒窗口 平均接管需6秒,期间必须持续状态评估

3. 量产vs研究的差距

维度 研究 量产
传感器 EEG+EOG+多摄像头 摄像头(可选PPG)
环境 模拟器/控制场景 全天候/全路况
实时性 离线分析 <100ms推理
被试 10-30名大学生 全年龄/全群体
持续时间 1-2小时实验 10年+车辆寿命

IMS开发启示

1. L3 DMS功能优先级

功能 当前状态 L3需求 优先级
视觉分心检测 ✅ 已量产 必须+NDRT识别 🔴 持续优化
疲劳检测 ✅ 已量产 必须+L3特有模式 🔴 持续优化
接管准备评估 ❌ 缺失 L3核心需求 🔴 新开发
认知负荷估计 ❌ 缺失 接管质量保障 🟡 研发中
情绪检测 ⚠️ 概念 接管决策辅助 🟡 研究
信任评估 ❌ 缺失 长期安全 🟢 研究

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

class TakeoverReadinessAssessor:
"""
L3接管准备度评估器

基于综述的关键发现:
1. 接管平均需6秒
2. 多模态融合显著优于单模态
3. NDRT参与度是L3分心核心指标
4. 认知负荷在TOR时激增

评估维度:
- 视觉准备度:视线是否在路上
- 认知准备度:是否在做NDRT
- 生理准备度:疲劳/困倦水平
- 运动准备度:手是否在方向盘附近
- 历史准备度:过去N秒的状态趋势
"""

def __init__(self):
self.weights = {
'visual': 0.30,
'cognitive': 0.25,
'physiological': 0.20,
'motor': 0.15,
'temporal': 0.10
}

def assess(self, state: Dict) -> Dict:
"""
评估接管准备度

Args:
state: 包含各维度状态的字典

Returns:
readiness: 0-1, 越高越准备好
level: 'ready'/'marginal'/'unready'
time_to_ready: 预估达到ready所需秒数
"""
# 各维度评分 (0-1)
visual = self._score_visual(state)
cognitive = self._score_cognitive(state)
physiological = self._score_physio(state)
motor = self._score_motor(state)
temporal = self._score_temporal(state)

# 加权融合
readiness = (
self.weights['visual'] * visual +
self.weights['cognitive'] * cognitive +
self.weights['physiological'] * physiological +
self.weights['motor'] * motor +
self.weights['temporal'] * temporal
)

# 分级
if readiness >= 0.7:
level = 'ready'
ttr = 0
elif readiness >= 0.4:
level = 'marginal'
ttr = self._estimate_time(visual, cognitive, motor)
else:
level = 'unready'
ttr = self._estimate_time(visual, cognitive, motor) + 2

return {
'readiness': readiness,
'level': level,
'time_to_ready': ttr,
'scores': {
'visual': visual,
'cognitive': cognitive,
'physiological': physiological,
'motor': motor,
'temporal': temporal
}
}

def _score_visual(self, state):
"""视觉准备度:视线是否在路上"""
gaze_on_road = state.get('gaze_on_road_ratio', 0)
return gaze_on_road

def _score_cognitive(self, state):
"""认知准备度:是否在做NDRT"""
ndrt = state.get('ndrt_engaged', False)
if ndrt:
ndrt_duration = state.get('ndrt_duration', 0)
# NDRT越深,认知准备越差
return max(0, 1 - ndrt_duration / 30)
return 1.0

def _score_physio(self, state):
"""生理准备度"""
fatigue = state.get('fatigue_level', 0)
return 1 - fatigue

def _score_motor(self, state):
"""运动准备度:手是否在方向盘附近"""
hands_on_wheel = state.get('hands_on_wheel', False)
return 1.0 if hands_on_wheel else 0.3

def _score_temporal(self, state):
"""时序趋势:过去状态是否稳定"""
recent_readiness = state.get('recent_readiness_trend', [])
if recent_readiness:
return np.mean(recent_readiness[-10:])
return 0.5

def _estimate_time(self, visual, cognitive, motor):
"""估算达到ready所需时间"""
t = 0
if visual < 0.7:
t += 1 # 视线回正需~1s
if cognitive < 0.7:
t += 3 # 退出NDRT需~3s
if motor < 0.7:
t += 2 # 手回方向盘需~2s
return t


# 测试
if __name__ == "__main__":
assessor = TakeoverReadinessAssessor()

# 场景1: 正常L3驾驶,看手机
state1 = {
'gaze_on_road_ratio': 0.2,
'ndrt_engaged': True,
'ndrt_duration': 120,
'fatigue_level': 0.1,
'hands_on_wheel': False,
'recent_readiness_trend': [0.3, 0.3, 0.2, 0.2]
}
r1 = assessor.assess(state1)
print(f"场景1 (看手机): readiness={r1['readiness']:.2f}, "
f"level={r1['level']}, ttr={r1['time_to_ready']}s")

# 场景2: 正常监控,未分心
state2 = {
'gaze_on_road_ratio': 0.85,
'ndrt_engaged': False,
'fatigue_level': 0.05,
'hands_on_wheel': True,
'recent_readiness_trend': [0.8, 0.85, 0.82, 0.85]
}
r2 = assessor.assess(state2)
print(f"场景2 (正常监控): readiness={r2['readiness']:.2f}, "
f"level={r2['level']}, ttr={r2['time_to_ready']}s")

# 场景3: 疲劳+分心
state3 = {
'gaze_on_road_ratio': 0.3,
'ndrt_engaged': True,
'ndrt_duration': 300,
'fatigue_level': 0.6,
'hands_on_wheel': False,
'recent_readiness_trend': [0.2, 0.15, 0.1, 0.1]
}
r3 = assessor.assess(state3)
print(f"场景3 (疲劳+分心): readiness={r3['readiness']:.2f}, "
f"level={r3['level']}, ttr={r3['time_to_ready']}s")

3. 标准化建议

综述建议的标准化方向:

建议 当前状态 目标
统一数据集 无标准L3数据集 建立150+被试、多场景数据集
统一定义 各研究自定义 行业标准操作定义
统一指标 混用 标准指标集(准确率+延迟+鲁棒性)
纵向验证 横截面为主 6个月+实车验证
代表采样 大学生为主 全年龄/全群体

总结

这篇PLOS ONE综述是L3驾驶员状态检测领域最全面的文献回顾(85篇,PRISMA指南),揭示了三个关键问题:

  1. 研究碎片化:定义、数据集、指标不统一
  2. L3特有挑战:NDRT、被动疲劳、接管负荷
  3. 量产-研究差距:实验室→实车仍有巨大gap

对IMS的核心启示: L3 DMS的核心不是”检测状态”而是”评估接管准备度”——从被动监控转向主动能力评估。

信息来源: PLOS ONE