【论文解读】PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection

news2024/10/1 23:29:14

PV-RCNN

  • 摘要
  • 引言
  • 方法
    • 3D Voxel CNN for Efficient Feature Encoding and Proposal Generation
    • Voxel-to-keypoint Scene Encoding via Voxel Set Abstraction
    • Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement
  • 实验
  • 结论

摘要

我们提出了一种新的高性能3D对象检测框架,称为PointVoxel RCNN(PV-RCNN),用于从点云中精确检测3D对象。我们提出的方法深度集成了三维体素卷积神经网络(CNN)和基于PointNet的集合抽象,以学习更具判别力的点云特征。它利用了3D体素CNN的高效学习和高质量建议以及基于PointNet的网络的灵活感受野。具体而言,所提出的框架通过新颖的体素集抽象模块将具有3D体素CNN的3D场景总结为一小组关键点,以节省后续计算并对代表性场景特征进行编码。给定体素CNN生成的高质量3D提案,提出了RoIgrid池,以通过关键点集抽象将提案特定特征从关键点抽象到RoI网格点。与传统的池化操作相比,RoI网格特征点编码了更丰富的上下文信息,用于准确估计对象的置信度和位置。在KITTI数据集和Waymo Open数据集上进行的大量实验表明,我们提出的PV-RCNN以显著的优势超过了最先进的3D检测方法。

引言

我们提出了一种新的3D对象检测框架PVRCNN(如图1所示),它通过结合基于点和基于体素的特征学习方法的优点来提高3D检测性能。
在这里插入图片描述
PV-RCNN的原理在于,基于体素的操作有效地编码了多尺度特征表示,并可以生成高质量的3D建议,而基于PointNet的集合抽象操作通过灵活的感受野保留了准确的位置信息。我们认为,这两种类型的特征学习框架的集成可以帮助学习更具鉴别力的特征,以实现精确的细粒度盒子细化。
主要挑战是如何将两种类型的特征学习方案,特别是具有稀疏卷积的3D体素CNN和基于PointNet的集合抽象有效地结合到一个统一的框架中。一个直观的解决方案是在每个3D提案中对几个网格点进行均匀采样,并采用集合抽象来聚合这些网格点周围的3D体素特征,以进行提案细化。然而,这种策略是高度内存密集型的,因为体素的数量和网格点的数量都可能非常大,以至于难以实现令人满意的性能。
因此,为了更好地集成这两种类型的点云特征学习网络,我们提出了一种两步策略,第一步是体素到关键点场景编码步骤,第二步是关键点到网格RoI特征提取步骤。
主要贡献:

  • (1) 我们提出了PV-RCNN框架,该框架有效地利用了基于体素和基于点的3D点云特征学习方法的优势,从而在可管理的内存消耗的情况下提高了3D对象检测的性能。
  • (2) 我们提出了体素到关键点场景编码方案,该方案通过体素集抽象层将整个场景的多尺度体素特征编码为一个小的关键点集。这些关键点特征不仅保持了准确的位置,而且对丰富的场景上下文进行了编码,显著提高了3D检测性能。
  • (3) 我们为每个提议中的网格点提出了一个多尺度RoI特征抽象层,该层聚合了来自场景的更丰富的上下文信息,用于精确的框细化和置信度预测。
  • (4) 我们提出的方法PV-RCNN以显著的优势优于以前的所有方法,在竞争激烈的KITTI 3D检测基准中排名第一,在大规模Waymo Open数据集上也以较大的优势超过了以前的方法。

方法

在这里插入图片描述
图2:我们提出的PV-RCNN的总体架构。首先对原始点云进行体素化,以馈送到基于3D稀疏卷积的编码器中,从而学习多尺度语义特征并生成3D对象建议。然后,通过新颖的体素集抽象模块,将多个神经层上学习到的体素特征量总结为一小组关键点。最后,将关键点特征聚合到RoI网格点,以学习用于细粒度提案细化和置信度预测的提案特定特征。

3D Voxel CNN for Efficient Feature Encoding and Proposal Generation

具有3D稀疏卷积的体素CNN是最先进的3D检测器的热门选择,用于有效地将点云转换为稀疏的3D特征体,由于其效率高、精度高,我们采用它作为特征编码和3D提议生成框架的主干。
3D voxel CNN
首先将输入点P划分为空间分辨率为L × W × H的小体素,其中非空体素的特征直接计算为内部所有点的逐点特征(即三维坐标、反射率强度)的平均值。该网络利用一系列3×3×3三维稀疏卷积,逐步将点云转换为下采样大小分别为1x、2x、4x、8x的特征体。这种稀疏特征体可以看作是一组体素特征向量。
3D proposal generation
通过将编码的8×downsampled 3D特征体转换为2D鸟瞰特征图,可以按照基于锚点的方法生成高质量的3D提案。具体来说,我们沿着Z轴叠加3D特征体,得到了L/8 × W/8鸟瞰特征图。每个类有2个× L/8 × W/8个3D锚盒,锚盒采用该类3D对象的平均尺寸,鸟瞰特征图的每个像素分别评估0◦、90◦两个方向的锚。

