PV-RCNN、PV-RCNN++ 网络结构

news2025/1/23 5:32:39

paper:

  • PV-RCNN https://arxiv.org/abs/1912.13192
  • PV-RCNN++ https://arxiv.org/abs/2102.00463

github:使用OpenPCDet进行训练测试 https://github.com/open-mmlab/OpenPCDet

PV-RCNN

简介

PV-RCNN的提出是想要综合 point-based 和 voxel-based 3D目标检测方法的优势:既要尽可能保留原始点的精确位置信息,又要降低运算消耗。

PV-RCNN主要贡献:

  1. Voxel & Point based Method 点和体素方法的结合:实现了更高的识别性能和可控的内存消耗。
  • Voxel-based 体现在3D稀疏CNN场景编码的过程中,将场景转换为多种尺度的特征空间,并且生成了高品质的预选框。
  • Point-based 体现在 Voxel-to-Keypoint 和 Keypoint-to-RoI grid 这两个步骤当中,它们本质上都是把邻域内点的信息汇集到当前的点上面。

  1. Voxel-to-Keypoint scene encoding 从体素到关键点的场景编码:作为 3D稀疏CNN和预选框细化两个步骤之间的桥梁,关键点(Keypoint) 精简了整个场景的特征表达,同时还保留了点云丰富的上下文关联信息以及原始点精确的位置信息。
  2. Multi-scale RoI feature abstraction 多尺度RoI特征提取:每个预选框的格点得到了来自其邻域内的关键点所携带的特征信息、原始点的位置信息和原始点之间的上下文关联信息。而且,这些信息还是在不同尺度,也就是不同规模的感受野当中汇集的。

网络结构

步骤如下:

  1. 将空间中的点云数据体素化,利用3D稀疏卷积网络进行多次的特征提取下采样。
  2. 在3D稀疏卷积网络特征提取的每一层使用体素特征抓取模块提取多尺度特征。
  3. 将3D稀疏卷积网络提取的特征投影到鸟瞰图上,并利用鸟瞰图生成一阶段的目标检测结果。
  4. 利用体素特征抓取模块得到的多尺度特征对一阶段目标检测结果进行优化得到最终的检测结果。

3D Voxel CNN for Efficient Feature Encoding and Proposal Generation

  • 点云数据体素化提取特征
    首先将空间中的点云数据进行体素化,其中非空体素的特征被直接计算为所有内部点的逐点特征的平均值。
    然后使用3D稀疏卷积提取体素层面的特征,并且通过设置Stride的方式对空间数据进行下采样,最终实现8倍的下采样。
  • 转为BEV进行一阶段预测

在卷积之后,将特征在Z轴上堆叠实现将特征图投影到2D平面,生成[W/8, L/8]的BEV图。随后在鸟瞰图的基础上,使用anchor-based的方法生成对检测目标的Propoals和置信度打分。

PV-RCNN在第一阶段简单地生成3D Bbox框,第二阶段需要进行的是对生成的区域的优化和调整。其中,在OpenPCDet中PV-RCNN的阶段1与SECOND网络结构一样。

Voxel-to-keypoint Scene Encoding via Voxel Set Abstraction

  • Keypoints Sampling

采用FPS,对KITTI数据集的关键点个数为2048,对Waymo数据集为4096个点,用于代表整个场景的特征信息。

  • Voxel Set Abstraction Module

对从3D CNN特征量(步骤1中的几个稀疏卷积结果)到关键点的多尺度语义特征进行编码。

使用的是PointNet++中所提出的类似聚合方法。但在PN++中,每个关键点聚合的是周围原始点云中一定距离的点特征,而在VSA中,每个关键点聚合的是周围一定距离内的体素的特征。

聚合完成之后放入类似于PointNet的结构进行特征提取。使用公式表示如下:

其中 M 表示采样聚合过程(采样是因为阈值限制,即聚合体素数量有限制), G 表示提取特征的多层感知机, max 就是经典的最大池化了。和PN++一样,文中设置了多个距离用于周围体素聚合。

本文的voxel CNN共有4层,所以每个关键点可以得到4个特征,在这四层中可以设置不同的范围阈值(ball 半径)。

  • Extended VSA Module

作者认为2D的鸟瞰图对Z轴有着更广的感受野,因此将关键点pi投影到2D鸟瞰坐标系,并利用双线性插值从鸟瞰特征中获得特征 f i b e v f_i^{bev} fibev

最终得到关键点 p i p_i pi的特征为:

其中,

f i p v f_i^{pv} fipv是VSA过程得到的4个特征并进行拼接
f i r a w f_i^{raw} firaw是初始点云进行fps提取的点云(进行mlp)
f i b e v f_i^{bev} fibev是初始点云(只考虑x,y)在Bev上相对位置并双线性插值的特征

  • Predicted Keypoint Weighting

