FocusGate:可靠性门控的视线预测线索融合

arXiv 2610.08663 论文解读与DMS应用

论文信息

  • 标题: Knowing When to Trust a Prior: Reliability-Gated Cue Fusion for Video Gaze Prediction
  • 链接: arXiv:2610.08663
  • 时间: 2026年10月

核心创新

FocusGate 是一个门控集成框架,融合多个无视线训练先验(gaze-free priors),其成员可选择”弃权”(abstain)。每帧门控读取散焦图的三个形状统计量,选择在该帧上估计器优于随机水平的帧,拒绝的帧恰好退化为基线。

一句话总结: 不是所有帧都适合用先验估计视线——FocusGate学会了”何时该信任”先验,只在可靠帧上使用。

与AttentiveGaze的对比

维度 AttentiveGaze FocusGate
方法 学习不确定性 规则门控+弃权
先验来源 训练数据 无视线先验
适用 有标注训练 无标注场景
互补性 ✅ ✅

在DMS中的应用

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

class FocusGateDMS:
"""
FocusGate 在DMS中的应用

场景:当DMS视线模型不可靠时(遮挡/极端光照),
使用gaze-free先验作为补充,但只在可靠帧上使用

信号链:
1. 主视线模型输出预测
2. FocusGate判断当前帧是否适合先验补充
3. 适合 → 融合先验+主模型
4. 不适合 → 仅使用主模型(降低权重)
"""

def __init__(self):
self.prior_ensemble = [] # 先验集合
self.gate_threshold = 0.3

def should_use_prior(self, frame_features: dict) -> bool:
"""
判断当前帧是否适合使用先验

基于散焦图的三个形状统计量:
1. 峰度(kurtosis)
2. 偏度(skewness)
3. 熵(entropy)
"""
kurtosis = frame_features.get('defocus_kurtosis', 0)
skewness = frame_features.get('defocus_skewness', 0)
entropy = frame_features.get('defocus_entropy', 0)

# 简化判断
score = 0.3 * kurtosis + 0.3 * abs(skewness) + 0.4 * entropy
return score > self.gate_threshold

def fuse(self, main_gaze: np.ndarray, prior_gaze: np.ndarray,
frame_features: dict) -> dict:
"""融合主模型和先验"""
if self.should_use_prior(frame_features):
# 融合
alpha = 0.3 # 先验权重
fused = (1 - alpha) * main_gaze + alpha * prior_gaze
return {'gaze': fused, 'source': 'fused', 'reliable': True}
else:
# 仅主模型
return {'gaze': main_gaze, 'source': 'main_only', 'reliable': False}

参考资源


总结: FocusGate的”弃权”机制是DMS安全部署的重要补充——不是每帧都需要给出预测,知道”何时不该预测”同样重要。与AttentiveGaze的不确定性量化和本论文的校准方法形成三重安全保障。