[论文阅读]Point Density-Aware Voxels for LiDAR 3D Object Detection(PDV)

PDV

Point Density-Aware Voxels for LiDAR 3D Object Detection
论文网址:PDV
论文代码:PDV

简读论文

摘要

LiDAR 已成为自动驾驶中主要的 3D 目标检测传感器之一。然而,激光雷达的发散点模式随着距离的增加而导致采样点云不均匀,不适合离散体积特征提取。当前的方法要么依赖体素化点云,要么使用低效的最远点采样来减轻密度变化引起的有害影响,但在很大程度上忽略了点密度作为特征及其与 LiDAR 传感器距离的可预测关系。本文提出的解决方案,点密度感知体素网络 (PDV),是一种端到端的两阶段 LiDAR 3D 目标检测架构,旨在考虑这些点密度变化。 PDV 通过体素点质心有效地定位来自 3D 稀疏卷积主干的体素特征。然后,使用核密度估计 (KDE) 和具有点密度位置编码的自注意力,通过密度感知 RoI 网格池模块聚合空间局部体素特征。最后,利用 LiDAR 的点密度与距离关系来完善最终的边界框置信度。

引言

3D 目标检测是自动驾驶汽车领域的关键感知问题之一,因为目标姿态估计直接影响感知pipeline中下游任务的有效性。在自动驾驶传感器堆栈中,LiDAR 已成为用于 3D 目标检测的最流行的传感器之一,因为它可以通过激光产生准确的 3D 点云。
然而,对激光雷达数据的依赖是以点密度随距离变化为代价的。遮挡等其他因素也会产生影响,但最主要的原因是,随着距离的增加,激光雷达激光器之间的角度偏差会导致点的自然偏离。因此,距离较远的物体比距离激光雷达较近的物体返回的点要少。
基于体素的方法[Voxel r-cnn, Second, Cia-ssd, Voxelnet]通常忽略点密度,仅依赖于点云的量化表示。当提供高体素分辨率时,如 KITTI 数据集的情况,基于体素的方法 [Sessd] 优于基于点和基于点体素的方法。然而,在具有较大输入空间的数据集(例如 Waymo 开放数据集)上,由于内存限制,体素分辨率受到限制。因此,如图 1 (a) 所示,由于体素特征和点云之间的空间错位,精细的对象细节会丢失,从而导致性能下降。
在这里插入图片描述
其他方法 [Pv-rcnn, Pointrcnn] 试图通过最远点采样 (FPS) 来纠正点密度变化,如图 1 (b) 所示。虽然在非均匀分布的点云上的采样位置有效,但作为点云中计算点的数量的函数缩放比例很差,增加了运行时间并限制了第二阶段提案细化的采样点的数量。
点密度还会影响对较小物体(例如行人和骑自行车的人)的检测。这些物体与激光雷达的激光束相交的表面积较小,导致物体定位效果较差。也许信息丰富的是,当前最先进的方法在很大程度上忽略了行人和骑自行车者的检测性能,仅关注汽车或车辆类别[Voxel r-cnn, Pyramid r-cnn, Voxel transformer for 3d object detection, Sessd]。随着转向具有更高环境覆盖范围的数据集,架构必须能够扩展到更大的输入空间,并作为 3D 目标检测的多类解决方案。
因此,本文提出点密度感知体素网络 (PDV),通过利用体素点质心定位和直接考虑多类 3D 目标检测中点密度的特征编码来解决这些已识别的问题。贡献:

  • Voxel Point Centroid Localization. : PDV对每个非空体素中的LiDAR点进行分区,以计算每个体素特征的点质心,如图1©所示。通过使用点质心定位体素特征以进行第二阶段建议细化,PDV 使用点密度分布在特征编码中保留细粒度的位置信息,而不需要昂贵的点云采样方法(如 FPS)。
  • Density-Aware RoI Grid Pooling. : 本文增强感兴趣区域(RoI)网格池化[Pv-rcnn],将局部点密度编码为附加特征。首先,使用核密度估计(KDE)对每个网格点球查询处的局部体素特征密度进行编码,然后使用新颖的点密度位置编码在网格点之间进行自注意力[Attention is all you need]。密度感知 RoI 网格池化在整个区域提案的背景下捕获局部点密度信息,以进行第二阶段细化。
  • Density Confidence Prediction. : 通过使用最终边界框质心位置和最终边界框中原始 LiDAR 点的数量作为附加特征,进一步细化边界框置信度预测。因此,利用 LiDAR 建立的距离和点密度之间的内在关系来进行更明智的置信度预测。

