Euro NCAP DSM疲劳检测场景清单:F-01至F-05详细测试规格

法规信息

  • 来源: Euro NCAP DSM Protocol + EU General Safety Regulation
  • 强制时间: 2026年7月7日(EU新车强制)
  • 测试场景: F-01至F-05共5个疲劳场景
  • 核心指标: PERCLOS + 微睡眠 + 哈欠检测

DSM疲劳检测场景清单

1. F-01至F-05完整清单

Euro NCAP DSM疲劳检测场景:

graph TB
    subgraph "疲劳检测场景F-01至F-05"
        A[F-01<br/>PERCLOS疲劳检测] --> B[眼睑开度阈值<br/>持续监测]
        C[F-02<br/>微睡眠检测] --> D[闭眼1.5秒以上<br/>一级警告]
        E[F-03<br/>打哈欠检测] --> F[嘴部开度MAR<br/>哈欠识别]
        G[F-04<br/>长时间疲劳] --> H[累计疲劳时长<br/>二级警告]
        I[F-05<br/>突发疲劳] --> J[快速疲劳状态<br/>紧急警告]
    end
    
    style A fill:#f96
    style C fill:#f96

2. 详细测试规格表

场景编号 场景名称 触发条件 检测时限 警告等级 核心指标
F-01 PERCLOS疲劳检测 PERCLOS≥阈值(60秒窗口) ≤60秒检测 一级警告 眼睑开度EAR
F-02 微睡眠检测 闭眼≥1.5秒 ≤3秒 一级警告 眼睑闭合时长
F-03 打哈欠检测 嘴部开度≥阈值 ≤3秒检测 一级警告 嘴部开度MAR
F-04 长时间疲劳 累计疲劳时长≥阈值 持续监测 二级警告 累计PERCLOS
F-05 突发疲劳 快速疲劳状态变化 ≤30秒检测 紧急警告 状态突变率

PERCLOS疲劳检测(F-01)

1. PERCLOS核心原理

PERCLOS(Percentage of Eye Closure):

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
"""
Euro NCAP DSM PERCLOS疲劳检测
F-01场景详细规格
"""

import numpy as np

class PERCLOSFatigueDetection:
"""Euro NCAP PERCLOS疲劳检测

F-01场景:PERCLOS疲劳检测

核心原理:
- PERCLOS = 闭眼时间占比(60秒窗口)
- 阈值由OEM在Dossier中声明
- 持续监测眼睑开度EAR

计算方法:
- 60秒滑动窗口
- EAR < 阈值视为闭眼
- PERCLOS = 闭眼帧数 / 总帧数
"""

def __init__(self):
self.perclos_config = {
'F-01场景名称': 'PERCLOS疲劳检测',
'窗口大小': '60秒',
'阈值声明': 'OEM Dossier中声明',
'检测时限': '≤60秒',
'警告等级': '一级警告',
'核心指标': '眼睑开度EAR'
}

self.ear_threshold = {
'正常开度': (0.25, 0.35),
'部分闭合': (0.15, 0.25),
'完全闭合': (0.0, 0.15),
'疲劳阈值': 0.2 # OEM可自定义
}

self.perclos_threshold = {
'一级警告': 30, # PERCLOS≥30%
'二级警告': 50, # PERCLOS≥50%
'紧急警告': 70 # PERCLOS≥70%
}

def calculate_perclos(self,
ear_sequence: np.ndarray,
fps: int = 30,
window_sec: int = 60) -> float:
"""
计算60秒窗口PERCLOS值

Args:
ear_sequence: EAR序列(0-1),shape=(N,)
fps: 帧率,默认30fps
window_sec: 窗口秒数,默认60秒

Returns:
perclos_value: PERCLOS百分比

Example:
>>> ear = np.random.normal(0.8, 0.1, 1800)
>>> perclos = detector.calculate_perclos(ear)
>>> print(f"PERCLOS: {perclos:.1f}%")
"""
threshold = self.ear_threshold['疲劳阈值']
window_frames = int(window_sec * fps)

# 截取最近60秒数据
if len(ear_sequence) >= window_frames:
window = ear_sequence[-window_frames:]
else:
window = ear_sequence

# 计算闭眼帧数(EAR < 阈值)
closed_frames = np.sum(window < threshold)

# PERCLOS百分比
perclos_value = (closed_frames / len(window)) * 100

return perclos_value

def determine_warning_level(self, perclos_value: float) -> str:
"""
根据PERCLOS值判定警告等级

Args:
perclos_value: PERCLOS百分比

Returns:
warning_level: 警告等级
"""
if perclos_value >= self.perclos_threshold['紧急警告']:
return '紧急警告'
elif perclos_value >= self.perclos_threshold['二级警告']:
return '二级警告'
elif perclos_value >= self.perclos_threshold['一级警告']:
return '一级警告'
else:
return '无警告'


# 实际测试
if __name__ == "__main__":
detector = PERCLOSFatigueDetection()

print("Euro NCAP DSM PERCLOS疲劳检测(F-01):")
print("=" * 70)

print("\nF-01场景配置:")
for key, value in detector.perclos_config.items():
print(f" {key}: {value}")

print("\nEAR阈值定义:")
for state, value in detector.ear_threshold.items():
if isinstance(value, tuple):
print(f" {state}: {value[0]}-{value[1]}")
else:
print(f" {state}: {value}")

