摄像头-4D雷达稀疏融合SRCDet:座舱外感知×座舱内监测的跨域启发

论文信息

  • 标题: SRCDet: sparse fusion of surround-view radar and camera for 3D object detection
  • 作者: Ai Wenjin, Zheng Lianqing, Yang Long, Liu Minghao, Zhu Xichan, Bai Jie, Huang Tao, Xiang Wei, Ma Zhixiong
  • 来源: Measurement Science and Technology (IOP), 2026
  • DOI: 10.1088/1361-6501/ae9896
  • 链接: https://iopscience.iop.org/article/10.1088/1361-6501/ae9896

核心创新

SRCDet提出了一种基于查询(query-based)的摄像头-4D雷达稀疏融合框架,在BEV(鸟瞰图)和透视图双视角下并行处理特征,解决了传统多模态融合中信息损失和跨模态交互有限的问题。

对IMS的跨域价值: 虽然SRCDet针对的是车外3D目标检测,但其”稀疏融合+双视角并行”架构对座舱内摄像头-雷达融合(如DMS+CPD雷达)有直接的方法论启发。


1. 方法架构

1.1 稀疏融合 vs 密集融合

维度 传统密集融合 SRCDet稀疏融合
融合方式 逐像素特征拼接 基于查询的稀疏采样
计算量 O(H×W) O(N_query) << O(H×W)
信息损失 高(模态对齐误差) 低(自适应采样)
跨模态交互 浅层(拼接后CNN) 深层(交叉注意力)
BEV+透视图 通常只用BEV 双视角并行

1.2 稀疏查询融合核心代码

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
"""
SRCDet稀疏查询融合框架

核心:基于DETR风格的查询机制
将摄像头和雷达特征通过学习的查询点进行稀疏采样
"""
import torch
import torch.nn as nn

class SparseQueryFusion(nn.Module):
"""
稀疏查询融合模块

原理:
1. 生成N个可学习查询点(3D空间中的参考点)
2. 在BEV和透视图空间分别采样摄像头+雷达特征
3. 通过交叉注意力融合多模态特征
"""

def __init__(self, n_queries=300, feat_dim=256, n_heads=8):
super().__init__()
self.n_queries = n_queries
self.feat_dim = feat_dim

# 可学习查询嵌入
self.query_embeds = nn.Embedding(n_queries, feat_dim)

# 3D参考点(从查询嵌入预测)
self.ref_point_proj = nn.Linear(feat_dim, 3) # (x, y, z)

# BEV空间交叉注意力
self.bev_cross_attn = nn.MultiheadAttention(
embed_dim=feat_dim, num_heads=n_heads, batch_first=True
)

# 透视图空间交叉注意力
self.persp_cross_attn = nn.MultiheadAttention(
embed_dim=feat_dim, num_heads=n_heads, batch_first=True
)

# 跨模态注意力(摄像头←→雷达)
self.camera_radar_attn = nn.MultiheadAttention(
embed_dim=feat_dim, num_heads=n_heads, batch_first=True
)

# FFN
self.ffn = nn.Sequential(
nn.Linear(feat_dim, feat_dim * 4),
nn.ReLU(),
nn.Linear(feat_dim * 4, feat_dim),
)

# 输出头
self.cls_head = nn.Linear(feat_dim, 1) # 二分类
self.box_head = nn.Linear(feat_dim, 7) # (x,y,z,w,h,l,theta)

def forward(self, camera_bev, radar_bev, camera_persp):
"""
Args:
camera_bev: (B, H_bev, W_bev, C) 摄像头BEV特征
radar_bev: (B, H_bev, W_bev, C) 雷达BEV特征
camera_persp: (B, H_p, W_p, C) 摄像头透视图特征

Returns:
boxes: (B, N, 7) 3D边界框
scores: (B, N, 1) 置信度
"""
B = camera_bev.shape[0]

# 查询嵌入 → 3D参考点
query = self.query_embeds.weight.unsqueeze(0).expand(B, -1, -1)
ref_points = self.ref_point_proj(query) # (B, N, 3)

# BEV空间采样(双模态)
bev_feat = camera_bev.flatten(1, 2) # (B, H*W, C)
radar_feat = radar_bev.flatten(1, 2)

# 跨模态注意力
radar_enhanced, _ = self.camera_radar_attn(
query=radar_feat, key=bev_feat, value=bev_feat
)

# BEV交叉注意力
fused_bev, _ = self.bev_cross_attn(
query=query, key=radar_enhanced, value=radar_enhanced
)

# 透视图交叉注意力
persp_feat = camera_persp.flatten(1, 2)
fused_persp, _ = self.persp_cross_attn(
query=query, key=persp_feat, value=persp_feat
)

# 双视角融合
fused = fused_bev + fused_persp + self.ffn(fused_bev + fused_persp)

# 输出
scores = self.cls_head(fused)
boxes = self.box_head(fused)

return boxes, scores, ref_points

2. 对座舱内监测的跨域启发

2.1 DMS摄像头+CPD雷达融合

SRCDet的”稀疏查询融合”思路可直接迁移到座舱内:

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
"""
座舱内DMS摄像头+CPD雷达稀疏融合

传统方案:摄像头和雷达各自处理后拼接
SRCDet启发:基于查询的稀疏融合,在BEV和透视图双空间交互
"""

