论文阅读笔记 | 三维目标检测——PV-RCNN++算法

news2025/1/16 2:52:27

如有错误,恳请指出。


文章目录

  • 1. 背景
  • 2. 网络结构
    • 2.1 Sectorized Proposal-Centric Sampling
      • Proposal-Centric Filtering
      • Sectorized Keypoint Sampling
    • 2.2 VectorPool Aggregation
  • 3. 实验结果

paper:《PV-RCNN++: Point-Voxel Feature Set Abstraction With Local Vector Representation for 3D Object Detection》(2022 IJCV)
做点云检测的肯定知道了,这又是Shaoshuai Shi大佬的另外一篇文章,Shaoshuai Shi大佬的主页介绍:https://shishaoshuai.com/

1. 背景

PV-RCNN++的基本原理延续这PV-RCNN:基于体素的策略可以更有效地编码多尺度特征,并从大规模点云生成高质量的3d候选框;而基于点的策略可以保留精确的位置信息,并具有灵活的感受野,用于细粒度的建议细化。

在PV-RCNN的基础上,PV-RCNN++对其进行了改进。改进的第一点就是关键点的采样,这里提出了分区关键点采样策略(sectorized proposal-centric keypoint sampling strategy),要比原始的距离最远点采样更加高效(D-FPS距离最远点采样的具有二次的算法复杂度)。改进的第二点是roi特征聚合的改进,这里提出了一个VectorPool聚合模块来替换SA层作用。具体来说,将局部空间进行voxel,然后利用独立的kernel weight分别对不同局部位置进行编码再拼接在一起。

对PV-RCNN进行的两点改进后,PV-RCNN++的速度提高了3倍,而且性能更佳。


2. 网络结构

paper中还包含着PV-RCNN的介绍,这里对其pass掉,直接介绍PV-RCNN++的结构。对于PV-RCNN的介绍可以查看之前的笔记。PV-RCNN++完整结构如下图所示:
在这里插入图片描述

可能由于nuSences与Waymo的单帧点云场景点数量过于庞大,相比之下KITTI数据集显得就比较小了,基于此原本的PV-RCNN会面临一个性能的问题,计算量过于复杂。为此PV-RCNN++提出了两个新模块来提高PV-RCNN的性能:一种是以分区为中心的关键点采样策略,用于更快更好地进行关键点采样;另一种是VectorPool聚合模块,用于更有效地从大规模点云中聚合局部特征。下面分别对其进行介绍。

2.1 Sectorized Proposal-Centric Sampling

距离最远点采样在之前的多个经典算法中都有使用到,作用是采样点云中的关键点。但其有两个缺点:
1)最远点采样的二次复杂度导致采样时间过长,影响了PV-RCNN的训练和推理速度,尤其是大规模点云上的关键点采样。
2)最远点采样将生成大量的背景点(这一点在3D-SSD中也有提及,其改进的方向是提出了特征最远点采样F-FPS辅助使用),这些背景关键点通常对候选框细化无用,因为RoI-grid pooling模块只能检索候选框周围的关键点。

为此,PV-RCNN++中提出了以提议为中心的过滤和分扇区的采样,其包括两个阶段:以提议为中心的过滤和扇区化采样。结构如下图所示,相关步骤画得相当清晰了。
在这里插入图片描述

Proposal-Centric Filtering

在原始的最远点采样中,会在整个3d点云场景以二次复杂度来遍历一个个获取点。这里引出了一个概念是,可以想减少关键点采样的区域,比如对每个候选框中心进行一定距离划分一个球状区域,来限制与缩小原始的采样区域,减少获得的背景点概率。
在这里插入图片描述

其中pi是原始点位置,cj是候选框中心位置,dj是候选框尺寸,rs是一个半径范围的超参数设置。通过对候选框划分采样的限制区域,可以大大的减少需要采样点的数量。比如在Waymo数据集中,采样点数量会从180k减低到90k以下。

因此,通过候选框中心区域来进行过滤限制采样范围,不仅降低了后续关键点采样的时间复杂度,而且集中在这些有限数量的关键点上可以更好地编码候选框ROI特征。