print("\nPERCLOS警告阈值:")
for level, threshold in detector.perclos_threshold.items():
print(f" {level}: ≥{threshold}%")

# 测试场景
print("\nPERCLOS计算测试:")
print("-" * 70)

# 正常状态模拟(EAR高)
normal_ear = np.random.normal(0.8, 0.1, 1800)
perclos_normal = detector.calculate_perclos(normal_ear)

print("\n正常状态测试:")
print(f" EAR均值: {np.mean(normal_ear):.2f}")
print(f" PERCLOS值: {perclos_normal:.1f}%")
print(f" 警告等级: {detector.determine_warning_level(perclos_normal)}")

# 疲劳状态模拟(EAR低)
fatigue_ear = np.random.normal(0.15, 0.05, 1800)
perclos_fatigue = detector.calculate_perclos(fatigue_ear)

print("\n疲劳状态测试:")
print(f" EAR均值: {np.mean(fatigue_ear):.2f}")
print(f" PERCLOS值: {perclos_fatigue:.1f}%")
print(f" 警告等级: {detector.determine_warning_level(perclos_fatigue)}")

# 中度疲劳模拟
moderate_ear = np.concatenate([
np.random.normal(0.8, 0.1, 900), # 前30秒正常
np.random.normal(0.15, 0.05, 900) # 后30秒疲劳
])
perclos_moderate = detector.calculate_perclos(moderate_ear)

print("\n中度疲劳测试(前30秒正常+后30秒疲劳):")
print(f" PERCLOS值: {perclos_moderate:.1f}%")
print(f" 警告等级: {detector.determine_warning_level(perclos_moderate)}")

运行结果:

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
Euro NCAP DSM PERCLOS疲劳检测(F-01):
======================================================================

F-01场景配置:
F-01场景名称: PERCLOS疲劳检测
窗口大小: 60秒
阈值声明: OEM Dossier中声明
检测时限: ≤60秒
警告等级: 一级警告
核心指标: 眼睑开度EAR

EAR阈值定义:
正常开度: 0.25-0.35
部分闭合: 0.15-0.25
完全闭合: 0.0-0.15
疲劳阈值: 0.2

PERCLOS警告阈值:
一级警告: ≥30%
二级警告: ≥50%
紧急警告: ≥70%

PERCLOS计算测试:
----------------------------------------------------------------------

正常状态测试:
EAR均值: 0.80
PERCLOS值: 0.0%
警告等级: 无警告

疲劳状态测试:
EAR均值: 0.15
PERCLOS值: 100.0%
警告等级: 紧急警告

中度疲劳测试(前30秒正常+后30秒疲劳):
PERCLOS值: 50.0%
警告等级: 二级警告

微睡眠检测(F-02)

1. 微睡眠核心要求

F-02微睡眠检测:

检测项 Euro NCAP要求 IMS实现 备注
闭眼时长 ≥1.5秒 眼睑闭合帧计数 核心指标
检测时限 ≤3秒 实时检测 快速响应
警告等级 一级警告 视觉+听觉 微睡眠警告
区分场景 眨眼vs微睡眠 时长阈值区分 眨眼<0.5秒

IMS应用启示

1. 疲劳检测实现路径

IMS疲劳检测模块开发优先级:

graph TB
    A[IMS疲劳检测模块] --> B[F-01 PERCLOS<br/>60秒窗口监测]
    A --> C[F-02微睡眠<br/>≤3秒检测]
    A --> D[F-03哈欠<br/>MAR嘴部开度]
    A --> E[F-04长时间疲劳<br/>累计监测]
    
    style B fill:#f96
    style C fill:#f96

2. 技术指标对比

指标 Euro NCAP要求 IMS现有能力 需提升 备注
PERCLOS检测 60秒窗口 30秒窗口 ✓ 扩展 F-01核心
微睡眠检测 ≤3秒 5秒 ✓ 优化 F-02核心
哈欠检测 ≤3秒 已实现 ✓ 达标 F-03
OEM Dossier阈值 可自定义 固定阈值 ✓ 可配置 OEM需求

3. 开发优先级

功能模块 Euro NCAP场景 技术方案 优先级 备注
PERCLOS计算 F-01 60秒滑动窗口 🔴 P0 核心疲劳指标
OEM阈值配置 F-01 Dossier参数读取 🔴 P0 OEM自定义
微睡眠快速检测 F-02 眼睑闭合时长计数 🔴 P0 ≤3秒检测
哈欠MAR检测 F-03 嘴部关键点计算 🟡 P1 已有基础
累计疲劳监测 F-04 PERCLOS累计统计 🟢 P2 二级警告

市场动态

1. EU强制执行(2026年7月7日)

EU General Safety Regulation强制:

  • 时间:2026年7月7日
  • 要求:所有新车必须配备DMS疲劳检测
  • PERCLOS成为标准指标

相关文档推荐

  1. Euro NCAP DSM Protocol

    • F-01至F-05疲劳场景详细规格
  2. EU General Safety Regulation

    • DMS强制要求

本文为法规解读 + 测试场景清单,总行数:180+,代码块:2个,表格:10个


Euro NCAP DSM疲劳检测场景清单:F-01至F-05详细测试规格
https://dapalm.com/2026/07/08/2026-07-08-euro-ncap-dsm-fatigue-scenarios-f01-f05/
作者
Mars
发布于
2026年7月8日
许可协议