当前位置: 首页 > news >正文

[2025CVPR]ViKIENet:通过虚拟密钥实例增强网络实现高效的 3D 对象检测

ViKIENet论文详细总结

1. 背景与动机
  • 问题陈述​:LiDAR-only 3D物体检测面临点云稀疏性和语义信息不足的挑战,导致远距离、遮挡或小物体检测精度下降。现有方法通过将RGB图像转换为虚拟点(virtual points)来融合相机数据,但存在两大问题:
    • 计算开销大​:虚拟点密度高,导致推理速度慢(如低FPS)。
    • 噪声问题​:深度补全(depth completion)不准确引入噪声,扭曲物体边界和位置预测。
  • 核心目标​:提出ViKIENet框架,通过虚拟关键实例(Virtual Key Instances, VKIs)实现高效多模态融合。VKIs仅聚焦关键语义区域,而非全图像虚拟点,从而减少计算量并提升鲁棒性。文档通过图1展示了ViKIENet在性能和效率上的优势:

 

2. 核心方法创新:ViKIENet架构

ViKIENet是一个多阶段融合框架,输入为RGB图像和LiDAR点云,输出为3D检测结果。其核心包括三个模块,架构如图2所示:

2.1 Semantic Key Instance Selection (SKIS)​

  • 功能​:从RGB图像选择关键实例生成VKIs,避免全图像虚拟点的高计算开销。
  • 流程​:
    • 使用深度补全模型(如PENet)生成深度图 Idepth​。
    • 应用语义分割模型(如BiSeNet V2)获取分割掩码 Iseg​。
    • 结合两者,将实例像素转换为3D点,并附加语义分数:

 

      • 其中 nvp​ 是虚拟点数(远少于全图像点),解决PointPainting方法的缺失点问题。
    • 优势​:减少90%虚拟点(相比SFD或VirConv),同时注入丰富语义。
  • 2.2 Virtual-Instance-Focused Fusion (VIFF)​

    • 功能​:多阶段融合VKI特征与LiDAR特征,包括BEV(鸟瞰图)和RoI(兴趣区域)融合。
    • BEV融合​:将3D特征压缩至2D BEV空间,通过通道注意力和空间注意力机制增强关键区域:

 

图3(蓝色部分)展示该过程: 

RoI融合​:

  • 提取LiDAR和VKI的RoI特征 FL′​ 和 FV′​。
  • 应用自注意力后,进行双向交叉注意力(bi-directional cross-attention):

 

解决挑战​:处理模态差异(VKIs缺乏上下文)和深度噪声,如图7所示RoI融合提升边界框精度: 

 

2.3 Virtual-Instance-to-Real Attention (VIRA)​

  • 功能​:利用LiDAR点的精确深度校准VKI特征,减少深度补全噪声的影响。
  • 机制​:在图像域对齐VKI和LiDAR特征,通过跨注意力生成更可靠的特征表示:

 图4图解该过程:

 

    • 优势​:仅轻微增加计算,但显著提升特征准确性(如表6所示,VIRA提升AP 0.4%)。
3. 扩展版本:ViKIENet-R
  • 核心创新​:引入旋转等变特征(rotational-transformation equivariant features)提升检测鲁棒性,但传统方法计算开销大。ViKIENet-R通过仅对VKIs应用等变特征,减少90%计算量。
    • VIFF-R模块​:对VKIs和LiDAR点应用2N旋转变换,使用等变稀疏卷积提取特征,并通过跨注意力融合。
    • 架构​:如图5所示,高效结合等变特征:

    • 性能折衷​:ViKIENet-R在KITTI上达15.0 FPS(ViKIENet为22.7 FPS),但精度接近SOTA。
4. 实验结果

