Cineon + Smart Eye:航空座舱眼动追踪从培训到 IMS 的跨域启示

Halldale 2026年9月15日报道深度解读

合作信息

核心方案

MicroBird 环境眼动追踪

Smart Eye 的 MicroBird 是一种非侵入式环境眼动追踪方案,专为复杂真实环境(如飞机驾驶舱)设计:

特性 说明
非侵入式 无需头戴设备,环境摄像头安装
处方眼镜兼容 支持戴眼镜的飞行员(长期痛点)
仪表映射 视线直接映射到具体仪表
定制驾驶舱模型 适配不同机型布局
无影响 不干扰训练者正常操作

ELE (Empathic Learning Engine) 平台

Cineon 的 ELE 平台结合眼动追踪,用于飞行员胜任力和认知评估:

航空 vs 汽车座舱眼动追踪对比

维度 航空座舱 汽车座舱(IMS)
仪表数量 数十个(高度密集) 有限(HUD+中控)
扫描模式 结构化交叉检查 更自由
佩戴眼镜比例 高(飞行员) 中(驾驶员)
眼动追踪精度要求 高(仪表映射) 中(视线区域)
环境光照 可控(驾驶舱内) 变化大(日/夜/隧道)
空间限制 驾驶舱固定 方向盘后方

MicroBird 解决的核心痛点

处方眼镜问题是航空眼动追踪的长期障碍。传统穿戴式眼动仪(如 Tobii Glasses)无法兼容处方眼镜。MicroBird 的环境摄像头方案绕过了这个问题。

对汽车 IMS 的启示:DMS 摄像头也需要兼容处方眼镜,这在当前方案中已基本解决,但精度可能受影响。

从航空培训到 IMS 的跨域映射

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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
"""
航空眼动追踪培训方法 → IMS 驾驶员监测的跨域映射

航空培训关注点:
1. 仪表扫描效率(是否看了该看的仪表)
2. 注意力分配(任务优先级)
3. 情境意识评估
4. 疲劳/过载检测

IMS 可迁移的方法:
1. 视线区域映射 → 驾驶场景注意力评估
2. 扫描模式分析 → 驾驶员注意力分配评分
3. 情境意识指标 → 功能就绪度评估
4. 疲劳检测 → 直接复用
"""

from dataclasses import dataclass
from typing import List, Tuple
from enum import IntEnum
import numpy as np


class GazeRegion(IntEnum):
"""视线区域(可同时用于航空和汽车)"""
# 航空仪表区域
PRIMARY_FLIGHT_DISPLAY = 0 # 主飞行显示
NAVIGATION_DISPLAY = 1 # 导航显示
ENGINE_INSTRUMENTS = 2 # 发动机仪表
OVERHEAD_PANEL = 3 # 顶板
# 汽车区域映射
ROAD = 10 # 道路
REARVIEW_MIRROR = 11 # 后视镜
INSTRUMENT_CLUSTER = 12 # 仪表盘
INFOTAINMENT = 13 # 中控屏
STEERING_WHEEL = 14 # 方向盘


@dataclass
class GazeSample:
"""眼动采样点"""
timestamp: float # 秒
pitch: float # 俯仰角 (度)
yaw: float # 偏航角 (度)
region: GazeRegion = None # 映射的视线区域


class ScanPatternAnalyzer:
"""
扫描模式分析器

从航空培训方法迁移到 IMS 驾驶员监测

核心指标:
1. 区域停留时间分布(注意力分配)
2. 扫描频率(仪表/区域切换速率)
3. 任务相关注视比例
4. 情境意识评分
"""

def __init__(self, window_sec=60.0, fps=30):
self.window_sec = window_sec
self.fps = fps
self.window_samples = int(window_sec * fps)

def analyze_attention_distribution(self,
samples: List[GazeSample]) -> dict:
"""
分析注意力分配

Args:
samples: 眼动采样序列

Returns:
各区域停留时间比例 + 注意力分散度
"""
if len(samples) < 2:
return {}

# 计算每个区域停留时间
region_time = {}
total_time = 0

for i in range(1, len(samples)):
dt = samples[i].timestamp - samples[i-1].timestamp
region = samples[i-1].region
if region is not None:
region_time[region] = region_time.get(region, 0) + dt
total_time += dt

# 转为百分比
attention_dist = {
r: t/total_time * 100
for r, t in region_time.items()
}

# 注意力分散度(Shannon 熵)
probs = np.array(list(attention_dist.values())) / 100
probs = probs[probs > 0]
entropy = -np.sum(probs * np.log2(probs))
max_entropy = np.log2(len(GazeRegion))
normalized_entropy = entropy / max_entropy if max_entropy > 0 else 0

return {
'attention_distribution': attention_dist,
'attention_entropy': normalized_entropy, # 0=高度集中, 1=高度分散
'total_regions_visited': len(attention_dist)
}

def compute_scan_rate(self, samples: List[GazeSample]) -> float:
"""
计算扫描频率(区域切换/秒)

航空参考值:
- 熟练飞行员:0.3-0.5 Hz(结构化扫描)
- 疲劳飞行员:0.1-0.2 Hz(凝视增多)

汽车参考值:
- 正常驾驶:0.5-1.0 Hz(道路+后视镜+仪表)
- 疲劳驾驶:0.1-0.3 Hz(凝视道路)
"""
transitions = 0
for i in range(1, len(samples)):
if samples[i].region != samples[i-1].region:
transitions += 1

