Euro NCAP 2026 评分体系深度解析:DSM 分值分配与测试场景全解

官方文档信息


核心变革:2026 新评分架构

1. 四大评分模块(总分 100 分)

Euro NCAP 2026 将评分从传统的成人保护、儿童保护、行人保护、安全辅助四大模块,调整为基于驾驶场景的新架构

graph TB
    A[总分 100 分] --> B1[Safe Driving 30分]
    A --> B2[Crash Avoidance 30分]
    A --> B3[Crash Protection 25分]
    A --> B4[Post-Crash Safety 15分]
    B1 --> C1[DSM 10分]
    B1 --> C2[ISA 10分]
    B1 --> C3[ADAS 10分]
模块 分值占比 核心内容
Safe Driving(安全驾驶) 30 分 DSM + ISA + ADAS 协同
Crash Avoidance(碰撞避免) 30 分 AEB、LSS、FCW
Crash Protection(碰撞保护) 25 分 传统碰撞测试
Post-Crash Safety(碰撞后安全) 15 分 eCall、紧急响应

2. DSM 评分详细分配(10 分)

ETSC 官方解读:

“Euro NCAP will place emphasis on Driver State Monitoring (DSM). To achieve a 5-star rating, vehicles must employ continuous eye- and head-tracking.”

DSM 分值分配:

功能模块 分值 2026 新要求 备注
分心检测(Distraction) 4 分 ✅ 8个测试场景 D-01 ~ D-08
疲劳检测(Fatigue) 3 分 ✅ PERCLOS + 微睡眠 F-01 ~ F-05
无响应驾驶员干预 2 分 🔴 2026新增 U-01 ~ U-03
酒驾损伤检测 1 分 🔴 2026新增 AI-01 ~ AI-03

DSM 测试场景详解(官方协议)

1. 分心检测场景(D-01 ~ D-08)

评分标准(4 分):

场景 ID 场景名称 触发条件 检测时限 警告等级 得分权重
D-01 长时间视线偏离道路 视线偏离 ≥3 秒 ≤3 秒 一级警告 0.5 分
D-02 手机使用(手持通话) 手持手机至耳边 ≤2 秒 一级警告 0.5 分
D-03 手机使用(打字操作) 手持手机打字 ≤2 秒 一级警告 0.5 分
D-04 仪表盘交互 视线看向仪表盘 ≥3 秒 ≤3 秒 一级警告 0.25 分
D-05 视线偏离道路(单次) 视线偏离 ≥3 秒(单次) ≤3 秒 一级警告 0.5 分
D-06 后视镜查看 视线看向后视镜 ≥2 秒 ≤2 秒 一级警告 0.25 分
D-07 乘客交互 视线看向乘客 ≥2 秒 ≤2 秒 一级警告 0.25 分
D-08 外部物体吸引 视线看向窗外物体 ≥3 秒 ≤3 秒 一级警告 0.5 分

关键变化(2026):

  1. 直接监控强制化:

    “From 2026, only direct (or a combination of direct and indirect) monitoring systems will be awarded.”

    • 仅奖励直接监控系统(摄像头)
    • 间接监控(方向盘传感器)不再单独获奖
  2. 物理按钮回归:

    “Euro NCAP is pushing back against the ‘touchscreen-only’ interior design trend.”

    • 必须提供物理控制按钮:转向灯、雨刷、喇叭、SOS
    • 防止触摸屏操作导致的分心

2. 疲劳检测场景(F-01 ~ F-05)

评分标准(3 分):

场景 ID 场景名称 PERCLOS阈值 检测时限 警告等级 得分权重
F-01 PERCLOS ≥30% PERCLOS ≥30%,持续 5 秒 ≤5 秒 一级警告 1 分
F-02 PERCLOS ≥40% PERCLOS ≥40%,持续 5 秒 ≤5 秒 二级警告 0.5 分
F-03 闭眼 ≥2 秒 单次闭眼 ≥2 秒 ≤2 秒 一级警告 0.5 分
F-04 微睡眠(闭眼 1.5s) 单次闭眼 1.5±0.2 秒 ≤1.5 秒 一级警告 0.5 分
F-05 频繁眨眼 眨眼频率 >20 次/分钟 ≤60 秒 一级警告 0.5 分

PERCLOS 定义(官方):

“PERCLOS is the proportion of time the eyes are closed over a defined time window (typically 60 seconds). Euro NCAP requires PERCLOS ≥30% for fatigue detection.”

PERCLOS 计算代码:

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
"""
Euro NCAP PERCLOS 计算(官方定义)

公式:PERCLOS = (闭眼帧数 / 总帧数) × 100%

阈值:
- PERCLOS ≥30%:一级警告
- PERCLOS ≥40%:二级警告
- PERCLOS ≥10%:微睡眠临界点(研究建议)

时间窗口:60 秒(可配置)
"""

import numpy as np


def calculate_perclos(
eye_openness: np.ndarray,
fps: int = 30,
threshold: float = 0.2,
window_sec: int = 60
) -> np.ndarray:
"""
Euro NCAP PERCLOS 计算

Args:
eye_openness: 眼睑开度序列 (0-1), shape=(N,)
fps: 帧率,默认 30 fps
threshold: 闭眼阈值,开度 < threshold 视为闭眼
window_sec: 滑动窗口秒数,默认 60 秒

Returns:
perclos_values: PERCLOS 百分比序列, shape=(N-window,)

论文参考:PERCLOS Threshold for Drowsiness Detection (2026)
"""
window_frames = int(window_sec * fps)
perclos_values = []

for i in range(len(eye_openness) - window_frames):
window = eye_openness[i:i+window_frames]
closed_ratio = np.sum(window < threshold) / window_frames
perclos_values.append(closed_ratio * 100)

return np.array(perclos_values)


def detect_fatigue_level(perclos: float) -> dict:
"""
Euro NCAP 疲劳等级判断

Args:
perclos: PERCLOS 百分比

Returns:
result: {'level': int, 'warning': str}

参考:Euro NCAP DSM Protocol v10.4
"""
if perclos >= 40:
return {'level': 2, 'warning': '二级警告(强烈疲劳)'}
elif perclos >= 30:
return {'level': 1, 'warning': '一级警告(疲劳预警)'}
elif perclos >= 10:
# 微睡眠临界点(研究建议)
return {'level': 0, 'warning': '微睡眠风险'}
else:
return {'level': 0, 'warning': '正常状态'}


# 实际测试
if __name__ == "__main__":
# 模拟疲劳驾驶数据
np.random.seed(42)

# 正常驾驶(低 PERCLOS)
normal_data = np.random.normal(0.8, 0.1, 1800)
perclos_normal = calculate_perclos(normal_data)

# 疲劳驾驶(高 PERCLOS)
fatigue_data = np.concatenate([
np.random.normal(0.8, 0.1, 900), # 前30秒正常
np.random.normal(0.3, 0.1, 900) # 后30秒闭眼增加
])
perclos_fatigue = calculate_perclos(fatigue_data)

print(f"正常驾驶 PERCLOS: {np.max(perclos_normal):.2f}%")
print(f"疲劳驾驶 PERCLOS: {np.max(perclos_fatigue):.2f}%")

# 疲劳等级判断
fatigue_level = detect_fatigue_level(np.max(perclos_fatigue))
print(f"疲劳等级: {fatigue_level['warning']}")

3. 无响应驾驶员干预(U-01 ~ U-03)

2026 新增功能(2 分):

“The 2026 protocols introduce ‘unresponsive driver’ interventions – technologies that can detect a medical emergency or extreme intoxication and safely bring the vehicle to a controlled halt.”

场景 ID 场景名称 触发条件 干预措施 得分权重
U-01 无响应驾驶员检测 PERCLOS ≥80% + 无方向盘操作 声光警告 + 紧急制动准备 0.5 分
U-02 无响应驾驶员干预 无响应 ≥10 秒 自动减速 + 安全停车 0.75 分
U-03 紧急停车 无响应 ≥15 秒 自动停车 + 开启警示灯 0.75 分

干预流程代码:

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
"""
Euro NCAP 无响应驾驶员干预流程

场景 U-01 ~ U-03 实现

参考:Euro NCAP DSM Protocol v10.4 Section 4.2
"""

class UnresponsiveDriverIntervention:
"""
无响应驾驶员干预系统

Euro NCAP 2026 新增要求
"""

def __init__(self):
# 阈值设定(Euro NCAP 定义)
self.perclos_threshold = 80 # PERCLOS ≥80%
self.steering_threshold = 0.1 # 方向盘操作阈值
self.warning_duration = 10 # 警告持续时间(秒)
self.intervention_duration = 15 # 干预时间(秒)

def detect_unresponsive(self, perclos: float, steering_angle: float) -> bool:
"""
检测无响应状态

Args:
perclos: PERCLOS 百分比
steering_angle: 方向盘角度变化

Returns:
is_unresponsive: 是否无响应

Euro NCAP U-01 定义:
PERCLOS ≥80% + 无方向盘操作
"""
return perclos >= self.perclos_threshold and abs(steering_angle) < self.steering_threshold