Sectorized Keypoint Sampling

在对点云场景进行区域限制后,下一步就是进行分区的操作。具体来说,对点云以场景中心为中心划分出s个扇区,这是通过bev视图对360°进行均匀的角度划分,公式如下:
在这里插入图片描述

这里的sk就表示了每个分区点集,从s/2π可以了解是全角度进行均匀分区。假设现在需要采样n个关键点,每个分区s需要采样的个数是按照过滤后的点集中占有比例来确定的,既:(sk/P’)*n。划分分区后,对每个分区进行距离最远点采样即可(距离最远点采样所获得的点是比较均匀的)。需要注意,在每个分区上进行D-FPS是可以在gpu上平行计算的,极大地加速了采样的效率。

从算法层面上来看,这里提出的采样方法将原始的采样规模P降低到了比其小得多的|sk’|中,不仅有效地加快了关键点采样的速度,而且将关键点集中到3D候选框的邻近区域,提高了关键点特征表示的能力。

2.2 VectorPool Aggregation

PV-RCNN中另外一个耗时耗资源的地方就是set abstraction(Keypoint-to-grid RoI Feature Abstraction部分),其利用了多层MLP结构分别处理邻域点集中的所有point-wise feature。此外,为了聚合邻域特征还使用了max pooling,paper提到set abstraction操作中的max pooling会丢失局部邻域的空间分布信息,损害局部聚合特征的表征能力。

为此,引出了另外一个模块。提出了一种基于VectorPool的大规模点云局部特征聚合模块,其能够更好地保持局部邻域点的空间分布,并且比常用的set abstraction操作占用更少的内存和计算资源。结构如下所示:
在这里插入图片描述

具体来说,对于候选框内的每一个目标点(target center points),需要利用周围的support points来聚合候选框的ROI信息。这里的具体操作是,对每一个目标点首先识别在其邻近区域内的立方体,具体公式如下:
在这里插入图片描述

其中(aj-qk)获取的是3d距离的最大轴对齐值(axis-aligned value)。随后和PV-RCNN类似,将这个邻域立方体切分成nxnynz大小的voxel组成。

现在需要对每个sub-voexl进行特征编码,简单的方法可以是去voxel内点特征的均值或者是随机采样一个点特征作为voxel-wise feature,但是这两种方法会在sub-voxel中产生大量的空特征降低算法性能。PV-RCNN++这里的编码方式是采取PointNet++中的反距离加权策略,从Yk中考虑k个(这里k=3)最邻近的点特征进行反距离加权来作为当前sub-voxel的voxel-wise feature。至此实现了对候选框中的每一个sub-voxel进行编码。

此外,不同局部位置的subvoxel可以表示不同的局部特征,因此这里还利用了单独的核权重对不同的局部位置的subvoxel进行编码操作。此时,对于每一个subvoxel的特征会加上其中心点与三个最邻近点的相对距离,两者进行concat再与核权重编码,公式如下所示。由于有三个临近点,所以(ai-vt)表征的相对位置特征信息维度为9。
在这里插入图片描述

随后,由于这里会考虑每个subvoxel的相对位置,所以会对每个候选框的subvoxel都进行排序操作,按照一定的位置关系进行排序拼接成一个hyper vector。
在这里插入图片描述

再利用多层MLP对这个hpyer vector进行编码操作,获得每个候选框的最终表征特征,来进行后续的Confidence Score以及Box Refinement预测。


3. 实验结果

感觉20/21年之后,3d检测主流的公开数据集使用的是nuScenes和Waymo,结果如下所示,可以注意到部分方法还利用到了多帧点云(太恐怖了,学不过来了…)。PV-RCNN++利用了多帧信息是要比单帧结果要好1-2%的。
在这里插入图片描述

其实在kitti上也做了性能测试,不过可能kitti性能已经接近饱和了,相对其其他的两个数据集也显得简单了一些。PV-RCNN++相比PV-RCNN并没有增加多少的点数。
在这里插入图片描述