class CabinSparseFusion(nn.Module):
"""
座舱内多模态稀疏融合

输入:
- DMS摄像头图像(RGB/IR)
- CPD雷达点云(UWB/60GHz)

输出:
- 乘员位置/分类
- 姿态估计
- 呼吸检测增强
"""

def __init__(self, n_queries=50):
super().__init__()
self.n_queries = n_queries

# 查询嵌入(座舱3D空间中的采样点)
self.query_embeds = nn.Embedding(n_queries, 256)

# 座舱坐标系(方向盘为原点)
# x: 左右(-0.5m ~ 0.5m)
# y: 前后(0 ~ 2m)
# z: 高低(0 ~ 1.5m)
self.ref_point_proj = nn.Linear(256, 3)

# 摄像头特征→BEV投影
self.camera_bev_proj = nn.Sequential(
nn.Conv2d(512, 256, 1),
nn.ReLU(),
nn.AdaptiveAvgPool2d((32, 32))
)

# 雷达点云→BEV栅格化
self.radar_bev_proj = nn.Sequential(
nn.Conv2d(1, 64, 3, padding=1),
nn.ReLU(),
nn.Conv2d(64, 256, 3, padding=1),
nn.ReLU(),
nn.AdaptiveAvgPool2d((32, 32))
)

# 跨模态注意力
self.cross_modal_attn = nn.MultiheadAttention(
embed_dim=256, num_heads=8, batch_first=True
)

# 输出头
self.occupant_head = nn.Linear(256, 4) # empty/adult/child/pet
self.pose_head = nn.Linear(256, 13*2) # 13关键点×2D
self.breathing_head = nn.Linear(256, 1) # 呼吸频率

def forward(self, camera_feat, radar_points):
"""
Args:
camera_feat: (B, 512, H, W) DMS图像特征
radar_points: (B, N_radar, 4) 雷达点(x,y,z,intensity)
"""
# 投影到BEV
cam_bev = self.camera_bev_proj(camera_feat) # (B, 256, 32, 32)

# 雷达栅格化到BEV
radar_bev = self._points_to_bev(radar_points) # (B, 1, 32, 32)
radar_bev = self.radar_bev_proj(radar_bev) # (B, 256, 32, 32)

# 稀疏查询融合
query = self.query_embeds.weight.unsqueeze(0)
ref_pts = self.ref_point_proj(query) # 座舱3D采样点

cam_flat = cam_bev.flatten(2).permute(0, 2, 1) # (B, 1024, 256)
radar_flat = radar_bev.flatten(2).permute(0, 2, 1)

# 跨模态:雷达用摄像头增强
radar_enhanced, _ = self.cross_modal_attn(
query=radar_flat, key=cam_flat, value=cam_flat
)

# 查询采样
fused, _ = self.cross_modal_attn(
query=query, key=radar_enhanced, value=radar_enhanced
)

# 多任务输出
occupant = self.occupant_head(fused)
pose = self.pose_head(fused)
breathing = self.breathing_head(fused)

return {
'occupant_class': occupant,
'pose_keypoints': pose.view(-1, 13, 2),
'breathing_rate': breathing,
'ref_points': ref_pts,
}

2.2 方法论迁移总结

SRCDet原始 座舱内迁移 核心思想
环视摄像头+4D雷达 DMS摄像头+CPD雷达 多模态感知
BEV+透视图双视角 座舱BEV+DMS透视图 双空间表征
稀疏查询采样 座舱3D查询点 自适应聚焦
3D边界框输出 乘员分类+姿态+呼吸 多任务输出
跨模态注意力 摄像头←→雷达增强 深层交互

3. 对IMS的落地建议

3.1 融合方案优先级

优先级 融合方案 来源 预期收益
🔴 P0 DMS摄像头+rPPG 自研 零硬件增量
🟡 P1 DMS+CPD雷达稀疏融合 SRCDet启发 CPD+OOP联合检测
🟡 P1 DMS+座椅ECG 军用迁移 疲劳+压力检测
🟢 P2 DMS+热成像 论文启发 暗光OOP增强
🟢 P2 DMS+语音 多模态 酒驾+压力检测

3.2 技术路线图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
IMS_FUSION_ROADMAP = {
'2026_Q4': {
'task': 'DMS摄像头+座椅ECG融合原型',
'method': '信号质量门控+降级切换',
'target': '疲劳检测准确率>90%',
},
'2027_Q1': {
'task': 'DMS+CPD雷达稀疏融合',
'method': 'SRCDet启发,BEV双空间',
'target': 'CPD+OOP联合检测',
},
'2027_Q2': {
'task': '全模态融合',
'method': '摄像头+雷达+ECG+语音',
'target': '驾驶员全状态评估',
},
}

总结

SRCDet的”稀疏查询融合+双视角并行”方法论虽然源于车外3D检测,但对座舱内多模态融合有直接启发:

  1. 稀疏查询 > 密集拼接:用学习的查询点替代逐像素拼接,计算更高效且信息损失更小
  2. 双视角并行:BEV+透视图双空间表征,对座舱BEV(俯视乘员分布)+DMS透视图(驾驶员面部)同样适用
  3. 跨模态注意力:雷达←→摄像头深层交互,对CPD雷达←→DMS摄像头融合有方法论指导

建议: 将SRCDet的稀疏查询融合思路应用于IMS多模态融合模块设计,特别是DMS+CPD雷达的联合乘员检测/姿态估计场景。