def intervention_sequence(self, unresponsive_time: float) -> dict:
"""
干预序列

Args:
unresponsive_time: 无响应持续时间(秒)

Returns:
intervention: {'stage': str, 'action': str}

Euro NCAP U-01 ~ U-03 流程
"""
if unresponsive_time >= self.intervention_duration:
# U-03:紧急停车
return {
'stage': 'U-03',
'action': '自动停车 + 开启警示灯 + eCall',
'description': '安全停车并通知紧急服务'
}
elif unresponsive_time >= self.warning_duration:
# U-02:自动减速
return {
'stage': 'U-02',
'action': '自动减速 + 安全停车准备',
'description': '减速并准备停车'
}
else:
# U-01:声光警告
return {
'stage': 'U-01',
'action': '声光警告 + 紧急制动准备',
'description': '警告驾驶员'
}


# 实际测试
if __name__ == "__main__":
system = UnresponsiveDriverIntervention()

# 测试无响应检测
is_unresponsive = system.detect_unresponsive(85, 0.05)
print(f"无响应检测: {is_unresponsive}")

# 测试干预序列
for time in [5, 10, 15]:
intervention = system.intervention_sequence(time)
print(f"时间 {time}s: {intervention['stage']} - {intervention['action']}")

4. 酒驾损伤检测(AI-01 ~ AI-03)

2026 新增功能(1 分):

“The 2026 protocols introduce dedicated scoring for systems capable of identifying signs of drug or alcohol impairment.”

场景 ID 场景名称 检测方法 预期性能 得分权重
AI-01 酒驾行为检测 驾驶行为异常 识别率 ≥85% 0.33 分
AI-02 面部特征分析 面部特征变化 BAC ≥0.05 检测 0.33 分
AI-03 多模态融合 行为+面部+生理 多模态融合 0.34 分

Smart Eye 官方方案:

“Smart Eye launches first-ever driver monitoring system with real-time alcohol impairment detection. BAC detection from .05 to higher levels.”


OEM Dossier 要求(官方)

必须提交的内容:

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
### DSM Dossier 内容清单

1. **系统架构文档**
- 摄像头型号、参数、安装位置
- 处理器型号、算力、功耗
- 算法模块流程图

2. **算法参数声明(必须)**
- PERCLOS 阈值
- 视线偏离阈值
- 检测时延参数
- 警告等级触发条件

3. **测试场景报告**
- 8 个分心场景测试报告
- 5 个疲劳场景测试报告
- 3 个无响应干预测试报告
- 3 个酒驾检测测试报告

4. **验证数据**
- 不同光照条件验证数据
- 不同年龄/性别验证数据
- 戴眼镜/戴帽子验证数据

5. **性能指标**
- 检测准确率
- 检测时延
- 误报率
- 漏报率

IMS 开发落地指南

1. DSM 系统架构

graph TB
    A[红外摄像头] --> B[人脸检测]
    B --> C[关键点检测]
    C --> D1[视线估计]
    C --> D2[眼睑开度]
    D1 --> E1[分心检测]
    D2 --> E2[疲劳检测]
    E1 --> F[警告模块]
    E2 --> F
    F --> G[声光警告]
    F --> H[ADAS协同]
    H --> I[紧急制动]

2. 硬件配置清单

组件 型号 参数 Euro NCAP要求
红外摄像头 OV2311 2MP, 1600×1200, 全局快门 直接监控
红外补光 SFH 4740 940nm, 120mW/sr 夜间可见
处理器 QCS8255 Hexagon NPU, 26 TOPS 实时推理
处理器 TI TDA4VM C7x DSP, 8 TOPS 低功耗

3. 开发优先级

模块 Euro NCAP要求 优先级 开发周期
视线分心检测 ✅ 已要求(4分) 🔴 P0 2周
PERCLOS疲劳检测 ✅ 已要求(3分) 🔴 P0 1周
无响应干预 🔴 2026新增(2分) 🟡 P1 3周
酒驾检测 🔴 2026新增(1分) 🟡 P1 4周

4. Euro NCAP 验证流程代码

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
"""
Euro NCAP DSM 验证流程

步骤:
1. OEM 提交 Dossier
2. Euro NCAP 审核文档
3. 实车测试验证
4. 星级评分

参考:Euro NCAP DSM Protocol v10.4
"""

class DSMValidationPipeline:
"""
DSM 验证流程
"""

def __init__(self):
self.test_scenarios = {
'distraction': ['D-01', 'D-02', 'D-03', 'D-04', 'D-05', 'D-06', 'D-07', 'D-08'],
'fatigue': ['F-01', 'F-02', 'F-03', 'F-04', 'F-05'],
'unresponsive': ['U-01', 'U-02', 'U-03'],
'alcohol': ['AI-01', 'AI-02', 'AI-03']
}

def validate_dossier(self, dossier: dict) -> dict:
"""
验证 Dossier

Args:
dossier: OEM 提交的文档

Returns:
result: {'valid': bool, 'missing': list}
"""
required_items = [
'system_architecture',
'algorithm_parameters',
'test_reports',
'validation_data',
'performance_metrics'
]

missing = [item for item in required_items if item not in dossier]

