【论文阅读】PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection

模型名称:PV-RCNN

Point-Voxel Feature Set Abstraction for 3D Object Detection


主要贡献和特点

  1. PC-RCNN模型在特征提取中结合了基于voxel的方法和基于point的方法,取得较好的目标检测结果;

    3D voxel方法仅提取局部特征,但卷积高效
    point-based方法计算量大,但感受野可变
    因此结合了两种检测方法可以更准确、细粒度的优化box预测结果
    
  2. 提出voxel-to-keypoint方案(voxel集合抽象层),用于融合多尺度的3D voxel CNN特征和基于PointNet的点特征为关键点集合;

    作者表示,keypoint features不仅可以保留精确的位置信息,还有丰富的场景信息,可以优化预测结果。
    
  3. 提出ROI-grid pooling层(多尺度的ROI特征抽象层),用于将关键点集合转化为ROI-grid points,用于细粒度的框预测优化和置信度预测;

  4. 在KITTI数据集和Waymo数据集上都取得了优异的效果。


主流方法分析

为了更好的预测box,目前出来了很多两阶段的3D检测框架,这些框架要么是基于3D voxel + sparse CNN的,要么是基于PointNet网络的。前者更高效,而且也能得到很好的结果,后者能更提取更准确的信息。

3D voxel CNN

将空间划分为一个个体素,通过稀疏卷积、下采样最终编码为voxel-wise feature vetors。

3D proposal generation

通过8x的下采样,将3D特征转换为2D鸟瞰图样式的特征,再通过基于anchor的方法进行proposal。每一个类别有两个anchor,大小一样,为训练数据的平均大小,角度分别为0°和90°。anchor分布再bird-view feature map上的每一个像素点上。
通常来说,基于3D voxel+anchor框架的方法的召回率都会比基于Pointnet的方法高。

two-stage frameworks

目前的两阶段的方法,通常是将3D特征块或2D特征图来pooling RoI specific features,来优化box的框回归。
3D的特征块回归的主要缺陷为:
(1)由于被下采样过,特征的空间分辨率低,定位的准确性有损失。
(2)即使可以通过上采样来获取更大空间的特征,得到的仍然是很稀疏的特征。因为最常用的方法是通过双线性或三线性插值,通常这些方法也只参考4/8个邻近点,仍然扩大不了什么特征的空间区域。而且很多特征都是零值,插值也没什么用,还浪费计算力和内存。类似RoI Align的方法。

那么基于PointNet的方法优势就出来了,基于PointNet的方法有很强的特征编码能力,可以将任意大的邻近范围内的特征进行编码。
最朴素的想法就是每个voxel和每个box proposal绑定进行特征融合编码来获取全局信息,但是这样计算量太大了,没有可实时性。

本文方法

最终,作者就选择一种策略选取少量的全局关键点,再将keypoint feature整合成ROI grid用于优化box proposal。



网络架构

1. 场景关键点特征 (Voxel-to-keypoint Scene Encoding via Voxel Set Abstraction)
1.1 FPS 最远点采样
  • 简介
    在 PointNet++ 中用到了FPS(Farthest Point Sampling) 最远点采样法,该方法比随机采样的优势在于它可以尽可能的覆盖空间中的所有点。

  • 实现步骤
    假设一共有n个点,整个点集为N = {f1, f2,…,fn}, 目标是选取n1个起始点做为下一步的中心点:

    参考链接

    1. 随机选取一个点fi为起始点,并写入起始点集 B = {fi};
    
    2. 选取剩余n-1个点计算和fi点的距离,选择最远点fj写入起始点集B={fi,fj};
    
    3. 选取剩余n-2个点计算和点集B中每个点的距离, 将最短的那个距离作为该点到点集的距离, 这样得到n-2个到点集的距离,选取最远的那个点写入起始点B = {fi, fj ,fk},同时剩下n-3个点, 如果n1=3 则到此选择完毕;
    
    4. 如果n1 > 3则重复上面步骤直到选取n1个起始点为止.
    
  • 作用
    采用FPS,KITTI数据集点云保留关键点个数为2048,waymo数据集点云关键点数为4096个点,用关键点代表整个场景的特征信息。