此外,PV-RCNN++还同时测试了anchor-based策略(类似SECOND)与center-based策略(CenterPoint所提出),也证明了center-based策略更加有效,一般有1%以上的提升。正如CenterPoint中所说,得益于点的灵活性,避免了方向属性,减少了搜索空间。
在这里插入图片描述

还有其他的消融实验这里就不一一介绍,实验做得是非常充分。比如,paper中将分区采样与其他的一些采样方法进行了对比。
在这里插入图片描述

其他实验详细请查看论文。


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

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

相关文章

STM32F4 | GPIO工作原理和配置 | GPIO库函数 | IO口操作步骤

文章目录一、GPIO基础知识1.GPIO是什么?2.引脚和GPIO的区别和联系?3.绝多数引脚都是GPIO,有限的引脚怎么实现更多的功能?4. 怎么知道具体的芯片外设资源?5.怎么查看GPIO引脚功能?二、GPIO的8种工作模式三、GPIO寄存器…

腾讯Robotics X Lab低电压电刺激触觉方案,单手指25个电极

关于体感手套的案例,青亭网曾经报道过许多种,有低成本的DIY阻力模拟手套,也有价格昂贵的启动微流体VR手套方案,或是基于SMA驱动器、SMI压力传感器的手套技术。但是,要模拟人类体感系统多样且敏感的触觉体验&#xff08…

TI Lab_SRR学习_3 速度扩展_3完结篇 interFrameProcessing

这篇信息量有点大,为了方便理解,还是先把帮助理解的图放在这里。 MmwDemo_interFrameProcessing函数的代码比较长,分段来看。先将数据从1DFFT的结果从L3内存中的radarCube移动到L1内存中的dstPingPong。for循环表示每一个RangeBins都要进行多普勒FFT等处理。从这里开始,可以…

Java——反射详解