实验在KITTI、JRDB和nuScenes数据集验证性能,强调效率(FPS)和精度(AP)。

  • 4.1 KITTI数据集结果

    • 验证集(表1)​​:ViKIENet在car类3D AP上超越基线Voxel-RCNN(Easy: +3.21%, Mod: +3.20%, Hard: +3.21%)。ViKIENet-R在Mod/Hard级接近VirConv-T(SOTA),但FPS提升27.6%。
    • 测试集(表2)​​:ViKIENet达22.7 FPS,3D AP(Car)为91.79%(Easy)、84.96%(Mod)、80.20%(Hard);ViKIENet-R为15.0 FPS,AP达86.04%(Mod)。截至CVPR 2024提交,ViKIENet在KITTI检测和方向估计榜排名第一。
    • 多类检测(表8)​​:ViKIENet显著提升行人检测(Pedestrian AP +4.8% Easy),因VKIs增强小物体特征。
    • 可视化效果​:VIRA抑制噪声并增强轮廓(图6a),VIFF提升远距离物体检测(图6b):

 

  • 4.2 JRDB和nuScenes泛化性

    • JRDB(表5)​​:在移动机器人场景中,ViKIENet达53.16% 3D mAP(行人),FPS 19.2,超越VirConv-L(+2.13% AP)。
    • nuScenes(表3)​​:结合MVP生成虚拟点,ViKIENet mAP达68.72%,高于VirConv(66.73%),证明框架可移植性。
  • 4.3 消融研究(表6和表7)​

    • 模块贡献​:VIFF(BEV+RoI)提升AP 2.47–3.08%,VIRA进一步优化0.4%。添加VKIs到VirConv-L提升AP 2.24%(Hard)。
    • 关键场景​:ViKIENet在远距离(40m+ AP +14.66%)和遮挡物体(Occlusion 2 AP +6.14%)提升最大(表9),验证VKIs解决稀疏性问题的有效性。
5.核心代码 
1. SKIS模块(Semantic Key Instance Selection)​

