Euro NCAP 2026 DSM 分心检测场景深度解析:Owl/Lizard/Body Lean 三类运动分类详解

Euro NCAP 2026 DSM 分心检测场景深度解析:Owl/Lizard/Body Lean 三类运动分类详解

法规信息

项目 内容
法规 Euro NCAP 2026 Assessment Protocol - Safe Driving v1.04
发布机构 Euro NCAP
生效时间 2026年1月
关键章节 DSM Distraction Assessment
官方链接 https://www.euroncap.com/en/for-engineers/protocols/2026-protocols/

核心要点

Euro NCAP 2026 DSM分心检测采用三类运动分类体系:

  • Owl(头部运动):基于Head Pose的分心检测
  • Lizard(眼球运动):基于Gaze的分心检测
  • Body Lean(身体倾斜):基于躯干姿态的分心检测

关键创新:

  • 长分心(Long Distraction):单次3-4秒偏离,需4秒前视道路前置条件
  • 短分心(VATS):30秒窗口累计10秒偏离
  • 手机使用细分类:Basic/Advanced,需识别手机位置

1. 三类运动分类详解

1.1 Owl(头部运动)

定义: 通过头部转动(Pitch/Roll/Yaw)推断视线方向,无需眼球追踪。

应用场景 检测方法 优点 局限
后视镜查看 头部Yaw>30° 不需高精度眼动仪 假阳性(转头但视线未偏离)
侧窗查看 头部Yaw>45° 鲁棒性强 无法检测”Lizard”模式
仪表盘查看 头部Pitch>15° 成本低 无法区分远近注视

检测流程:

graph LR
    A[摄像头图像] --> B[头部关键点检测]
    B --> C[Head Pose估计]
    C --> D[Yaw/Pitch/Roll]
    
    D --> E{Yaw > 30°?}
    E --> F[侧向分心]
    
    D --> G{Pitch > 15°?}
    G --> H[仪表盘分心]
    
    D --> I{Roll > 10°?}
    I --> J[倾斜分心]
    
    F --> K[累计偏离时间]
    H --> K
    J --> K
    
    K --> L{≥3秒?}
    L --> M[长分心警告]

1.2 Lizard(眼球运动)

定义: 通过眼球注视点(Gaze Point)推断视线方向,需要高精度眼动追踪。

应用场景 检测方法 优点 局限
手机使用(膝上) Gaze落在膝盖区域 精度高 需IR摄像头+校准
手机使用(方向盘中心) Gaze在方向盘下方 可区分Owl无法检测的场景 光照敏感
导航屏幕查看 Gaze在屏幕区域 可量化注视时长 眼镜遮挡问题

检测流程:

graph LR
    A[IR摄像头] --> B[眼球关键点检测]
    B --> C[瞳孔中心定位]
    C --> D[光向量计算]
    D --> E[视线落点估计]
    
    E --> F{Gaze区域判定}
    F --> G[膝上/仪表盘/方向盘]
    
    G --> H[累计注视时长]
    H --> I{≥3秒?}
    I --> J[长分心警告]
    
    F --> K{Gaze落手机?}
    K --> L[手机使用检测]
    L --> M[Basic/Advanced分类]

1.3 Body Lean(身体倾斜)

定义: 通过躯干姿态变化推断非正常坐姿导致的分心。

应用场景 检测方法 优点 局限
向副驾倾斜 Shoulder相对Hip位移 可检测非视觉分心 需身体关键点检测
向后倾斜(背后) 躯干角度变化 可间接推断安全带误用 2D检测精度有限
向脚部倾斜 头部+躯干Pitch 可检测捡东西场景 需深度摄像头辅助

检测流程:

graph LR
    A[摄像头图像] --> B[身体关键点检测]
    B --> C[Shoulder/Hip关键点]
    C --> D[躯干向量计算]
    
    D --> E{躯干倾斜角}
    E --> F[左倾/右倾/后倾]
    
    F --> G[累计倾斜时长]
    G --> H{≥3秒?}
    H --> I[长分心警告]
    
    D --> J{肩膀高度差}
    J --> K[非对称坐姿]
    K --> L[可能捡东西/调整]

2. 长分心(Long Distraction)详细场景

2.1 检测条件

条件 要求 说明
前视时长 ≥4秒 分心前需连续注视道路≥4秒
偏离时长 3-4秒 单次偏离道路中心
警告触发 延迟≤3秒 从偏离结束到警告发出
警告等级 一级警告 声音+视觉

2.2 分心区域定义

区域名称 检测方法 角度范围
驾驶员侧窗 Owl/Lizard Yaw > 30°(左侧)
副驾侧窗 Owl/Lizard Yaw > 30°(右侧)
副驾面部 Owl/Lizard Yaw > 25°(右侧)
脚部空间 Owl/Body Lean Pitch > 20°向下
手套箱 Owl/Lizard Pitch > 15°向下 + Yaw > 20°
后视镜 Owl Yaw ≈ 15-30°(周期性)
仪表盘 Owl/Lizard Pitch > 10°向下
导航屏幕 Lizard Gaze落在屏幕区域

2.3 具体场景表