PDV 在 Waymo 开放数据集上的表现优于所有当前最先进的方法,并在 KITTI 数据集上实现了有竞争力的性能。

相关工作

Point-based LiDAR 3D Object Detection. : 基于point的方法使用原始点云来提取点级特征以进行边界框预测。 F-PointNet在点云上应用 PointNet,通过基于图像的 2D 目标检测进行分割。 PointRCNN通过 PointNet++ 主干网直接生成点级 RoIs,并使用点级特征进行边界框细化。 STD 提出了用于RoI特征提取的PointsPool,而3DSSD在原始点云上采用了新的采样策略,为下采样点云中的对象保留足够的内部点。 Point-GNN 使用原始点云构建一个图,并聚合节点级特征来生成预测。基于point的方法利用昂贵的点云采样和分组,这不可避免地需要很长的推理时间。
Voxel-based LiDAR 3D Object Detection. : 基于体素的方法将点云划分为体素网格,直接应用 3D 和 2D 卷积来生成预测。 CIA-SSD 采用鸟瞰(BEV)网格上的光网络来提取鲁棒的空间语义特征,并带有置信校正模块以实现更好的后处理。 Voxel-RCNN 提出Voxel RoI pooling,通过聚合体素特征来生成RoI特征。 VoTr 提出了一种基于 Transformer 的 3D 主干作为标准稀疏卷积层的替代方案。基于体素的方法的性能受到量化点云的限制,因为细粒度的点级信息在体素化过程中丢失。
Point-Voxel-based LiDAR 3D Object Detection. : 基于point-voxel的方法利用点云的体素和点表示。 SA-SSD 在训练期间使用辅助网络,从中间体素层插入点级特征。 PV-RCNN 采用 RoI 网格池化来有效地将 FPS 采样的关键点特征聚合在每个边界框提案内均匀间隔的网格上。 PV-RCNN++ 提出了 FPS 的修改版本,以实现更快的点采样和用于 RoI 网格池化的 VectorPool 聚合。 CT3D 在每个边界框提案中构造一个圆柱形 RoI。它采用基于transformer的编码器-解码器架构,直接从附近点提取 RoI 特征,而不使用中间体素特征。 Pyramid-RCNN 将 RoI 网格池化的思想从一组均匀分布的网格扩展到不同尺度的多组网格,并具有自适应球查询半径,但计算成本明显更高。当前基于point-voxel的方法没有明确考虑每个 RoI 内点云密度的变化,并且由于依赖于点云采样,通常需要很长的推理时间。
Point Density Estimation. : KDE 使用一组有限的样本以及选定的核函数和带宽来估计随机变量的概率分布函数。有几种方法使用 KDE 在点云中进行特征编码。 MC Convolution 使用卷积积分的蒙特卡罗估计来处理非均匀采样点云,并使用 KDE 来估计局部卷积内点的可能性。 PointConv 也使用 KDE,但使用额外的前馈网络(FFN)估计每个样本的可能性。本文没有限制重新加权的密度估计,而是使用 KDE 作为密度感知 RoI 网格池化中每个网格点球查询中的附加功能。

方法

PDV
PDV 使用具有 3D 稀疏卷积主干的两阶段方法来进行初始边界框建议,然后在第二阶段通过每个体素层中的体素特征和原始点云数据进行细化。图 2 显示了 PDV 框架的概述。

3D Voxel Backbone

本文使用与 SECOND 类似的体素骨干进行初始边界框提议。PDV 的输入是点云,它被定义为一组 3D 点 {pi = {xpi , fpi} |i= 1,,,Np} 其中 xpi ∈ R3 是 xyz 空间坐标,fpi ∈ RF 是附加特征,例如每个点的强度或伸长率,Np 是点云中的点数。首先,点云被体素化,随后使用一系列 3D 稀疏卷积进行编码,然后是用于初始边界框提案的区域提案网络 (RPN)。每个体素层具有不同的空间分辨率,根据原始体素网格大小具有 1x、2x、4x 和 8x 下采样分辨率。每层中的体素特征用于第二阶段的边界框细化。