考虑到前景关键点要比背景点贡献更多目标信息,本文提出了PKW模块,通过额外监督来重新加权关键点特征。其中,额外的监督是指3D分割,label是根据关键点坐标和真实的3Dbbox的位置关系得到的,判断该点是不是在内部得到label (0:不在内部, 1: 在内部)。

PKW模块设计如下:

点云特征通过 2个mlp 并sigmoid得到概率(0–1 float)。可以看作是让两个MLP去学习判断:给出点云特征来推测对应特征点在3Dbbox中的概率。

带权重的关键点特征表示为:

PKW模块通过focal loss进行训练,默认超参数用于处理训练集中前景/背景点的不平衡数量。

Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement

  • RoI-grid Pooling via Set Abstraction

聚合关键点特征到Roi-grid点:作者提出RoI-grid pooling 模块以将关键点特征和RoI区域中的点结合起来。这个部分和前面的VSA模块很相似。在每个Propoals中选出 6×6×6=216 个点,称为grid points。将每个grid points视作中心点,使用PN++的方法,聚合周围一定距离内的关键点特征(同样的是多个距离阈值以获得多尺度信息)。同时在每个关键点特征上拼接上一个坐标信息,该坐标信息的值为关键点到对应中心点的坐标差;

之后就可以使用和VSA中一样的 M() 、 G() 函数进行特征处理,如下所示:

然后再将采集216个中心点得到的特征通过一个两层的MLP进行转换,得到的特征即代表这个Propoals了。作者认为,得益于关键点丰富的信息,该文每个Propoals中得到的特征信息包含了丰富的上下文信息,具有灵活的感受野(多尺度、且被聚合的邻域范围内的关键点可以在该3D box外部)。

  • 3D Proposal Refinement and Confidence Prediction

聚合后的特征经过MLP去预测anchor的cls和reg:

PV-RCNN++

简介

PV-RCNN++(v2版本)是基于 PV-RCNN(v1版本) 进行改进的,包括两点,

  • 第一个是 sectorized proposal-centric (proposal中心扇形化)策略,用于生成更具代表性和更均匀分布的关键点;
  • 第二个是VectorPool aggregation,以取代 set abstraction,更好地聚合局部点云特征,并且资源消耗也少的多;

基于以上两步改进策略,PV-RCNN++运行速度在是v1版本的三倍,且在Waymo开放数据集上以10 FPS的推理速度在150m×150m检测区域获得最好的效果。

网络结构

Sectorized Proposal-Centric Sampling

在 v1 中,使用最远点采样(FPS)算法从原始点云中对关键点进行采样,有两个缺点:

  • FPS算法由于是 O(n2) 复杂度而耗时,尤其是对于大规模点云采样时,阻碍了训练和推理速度;
  • FPS算法将生成大量背景关键点,这些关键点对第二阶段的网络回归是没有帮助,因为 RoI-grid 操作只能检索 proposal 周围的关键点。

为了解决这些缺点,提出了 SPC 采样算法。

  • Proposal-Centric Filtering

以 proposal 的中心为圆心对关键点进行过滤,将关键点采样的候选数量从 P 大幅减少到 P’,这不仅降低了后续关键点采样的复杂性,而且关键点比较集中,可以更好的对 proposal 周围的区域进行编码。

  • Sectorized Keypoint Sampling

为了进一步并行加速的关键点采样过程,我们将 proposal-centric 点集 P’分布到以整个场景中点为中心的 s 个扇区中,第 k 扇区的点集可以表示为 Sk’:

其中,每个扇区采样的点数等于 (落在该扇区内的点数 / 第一步筛选后的总点数) * 需要采样的点数。从每个Sk’ 中采样特定数量的关键点,使用的是FPS方法,因此通过实验发现FPS均匀分布的性能明显优于其他关键点采样算法。