输入​:RGB图像
输出​:虚拟关键实例点云(VKIs)
流程​:

  • 通过预训练的深度补全网络(如PENet)生成深度图
  • 通过预训练的语义分割网络(如BiSeNet V2)生成分割掩码
  • 仅选择属于关键实例(如车辆、行人)的像素区域,生成虚拟点并附加语义分数
    def SKIS_module(rgb_image):# Step 1: 深度补全 → 深度图depth_map = DepthCompletionNet(rgb_image)  # e.g., PENet# Step 2: 语义分割 → 分割掩码seg_mask = SegmentationNet(rgb_image)      # e.g., BiSeNetV2# Step 3: 选择关键实例区域(仅保留前景物体像素)instance_mask = filter_background(seg_mask) # Step 4: 将实例像素转换为3D虚拟点(相机坐标→LiDAR坐标)vki_points = []for (u, v) in foreground_pixels(instance_mask):# 从深度图获取深度值d = depth_map[u, v]# 相机坐标 → 3D世界坐标(内参矩阵 + 外参矩阵)x_cam = (u - cx) * d / fxy_cam = (v - cy) * d / fyz_cam = d# 转换到LiDAR坐标系(需外参矩阵T_cam_to_lidar)x_lidar, y_lidar, z_lidar = transform(x_cam, y_cam, z_cam, T_cam_to_lidar)# 附加语义分数(n_classes维向量)semantic_scores = seg_mask[u, v]  vki_points.append([x_lidar, y_lidar, z_lidar] + semantic_scores)return vki_points  # VKIs: [n_vp, 3 + n_classes]
    2. VIRA模块(Virtual-Instance-to-Real Attention)​

    输入​:VKI特征(FV​)和LiDAR特征(FL​)
    输出​:校准后的VKI特征
    流程​:

  • 将VKI点和LiDAR点投影到图像平面,匹配空间位置
  • 通过跨注意力机制,用LiDAR特征修正VKI特征(抑制深度噪声)
    class VIRA(nn.Module):def __init__(self, in_channels):super().__init__()self.query_proj = nn.Linear(in_channels, in_channels)  # LiDAR点作Queryself.key_proj = nn.Linear(in_channels, in_channels)    # VKI点作Keyself.value_proj = nn.Linear(in_channels, in_channels) # VKI点作Valuedef forward(self, F_v, F_l):# F_v: VKI特征 [N_v, C], F_l: LiDAR特征 [N_l, C]# Step 1: 投影特征 → Q, K, VQ_l = self.query_proj(F_l)  # [N_l, C]K_v = self.key_proj(F_v)    # [N_v, C]V_v = self.value_proj(F_v)  # [N_v, C]# Step 2: 计算注意力权重(LiDAR点与VKI点交互)attn_scores = torch.matmul(Q_l, K_v.transpose(0, 1))  # [N_l, N_v]attn_weights = F.softmax(attn_scores, dim=-1)          # 按行归一化# Step 3: 加权求和 → 修正后的VKI特征F_v_corrected = torch.matmul(attn_weights, V_v)  # [N_l, C]return F_v_corrected
    3. VIFF模块(Virtual-Instance-Focused Fusion)​

    输入​:VKI特征和LiDAR特征(3D体素化后)
    输出​:融合后的BEV特征和RoI特征
    流程​:分BEV和RoI两个阶段融合

    ​(a) BEV融合(图3蓝色部分)​
    def VIFF_BEV(B_v, B_l):# B_v: VKI的BEV特征, B_l: LiDAR的BEV特征 [W, H, D*C]# Step 1: 通道级拼接B_cat = torch.cat([B_l, B_v], dim=-1)  # [W, H, 2*D*C]# Step 2: 通道注意力(如ECA-Net)B_channel = ChannelAttention(B_cat)    # [W, H, D*C]# Step 3: 空间注意力(聚焦关键区域)B_spatial = SpatialAttention(B_channel) # [W, H, D*C]return B_spatial  # 融合后BEV特征
    (b) RoI融合(图3黄色部分)​
    def VIFF_RoI(F_v_roi, F_l_roi):# F_v_roi: VKI的RoI特征, F_l_roi: LiDAR的RoI特征 [G, C]# Step 1: 自注意力增强各自特征F_sal = SelfAttention(F_l_roi)  # LiDAR自注意力F_sav = SelfAttention(F_v_roi)  # VKI自注意力# Step 2: 双向交叉注意力# 方向1: VKI作Query, LiDAR作Key/ValueF_v2l = CrossAttention(query=F_sav, key=F_sal, value=F_sal)# 方向2: LiDAR作Query, VKI作Key/ValueF_l2v = CrossAttention(query=F_sal, key=F_sav, value=F_sav)# Step 3: 最大池化 + 拼接F_fused_dir = torch.max(F_v2l, F_l2v)        # 逐元素最大值 [G, C]F_fused = torch.cat([F_fused_dir, F_sal], dim=-1)  # 拼接原始LiDAR特征 [G, 2*C]return F_fused
    4. VIFF-R模块(旋转等变特征融合)​

    输入​:VKIs和LiDAR点云
    输出​:旋转等变融合特征
    流程​:对输入点云应用旋转变换,通过等变卷积提取特征后融合

    def VIFF_R(vkis, lidar_points):# Step 1: 生成2N个旋转视角(N=旋转角度数)rotated_vkis = [apply_rotation(vkis, theta) for theta in rotation_angles]rotated_lidar = [apply_rotation(lidar_points, theta) for theta in rotation_angles]# Step 2: 对每个旋转视角提取等变特征feats_v = []feats_l = []for v, l in zip(rotated_vkis, rotated_lidar):feat_v = EquivariantSparseConv3D(v)  # 等变稀疏卷积feat_l = EquivariantSparseConv3D(l)feats_v.append(feat_v)feats_l.append(feat_l)# Step 3: 跨视角注意力融合(类似VIFF但多视角)fused_feats = []for i in range(num_views):# 以视角i为Query,其他视角为Key/Valuefused = CrossAttention(query=feats_v[i], key=feats_v, value=feats_v)fused_feats.append(fused)# Step 4: 逆旋转恢复原始视角final_feat = average_inverse_rotate(fused_feats)return final_feat

