当前位置: 首页 > 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.dtcms.com/a/291667.html

相关文章:

  • AI Agent-Manus 构建经验解读(下)
  • powerquery如何实现表的拼接主键
  • mybatis多对一一对多的关联及拼接操作以及缓存处理
  • Java 与 Android 回收机制深度解析
  • 行业出海研究报告
  • Apache Ignite 中的 SQL 模式(Schema)管理机制
  • Qt字符串处理与正则表达式应用
  • MCP vs 传统集成方案:REST API、GraphQL、gRPC的终极对比
  • 使用vue-pdf-embed发现某些文件不显示内容
  • Jenkins接口自动化测试(构建)平台搭建
  • Jenkins 多架构并发构建实战
  • 计算机网络:连接世界的数字脉络
  • Python爬虫实战:研究pymorphy2库相关技术
  • JVM:工具
  • 字节跳动视觉算法面试30问全景精解
  • Python爬虫实战:研究PyPLN库相关技术
  • PCIe之P2P应用
  • 从ZooKeeper到KRaft:Kafka架构演进与无ZooKeeper部署指南
  • Android perfetto 工具使用
  • 【前端】ikun-pptx编辑器前瞻问题二: pptx的压缩包结构,以及xml正文树及对应元素介绍
  • 从重复劳动到自动化:火语言 RPA 的实践与思考
  • python办自动化--读取邮箱中特定的邮件,并下载特定的附件
  • 物联网_TDengine_EMQX_性能测试
  • RabbitMQ-交换机(Exchange)
  • 【无标题】buuctf-re3
  • 解决pip指令超时问题
  • MCU中的总线桥是什么?
  • Windows PE文件内未用空间学习
  • Collection接口的详细介绍以及底层原理——包括数据结构红黑树、二叉树等,从0到彻底掌握Collection只需这篇文章
  • wed前端简单解析