Discussions.(为下一模块做铺垫)
最先进的检测器大多采用两阶段框架。它们需要从生成的3D特征体积或2D地图中汇集RoI特定特征,以进行进一步的提案细化。然而,来自3D体素CNN的这些3D特征体积在以下方面具有主要限制。(i) 这些特征体积通常具有低空间分辨率,因为它们被下采样高达8倍,这阻碍了对象在输入场景中的精确定位。(ii)即使可以上采样以获得更大空间大小的特征体积/图,它们通常仍然相当稀疏。因此,传统的池化方法将获得大部分为零的特征,并浪费大量的计算和内存用于第二阶段的细化。
另一方面,在PointNet的变体中提出的集合抽象操作已经显示出对来自任意大小的邻域的特征点进行编码的强大能力。因此,我们建议将3D体素CNN与一系列集合抽象操作集成,以进行准确和稳健的第2阶段建议细化。
使用集合抽象操作来池化场景特征体素的一个简单解决方案是将多尺度特征体直接聚合到RoI网格。然而,由于大量的稀疏体素,这种直观的策略只是占用了大量的GPU内存来计算集合抽象中的成对距离。
为了解决这个问题,我们提出了一种分两步的方法,首先将整个场景的不同神经层的体素编码为少量关键点,然后将关键点特征聚合到RoI网格中进行框建议细化。

Voxel-to-keypoint Scene Encoding via Voxel Set Abstraction

我们的框架首先将表示整个场景的多尺度特征体素聚合为少量关键点,这些关键点充当3D体素CNN特征编码器和提案细化网络之间的桥梁。

Keypoints Sampling
具体而言,我们采用最远点采样(FPS)算法从点云P中采样少量n个关键点K={p1,···,pn},其中KITTI数据集n=2048,Waymo数据集n=4096。这种策略鼓励关键点均匀分布在非空体素周围,并且可以代表整个场景。
FPS(Furthest Point Sampling)】是一种用于点云采样的算法。FPS 旨在从点云中选择一组代表性的点,以便在减少数据量的同时保留关键信息。FPS 的基本思想是从点云中选择一个起始点,然后在剩余的点中找到距离已选点最远的点作为下一个选定点,如此循环直到达到所需的采样数量。这确保了所选点的分布较为均匀,并且覆盖了原始点云的关键特征。
Voxel Set Abstraction Module
关键点周围的点现在是由多层三维体素CNN编码的具有多尺度语义特征的规则体素,而不是像PointNet++那样从PointNet学习特征的相邻原始点。
其中,F(lk) = {F(lk) 1,···,F(lk)Nk}为三维体素CNN的第k层体素特征向量集合,V(lk) = {V(lk) 1,···,V(lk)Nk}为它们的三维坐标,由第k层体素指数和实际体素大小计算,其中Nk为第k层非空体素的个数。
在这里插入图片描述
对于每个关键点pi,我们首先在半径rk内的第k层识别其相邻的非空体素,以检索体素方向的特征向量集为在这里插入图片描述

  • v(lk)j−pi 局部相对坐标(表示语义体素特征f (lk)j的相对位置。)

通过PointNet对pi的相邻体素集S(lk)i内的体素特征进行变换,以生成关键点pi的特征:
在这里插入图片描述

  • M(·)表示从相邻集S(lk)i中随机采样最多Tk个体素以节省计算,
  • G(·)代表多层感知器网络以对体素特征和相对位置进行编码
  • 尽管相邻体素的数量在不同的关键点之间变化,但沿通道最大池化操作max(·)可以将不同数量的相邻体素特征向量映射到关键点pi的特征向量f(pvk)i。

上述策略是在3D体素CNN的不同级别上执行的,并且可以将来自不同级别的聚合特征连接起来,以生成关键点pi的多尺度语义特征
在这里插入图片描述
其中生成的特征f(pv)i结合了来自体素特征f(lk)j的基于3D体素CNN的特征学习和来自体素集抽象的基于PointNet的特征。此外,pi的三维坐标还保留了准确的位置信息。
Extended VSA Module
(VSA)Voxel Set Abstraction
我们通过进一步丰富原始点云P和8倍下采样鸟瞰图的关键点特征来扩展VSA模块。其中原始点云部分弥补了点云体素化的量化损失,而2D鸟瞰图沿Z轴具有更大的接受域。原始点云特征f (raw)i也按照Eq.(2)进行聚合。关键点pi的鸟瞰特征f (bev)i则通过对鸟瞰特征映射的双线性插值得到。因此,通过连接pi的所有相关特性,进一步丰富了它的关键点特性
在这里插入图片描述
Predicted Keypoint Weighting.
在整个场景由少量关键点编码后,它们将被后续阶段进一步用于进行提案细化。直观地说,属于前景对象的关键点应该对提案的精确细化有更大的贡献,而来自背景区域的关键点的贡献应该更小。
因此,我们提出了一个预测关键点加权(PKW)模块(见图3),通过点云分割的额外监督来重新加权关键点特征。分割标签可以由3D检测框注释直接生成,即通过检查每个关键点是在真实3D框的内部还是外部。每个关键点的特征的预测特征加权可以公式化为
在这里插入图片描述

  • A() 表示一个具有Sigmoid函数的三层MLP网络,用于预测[0,1]之间的前景置信度。