这些 s个子任务可以在GPU上并行执行,从而关键点采样的规模则从 P’减少到 m a x k ∈ { 1 , . . . , s } ∣ S k ′ ∣ max_{k\in \{1,...,s\}}|S_k^{'}| maxk{1,...,s}Sk。因此,SPC关键点采样大大减少了关键点采样的规模,这不仅有效地加快了关键点采样过程,而且将关键点集中到3D proposal 的邻域,提高了关键点特征表示的能力。

Local Vector Representation

v1在 VSA 和 RoI-grid pooling 中采用 SA 进行局部特征聚合,对于点云的大规模局部特征聚合,SA 操作是非常耗时和耗费资源的。因此,在v2框架中,提出了用于从点云进行局部特征聚合的 VectorPool 聚合操作,以实现更准确、更高效的 3d 对象检测。

v2提出的 VectorPool 聚合模块中,建议通过使用单独的内核权重和单独的特征通道对不同的空间区域进行编码来生成位置敏感的局部特征,然后将其连接为单个向量表示以显式地表示局部点特征的空间结构。

具体来说,给定一个目标中心点 qk,首先识别其立方相邻区域内的支撑点,可以表示为:

请注意,本文将原始立方空间的一半长度加倍,以包含更多相邻点,用于该目标点的局部特征聚合。

为了生成位置敏感的特征,我们将关键点q 其周围空间邻域分割为nx×ny×nz密集体素;通过距 Yk 的三个最近邻来插值第 t 个子体素的特征,其中 t ∈ {1,… , nx ×ny ×nz} 表示每个子体素的索引,生成第 t 个子体素的特征为:

结果 h t ( v ) h_t^{(v)} ht(v)对该局部立方体中的特定第 t 个局部子体素的局部特征进行编码。

不同局部子体素中的那些特征可能代表非常不同的局部特征。因此,建议使用单独的局部内核权重对不同的局部子体素进行编码,以捕获位置敏感特征,而不是使用共享参数 MLP 来编码局部特征,如下所示:

最后,直接根据局部子体素特征 Ut 沿每个 3D 轴的空间顺序对其进行排序,并将它们的特征依次连接以生成最终的局部向量表示:

其中 U ∈ R c o u t U\in{R_{cout}} URcout 。内部顺序串联通过简单地将不同位置的特征分配到相应的特征通道来对结构保留的局部特征进行编码,这自然地保留了以qk为中心的相邻空间中的局部特征的空间结构,最终处理该局部向量表示使用多个MLP将局部特征编码到Cout特征通道以进行后续处理。

值得注意的是,本文的 VectorPool 聚合模块还可以与(Sun et al 2018)中的通道缩减技术相结合,通过在进行 VectorPool 聚合之前汇总输入特征通道来进一步减少计算/内存资源。

与SA相比, VectorPool 聚合可以通过采用通道求和并利用 MLP 之前提出的局部向量表示来大大减少所需的计算和内存资源。此外,本文提出的局部向量表示可以对具有不同特征通道的位置敏感特征进行编码,而不是像集合抽象中那样对局部逐点特征进行最大池化,从而为局部特征学习提供更有效的表示。

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

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

相关文章

认识c++

文章目录 1namespace 写博客 ,做作业 笔记很关键 1namespace ::域作用限定域 局部域>全局域>命名空间域(展开了命名空间域or指定访问命名空间域) 不要轻易展开 可以这样解决 方案一 方案二 using namespace std; 直接展开会有风…

接口 V2 完善:基于责任链模式、Canal 监听 Binlog 实现数据库、缓存的库存最终一致性

🎯 本文介绍了一种使用Canal监听MySQL Binlog实现数据库与缓存最终一致性的方案。文章首先讲解了如何修改Canal配置以适应订单表和时间段表的变化,然后详细描述了通过责任链模式优化消息处理逻辑的方法,确保能够灵活应对不同数据表的更新需求…

内容中台实施最佳实践解析与应用指南

内容概要 内容中台是一个旨在提升企业内容管理与分发能力的战略性平台,其实施最佳实践对于企业在数字化转型中尤为重要。内容中台的建设,不仅涉及技术层面的架构设计,还需结合组织变革、业务流程优化等多个方面,以实现高效、灵活…

顺序表和链表(详解)

线性表 线性表( linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线。…

TCP全连接队列

1. 理解 int listen(int sockfd, int backlog) 第二个参数的作用 backlog:表示tcp全连接队列的连接个数1。 如果连接个数等于backlog1,后续连接就会失败,假设tcp连接个数为0,最大连接个数就为1,并且不accept获取连接…

C语言程序环境与预处理—从源文件到执行程序,这里面有怎么的工序?绝对0基础!

正文开始前,我们简单聊上一聊! 众所周知!编译器的功能非常强大的,我们在编译软件上敲的每一行代码,点击执行,就会输出结果,从代码-->输出结果,这中间经历了怎样的一个过程&#…

第35天:安全开发-JavaEE应用原生反序列化重写方法链条分析触发类类加载

时间轴: 序列化与反序列化图解: 演示案例: Java-原生使用-序列化&反序列化 Java-安全问题-重写方法&触发方法 Java-安全问题-可控其他类重写方法 Java-原生使用-序列化&反序列化 1.为什么进行序列化和反序列化&#xff1…

硬件作品3----STM32F103RCT6最小系统板MCU配置

参考文章:对stm32F103RCT6原理图解析(详细)-CSDN博客 本想绘制稍微复杂一些的电路,但是出现很多问题,因此先绘制一块最小系统板进行原理、绘制方法的验证。 设计难度:★ 适合人群:初学者 一、…

SparkSQL数据源与数据存储综合实践

文章目录 1. 打开项目2. 查看数据集2.1 查看JSON格式数据2.2 查看CSV格式数据2.3 查看TXT格式数据 3. 添加单元测试依赖4. 创建数据加载与保存对象4.1 创建Spark会话对象4.2 创建加载JSON数据方法4.3 创建加载CSV数据方法4.4 创建加载Text数据方法4.5 创建加载JSON数据扩展方法…

【回忆迷宫——处理方法+DFS】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 250; int g[N][N]; bool vis[N][N]; int dx[4] {0, 0, -1, 1}; int dy[4] {-1, 1, 0, 0}; int nx 999, ny 999, mx, my; int x 101, y 101; //0墙 (1空地 2远方) bool jud(int x, int y) {if…

项目中使用的是 FastJSON(com.alibaba:fastjson)JSON库

从你的 pom.xml 文件中可以看到&#xff0c;项目明确依赖了以下 JSON 库&#xff1a; FastJSON&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version> </depende…

高效安全文件传输新选择!群晖NAS如何实现无公网IP下的SFTP远程连接

文章目录 前言1. 开启群晖SFTP连接2. 群晖安装Cpolar工具3. 创建SFTP公网地址4. 群晖SFTP远程连接5. 固定SFTP公网地址6. SFTP固定地址连接 前言 随着远程办公和数据共享成为新常态&#xff0c;如何高效且安全地管理和传输文件成为了许多人的痛点。如果你正在寻找一个解决方案…

Windows第一次上手鸿蒙周边

端云一体所需装备 很重要&#xff1a;C/D/E/F盘要有二三十G的可用空间&#xff01; 硬件&#xff1a;华为鸿蒙实验箱&#xff08;基础版&#xff09;》飞机板核心板环境监测板 软件&#xff1a;Visual Studio Code写代码 终端编译 Hiburn烧录到开发板 MobaXterm &#xff08…

使用AI生成金融时间序列数据:解决股市场的数据稀缺问题并提升信噪比

“GENERATIVE MODELS FOR FINANCIAL TIME SERIES DATA: ENHANCING SIGNAL-TO-NOISE RATIO AND ADDRESSING DATA SCARCITY IN A-SHARE MARKET” 论文地址&#xff1a;https://arxiv.org/pdf/2501.00063 摘要 金融领域面临的数据稀缺与低信噪比问题&#xff0c;限制了深度学习在…

【Qt】05-菜单栏

做菜单 前言一、创建文件二、菜单栏 QMenuBar2.1 示例代码2.2 运行结果 三、工具栏 QToolBar3.1 运行代码3.2 结果分析 四、状态栏 QStatusBar4.1 运行代码4.2 运行结果 五、文本编辑框 QTextEdit5.1 运行代码5.2 运行结果 六、浮动窗口 addDockWidget6.1 运行代码6.2 运行结果…

细说STM32F407单片机电源低功耗StandbyMode待机模式及应用示例

目录 一、待机模式基础知识 1、进入待机模式 2、待机模式的状态 3、退出待机模式 二、待机模式应用示例 1、示例功能和CubeMX项目设置 &#xff08;1&#xff09; 时钟 &#xff08;2&#xff09; DEBUG、LED1、KeyRight、USART6、CodeGenerator &#xff08;3&#x…

中国综合算力指数(2024年)报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p39061 在全球算力因数字化技术发展而竞争加剧&#xff0c;我国积极推进算力发展并将综合算力作为数字经济核心驱动力的背景下&#xff0c;该报告对我国综合算力进行研究。 中国算力大会发布的《中国综合算力指数&#xff08;2024年…

w-form-select.vue(自定义下拉框组件)(与后端字段直接相关性)

文章目录 1、w-form-select.vue 组件中每个属性的含义2、实例3、源代码 1、w-form-select.vue 组件中每个属性的含义 好的&#xff0c;我们来详细解释 w-form-select.vue 组件中每个属性的含义&#xff0c;并用表格列出它们是否与后端字段直接相关&#xff1a; 属性解释表格&…

前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!

引言 时光飞逝&#xff0c;2024年已经来临&#xff0c;回顾过去一年&#xff0c;科技的迅猛进步简直让人目不暇接。 在人工智能&#xff08;AI&#xff09;越来越强大的今天&#xff0c;我们不再停留在幻想阶段&#xff0c;量子计算的雏形开始展示它的无穷潜力&#xff0c;Web …

消息队列篇--原理篇--RabbmitMQ(Exchange,消息转换器、docker部署,绑定和确认机制等)

RabbitMQ是一个基于AMQP协议的消息队列系统&#xff0c;支持多种消息传递模式&#xff0c;包括点对点&#xff08;P2P&#xff09;、发布/订阅&#xff08;Pub/Sub&#xff09;和路由模式。RabbitMQ 的设计目标是提供高可用性、可扩展性和可靠性&#xff0c;适用于企业级应用集…