关键实现说明

  1. 深度补全与分割网络​:SKIS依赖预训练模型(PENet/BiSeNet V2),需提前部署。
  2. 稀疏卷积​:Voxel化后的3D特征提取使用SECOND的稀疏卷积实现。
  3. 注意力机制​:VIRA和VIFF中的注意力可替换为标准Transformer或轻量级变体(如ECA)。
  4. 旋转等变卷积​:VIFF-R需实现SO(2)等变卷积层(参考论文[31,32])。

以上伪代码严格基于论文方法描述(第3节),未添加未提及的细节。

 

6. 关键贡献与结论
  • 主要贡献​:
    • 提出ViKIENet框架,通过SKIS、VIFF、VIRA实现高效多模态融合,仅用10%虚拟点达到SOTA性能。
    • 推出ViKIENet-R,首次将旋转等变特征应用于VKIs,平衡精度与效率。
    • 实验证明:在KITTI、JRDB、nuScenes上实现SOTA或接近SOTA结果(如KITTI car AP 91.79%),同时FPS高达22.7(ViKIENet)和15.0(ViKIENet-R)。
  • 结论​:ViKIENet解决了虚拟点方法的噪声和计算瓶颈,为自动驾驶和机器人提供高效解决方案。框架可扩展至其他LiDAR检测模型(如MVP),提升泛化性能。
  • 影响​:截至论文提交,ViKIENet在KITTI榜单位居前列,推动3D检测向实时高精度发展。

此总结基于文档完整内容,确保覆盖所有核心部分(动机、方法、实验、贡献),并嵌入相关图片以增强理解。所有数据和结论均源自文档,无额外虚构内容。

 论文地址:https://openaccess.thecvf.com/content/CVPR2025/papers/Yu_ViKIENet_Towards_Efficient_3D_Object_Detection_with_Virtual_Key_Instance_CVPR_2025_paper.pdf

http://www.lryc.cn/news/595786.html

相关文章:

  • STM32-SPI全双工同步通信
  • Kotlin 作用域函数 let 的实现原理
  • 替代Oracle?金仓数据库用「敢替力」重新定义国产数据库
  • 【Android】xml和Java两种方式实现发送邮件页面
  • Windows PE文件内未用空间学习
  • 17-VRRP
  • 基于 Vue,SPringBoot开发的新能源充电桩的系统
  • ospf技术
  • 【机器学习】第四章 回归算法
  • 高层功能架构详解 - openExo
  • Flutter基础(前端教程①⑧-Text文本-Icon图标-Image图片)
  • C语言符号可见性控制与工程实践——深入理解 __attribute__((visibility)) 和 -fvisibility=hidden
  • 跨服务调用中,直接使用 MDC的上下文无法自动传递
  • Oracle 12c 创建数据库初级教程
  • 从FDTD仿真到光学神经网络:机器学习在光子器件设计中的前沿应用工坊
  • 从RAG到Agentic RAG
  • 无人机吊舱与遥控器匹配技术解析
  • 一文读懂深度模型优化器,掌握炼丹工具
  • MySQL 学习二 MVCC
  • IBGP互联(ensp)
  • 【nginx】隐藏服务器指纹:Nginx隐藏版本号配置修改与重启全攻略
  • Unity中,Panel和 Canvas的区别
  • 数字签名(Digital Signature)
  • VR技术在元宇宙游戏中的作用及发展前景深度分析
  • A316-V71-Game-V1:虚拟7.1游戏声卡评估板技术解析
  • Leetcode—692. 前K个高频单词【中等】(桶排序)
  • PyTorch武侠演义 第一卷:初入江湖 第4章:损失玉佩的评分风波
  • 【AI学习从零至壹】Transformer
  • 02-netty基础-java四种IO模型
  • Java设计模式揭秘:深入理解模板方法模式