通过focal loss来训练
在这里插入图片描述

Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement

RoI-grid Pooling via Set Abstraction.
对于每个3D RoI,如图4所示,我们提出了RoI网格池模块,将关键点特征聚合到具有多个接受域的RoI网格点。我们在每个3D方案中统一采样6 × 6 × 6个网格点,记为G = {g1,···,g216}。采用集合抽象操作,从关键点特征中聚合网格点的特征
在这里插入图片描述

在这里插入图片描述
具体来说,我们首先识别半径为r的网格点gi的相邻关键点在这里插入图片描述
聚合相邻的关键点特征集
在这里插入图片描述
在从其周围的关键点获得每个网格的聚合特征后,可以通过具有256个特征维度的两层MLP对相同RoI的所有RoI网格特征进行矢量化和变换,以表示整个提议。

3D Proposal Refinement and Confidence Prediction.

对于第k个3D RoI,其置信度训练目标yk归一化为介于[0,1]之间的在这里插入图片描述
(IOU大于等于0.75时,y刚好是1,所以认为IOU达到0.75就已经很好了)

  • confidence利用二值交叉熵损失来进行训练。
  • bos regression利用smooth-L1损失函数进行训练

实验

KITTI数据集
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结论

我们提出了PV-RCNN框架,这是一种从点云精确检测三维目标的新方法。该方法通过提出的体素集抽象层将多尺度三维体素CNN特征和基于pointnet的特征集成到一个小的关键点集合中,然后将学习到的关键点的判别特征聚合到具有多个接受域的roi网格点中,以捕获更丰富的上下文信息,用于细粒度提案的细化。在KITTI数据集和Waymo Open数据集上的实验结果表明,我们提出的体素到关键点场景编码和关键点到网格的RoI特征抽象策略与之前最先进的方法相比,显著提高了3D目标检测性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1402459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin协程的JVM实现源码分析(下)

协程 根据 是否保存切换 调用栈 ,分为: 有栈协程(stackful coroutine)无栈协程(stackless coroutine) 在代码上的区别是:是否可在普通函数里调用,并暂停其执行。 Kotlin协程&…

Apifox适用于API测试、管理的工具

一、产品介绍 Apifox是一款强大的API管理工具,它可以帮助开发人员和团队高效地设计、开发、测试、部署和管理API。Apifox提供了丰富的功能,如API文档生成、版本控制、团队协作、性能监控等,让API开发和管理变得更加简单和高效。 二、应用场…

2023 年值得一读的技术文章 | NebulaGraph 技术社区

在之前的产品篇,我们了解到了 NebulaGraph 内核及周边工具在 2023 年经历了什么样的变化。伴随着这些特性的变更和上线,在【文章】博客分类中,一篇篇的博文记录下了这些功能背后的设计思考和研发实践。当中,既有对内存管理 Memory…

【LeetCode】每日一题 2024_1_21 分割数组的最大值(二分)

文章目录 LeetCode?启动!!!题目:分割数组的最大值题目描述代码与解题思路 LeetCode?启动!!! 今天是 hard,难受,还好有题解大哥的清晰讲解 题目&a…

十一、K8S-ingress

目录 一、什么是Ingress 1、为什么要用ingress: 2、ingress概念: 1、pod漂移问题 ​编辑 2、端口管理的问题: 3、域名分配及动态更新问题 3、Ingress-nginx 工作原理 4、ingress-controller工作原理 5、ingress部署原理 1、Deploy…

【UEFI基础】EDK网络框架(TCP4)

TCP4 TCP4协议说明 相比UDP4,TCP4是一种面向连接的通信协议,因此有更好的可靠性。 TCP4的首部格式如下: 各个参数说明如下: 字段长度(bit)含义Source Port16源端口,标识哪个应用程序发送。D…

爬虫案例—爬取ChinaUnix.net论坛板块标题

爬虫案例—爬取ChinaUnix.net论坛板块标题 ChinaUnix.net论坛网址:http://bbs.chinaunix.net 目标:抓取各个板块的标题和内容的标题 网站截图: 利用requests和xpath实现目标。源码如下: import requests from lxml import etr…