场景编号 场景名称 运动类型 分心区域 时长要求 警告要求
D-01 侧窗长查看 Owl/Lizard 驾驶员侧窗 3-4秒 ≤3秒延迟
D-02 副驾侧窗查看 Owl/Lizard 副驾侧窗 3-4秒 ≤3秒延迟
D-03 副驾面部交谈 Owl/Lizard 副驾面部 3-4秒 ≤3秒延迟
D-04 仪表盘长查看 Owl/Lizard 仪表盘 3-4秒 ≤3秒延迟
D-05 导航屏幕查看 Lizard 导航屏幕 3-4秒 ≤3秒延迟
D-06 脚部空间查看 Owl/Body Lean 脚部 3-4秒 ≤3秒延迟
D-07 手套箱查看 Owl/Lizard 手套箱 3-4秒 ≤3秒延迟
D-08 后视镜查看 Owl 后视镜 3-4秒 ≤3秒延迟

3. 短分心(VATS)详细场景

3.1 VATS定义

Visual Attention Time Sharing (VATS):

  • 30秒时间窗口
  • 累计偏离道路视线 ≥10秒
  • 不要求单次偏离时长
  • 连续多次短暂偏离的累积效应

3.2 VATS检测流程

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
"""
VATS (Visual Attention Time Sharing) 检测算法
参考:Euro NCAP 2026 DSM Protocol

核心逻辑:
- 30秒滑动窗口
- 累计偏离道路中心 ≥10秒触发警告
- 不限制单次偏离时长
"""

import numpy as np
from typing import Tuple
from collections import deque

class VATSDetector:
"""
VATS检测器

Euro NCAP 2026要求:
- 30秒窗口内累计偏离≥10秒
- 连续多次短暂偏离的累积
- 单次偏离不计入长分心
"""

def __init__(
self,
window_seconds: int = 30,
threshold_seconds: int = 10,
road_center_range: float = 20.0, # ±10°
fps: int = 30
):
"""
Args:
window_seconds: 滑动窗口秒数(30秒)
threshold_seconds: 触发阈值秒数(10秒)
road_center_range: 道路中心区域角度范围
fps: 采样帧率
"""
self.window_size = window_seconds * fps
self.threshold_frames = threshold_seconds * fps
self.road_center_range = road_center_range
self.fps = fps

# 滑动窗口
self.gaze_buffer = deque(maxlen=self.window_size)

def update(
self,
gaze_horizontal: float,
gaze_vertical: float,
timestamp: float
) -> Tuple[bool, float]:
"""
更新VATS状态

Args:
gaze_horizontal: 水平视线角度(度)
gaze_vertical: 垂直视线角度(度)
timestamp: 当前时间戳

Returns:
triggered: 是否触发VATS警告
accumulated_seconds: 累计偏离秒数

Euro NCAP 2026判定:
- 累计≥10秒 → 二级警告
- 累计≥8秒 → 一级警告(提前预警)
"""
# 判断是否偏离道路中心
off_road = abs(gaze_horizontal) > self.road_center_range / 2

# 加入缓冲
self.gaze_buffer.append(off_road)

# 计算累计偏离帧数
accumulated_frames = sum(self.gaze_buffer)
accumulated_seconds = accumulated_frames / self.fps

# 判断触发
triggered = accumulated_seconds >= self.threshold_seconds

return triggered, accumulated_seconds

def reset(self):
"""重置缓冲(警告发出后)"""
self.gaze_buffer.clear()


# 测试
if __name__ == "__main__":
detector = VATSDetector(
window_seconds=30,
threshold_seconds=10,
fps=30
)

# 模拟30秒数据:多次短暂偏离
np.random.seed(42)

for i in range(30 * 30): # 30秒,30fps
# 正常驾驶:视线在道路中心
if i < 300: # 前10秒正常
h_angle = np.random.randn() * 5
else:
# 后20秒:每5秒偏离2秒(累计8秒偏离)
cycle_pos = i % 150 # 5秒周期
if cycle_pos < 60: # 周期前2秒偏离
h_angle = np.random.randn() * 5 + 35 # 偏离道路中心
else:
h_angle = np.random.randn() * 5

triggered, acc_sec = detector.update(h_angle, 0, i / 30)

if i % 150 == 149: # 每5秒输出
print(f"T={i/30:.1f}s: 累计偏离={acc_sec:.1f}s, 触发={triggered}")

3.3 VATS场景表

场景编号 特征 累计偏离 警告等级
V-01 多次侧窗查看 10秒/30秒 二级警告
V-02 多次仪表盘查看 10秒/30秒 二级警告
V-03 多次导航屏幕查看 10秒/30秒 二级警告
V-04 频繁后视镜查看 10秒/30秒 二级警告

4. 手机使用详细分类

4.1 Basic Phone Use(基本手机使用)

定义: 手机在膝上、腿上、仪表盘固定位置。

场景 运动类型 手机位置 Gaze落点
P-01 Owl 驾驶员膝盖(外侧) 膝盖外侧
P-02 Owl 驾驶员膝盖(内侧) 膝盖内侧
P-03 Owl 驾驶员腿上 腿部区域
P-04 Owl/Lizard 仪表盘固定支架 仪表盘区域
P-05 Lizard 车厂指定充电口 充电口位置