duration = samples[-1].timestamp - samples[0].timestamp
return transitions / duration if duration > 0 else 0

def compute_situational_awareness(self,
samples: List[GazeSample],
critical_regions: List[GazeRegion]) -> float:
"""
情境意识评分

关键区域注视比例 × 扫描频率归一化

Args:
samples: 眼动采样
critical_regions: 关键区域列表(如道路、后视镜)

Returns:
SA_score: 情境意识评分 (0-100)
"""
dist = self.analyze_attention_distribution(samples)

# 关键区域注视比例
critical_time = sum(
dist['attention_distribution'].get(r, 0)
for r in critical_regions
)
critical_ratio = critical_time / 100 # 0-1

# 扫描频率
scan_rate = self.compute_scan_rate(samples)
scan_norm = min(scan_rate / 1.0, 1.0) # 归一化到 0-1

# SA 评分
sa_score = (critical_ratio * 0.7 + scan_norm * 0.3) * 100

return sa_score


# ========== 测试 ==========

if __name__ == "__main__":
np.random.seed(42)
analyzer = ScanPatternAnalyzer(window_sec=60, fps=30)

# 模拟正常驾驶(频繁扫描道路+后视镜)
normal_samples = []
for i in range(1800): # 60秒 × 30fps
t = i / 30
r = np.random.choice(
[GazeRegion.ROAD, GazeRegion.REARVIEW_MIRROR,
GazeRegion.INSTRUMENT_CLUSTER],
p=[0.7, 0.15, 0.15]
)
normal_samples.append(GazeSample(
timestamp=t,
pitch=np.random.normal(-5, 3),
yaw=np.random.normal(0, 10),
region=r
))

# 模拟疲劳驾驶(凝视道路,少扫描)
fatigue_samples = []
for i in range(1800):
t = i / 30
r = GazeRegion.ROAD if np.random.random() > 0.05 else GazeRegion.INSTRUMENT_CLUSTER
fatigue_samples.append(GazeSample(
timestamp=t,
pitch=np.random.normal(-3, 1),
yaw=np.random.normal(0, 3),
region=r
))

# 分析
critical = [GazeRegion.ROAD, GazeRegion.REARVIEW_MIRROR]

normal_result = analyzer.analyze_attention_distribution(normal_samples)
normal_scan = analyzer.compute_scan_rate(normal_samples)
normal_sa = analyzer.compute_situational_awareness(normal_samples, critical)

fatigue_result = analyzer.analyze_attention_distribution(fatigue_samples)
fatigue_scan = analyzer.compute_scan_rate(fatigue_samples)
fatigue_sa = analyzer.compute_situational_awareness(fatigue_samples, critical)

print("=== 正常驾驶 ===")
print(f" 注意力分配: {normal_result['attention_distribution']}")
print(f" 注意力熵: {normal_result['attention_entropy']:.3f}")
print(f" 扫描频率: {normal_scan:.2f} Hz")
print(f" 情境意识评分: {normal_sa:.1f}/100")

print("\n=== 疲劳驾驶 ===")
print(f" 注意力分配: {fatigue_result['attention_distribution']}")
print(f" 注意力熵: {fatigue_result['attention_entropy']:.3f}")
print(f" 扫描频率: {fatigue_scan:.2f} Hz")
print(f" 情境意识评分: {fatigue_sa:.1f}/100")

对 IMS 开发的启示

1. 航空培训方法论迁移

航空培训中的胜任力评估方法可以直接迁移到 IMS:

航空方法 IMS 应用 实现方案
仪表扫描分析 驾驶场景注意力评估 视线区域映射
情境意识评分 功能就绪度评分 关键区域注视比例
扫描频率监测 疲劳/分心指标 区域切换速率
培训反馈 驾驶行为改进 实时反馈+事后分析

2. 环境眼动 vs 穿戴式

Smart Eye MicroBird 的环境摄像头方案验证了非侵入式眼动追踪在高要求场景的可行性。这对 IMS 的意义:

  • DMS 摄像头 = 环境眼动追踪
  • 不需要额外硬件
  • 兼容处方眼镜

3. 仪表映射技术

航空方案中”视线直接映射到具体仪表”的能力,在汽车座舱中可以实现:

  • 区域级映射:道路、后视镜、仪表盘、中控屏
  • 功能级映射:速度表、导航、ADAS 显示
  • 行为推断:看导航 > 3s = 分心

4. Smart Eye 的跨域战略

Smart Eye 同时在航空和汽车领域布局,意味着:

  • 航空验证的技术会迁移到汽车
  • MicroBird 的仪表映射技术可能进入汽车 DMS
  • 跨域技术复用是降低成本的关键

结论

Cineon + Smart Eye 的航空眼动追踪合作验证了环境眼动方案在高要求场景的可行性。从航空培训迁移到 IMS 的方法包括:扫描模式分析、情境意识评分、注意力分配评估。这些方法可以直接增强 DMS 的认知状态评估能力,而无需额外硬件。


参考链接: