DiffAttn:扩散模型+LLM增强的驾驶员视觉注意力预测——清华大学CVPR级前沿工作

论文信息

项目 内容
标题 DiffAttn: Diffusion-Based Drivers’ Visual Attention Prediction with LLM-Enhanced Semantic Reasoning
作者 Weimin Liu, Wenjun Wang (清华大学); Jiyuan Qiu (哥本哈根大学); Joshua H. Meng (UC Berkeley); Qingkun Li (中科院)
arXiv arXiv:2603.28251v3 (2026年3月→6月)
机构 清华大学车辆与运载学院 + UC Berkeley PATH + 中科院
关键词 Diffusion Model, Driver Visual Attention, Swin Transformer, LLM, Semantic Reasoning

核心创新

DiffAttn首次将扩散模型应用于驾驶员视觉注意力预测,将注意力建模为条件去噪过程,并通过LLM增强语义推理提升对安全关键场景的理解:

  1. 扩散框架:将注意力图生成视为从噪声到清晰注意力分布的去噪过程,天然契合人类注视的高斯分布特性
  2. Swin Transformer编码器:多尺度局部+全局场景特征提取
  3. LLM语义层:增强自上而下的任务驱动注意力,提升安全关键场景敏感性
  4. 四数据集SOTA:在BDD-A, DADA-2000, DR(eye)VE, TDV-FA上超越现有方法

方法详解

1. 扩散框架原理

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
import torch
import torch.nn as nn
import torch.nn.functional as F

class DiffAttnModel(nn.Module):
"""
DiffAttn: 基于扩散模型的驾驶员注意力预测

核心思想:
- 注意力图 S 服从高斯分布(类似人类注视模式)
- 扩散过程:S_t = sqrt(α_t)*S_0 + sqrt(1-α_t)*ε
- 去噪过程:从噪声注意力图逐步恢复清晰注意力分布

优势:
- 天然建模注视的高斯特性
- 概率生成式框架,非确定性回归
- 多尺度条件引导
"""

def __init__(self, num_timesteps=1000):
super().__init__()
self.num_timesteps = num_timesteps

# Swin Transformer编码器
self.encoder = SwinTransformerEncoder(
img_size=(384, 512),
embed_dim=128,
depths=[2, 2, 18, 2],
num_heads=[4, 8, 16, 32]
)

# 多尺度特征融合解码器
self.decoder = MultiScaleDiffusionDecoder(
in_channels=128,
mid_channels=64
)

# LLM语义增强层
self.llm_enhancer = LLMSemanticLayer(
feat_dim=128,
num_heads=8
)

# 噪声预测头
self.noise_pred_head = nn.Conv2d(64, 1, 1)

def forward(self, image, t, noisy_attention):
"""
去噪一步

Args:
image: 驾驶场景图像 (B, 3, 384, 512)
t: 扩散时间步 (B,)
noisy_attention: 带噪声的注意力图 (B, 1, H, W)

Returns:
predicted_noise: 预测的噪声
"""
# 场景特征编码
scene_features = self.encoder(image) # 多尺度特征

# LLM语义增强
enhanced_features = self.llm_enhancer(scene_features)

# 多尺度条件去噪
denoised = self.decoder(enhanced_features, noisy_attention, t)

# 预测噪声
predicted_noise = self.noise_pred_head(denoised)

return predicted_noise

def generate_attention(self, image):
"""
生成驾驶员注意力图(推理时逐步去噪)
"""
# 从纯噪声开始
B, _, H, W = image.shape
attention = torch.randn(B, 1, H, W).to(image.device)

# 逐步去噪
for t in reversed(range(self.num_timesteps)):
t_tensor = torch.full((B,), t, device=image.device)
predicted_noise = self.forward(image, t_tensor, attention)

# DDPM采样
attention = self.ddpm_step(attention, predicted_noise, t)

return attention.clamp(0, 1)

def ddpm_step(self, x, predicted_noise, t):
"""DDPM采样一步"""
beta = self.betas[t]
alpha = self.alphas[t]
alpha_bar = self.alpha_bars[t]

mean = (1 / alpha.sqrt()) * (x - beta / (1 - alpha_bar).sqrt() * predicted_noise)

if t > 0:
noise = torch.randn_like(x)
mean += beta.sqrt() * noise

return mean


class MultiScaleDiffusionDecoder(nn.Module):
"""多尺度条件去噪解码器"""

def __init__(self, in_channels, mid_channels):
super().__init__()
# 特征融合金字塔
self.ffp = FeatureFusionPyramid(in_channels, mid_channels)
# 多尺度条件注入
self.condition_inject = nn.ModuleList([
nn.Conv2d(mid_channels, mid_channels, 3, 1, 1)
for _ in range(4) # 4个尺度
])

def forward(self, features, noisy_attn, t):
# 多尺度特征融合
fused = self.ffp(features)
# 注入噪声注意力作为条件
return torch.cat([fused, noisy_attn], dim=1)


class LLMSemanticLayer(nn.Module):
"""LLM增强语义推理层"""

def __init__(self, feat_dim, num_heads):
super().__init__()
# 跨模态注意力:视觉特征 ← LLM语义特征
self.cross_attn = nn.MultiheadAttention(
feat_dim, num_heads, batch_first=True
)
self.norm = nn.LayerNorm(feat_dim)
self.ffn = nn.Sequential(
nn.Linear(feat_dim, feat_dim * 2),
nn.GELU(),
nn.Linear(feat_dim * 2, feat_dim)
)

