首页 > 其他分享 >PV-RCNN

PV-RCNN

时间:2024-03-12 18:34:18浏览次数:28  
标签:Voxel 候选框 PV 特征 尺度 RCNN 3D 关键点

PDF:https://arxiv.org/pdf/1912.13192.pdf
CODE: https://github.com/sshaoshuai/PV-RCNN

一、大体内容

前面介绍了基于Point的3D目标检测网络(PointRCNN、3DSSD)以及基于voxel的3D目标检测网络(VoxelNet、SECOND、PointPillar),基于Voxel的方法比较高效,其多尺度的特征可以生成较高质量的候选框,但是在点云转换成Voxel时会丢失精度,基于Point的方法精度高但是有较高的计算成本,因此作者结合基于Point和基于Voxel方法的优势,提出新的两阶段目标检测框架PV-RCNN。

第一阶段先将原始点云转换为Voxel,在下采样的同时借助稀疏卷积提取得到Voxel不同尺度的特征,最后的特征层投影到鸟瞰图视角,使用Anchor-Based的方法预测候选框和类别,另外一个分支对原始点云按照FPS进行采样,并通过Voxel-to-keypoint提取不同阶段的Voxel特征并将其作为这些关键点的多尺度特征.
第二阶段是将3D获选框和关键点特征进行进行融合,这里作者提出了一个新的Rol-Grid Pooling模块来完成特征融合,之后再经过FC层进行特征提取,最后分别输入到框回归分支以及置信度分支。

从下图可以看出来,图的上面一块主要是基于Voxel进行特征提取,其主要特点就是下方的关键点分支,包括如何给关键点分配多尺度Voxel特征,如何和3D候选框进行特征融合。

二、贡献点

  • 提出PV-RCNN框架,结合了基于Voxel和基于Point方法的优势,在KITTI数据集上取得了非常显著的效果,比之前的方法有较大的提升
  • 提出Voxel-to-keypoint的编码方法,获取关键点的voxel特征,既保留了位置信息又拥有丰富的全局信息
  • 提出Keypoint-to-grid RoI将3D候选框和对应的关键点特征进行融合,提升了目标检测算法的性能

三、细节

1. 体素化及特征提取

点云空间首先被划分成L * W * H的体素格子,非空体素的特征为内部所有点特征的均值。然后采用4组3 * 3 * 3的稀疏卷积对特征进行降采样,分别得到1X,2X,4X, 8X的特征,这里面稀疏卷积原文中没有提,可以参考SECOND里面的稀疏卷积,主要目的是用来加速模型推理过程,并且可以减少内存占用。其大体思想先像普通卷积一样先扫描一遍,构建输入输出规则索引矩阵(这里不做具体计算,只记录输入和输出索引对应的关系),在真正做卷积时就可以跳过不需要计算的0元素,计算完成后再借助索引矩阵恢复至输出相应位置。

2. 候选框生成

8倍下采样的特征按照Z轴投影得到\(\frac{L}{8} \times \frac{W}{8}\)得到2D特征图,然后基于Anchor-based方法,每个类别的Anchor大小参照每个类别的平均大小,还有0和90度两个方向,共得到\(2 \times \frac{L}{8} \times \frac{W}{8}\)个Anchor,基于这些Anchor回归出3D候选框。

实验也表明这种候选框生成方式具有更好的效果。

3. 为什么要引入关键点

目前大多数精度高的工作都采用了two-stage框架,也就是需要优化(refine)。作者认为存在以下两个问题

  • 如果采用传统RoI Pooling的方式,经过8倍降采样后会使得分辨率很低,无法表示精确的位置;
  • 即使可以上采样获得更大空间尺寸的特征图,特征图通常相当稀疏,RoIPooling/RoIAlign操作中常用的三线性或双线性插值只能从非常小的领域提取特征。因此,传统的池化方法将获得大部分为0的特征,浪费内存和计算资源。
    有些直观的方法是直接聚合多尺度特征,然后输入到后续优化步骤,但是这种策略通常占用大量内存,所以作者引入了关键点,首先得到一些可以代表完整点云的关键点,然后将关键点的特征集成到后续框优化网格中进行处理,这样既节省内存也保留了丰富的特征。

4. Voxel-to-keypoint的编码

这一步的目的是把提取到的多尺度特征分配给少量的关键点,利用这个关键点特征让3D多尺度特征和后续候选框强化进行连接。

  • 关键点采样
    直接采用最远点采样方法,对于KITTI数据集实验采用的是2048个关键点,对于Waymo数据集选择的是4096个关键点。

  • Voxel Set Abstraction(VSA)模块
    这个模块负责把多尺度特征分配给采样的关键点,下方公式其大体思路就是在每一尺度特征下,找出关键点一定范围内的Voxel,并记录这些voxel的特征,

然后借助PointNet模块对这些voxel特征进行进一步提取,将其作为该尺度下这个关键点的特征。

最后在将不同尺度的特征进行拼接,得到关键点的多尺度特征。

  • 扩展的VSA模块
    为了使得关键点特征更加丰富,利用PointNet模块在关键点上提取原始点云特征\(f^{raw}\),可以弥补点云体素化带来的损失,进一步的在2D BEV特征图上采用双线性插值得到关键点投影到BEV上的特征\(f^{bev}\),可以增大在z轴的感受野。
    最终关键点的特征由原始点云特征\(f^{raw}\)、体素多尺度特征\(f^{pv}\)、鸟瞰图特征\(f^{bev}\)三部分组成:


    在实验阶段还给出了不同特征组合的效果对比。

  • 预测关键点权重Predicted Keypoint Weighting(PKW)
    前面提到关键点是通过FPS采样得到的,这里面可能有一些背景点,但背景点对于后续优化候选框是没有什么用的,因此这里作者设计了一个网络给不同的关键点赋予不同的权重,其目的是让前景点的权重更高

    在训练阶段,其标签采用的是关键点是否在3D GT Box内部,然后采用Focal Loss损失函数预测得到一个权重系数,最后关键点的特征再乘上这个系数作为后续候选框优化。