return {
'valid': len(missing) == 0,
'missing': missing
}

def run_test_scenario(self, scenario_id: str, test_data: dict) -> dict:
"""
运行测试场景

Args:
scenario_id: 场景编号(如 'D-02')
test_data: 测试数据

Returns:
result: {'passed': bool, 'details': dict}
"""
# 场景参数
scenario_params = self._get_scenario_params(scenario_id)

# 模拟测试
detection_delay = test_data['detection_delay']
warning_level = test_data['warning_level']

# 判定
passed = (
detection_delay <= scenario_params['max_delay'] and
warning_level == scenario_params['expected_warning']
)

return {
'passed': passed,
'detection_delay': detection_delay,
'warning_level': warning_level,
'expected_delay': scenario_params['max_delay'],
'expected_warning': scenario_params['expected_warning']
}

def calculate_dsm_score(self, test_results: dict) -> float:
"""
计算 DSM 评分

Args:
test_results: 测试结果

Returns:
score: DSM 总分(满分10分)
"""
# 分值权重
weights = {
'D-01': 0.5, 'D-02': 0.5, 'D-03': 0.5, 'D-04': 0.25,
'D-05': 0.5, 'D-06': 0.25, 'D-07': 0.25, 'D-08': 0.5,
'F-01': 1.0, 'F-02': 0.5, 'F-03': 0.5, 'F-04': 0.5, 'F-05': 0.5,
'U-01': 0.5, 'U-02': 0.75, 'U-03': 0.75,
'AI-01': 0.33, 'AI-02': 0.33, 'AI-03': 0.34
}

total_score = 0.0
for scenario_id, passed in test_results.items():
if passed and scenario_id in weights:
total_score += weights[scenario_id]

return total_score

def _get_scenario_params(self, scenario_id: str) -> dict:
"""获取场景参数"""
params = {
'D-01': {'max_delay': 3.0, 'expected_warning': 1},
'D-02': {'max_delay': 2.0, 'expected_warning': 1},
'F-01': {'max_delay': 5.0, 'expected_warning': 1},
'F-04': {'max_delay': 1.5, 'expected_warning': 1},
}
return params.get(scenario_id, {'max_delay': 3.0, 'expected_warning': 1})


# 实际测试
if __name__ == "__main__":
pipeline = DSMValidationPipeline()

# 验证 Dossier
dossier = {
'system_architecture': '...',
'algorithm_parameters': {'perclos_threshold': 30},
'test_reports': '...',
'performance_metrics': {'accuracy': 95}
}

result = pipeline.validate_dossier(dossier)
print(f"Dossier 验证: {result['valid']}")

# 运行测试场景
test_data = {'detection_delay': 2.1, 'warning_level': 1}
scenario_result = pipeline.run_test_scenario('D-02', test_data)

print(f"\n场景 D-02 测试:")
print(f" 通过: {scenario_result['passed']}")
print(f" 检测时延: {scenario_result['detection_delay']}s")

# 计算 DSM 评分
test_results = {
'D-01': True, 'D-02': True, 'D-03': True, 'D-04': True,
'F-01': True, 'F-02': True,
'U-01': True, 'U-02': True
}
score = pipeline.calculate_dsm_score(test_results)
print(f"\nDSM 评分: {score:.2f} 分(满分 10 分)")

总结

Euro NCAP 2026 DSM 评分体系核心变革:

  1. 直接监控强制化 - 仅奖励直接监控系统
  2. 分心检测强化 - 8个场景,4分
  3. 疲劳检测细化 - PERCLOS + 微睡眠,3分
  4. 无响应干预新增 - 自动减速+安全停车,2分
  5. 酒驾检测新增 - BAC ≥0.05,1分

IMS 开发启示:

  • 优先视线分心 + PERCLOS 疲劳(P0)
  • 无响应干预需 ADAS 协同(P1)
  • 酒驾检测参考 Smart Eye 方案(P1)
  • OEM Dossier 必须声明算法参数

参考文献

  1. Euro NCAP DSM Protocol v10.4:https://www.euroncap.com/media/80158/euro-ncap-assessment-protocol-sa-safe-driving-v104.pdf
  2. ETSC 官方解读:https://etsc.eu/euro-ncap-new-2026-protocols-target-distraction-impairment-and-speeding/
  3. Smart Eye 酒驾检测:https://www.smarteye.se/blog/what-euro-ncap-2026-says-about-child-presence-detection/
  4. PERCLOS 研究:https://pmc.ncbi.nlm.nih.gov/articles/PMC10108649/

Euro NCAP 2026 评分体系深度解析:DSM 分值分配与测试场景全解
https://dapalm.com/2026/07/07/2026-07-07-euro-ncap-2026-scoring-dsm-breakdown-zh/
作者
Mars
发布于
2026年7月7日
许可协议