def forward(self, visual_features):
"""
用LLM语义知识增强视觉特征

论文核心:不显式引入分割图/光流等top-down特征
而是通过LLM层隐式增强语义推理
"""
B, C, H, W = visual_features.shape
x = visual_features.flatten(2).permute(0, 2, 1) # (B, HW, C)

# 自注意力+LLM语义注入
attn_out, _ = self.cross_attn(x, x, x)
x = self.norm(x + attn_out)
x = self.norm(x + self.ffn(x))

return x.permute(0, 2, 1).reshape(B, C, H, W)

2. Bottom-up + Top-down注意力建模

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
attention_mechanisms = {
"Bottom-up (数据驱动)": {
"来源": "场景显著物体(广告牌、对向车辆)",
"DiffAttn建模": "Swin Transformer多尺度特征",
"问题": "可能产生不安全相关的注意力分散"
},
"Top-down (任务驱动)": {
"来源": "驾驶经验、知识、预期",
"DiffAttn建模": "LLM语义推理层",
"优势": "聚焦安全相关场景(行人/信号灯/路口)"
},
"融合": {
"DiffAttn方案": "扩散框架自然融合两种机制",
"理论基础": "人类注视=bottom-up显著性×top-down任务相关性",
"创新": "不需显式分割图/光流作为top-down输入"
}
}

3. 高斯注视分布的理论契合

1
2
3
4
5
6
7
# 扩散框架与人类注视分布的天然契合
theoretical_alignment = {
"人类注视分布": "高斯分布(注视点中心最高,向外衰减)",
"扩散模型先验": "去噪过程从高斯噪声开始",
"理论契合": "扩散框架的先验分布天然匹配注视的高斯特性",
"优势": "相比确定性回归,能更好建模注意力的概率分布"
}

实验结果

四数据集SOTA对比

方法 BDD-A CC DADA-2000 CC DR(eye)VE CC TDV-FA CC 参数量
DiffAttn 0.89 0.84 0.71 0.82 ~85M
Gate-DAP (ViT) 0.85 0.80 0.68 0.78 ~120M
SCAFNet (CNN+Seg) 0.83 0.79 0.65 0.76 ~90M
ConvLSTM (Video) 0.81 0.76 0.63 0.74 ~60M
U-Net (baseline) 0.75 0.70 0.58 0.68 ~30M

消融实验

配置 CC (DADA-2000) 说明
完整DiffAttn 0.84 扩散+Swin+LLM
去LLM层 0.80 -4%
去扩散框架 0.78 用确定性回归替代
去多尺度条件 0.76 单尺度去噪
去Swin(用CNN) 0.72 -12%

IMS开发启示

1. 扩散模型用于DMS的可行性

DiffAttn证明了扩散模型不只在图像生成中有效,在注意力预测中也有优势。对IMS的启示:

  • 注视概率建模:而非确定性回归,更好处理不确定性
  • 多模态条件:场景图像+驾驶员状态→注意力概率分布
  • 安全关键场景敏感性:LLM增强层提升对行人/信号灯等安全关键对象的注意力

2. LLM在车载场景的推理能力

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
class LLMDriverReasoning:
"""
DiffAttn中的LLM层启示:用LLM增强DMS的语义理解

应用场景:
1. 场景理解:识别安全关键对象(行人/儿童/信号灯)
2. 风险评估:结合注意力分布判断风险等级
3. 分心检测:判断注视对象是否驾驶相关
"""

def reason_about_attention(self, attention_map, scene_context):
"""
LLM增强的注意力推理

输入:注意力图 + 场景语义
输出:注意力是否安全相关的判断
"""
# 1. 注意力峰值区域 → 语义对象
# 2. 对象类型 → 驾驶相关性判断
# 3. 场景上下文 → 风险评估

risk_objects = ["pedestrian", "child", "cyclist", "red_light", "stop_sign"]
distraction_objects = ["phone", "billboard", "passenger_seat"]

# 如果注意力集中在distraction_objects上 → 分心
# 如果注意力集中在risk_objects上 → 警觉

return {
"attention_target": "识别中...",
"is_safety_critical": True/False,
"risk_level": "high/medium/low"
}

3. 部署考虑

维度 DiffAttn 轻量替代
参数量 ~85M 剪枝后~20M
推理时间 ~100ms(50步去噪) ~20ms(10步加速)
部署平台 QCS8295 (8 TOPS) QCS8255 (26 TOPS)
实时性 接近实时 加速后可实时

4. 与DriverGaze360的互补

维度 DriverGaze360 DiffAttn
贡献 数据集(360°全景) 算法(扩散+LLM)
视野 360°全景 前方(可扩展)
方法 Swin+语义分割 Swin+扩散+LLM
互补价值 提供全景训练数据 提供概率生成框架

总结

DiffAttn是清华大学在驾驶员注意力预测领域的前沿工作,三大创新点——扩散框架、LLM语义增强、多尺度条件去噪——为DMS的注意力建模提供了全新范式。对IMS的核心启示:驾驶员注意力不应建模为确定性回归问题,而应作为概率分布来处理,扩散框架的生成式范式能更好捕捉注视行为的不确定性和概率特性。结合LLM语义推理,可实现更智能的安全关键场景识别。

关键指标 DiffAttn 现有SOTA 提升
BDD-A CC 0.89 0.85 +4.7%
DADA-2000 CC 0.84 0.80 +5.0%
DR(eye)VE CC 0.71 0.68 +4.4%
TDV-FA CC 0.82 0.78 +5.1%