4.2 Advanced Phone Use(高级手机使用)

定义: 手机在方向盘上方、风挡视野区域。

场景 运动类型 手机位置 Gaze落点 危险等级
P-06 Lizard 方向盘9-11点钟区域 方向盘上方 ⚠️ 高
P-07 Lizard 方向盘1-3点钟区域 方向盘上方 ⚠️ 高
P-08 Lizard 风挡视野内 风挡前方 🔴 极高
P-09 Lizard 仪表盘屏幕上方 仪表盘上 ⚠️ 高

4.3 手机位置判定流程

graph TD
    A[Gaze检测] --> B{Gaze落点判定}
    
    B --> C[膝盖/腿上区域]
    B --> D[方向盘中心下方]
    B --> E[仪表盘固定位置]
    B --> F[方向盘上方]
    B --> G[风挡视野]
    
    C --> H[Basic Phone Use]
    D --> H
    E --> H
    
    F --> I[Advanced Phone Use]
    G --> I
    
    H --> J[一级警告]
    I --> K[二级警告+ADAS联动]
    
    K --> L[FCW激活]
    K --> M[LKA激活]

5. 系统响应流程

5.1 警告等级定义

等级 触发条件 响应内容
一级警告 长分心3秒、VATS 8秒 声音提醒+视觉图标
二级警告 长分心4秒、VATS 10秒、Advanced手机 声音警报+视觉+FCW
三级干预 二级警告+无响应3秒 FCW+LKA+MRM准备

5.2 完整响应流程

sequenceDiagram
    participant D as 驾驶员
    participant S as DMS系统
    participant W as 警告系统
    participant A as ADAS
    
    Note over D,S: 分心检测
    S->>S: Owl/Lizard/Body Lean判定
    S->>S: 时长累计
    
    alt 长分心 3秒
        S->>W: 一级警告触发
        W->>D: 声音提醒(短)
        W->>D: 视觉图标显示
    else 长分心 4秒
        S->>W: 二级警告触发
        W->>D: 声音警报(持续)
        W->>A: FCW激活
        A->>D: 前方碰撞预警
    else VATS 10秒
        S->>W: 二级警告触发
        W->>D: 声音+视觉
    end
    
    alt 驾驶员无响应(3秒)
        Note over S: 无响应判定
        S->>A: LKA激活
        A->>D: 车道保持辅助
        S->>A: MRM准备
        Note over A: Minimum Risk Maneuver准备
    end

6. IMS开发启示

6.1 开发优先级

优先级 开发项 技术路线 Euro NCAP得分
🔴 P0 Owl检测模块 Head Pose估计 0.06分/场景
🔴 P0 Lizard检测模块 Gaze估计 0.06分/场景
🔴 P0 VATS累计模块 滑动窗口累计 0.30分
🟡 P1 Body Lean检测 身体关键点 0.06分/场景
🟡 P1 手机位置分类 Gaze区域判定 0.12分
🟢 P2 警告系统集成 状态机 0.06分
🟢 P2 ADAS联动 FCW/LKA接口 0.06分

6.2 测试场景清单

场景编号 场景名称 测试方法 验证标准
D-01 侧窗查看 头部Yaw>30°持续4秒 ≤3秒检测+警告
D-02 仪表盘查看 Pitch>15°持续4秒 ≤3秒检测+警告
D-03 导航查看 Gaze在屏幕4秒 ≤3秒检测+警告
D-04 VATS累计 30秒窗口10秒偏离 ≤1秒判定
P-01 Basic手机 膝上手机+Gaze 正确分类
P-02 Advanced手机 方向盘上方手机 二级警告+FCW

6.3 性能指标要求

指标 Euro NCAP要求 IMS目标
长分心检测率 ≥95% ≥98%
VATS检测率 ≥90% ≥95%
手机分类准确率 ≥90% ≥95%
检测延迟 ≤3秒 ≤2秒
虚警率 ≤5% ≤3%
漏警率 ≤5% ≤2%

7. 总结

Euro NCAP 2026 DSM分心检测的核心创新:

三类运动分类体系

  1. Owl:头部运动,低成本,覆盖大部分场景
  2. Lizard:眼球运动,高精度,检测细微分心
  3. Body Lean:身体姿态,补充非视觉分心

关键检测机制

  1. 长分心:单次3-4秒偏离,需4秒前视前置
  2. VATS:30秒窗口累计10秒偏离
  3. 手机细分类:Basic/Advanced,区分危险等级

IMS落地要点

  • 必须实现Owl+Lizard双模式
  • VATS累计是核心得分项
  • 手机位置判定需高精度Gaze
  • 警告+ADAS联动是满分要求

参考链接:


Euro NCAP 2026 DSM 分心检测场景深度解析:Owl/Lizard/Body Lean 三类运动分类详解
https://dapalm.com/2026/07/05/2026-07-05-euro-ncap-2026-dsm-distraction-scenarios-owl-lizard-bodylean-zh/
作者
Mars
发布于
2026年7月5日
许可协议