Vue——计算属性

文章目录 计算属性computed 计算属性 vs methods 方法计算属性完整写法 综合案例:成绩案例 计算属性 概念:基于现有的数据,计算出来的新属性。依赖的数据变化,自动重新计算 语法: ①声明computed配置项中,一个计算属性…

vue3-模版引用ref

1. 介绍 概念&#xff1a;通过 ref标识 获取真实的 dom对象或者组件实例对象 2. 基本使用 实现步骤&#xff1a; 调用ref函数生成一个ref对象 通过ref标识绑定ref对象到标签 代码如下&#xff1a; 父组件&#xff1a; <script setup> import { onMounted, ref } …

必看——SSL安全证书

SSL&#xff08;Secure Socket Layer&#xff09;安全证书是一种用于确保在网络上数据传输过程中的安全性和加密性的数字证书。SSL证书通过对数据进行加密&#xff0c;确保敏感信息在用户和服务器之间的传输过程中不被窃取或篡改。下面是获取和配置SSL安全证书的基本步骤&#…

【大数据】YARN常用命令及Rest API

YARN 1.YARN常用命令 1.1 作业 命令说明yarn application -list列出所有的applicationyarn application -list -appStates [ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED]根据application状态过滤yarn application -kill [applicationId]…

【GitHub项目推荐--不错的 C 开源项目】【转载】

大学时接触的第一门语言就是 C语言&#xff0c;虽然距 C语言创立已过了40多年&#xff0c;但其经典性和可移植性任然是当今众多高级语言中不可忽视的&#xff0c;想要学好其他的高级语言&#xff0c;最好是先从掌握 C语言入手。 今天老逛盘点 GitHub 上不错的 C语言 开源项目&…

commit 历史版本记录修正

commit 历史版本记录修正 当 Bug 发生的时候&#xff0c;我们会需要去追踪特定 bug 的历史记录&#xff0c;以查出该 bug 真正发生的原因&#xff0c;这个时候就是版本控制带来最大价值的时候。 因此&#xff0c;要怎样维持一个好的版本记录是非常重要的&#xff0c;下面是一…

第91讲:MySQL主从复制集群主库与从库状态信息的含义

文章目录 1.主从复制集群正常状态信息2.从库状态信息中重要参数的含义 1.主从复制集群正常状态信息 通过以下命令查看主库的状态信息。 mysql> show processlist;在主库中查询当前数据库中的进程&#xff0c;看到Master has sent all binlog to slave; waiting for more u…

通俗易懂理解小波池化/WaveCNet

重要说明&#xff1a;本文从网上资料整理而来&#xff0c;仅记录博主学习相关知识点的过程&#xff0c;侵删。 一、参考资料 github代码&#xff1a;WaveCNet 通俗易懂理解小波变换(Wavelet Transform) 二、相关介绍 关于小波变换的详细介绍&#xff0c;请参考另一篇博客&…

【工具与中间件】GitGitHub相关知识与一些问题解决、工具推荐

文章目录 前言1. Git 基础快速回顾1.1 Git 相关概念简单回顾1.2 Git 基本命令1.2.1 分支命令1.2.2 推拉命令 2. Git Hub 创建仓库3. 版本控制实战3.1 创建本地项目3.2 绑定远程仓库3.3 代码推拉3.3.1 推拉实战3.3.2 合并请求 4. 补充与总结4.1 可能会遇到的问题4.2 补充&#x…

Unity -简单键鼠事件和虚拟轴

简单键鼠事件 — “Test_03” KeyTest 键鼠事件每帧都要监听&#xff0c;要放在Update()中处理 public class KeyTest : MonoBehaviour {// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){// 【鼠标点击事件…

15.1_使用Verilog设计:一个简单的状态机设计——序列检测器(可实现重复性检测)

使用Verilog设计&#xff1a;一个简单的状态机设计——序列检测器&#xff08;可实现重复性检测&#xff09; 1&#xff0c;一个简单的状态机设计&#xff1a;可重复性序列检测器2&#xff0c;可重复性状态机序列检测实现2.1&#xff0c;RTL设计代码实现2.2&#xff0c;tb测试代…

加码OT安全丨Fortinet与施耐德电气携手共创工业零信任安全创新方案

近日&#xff0c;专注于推动网络与安全融合的全球网络安全领导者 Fortinet在施耐德电气举办的第四季“绿色智能制造创赢计划”结营仪式上&#xff0c;正式与其签署联创方案合作协议&#xff0c;成为施耐德电气“生态合作伙伴”。双方将依托“基于关键装置/设备的微隔离防护”这…

【RT-DETR有效改进】Google | EfficientNetV2一种超轻量又高效的网络 (轻量化网络)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…