目录 一、概念 二、功能 三、反射相关的重要的类 3.1 class类 3.2 获取class类的方法 3.3 class类中的方法 3.4 Field类方法 3.5 打破封装 一、概念 反射库(reflection library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态…

口腔医院管理系统 | 口腔医院小程序 | 数字化门店转型

人们生活质量提升,在饮食方面不仅吃的饱,而且吃的好,相应的口腔问题就随之增多了,市面上的口腔医院不少,就诊的患者也不少。 目前,随着消费升级/互联网信息便捷化的大场景下,无论口腔门店经营还…

【Python项目】圣诞节快到了,Python基于海龟(turtle)实现的圣诞树效果,是好几个哟 | 附源码

前言 halo,包子们上午好 圣诞节快到了 今天我的好兄弟们安排了一波圣诞节的Python代码 主要是用海龟(turtle)画图实现的,非常简单的啦 话不多说,直接开整 相关文件 关注小编,私信小编领取哟!…

推动教育信息化2.0变革!重建5平方公里的实景三维校园....

当前,各地市智慧校园建设方兴未艾,随着《教育信息化“十四五”规划》的发布实施,明确指出要以人工智能、大数据、物联网、云计算等新兴技术为依托,推动教育信息化2.0变革,打造全新的教育生态模式,让校园变得…

Nacos配置管理

Nacos除了可以做注册中心&#xff0c;同样可以做配置管理来使用。 1.1.在nacos中添加配置文件 然后在弹出的表单中&#xff0c;填写配置信息&#xff1a; 1.2.从微服务拉取配置 1&#xff09;引入nacos-config依赖 <!--nacos配置管理依赖--> <dependency><gr…

简化基于Maven的Scala项目创建详解

使用 Maven 来构建 Scala 项目方便虽然方便&#xff0c;但依赖于每一个开发人员都去配置一遍项目的必要依赖&#xff0c;包括 Scala 插件的编译配置以及 Scala 的依赖类库&#xff0c;让每个人通过拷贝&#xff08;Copy&#xff09;之前的项目配置当然可以&#xff0c;但难免会…

二叉树与递归

前言 二叉树与递归 文章目录前言一、第一种方法1、如何思考二叉树相关的问题&#xff1f;1&#xff09;最大深度的定义2&#xff09;由具体到一般3&#xff09;公式4&#xff09;总结2、为什么需要使用递归&#xff1f;1&#xff09;循环和递归2&#xff09;递和归的过程3、为什…

GitHub上传文件和文件夹以及大于25M的单个文件

有好几个地方直接拖拽上传即可&#xff08;其中之一见下图&#xff09;&#xff0c;不管是文件还是文件夹目录结构不会变的。一次可上传的文件夹要求其内部的文件个数不超过100个&#xff0c;否则先GitHub上新建文件夹&#xff08;空文件的嘎货&#xff09;然后文件分批上传到G…

使用Python谋生的10种方法

这里本文的目录前言在质量保证部&#xff08;QA&#xff09;工作成为小型组织的IT员工为应用程序执行专业脚本管理网络教编程技能帮助人们决定位置执行数据挖掘与嵌入式系统互动开展科学任务进行数据实时分析零基础Python学习资源介绍&#x1f449;Python学习路线汇总&#x1f…

小程序ScrollView置顶只会成功一次,小程序如何做一键置顶?

现在会出现的问题就是点击置顶只会成功触发一次触顶 问题录像 置顶出现的问题为什么会出现这个问题呢&#xff1f; 先看看怎么控制scrollView实现置顶的。 scroll-top number/string 否 设置竖向滚动条位置scroll-view官网地址 通过动态的设置scroll-top来控制滚动条的位置…

Python编码问题整理

GB2312是中国规定的汉字编码&#xff0c;也可以说是简体中文的字符集编码 GBK 是 GB2312的扩展 ,除了兼容GB2312外&#xff0c;它还能显示繁体中文&#xff0c;还有日文的假名 cp936&#xff1a;中文本地系统是Windows中的cmd&#xff0c;默认codepage是CP936&#xff0c;cp936…

three.js之光源

文章目录简介分类环境光点光源平行光聚光灯光源辅助对象相关计算颜色计算阴影相关属性castShadowreceiveShadowshadowLightShadow基类专栏目录请点击 简介 光源是对于自然界光照的模拟&#xff0c;往往为了更好的渲染场景&#xff0c;需要设置不同的光源&#xff0c;设置不同的…

如何利用Python中的scipy做卡方检验?

1.简单介绍 卡方检验是一种用途很广的计数资料的假设检验方法。它属于非参数检验的范畴&#xff0c;主要是比较两个及两个以上样本率&#xff08;构成比&#xff09;以及两个分类变量的关联性分析。其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。 应用场…

【数据架构】如何通俗易懂的介绍数据模型

一直以来&#xff0c;如何和业务领导讲明白什么是数据模型&#xff0c;是沟通的一大难题&#xff0c;下面演示一个示例&#xff0c;仅供参考。 介绍抽象世界 先从大佬胡本立的《以人为中心的数据观》说起。这个世界可以划分为3个世界&#xff0c;一个是客观存在的客观世界&am…

Lecture3:神经网络与反向传播

目录 1.计算图 2.反向传播与计算图 2.1 第一个例子 2.2 第二个例子--sigmoid 2.3 第三个例子--MAX门 2.4 第四和例子--对于向量的梯度 3.神经网络 4.常见矩阵求导公式 4.1 标量对向量求导 4.2 二次型对向量求导 1.计算图 在实践中我们想要推导和使用解析梯度&…

SOLIDWORKS PDM 2023新功能 SOLIDWORKS本地数据管理优化升级

SOLIDWORKS 2023新版本已经与大家见面&#xff0c;今天众联亿诚与大家分享SOLIDWORKS PDM 2023新功能&#xff0c;让我们先一起来看看视频—— 点击观看SOLIDWORKS PDM 2023新功能 长期以来&#xff0c;SOLIDWORKS PDM Professional一直为SOLIDWORKS的本地数据管理制定标准。随…

centos8 离线安装redis的艰苦历程(gcc、make、redis)

目录 背景环境 一、安装gcc 二、安装make 三、安装redis 背景环境 服务器centos8&#xff0c;内网不能联网 本机Windows&#xff0c;能联网 一、安装gcc 1、下载rpm文件 比较恶心的是需要手动的搜索一个一个的下载。不要问我为什么知道的&#xff01;&#xff01;&…