【3D目标检测】PV-RCNN

概述

首先,本文是基于点云,并且将点云处理成体素的3D目标检测网络。
本文贡献如下:

  1. PV-RCNN融合了点云特征提取中基于体素方法和基于点方法的思想,进一步提高检测的性能。
  2. 提出了一种voxel-to-keypoint的编码方法,该方法将一帧内的多尺度体素特征编码为一系列的关键点中。这些关键点不仅保留了准确的位置信息,还拥有丰富的全局信息,可以提高三维检测性能。
  3. 提出了一种在proposal中使用的多尺度的RoI特征提取层 (keypoint-to-grid RoI feature abstraction)。该层可以通过多个感受野提取丰富的上文信息,用于优化预测框和置信度评分。

为什么要融合?因为基于体素的方法可以得到高质量的候选框而基于点的方法具有灵活的感受野(SA模块,丰富的上下文信息有利于精确定位)
如何融合:直观的思路是将SA作用到候选框中,也就是对每个候选框都做SA得到特征,再基于这些特征做bbox的微调。但这个做法太过浪费时间和空间了,无法接受。作者给出的方法就是voxel-to-keypointkeypoint-to-grid RoI

细节

网络结构

  1. 将点云均匀划分为体素,并通过稀疏卷积网络进行特征提取,并将最终的特征图投影到鸟瞰图上,利用鸟瞰图进行anchor的分类以及候选框的生成
  2. 使用FPS算法从原始点云中采样关键点,利用关键点在系数卷积的每个stage提取多尺度特征(voxel-to-keypoint)
  3. 对候选框采用keypoint-to-grid RoI,得到候选框特征,基于这个特征以及第二步中的多尺度特征进行bbox的分类与位置的回归
    在这里插入图片描述

voxel-to-keypoint Scene Encoding

这部分的核心是VSA模块。
VSA模块:将体素的特征聚集到关键点上,而关键点是通过FPS算法(链接)从原始点云中得到的。其实VSA和pointnet++中的SA很像,只是VSA聚集的是体素而SA聚集的是点,另外体素是有结构特点的,周围体素寻找比较方便,而寻找周围点则需要遍历点云。
关键点的作用:关键点特征将和候选框特征一起用于最后的bbox分类以及位置的回归。
在使用稀疏卷积的时候,我们对3D体素进行了3次下采样,得到了4个不同尺度的体素特征,在这四个不同尺度体素特征上分别使用VSA即可得到四组不同尺度的关键点特征。
在这里插入图片描述
VSA的流程:首先寻找关键点周围一定范围内的体素,给他们添加三个额外的特征就是相对于关键点的距离( Δ x 、 Δ y 、 Δ z \Delta x、\Delta y 、\Delta z ΔxΔyΔz),然后使用类似于point的操作将这些体素向量聚合成一个向量作为当前关键点的特征。上面说了,每个尺度体素上都会进行聚集操作,也就是每个关键点会对应4个不同尺度的特征,将他们concat起来就是每个关键点对应的最终特征。
在这里插入图片描述
Extended VSA:在原始点云和鸟瞰图中同样进行聚集操作得到关键点的特征,将他们与稀疏卷积中得到的关键点特征做拼接,就能得到更加丰富的关键点特征。

关键点加权模块:因为关键点是在原始点云中通过FPS得到的,但是由于被选出的更多是背景点而不是前景点(因为背景点远远多于前景点),显然将前景点作为关键点得到的特征会更管用,所以这边设计了一个加权模块,凸显关键点中的前景点,抑制关键点中的背景点。这部分是一个3层感知机+sigmod函数的简单结构,用于判断点是背景点还是前景点。ps:前景点是指那些在3D gt box当中的点,反之就是背景点。
在这里插入图片描述

Keypoint-to-grid RoI Feature Abstraction

RoI-grid pooling:对于每个3D候选框,首先将它均匀分为 6 ∗ 6 ∗ 6 6*6*6 666个网格。我们给每个网格周围一段距离的关键点都添加一个特征,就是这个关键点相对于网格的距离,得到新的关键点特征。然后就像采用类似于pointnet的方式聚合这些新的关键点的特征,得到网格对应的特征。当然这里也有一个操作,就是采用多个距离,并将各自的结果拼接,得到多尺度的网格特征。接着将所有的网格特征展平并且通过两层MLP就可以得到最终的候选框特征了。

下一步是根据候选框特征得到分类和位置回归的结果了。

注:其实这边是可以直接在3D稀疏卷积得到的特征图中去得到候选框特征的,然后使用一个ROI池化得到固定长度的候选框特征,像是Faster RCNN一样做。但是作者认为1、在降采样的过程中丢失了很多有效的位置信息。2、空间中的数据是稀疏点,所以每个特征对应的感受野实际上是非常小的,这不仅浪费计算资源,而且效果差。所以就提出了本文中的RoI-grid pooling操作。

损失函数

主要是三部分:第一部分就是RPN网络的损失,第二部分是关键点的二分类损失(关键点加权模块),第三部分就是最终的分类损失和bbox回归损失。

参考文章

https://blog.csdn.net/qq_41366026/article/details/123349889

https://zhuanlan.zhihu.com/p/508008550

https://zhuanlan.zhihu.com/p/435867918

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值