Voxel Point Centroid Localization

受 KPConv 中网格子采样的启发,体素点质心定位模块在空间上定位非空体素特征,以便在密度感知 RoI 网格池中进行聚合。
令 Vl = {Vlk = {hVlk , fVlk} | k = 1,,,Nl} 是第 l 体素层中的非空体素集合,其中 hVlk 是 3D 体素索引,fVlk 是相关体素特征向量,Nl 是体素层 l 的非空体素数量= 1,,L。首先,通过根据空间坐标 xi 和体素网格维度计算它们的体素索引 hVlk,将同一体素内的点分组到集合 N(Vlk) 中。然后计算每个体素特征的点质心:
在这里插入图片描述
由于卷积层中的体素是稀疏格式,因此使用中间哈希表来有效地将每个计算的体素点质心映射到其相应的特征向量。如图 3 所示,体素点质心和稀疏体素特征都与共享体素索引相关联。中间哈希表使用匹配的体素索引hVlk 将质心cVlk 与Vlk 链接。
在这里插入图片描述
使用体素的一个优点是,可以使用先前的体素层质心计算,根据卷积块的步长、填充和内核大小有效地计算后续体素点质心。令 Cl+1 k = {cVlj | Kl+1(hVl j ) = hVl+1 k } 是体素点质心的集合,其中 Kl+1 是将体素索引 hVl j 映射到 hVl+1 k 的卷积块。然后,可以对分组的体素点质心进行加权平均,以计算后续层中的质心:
在这里插入图片描述
通过避免使用每层的整个点云重新计算质心,体素点质心定位可以更有效地扩展到更大的点云。

Density-aware RoI Grid Pooling

密度感知 RoI 网格池化建立在 RoI 网格池化的基础上,通过结合 KDE 和自注意力来增强池化方法,将点密度特征编码到每个提案中。首先,U ×U ×U 均匀网格点 Gb = {g1, , , gU3} 对每个边界框提案 b 进行采样。
Local Feature Density. : 本文使用 KDE 来估计每个网格点球查询中的局部特征密度。密度感知 RoI 网格池化不像 MC Convolution 和 PointConv 那样将估计密度限制为特征重新加权,而是将估计概率密度编码为球查询中的附加特征,以实现更隐式的特征编码。首先,聚合每个网格点附近的相邻特征,其中 N(gj) 是以 gj 为中心、半径为 r 的球体中的体素点质心集:
在这里插入图片描述
其中局部偏移 cVl k − gj 和似然性 p(cVl k |gj) 作为附加特征附加,如图 4 所示:
在这里插入图片描述
使用 KDE 计算每个网格点的似然度:
在这里插入图片描述
一旦附加了特征,PointNet 多尺度分组(MSG)模块用于获取每个网格点 gj 的特征向量 fl gj :
在这里插入图片描述
本文使用多个半径 r 来捕获每个网格点不同尺度的特征密度,并将输出特征连接在一起。最后,从不同体素层附加特征以获得每个网格点的最终特征:
在这里插入图片描述
Grid Point Self-Attention. : 每个 RoI 网格点编码的特征都局限于球查询的大小,但不同网格点之间缺乏相互依赖的关系。一个简单的解决方案是使用自注意力来捕获网格点之间的远程依赖关系,但简单地添加注意力模块缺乏LiDAR点云的几何信息。因此,本文还引入了一种新型的位置编码,它考虑了点云内的点密度。
在这里插入图片描述
如图5所示,自注意力模块在非空网格点特征之间进行自注意力,使用标准 Transformer 编码器层和类似于非局部神经网络块的残差连接:
在这里插入图片描述
其中 Tgi 是 fgi 的 Transformer 编码器层输出,~fgi 是输出网格特征。空网格点特征|N(gi)| = 0 不受自注意力模块影响,并保留其原始特征编码。
Point Density Positional Encoding. : 通过使用局部网格点位置和框提案中的点数将位置编码添加到自注意力模块中。使用相同的 U×U×U 网格分辨率将边界框提案划分为体素 Vgj 来为每个网格点建立体素。每个网格特征的位置编码计算如下:
在这里插入图片描述
其中 δgj = Xgj −Cb 是 gj 与边界框提案质心 cb 的相对位置,|N(Vgj )|是每个网格点体素 Vgj 中的点数,并且 ϵ 是常数偏移。通过利用每个体素内的局部偏移和点数,密度感知 RoI 网格池能够捕获每个区域提案内的点密度。