1.2 VSA - Voxel Set Abstraction Module
  • 方法
  1. 以FPS得到的keypoints为中心,划一个半径R的球,将里面包含的非空的voxel作为一组,得到多个体素特征组合的体素级特征向量;
    在这里插入图片描述
    在这里插入图片描述

  2. 每一层的Spase CNN的特征图都经历上述两个步骤,最后所有层的特征拼接起来。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hnJH53U5-1600064716198)(/media/elodie/Ba在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 作用
    将3D CNN得到的多尺度特征编码为keypoints feature

1.3 关键点权重学习PKW - Predicted Keypoint Weighting

考虑到keypoints中有的是背景点,有的是前景点,两者对box优化的权重应该前者低,后者高。因此加入PKW模块对keypoints的权重进行学习和调整。
在这里插入图片描述
在这里插入图片描述


2. 关键点转网格RoI特征 (Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement)
2.1 RoI-grid Pooling via Set Abstraction.

对于每一个3D proposal,运用RoI-grid pooling来整合keypoints features得到RoIf eatures。
先前的方法通常是将proposal内的所有keypoints features求平均,或者拼接补零来作为RoIf eatures。
作者的方法:

  1. 将proposal均匀的采样6x6x6个grid points,G={g1,g2,…g216}

  2. 以每一个grid points为中心,划一个半径R的球,将里面包含的所有keypoints作为一组,得到一组特征向量(设置了多个半径R,以获取多尺度特征);
    在这里插入图片描述

  3. 再将上述的特征向量输入PointNet Block(SA层)来综合得到一个特征。

  4. 一个proposal中的所有RoI-grid features都通过一个两层的MLP最终输出一个256维的特征(可以表征整个proposal内的特征)。
    在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CTkXGiij-1600064716206)(/media/elodie/Backup Plus/01-目标识别课题/01-论文阅读/PV-RVNN/pic/RoI-grid_Pooling.png)]


2.2 框优化与置信度预测

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OUL2u0BF-1600064716209)(/media/elodie/Backup Plus/01-目标识别课题/01-论文阅读/PV-RVNN/pic/refine.png)]

两层MLP后分为两个分支,分别预测置信度和框优化

  • 置信度预测:将3D RoI和ground-truth的IoU作为训练目标,损失函数是交叉熵。
    在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FvsepTle-1600064716212)(/media/elodie/Backup Plus/01-目标识别课题/01-论文阅读/PV-RVNN/pic/conf2.png)]

  • 置信度预测:box的偏移量作为训练目标,损失函数是smooth-L1。


网络细节与结果

  • 网络细节:
    在这里插入图片描述

  • 结果:

  • KITTI
    在这里插入图片描述


  • Waymo
    在这里插入图片描述

  • Effects of voxel-to-keypoint scene encoding
    在这里插入图片描述

  • Effects of different features for VSA module
    在这里插入图片描述

  • Effects of PKW module/RoI-grid pooling module/IoU-guided confidence prediction
    在这里插入图片描述


PointNet++ Set Abstraction

传统的CNN在进行特征学习时,使用卷积核作为局部感受野,每层的卷积核共享权值,进过多层的特征学习,最后的输出包含图像的局部特征信息。
Set Abstraction 通过改变CNN的采样思路,采取分层特征学习,即在小区域中使用点云采样+成组+提取局部特征(S+G+P)的方式,完成特征提取。

  • Sampling:随机选择一个初始点,然后依次利用FPS(最远点采样)进行采样,直到达到目标点数;
  • Grouping:以采样点为中心,利用Ball Query划一个R为半径的球,将里面包含的点云作为一簇成组;
  • Pointnet: 对Sampling+Grouping以后的点云进行局部的全局特征提取。

以2D点图为例,整个SA(Set Abstraction)三步的实现过程表示如下:
在这里插入图片描述
在这里插入图片描述

参考

参考博客

参考博客2

结合代码理解Pointnet++网络结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值