锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【3D目标检测】PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud

时间:2022-08-12 05:00:02 zp12r传感器

文章目录

  • 前言
    • 摘要
    • 1. 介绍
    • 2. PointRCNN算法框架
      • 2.1 Bottom-up 3D proposal generation via point cloud segmentation
      • 2.2 Point cloud region pooling
      • 2.3 Canonical 3D bounding box refinement
    • 3. 实验细节
    • 4. 实验结果
    • 5. 总结


前言

1. 为什么要做这个研究?
以前的方法做3D目标检测通常投影点云BEV视图或正面图,或投射到体素中,效率相对较低。
2. 实验方法是什么?
PointRCNN分为两个阶段:
Stage-1:

  • 通过PointNet 提取全局点云的特;
  • 前景分割(使用)Focus Loss),粗粒度从前景粗粒度bounding box;
  • 在bounding box在生成过程中bin-based方法回归损失估计bounding box的中心点;
  • bin-based方法是以每个前景点为原点构建X-Z坐标系,预测bounding box哪一个是中心点?bin在里面,然后准确地返回残差。
  • 基于BEV图做NMS去除冗余的bounding box,只有300人进入训练阶段stage-2。

Stage-2:

  • 扩大Stage-1输入的bounding box,保留扩展框中的点和特征;
  • 将每个bounding box通过正交变换转向以自身中心为原点local为了更好地学习坐标系bounding box局部空间信息;
  • 使用PointNet 的SA module提取特征,获得最后一点的特征向量,进行信心分类和box微调;
  • 同样使用bin-based方法进行proposal回归。

3. 创新与不足

  • 第一个只使用原始点云的人two-stage anchor free 3D目标检测模型;
  • 通过语义分割获得前景点并返回proposal,避免整个3D空间搜索proposal;
  • 使用bin-based回归loss,提高网络的收敛速度和准确性;
  • 对每个proposal使用正交转换,这样box微调阶段可以更好地学习局部空间特征;
  • 不足: 大规模点云使用PointNet 比较慢。

摘要

PointRCNN3是原始点云的3D整个框架由两个阶段组成:stage-自底向上3D候选框生成阶段,stage-在标准坐标下进行微调proposal最终检测结果。与以前的通过不同RGB图像生成候选框或将点云投射到BEV在图片或体素上,PointRCNN的stage-1将整个场景的点云分为前景点和背景点,从下到上生成少量高质量的点云3D候选框。Stage-2将每个候选框的池化点转换为正交坐标系,更好地学习局部空间特征,并与stage-1结合学习各点的整体语义特征,实现Box优化和信心预测。在KITTI数据集的3D检测基准实验表明,PointRCNN只使用点云作为输入,结果SOTA。
论文链接:https://arxiv.org/abs/1812.04244
代码链接:https://github.com/sshaoshuai/PointRCNN

1. 介绍

由于3D不规则不规则数据格式和6自由度(DoF)搜索空间大,使用点云检测3D目标仍然面临巨大挑战。以前的方法或投影点云BEV视图、正视图或投射到规则3D voxel中,而PointRCNN直接从原点云自下而上生成3D候选框。
在这里插入图片描述
不同于2D图像,用于3D目标检测的培训数据直接为3D目标分割提供语义掩码。基于此观测结果,PointRCNN在stage-自下而上生成3D使用3的候选框D bounding box 生成 ground-truth 分割掩模。Stage-对前景点进行分割,同时从分割点生成少量候选框。该策略避免了以前的方法在整个3D大量3用于空间D节省计算量的锚盒。
Stage-2进行规范3D box改进,生成3D候选框结束后,将采用点云区域池化操作stage-1中学习到的点表示池化。与现有的直接估计全局盒坐标的3D方法不同,合并后3D点被x转换为标准坐标,并与点特征和合并stage-结合分割掩码,学习相对坐标细化。以全箱为基础的3D box回归损失生成和细化候选框。
贡献:

  • 基于点云3点云3的新颖自底向上D该算法将点云分为前景对象和背景,生成少量高质量的3D候选框。从分割中学习到的点表示不仅善于生成候选框,而且对后续的box优化也有帮助。
  • 提出的规范3D使用边界框stage-1生成的高召回盒提案,在基于区域损失的高鲁棒标准坐标中学习优化框坐标。
  • PointRCNN只使用点云作为输入。

2. PointRCNN算法框架

2.1 Bottom-up 3D proposal generation via point cloud segmentation

2D在目标检测算法中,one-stage方法通常更快,直接估计没有微调的目标边界框;two-stage第二阶段微调方法proposals和confidence。然而,由于3D搜索空间很大,点云格式不规则,直接two-stage方法从2D拓展到3D不太合适。
AVOD在3D空间放置80-100k个anchor boxes,并在多个视图中对每个视图进行处理anchor产生池化特征proposals。
FPointNet从2D图像中生成2D proposals,并根据从2D3.区域切割D点估计3D boxes,但这可能会从3中泄漏D清晰观察空间的物体。

作者提出了基于全场景点云分割的3D proposals生成算法。在3D场景中,物体是自然分开的,相互没有重叠。所有3D物体的分割掩码可以通过其3D直接获得边界框注释,即将获得3D框内的3D点视为前景点。该算法逐点学习特征,分割原始点云,并从分割的前景点生成3D proposals,这样就避免了3D在空间中使用大量的预定义3D boxes,3的限制很大D proposals提高召回率的搜索空间。
Learning point cloud representations
使用多尺度分组PointNet 作为骨干网络,也可以选择VoxelNet。
Foreground point segmentation
同时进行前景分割和3D proposals考虑到主要点云网络编码的逐点特征,添加了一个用于估计前景掩码的分割头和一个用于生成3D proposals的box回归头。点云分割,ground-truth分割掩模由3D ground-truth box提供。对于大型户外场景,前景点的数量通常比背景点小得多。因此,作者利用焦点损失来处理类不平衡。焦点损失减少了简单示例的损失贡献,加强了对纠正错误分类示例的重视。