Density Confidence Prediction

PDV 还利用扫描对象上的距离和 LiDAR 点数量之间的关系来预测最终边界框预测的置信度。共享 FFN 首先对来自密度感知 RoI 网格池模块的扁平化特征进行编码。然后,两个独立的 FFN 分支对框细化和框置信度输出的特征进行编码。在框置信度分支中,另外附加两个特征来预测最终边界框 ∼b 的输出置信度 p∼b:
在这里插入图片描述
其中 fs b~ 是共享 FFN 的输出特征向量,cb~ 是最终边界框的质心,|N(~b)|是最终边界框中的原始点数。

Training Losses

本文对 PDV 使用端到端训练策略,并联合训练区域提案损失 LRPN 和提案细化损失 LRCNN。 LRPN 计算如下:
LRPN
其中Lcls是focal loss,Lreg是smooth-L1损失,yb是预测的类向量,y⋆b是地面真值类别,rb是预测的RoI锚残差,r⋆b是地面真值锚残差,β 是比例因子。 LRCNN 的组成为:
LRCNN
其中 p⋆ b~是由 3D RoI 及其相关的地面真实边界框缩放的置信度训练目标,如 PV-RCNN中所做的那样。因此 LRCNN 是:
LRCNN
其中 r b~ 是预测的边界框残差,r⋆b~是地面真实残差。 smooth-L1 损失用于回归边界框残差。使用与 PV-RCNN 相同的置信度和回归目标。

结论

本文提出了 PDV,一种新颖的 LiDAR 3D 物体检测方法,该方法使用体素特征和原始点云数据来解释 LiDAR 点云中的点密度变化。 PDV 在点云采样成本昂贵且体素分辨率较低的大型输入空间中特别有用,从而在 Waymo 数据集上实现最先进的性能,并在 KITTI 数据集上获得具有竞争力的结果。

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

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

相关文章

sharepoint2016-2019升级到sharepoint订阅版

一、升级前准备: 要建立新的sharepoint订阅版环境,需求如下: 1.单服务器硬件需求CPU 4核,内存24G以上,硬盘300G(根据要迁移的数量来扩容大小等); 2.操作系统需要windows server 20…

yum--centos 和apt --ubuntu

centos安装软件 搜索语法:yum -y search 软件名称 安装软件前可以先去搜一下看看能用yum中有这个软件吗 安装语法:yum -y install 软件名称 写上 -y 意思是不用手动确认,直接安装 卸载语法:yum -y remove 软件名称 注…

Linux系列讲解 —— VIM配置与美化

目录 1. Vim基本配置2. 插件管理器Vundle2.1 下载Vundle2.2 在vimrc中添加Vundle的配置 3. Vundle的使用3.1 安装常用插件3.1.1 NERDTree 3.2 卸载插件 1. Vim基本配置 1.1 配置文件 vim的配置文件有两处,请根据实际情况选择修改哪个。 (1) 全局配置文件&#xff…

JVM相关的面试题

一、什么是程序计数器 二、简要的介绍一下堆 三、什么是虚拟机栈 四、能不能解释下方法区 五、你听过直接内存吗? 六、什么是类加载器,类加载器有哪些 七、什么是双亲委派模型 八、JVM为什么采用双亲委派机制 九、类装载的执行过程 十、对象什么时候被垃…

MATLAB中创建并计算多项式

目录 表示多项式 多项式的计算 此示例说明如何在 MATLAB 中将多项式表示为向量以及根据相关点计算多项式。 表示多项式 MATLAB 将多项式表示为行向量,其中包含按降幂排序的系数。例如,三元素向量 p [p2 p1 p0]; 表示多项式: 创建一个向量…

使用BufferWriter进行文件的写入操作