5. Keypoint-to-grid RoI

其目的是将3D候选框和对应的关键点特征进行融合,进而提升了目标检测算法的性能。

大体可以分为以下三步:

  • 先将每个3D候选框按6 * 6 * 6划分成不同的网格,共216个格子。
  • 确定每一个网格点一定邻域内的关键点,然后再用一个PointNet模块将特征整合为网格点的特征。
  • 得到了所有的网格点(grid-point)的特征后,作者采用两层的感知机得到256维度的proposals的特征。

6. 预测分支

前面得到了每个3D候选框的特征后,经过两层MLP,然后再借助Box优化分支预测出框的大小、方向及位置信息,经过confidence分支预测出框的置信度。

四、效果


标签:Voxel,候选框,PV,特征,尺度,RCNN,3D,关键点
From: https://www.cnblogs.com/xiaxuexiaoab/p/18065894

相关文章

  • 简述kube-proxy ipvs和iptables的异同
    iptables与IPVS都是基于Netfilter实现的,但因为定位不同,二者有着本质的差别:iptables是为防火墙而设计的;IPVS则专门用于高性能负载均衡,并使用更高效的数据结构(Hash表),允许几乎无限的规模扩张。与iptables相比,IPVS拥有以下明显优势:为大型集群提供了更好的可扩展性和性能;支持比iptabl......
  • Go语言精进之路读书笔记第48条——使用expvar输出度量数据,辅助定位性能瓶颈点
    48.1expvar包的工作原理Go标准库中的expvar包提供了一种输出应用内部状态信息的标准化方案,这个方案标准化了以下三方面内容:数据输出接口形式输出数据的编码格式用户自定义性能指标的方法import(_"expvar""fmt""net/http")funcmain(){http.Hand......
  • pve硬件直通
    1、输入以下命令nano/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT="quiet"改为:GRUB_CMDLINE_LINUX_DEFAULT="quietintel_iommu=on"编辑完文件后按“Ctrl+X”>“Y”>“回车”,继续输入以下命令。2、在PVE的shell中输入:nano/etc/modules在文件下面添加新内容vfiovf......
  • 使用贴现率8%和12%分别计算每个项目的净现值(NPV)
    具体代码packageorg.example;importjava.math.BigDecimal;//使用贴现率8%和12%分别计算每个项目的净现值(NPV)publicclassMain{publicstaticvoidmain(String[]args){int[]a1=newint[]{-100000,10000,10000,10000,20000,100000};int[]a2......
  • vue使用超图openlayers调用mapv实现蜂窝图
    在用超图openlayer开发的时候遇到问题,在此作为记录。文字描述不对的地方请多担待, 下载依赖,npmimapv 按需引入,因为官网例子是普通的html引入,{mapv}引入方式调用的是超图@supermap中的方法。DataSet是mapv的方法 import{Mapv} from'@supermap/iclient-ol/overla......
  • Windows 操作系统中,Internet 协议版本 4 (TCP/IPv4) 的配置信息通常是保存在注册表中
    %SystemRoot%\system32\tcpipcfg.dll%SystemRoot%\system32\drivers\tcpip.sysSystem32\drivers\tcpip.sys%SystemRoot%\System32\wshtcpip.dll%SystemRoot%\System32\mswsock.dll%SystemRoot%\System32\perfnet.dll%SystemRoot%\System32\wsock32.dll......
  • 深度学习-卷积神经网络-Faster RCNN anchor详解-53
    目录1.Anchor参考:https://zhuanlan.zhihu.com/p/86403390?utm_id=01.Anchor我第一次接触Anchor(中文叫做锚)的时候,比较懵逼的,什么是锚这个问题让思考了好久,这也是阻碍大家学习FasterRCNN最大的绊脚石索性我们就先把anchor理解为一个个按照固定比例(长宽、大小)预定义的框lib/ne......
  • IPv6中使用RIP
    随着IPV4的地址的短缺,现在部分企业已经开始使用IPv6地址。但面临IPv4往IPv6地址的迭代,会发现在IPv4中协议配置方法和IPv6中协议配置方法是有一定区别的。本篇记录IPv6中如何应用RIP协议在ipv6rip中,在rip下没有network参数,它和ipv4的配置方法有区别。在ipv6中通告路由是在接口下......
  • PointRCNN
    PDF:https://arxiv.org/pdf/1812.04244.pdfCODE:https://github.com/sshaoshuai/PointRCNN?tab=readme-ov-file大体内容PointRCNN和前面提到的VoxelNet、SECOND、PointPillar一阶段模型不同,如下图所示PointRCNN将目标检测任务分为两个阶段,第一个阶段借助点云分割得到前景点以......
  • K8S测试lcoal StorageClass PVC
    测试lcoalStorageClassvilocal-path.yaml---apiVersion:v1kind:PersistentVolumeClaimmetadata:name:local-path-pvcspec:storageClassName:nfs#<===使用哪个SCaccessModes:-ReadWriteOnceresources:requests:storage:10Gi---......