训练点云分割时,默认设置 α = 0.25 , γ = 2 \alpha=0.25, \gamma=2 α=0.25,γ=2
Bin-based 3D bounding box generation
之前已经分割出前景点了,box回归头直接从前景点回归3D proposals位置。尽管没有从背景点回归box,但由于点云网络的感受野,这些背景点也为生成box提供了支持信息。
3D边界框在LiDAR坐标系中表示为 ( x , y , z , h , w , l , θ ) (x,y,z,h,w,l,\theta) (x,y,z,h,w,l,θ),其中(x,y,z)为物体中心位置,(h,w,l)为物体大小, θ \theta θ为物体从鸟瞰角度的方向,也就是偏航角。针对proposals中心点的定位,作者提出了bin-based方法。

对于每一个分割出的前景点,都对其X-Z坐标系构建一个网格,单方向搜索范围为S,每一格等长为 δ \delta δ,这样就可以初步预测中心点在哪一个bin里面,再对其进行精确地残差回归。Y轴由于比较扁平,因此可以直接使用smooth L1 loss回归。

( x ( p ) , y ( p ) , z ( p ) ) (x^{(p)},y^{(p)},z^{(p)}) (x(p),y(p),z(p))是感兴趣的前景点的坐标;
( x p , y p , z p ) (x^p,y^p,z^p) (xp,yp,zp)对应物体的中心坐标;
b i n x ( p ) , b i n z ( p ) bin_x^{(p)},bin_z^{(p)} binx(p),binz(p)是X、Z轴上的ground-truth bin;
r e s x ( p ) , r e s z ( p ) res_x^{(p)},res_z^{(p)} resx(p),resz(p)是在被分配的bin中做进一步定位微调的ground-truth残差;
C是归一化的bin长度。
训练及损失函数
在实验过程中,对于基于bin的预测参数 x、z、 θ \theta θ,首先选择置信度最高的bin中心点,再使用smooth L1 loss回归长宽高和y值。在训练时,采用0.85 IoU的NMS去除BEV图上的proposals,只保留前300进入stage-2的模型(测试的时候只保留前100)。
不同的训练损失项下的整个3D边界框的回归损失 L r e g L_{reg} Lreg可表示为:

N p o s N_{pos} Npos是前景点的数量;
b i n u ^ ( p ) , r e s u ^ ( p ) \widehat{bin_u}^{(p)},\widehat{res_u}^{(p)} binu (p),resu (p)是前景点p的被预测的bin分配和残差;
b i n u ( p ) , r e s u ( p ) bin_u^{(p)},res_u^{(p)} binu(p),resu(p)是上面已经计算过的ground-truth对象;
F c l s F_{cls} Fcls是分类的交叉熵损失;
F r e g F_{reg} Freg是smooth L1 loss。

2.2 Point cloud region pooling

扩大3D proposals
对于每个3D proposals, 放大一定的大小得到一个新的3D框,获取更多的context信息。
b i = ( x i , y i , z i , h i , w i , l i , θ i ) b_i=(x_i,y_i,z_i,h_i,w_i,l_i,\theta_i) bi=(xi,yi,zi,hi,wi,li,θi)
to b i e = ( x i , y i , z i , h i + η , w i + η , l i + η , θ i ) b^e_i=(x_i,y_i,z_i,h_i+\eta,w_i+\eta,l_i+\eta,\theta_i) bie=(xi,yi,zi,hi+η,wi+η,li+η,θi)
η \eta η是一个用来放大box的大小的固定值。
判断点是否在扩大的边界框内
对于每个点p,若在扩大框内,则该点及其特征会被保留用来微调 b i b_i bi
内部点p的特征包括:3D坐标 ( x ( p ) , y ( p ) , z ( p ) ) ∈ R 3 (x^{(p)},y^{(p)},z^{(p)}) \in \R^3 (x(p),y(p),z(p))R3、激光反射强度 r ( p ) ∈ R 3 r^{(p)}\in\R^3 r(p)R3,来自stage-1的预测分割掩码 m ( p ) ∈ { 0 , 1 } m^{(p)}\in\{0,1\} m(p){ 0,1}和点特征表示 f ( p ) ∈ R c f^{(p)}\in\R^c f(p)Rc
通过分割掩码 m ( p ) m^{(p)} m(p)来区分扩大框中的是前景点还是背景点,点特征 f ( p ) f^{(p)} f(p)用于分割和生成proposals,然后消除没有内部点的proposals。

2.3 Canonical 3D bounding box refinement

如图2所示,每个proposal的池化点及其特征都被喂入stage-2中,用来微调3D框的位置及其前景目标置信度。

Canonical transformation(正交变换)
利用正交变换转换到每个proposal的local坐标系,一个3D proposal的正交坐标系表示:

  • 坐标系的中心点是proposal的center;
  • X ′ , Z ′ X^{'},Z^{'} X,Z轴平行于地平面, X ′ X^{'} X轴指向proposals的heading方向, Z ′ Z^{'} Z轴垂直于 X ′ X^{'} X轴;
  • Y ′ Y^{'} Y轴与LiDAR坐标系保持一致;

proposal内的点p都从原来的坐标转换为local坐标系 p ~ \tilde{p} p~,这样box优化阶段可以更好地学习每个proposal的局部空间特征,学习的方法同stage-1一样,也是利用PointNet++的结构结合bin-based的方式,把回归问题转换为分类问题。

Feature learning for box proposal refinement

相关文章