public class BufferedWirter_ {public static void main(String[] args) throws IOException {String filepath "e:\\ABC.txt";//创建BufferedWrite对象BufferedWriter bufferedWriter new BufferedWriter(new FileWriter(filepath,true));//BufferedWriter 并没有…

pycharm运行R语言脚本(环境安装)

文章目录 简介1. pycharm安装插件2. 安装R语言解释器2.1下载安装包2.2具体安装过程 3.编辑环境变量4.pycharm中配置安装好的R语言解释器 简介 pycharm 安装 R language for Intellij R language for Intellij 是一个插件,它为Intellij IDEA集成开发环境添加了对R语…

PowerPC T2080部分板卡产品介绍

T2080是NXP公司PowerPC T系列的中高端芯片,它具备4核8线程的E6500 高性能CPU核,同时具备8组10Gb和8组8Gb Serdes Lanes,Serdes可复用成SRIO、PCIE、XFI、SGMII接口,因此T2080具有很强的数据处理能力和广泛的总线互联能力。 科技的…

elementui时间日期组件右边自定义图标

效果 改为 首先是将左边的清除图标关闭 然后是将右边的图标设置为display:none,设置宽度,左右内边距 最后是 mounted() {/*思路:通过document文档,选中日期时间选择器元素,然后创建一个i标签,并指定其类…

OkHttp网络框架深入理解-SSL握手与加密

OkHttp简介 由Square公司贡献的一个处理网络请求的开源项目,是目前Android使用最广泛的网络框架。从Android4.4开始HttpURLConnection的底层实现采用的是OkHttp。 特点: 支持HTTP/2并允许对同一主机的所有请求共享一个套接字通过连接池,减少了请求延迟…

ENSP模拟CE12800 SSH一键配置小工具

平时做自动化开发实验都是以SSH连接为基底的,经常做完一个实验新建实验又要去重新配置SSH,就会比较麻烦,所以自己做了个偷懒小工具分享给大家 使用方法: 1.小工具图 2.拓扑图 拓扑图 保证1/0/0口和云连接 3.小工具各个控件介绍 3.1 串口号:右键点击拓扑图中的12800交换机,…

Unity Shader Graph 风格化熔岩

Unity ShaderGraph 合集_哔哩哔哩_bilibili

设计模式——UML类图

目录 UML类图介绍UML图UML图的分类 关系依赖关系泛化关系实现关系关联关系聚合关系 UML类图 介绍 uml(统一建模语言),是一种用于软件系统分析和设计的语言工具,他用于帮助软件开发人员进行思考和记录思路的结果UML本身是一套符号的规定,就像…

Linux - 进程状态 - Linux 当中的进程状态是如何维护的?

进程状态 一个进程在 系统当中有很多的状态,比如:一个进程正在被cpu执行,那这个进程就是一个 r 状态;一个进程已经准备好了,但是其中的运行这个进程需要的资源没有准备好,那么这个进程一人不能运行。 比如…

如何在群晖NAS中搭建WebDav服务,并实现公网访问

🎬 鸽芷咕:个人主页 🔥 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后,启动webdav服务,并勾选HTTP复选…

物流数字化转型有什么意义?

物流领域的数字化转型具有深远的意义,因为它彻底改变了供应链中的货物和信息流动方式。这一转变是由数字技术集成推动的,旨在提高效率、可见性和客户满意度。以下是其重要性的一些关键方面: 1.提高效率和降低成本:数字化转型通过…

使用了lua-resty-http库进行 爬虫

lua-resty-http是一个基于OpenResty的HTTP客户端库,用于在Lua中进行HTTP请求和响应的处理。它提供了简单易用的接口,可以方便地进行网页抓取和爬虫开发。 使用lua-resty-http进行爬虫,需要先安装OpenResty和lua-resty-http库,并将…

Hadoop 请求数据长度 Requested Data length 超过配置的最大值

一、问题 现象 Spark 任务速度变慢,也不失败。 DataNode 内存足够 CPU 负载不高 GC 时间也不长。 查看 DataNode 日志,发现有些日志出现很多 Netty RPC 超时。超时的 destination 是一个 NameNode 节点,然后查看 NameNode 节点的日志&…

Java支付宝沙箱环境支付,官方Demo远程调试【内网穿透】

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

Unity的碰撞检测(四)

温馨提示:本文基于前一篇“Unity的碰撞检测(三)”继续探讨两个游戏对象具备刚体的触发检测,阅读本文则默认已阅读前文。 (一)测试说明 在基于两个游戏对象都具备触发器和刚体且属性一致的条件下,若二者刚体的BodyType…