文章目录

  • 前言
    • 摘要
    • 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++比较慢。

摘要

PointRCNN是一个用于原始点云的3D目标检测模型,整个框架由两个阶段组成:stage-1为自底向上的3D候选框生成阶段,stage-2在规范坐标下微调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-1自下而上地生成3D候选框,利用3D bounding box 生成 ground-truth 分割掩模。Stage-1对前景点进行分割,并从分割点同时生成少量的候选框。该策略避免了以往方法在整个3D空间中使用大量的3D锚盒,节省了计算量。
Stage-2进行规范3D box改进,生成3D候选框后,采用点云区域池化操作将stage-1中学习到的点表示进行池化。与现有的直接估计全局盒坐标的3D方法不同,合并后的3D点被转x换为规范坐标,并与合并后的点特征以及stage-1的分割掩码相结合,学习相对坐标细化。提出了基于全箱的3D box回归损耗来生成和细化候选框。
贡献:

  • 提出了一种新颖的自底向上的基于点云3D候选框生成算法,该算法将点云分割为前景对象和背景,生成少量高质量的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,并根据从2D区域裁剪出来的3D点估计3D boxes,但这样可能会漏掉只能从3D空间清晰观察到的物体。

作者提出了基于全场景点云分割的3D proposals生成算法。在3D场景中,物体是自然分开的,相互没有重叠。所有3D物体的分割掩码都可以通过其3D边界框注释直接获得,即将3D框内的3D点视为前景点。该算法逐点学习特征分割原始点云,并从分割好的前景点中生成3D proposals,这样就避免了在3D空间中使用大量预定义的3D boxes,极大地限制了3D 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))是感兴趣的前景点的坐标;
(xp,yp,zp)(x^p,y^p,z^p)(xp,yp,zp)对应物体的中心坐标;
binx(p),binz(p)bin_x^{(p)},bin_z^{(p)}binx(p)​,binz(p)​是X、Z轴上的ground-truth bin;
resx(p),resz(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边界框的回归损失LregL_{reg}Lreg​可表示为:

NposN_{pos}Npos​是前景点的数量;
binu^(p),resu^(p)\widehat{bin_u}^{(p)},\widehat{res_u}^{(p)}binu​​(p),resu​​(p)是前景点p的被预测的bin分配和残差;
binu(p),resu(p)bin_u^{(p)},res_u^{(p)}binu(p)​,resu(p)​是上面已经计算过的ground-truth对象;
FclsF_{cls}Fcls​是分类的交叉熵损失;
FregF_{reg}Freg​是smooth L1 loss。

2.2 Point cloud region pooling

扩大3D proposals
对于每个3D proposals, 放大一定的大小得到一个新的3D框,获取更多的context信息。
bi=(xi,yi,zi,hi,wi,li,θ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 bie=(xi,yi,zi,hi+η,wi+η,li+η,θ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,若在扩大框内,则该点及其特征会被保留用来微调bib_ibi​。
内部点p的特征包括:3D坐标(x(p),y(p),z(p))∈R3(x^{(p)},y^{(p)},z^{(p)}) \in \R^3(x(p),y(p),z(p))∈R3、激光反射强度r(p)∈R3r^{(p)}\in\R^3r(p)∈R3,来自stage-1的预测分割掩码m(p)∈{0,1}m^{(p)}\in\{0,1\}m(p)∈{0,1}和点特征表示f(p)∈Rcf^{(p)}\in\R^cf(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
微调子网络的组成
微调子网络结合了已转换的局部空间点特征p~\tilde{p}p~​及其来自stage-1的全局语义特征f(p)f^{(p)}f(p)。
正则变换的缺陷和解决方法
正则变换能够实现鲁棒的局部空间特征学习,但会丢失每个对象的深度信息。例如,由于LiDAR传感器扫描的时候,远处的物体通常比附近的物体拥有更少的点。为了补偿深度信息的丢失,将到传感器的距离d(p)=(x(p))2+(y(p))2+(z(p))2d^{(p)}=\sqrt{(x^{(p)})^2+(y^{(p)})^2+(z^{(p)})^2}d(p)=(x(p))2+(y(p))2+(z(p))2​纳入点p的特征中。
微调方法
对于每个proposal,首先将其关联点的局部空间特征p~\tilde{p}p~​和额外特征[r(p),m(p),d(p)][r^{(p)}, m^{(p)},d^{(p)}][r(p),m(p),d(p)]concate后经过几个全连接层,将它们的局部特征编码为与stage-1得到的全局特征f(p)f^{(p)}f(p)相同的维数。然后将局部特征和全局特征concate起来,用PointNet++的SA module提取特征,得到最后每个点的特征向量,进行置信分类和box微调。
Losses for box proposal refinement
采用类似stage-1的bin-based方法来优化proposal。如果gt box和proposal的IoU>0.55,则将该gt box分配给3D box proposal来学习box微调。
3D proposals和相应的3D gt box都被转换成正交坐标系,因此,
3D proposal: bi=(xi,yi,zi,hi,wi,li,θ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=(0,0,0,hi,wi,li,0)\tilde{b}_i=(0,0,0,h_i,w_i,l_i,0)b~i​=(0,0,0,hi​,wi​,li​,0);

3D ground-truth box: bigt=(xigt,yigt,zigt,higt,wigt,ligt,θigt)b_i^{gt}=(x_i^{gt},y_i^{gt},z_i^{gt},h_i^{gt},w_i^{gt},l_i^{gt},\theta_i^{gt})bigt​=(xigt​,yigt​,zigt​,higt​,wigt​,ligt​,θigt​)
to b~igt=(xigt−xi,yigt−yi,zigt−zi,higt,wigt,ligt,θigt−θi)\tilde{b}_i^{gt}=(x_i^{gt} - x_i,y_i^{gt}- y_i,z_i^{gt}- z_i,h_i^{gt},w_i^{gt},l_i^{gt},\theta_i^{gt}-\theta_i)b~igt​=(xigt​−xi​,yigt​−yi​,zigt​−zi​,higt​,wigt​,ligt​,θigt​−θi​)。
Stage-2的loss整体为:

BBB是来自stage-1的3D proposals集合;
BposB_{pos}Bpos​存放了positive的回归proposals;
probiprob_iprobi​是估算的bi~\tilde{b_i}bi​~​的置信度;
labelilabel_ilabeli​是对应的label;
L~bin(i),L~res(i)\tilde{L}_{bin}^{(i)},\tilde{L}_{res}^{(i)}L~bin(i)​,L~res(i)​和公式3相似,但是用的是上面提到的通过b~igt,bi~\tilde{b}_i^{gt},\tilde{b_i}b~igt​,bi​~​计算的新结果。
最后,通过BEV视图上NMS IoU>0.01去除重叠的proposal。

3. 实验细节

网络结构
Stage-1的输入是16384个点,采用PointNet++,经过4次SA层(多尺度分组)提取特征,采样个数为[4096, 1024, 256, 64],然后经过4次FP层获得逐点特征向量进行分割和proposal生成;
Stage-2的输入是每个proposal的合并区域随机抽取的512个点,采用3次SA(单尺度分组),采样个数为[128, 32, 1],生成单个特征向量,用于目标置信度分类和proposal位置优化。
Stage-1(car)

  • 选择ROI(Region of Interest)的时候在原前景分割的基础上向外扩0.2m;
  • bin-based的中心点预测时,单方向搜索范围S=3m,箱子大小δ\deltaδ=0.5m;
  • 偏航角预测n=12;
  • epoch=200,batch size=16,learning rate=0.002。

Stage-2(car)

  • Box置信度的输出:IoU>0.6为正例,IoU<0.45为负例;
  • 角回归的输出:IoU>0.55;
  • bin-based参数:S=1.5m,δ\deltaδ=0.5m,旋转角为10°;
  • epoch=50,batch size=256,learning rate=0.002

数据增强
随机翻转,[0.95,1.05]放缩比例因子,绕Y轴旋转[-10°,10°]。

4. 实验结果

5. 总结

PointRCNN是一个two-stage的3D detection模型。模型分为两个阶段,Stage-1先使用PointNet++作为主干网络,分割出前景点,生成少量粗粒度的3D proposal;Stage-2进一步优化proposal。将这些bounding box通过正交变换转换到自己的局部坐标系下,再使用PointNet++学习局部特征,完成优化。

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

  1. 【3D目标检测】3D Object Detection for Autonomous Driving: A Survey

    目录 概述 细节 背景 常用数据集及其评价指标 基于RGB图像的算法 基于点云的算法 基于RGB图像与点云模态融合的算法 概述 这是一篇21年的综述,介绍了3D目标检测背景.传感器以及基于传感器的算法 ...

  2. 【论文阅读】【综述】3D Object Detection 3D目标检测综述

    目录 写在开头 3D Object Detection 相关博客: Sliding window Vote3Deep: Fast Object Detection in 3D Point Clouds ...

  3. 3D Object Detection 3D目标检测综述

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/wqwqqwqw1231/articl ...

  4. 点云 3D 目标检测 - CenterPoint:Center-based 3D Object Detection and Tracking(CVPR 2021)

    点云 3D 目标检测 - CenterPoint: Center-based 3D Object Detection and Tracking - 基于中心的3D目标检测与跟踪(CVPR 2021) ...

  5. 3D目标检测论文阅读摘要

    3D目标检测论文阅读摘要 2D Object Detection 的研究已经非常成熟了,代表作品有RPN系列的FasterRCNN,One Shot系列的YOLOv1-YOLOv3,这里推荐一个2D ...

  6. 3D目标检测深度学习方法数据预处理综述

    作者 | 蒋天元 来源 | 3D视觉工坊(ID: QYong_2014) 这一篇的内容主要要讲一点在深度学习的3D目标检测网络中,我们都采用了哪些数据预处理的方法,主要讲两个方面的知识,第一个是rep ...

  7. CVPR2020 | PV-RCNN: 3D目标检测 Waymo挑战赛+KITTI榜 单模态第一算法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Shaoshuai Shi@知乎 来源丨https://zhuanlan.zhihu.com/p ...

  8. 动手学无人驾驶(4):基于激光雷达点云数据3D目标检测

    上一篇文章<动手学无人驾驶(3):基于激光雷达3D多目标追踪>介绍了3D多目标追踪,多目标追踪里使用的传感器数据为激光雷达Lidar检测到的数据,本文就介绍如何基于激光雷达点云数据进行3D ...

  9. 基于激光雷达点云的3D目标检测算法论文总结

    作者丨eyesighting@知乎 来源丨https://zhuanlan.zhihu.com/p/508859024 编辑丨3D视觉工坊 前言  过去很多年激光雷达的车规标准和高昂价格是阻碍其量产落 ...

  10. 点云 3D 目标检测 - RangeDet(ICCV 2021)

    点云 3D 目标检测 - RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection - 基于LiDAR的3D目标检测 ...

最新文章

  1. gem是什么证书_什么是GIA钻石?
  2. 《python3网络爬虫开发实战》--基本库的使用
  3. linux dd iflag oflag,centos – dd oflag =直接5倍速
  4. lintcode:合并排序数组
  5. maven deploy到nexus报错:Return code is: 401, ReasonPhrase:Unauthorized
  6. Eclipse没有Web插件和JavaEE插件咋整
  7. 为什么数据库用B+树(3条法则需记牢)
  8. python百度文库下载器_真正百度文库免费下载,比冰点文库下载器还更牛x!
  9. 二叉树前中后序遍历及其本质
  10. opendir php 中文,php的opendir是什么意思?
  11. 服务器网站常用端口号,web服务器常用端口号
  12. Flutter文本或图片生成PDF文件
  13. photoshop制作ico图标
  14. cocos2d音效设置
  15. ubuntu:beyond compare 4 This license key has been revoked 有效解决方案
  16. 微信小程序正则判断手机号?
  17. Godaddy服务器 部署免费SSL证书
  18. Tuscany SCA软件架构设计理念分析(二)
  19. 网络知识总结二:物理层和链路层协议详解
  20. CAD制图初学入门教程之立剖网格

热门文章

  1. linux免费邮件服务器,Linux 电子邮件服务器的搭建
  2. docker 中文文档
  3. 非编系统到底是什么意思呀?
  4. 开源中国众包平台派活:微信小程序任务
  5. 利用Word2Vec模型训练Word Embedding,并进行聚类分析
  6. 云从科技在科创板IPO注册获批,收入远高于格灵深瞳同期
  7. 将一个数组划分成总和相等的两部分(分割数组)
  8. 常用域名控制面板地址
  9. java for 死循环_关于java编程死循环的应用
  10. word多级目录设置和自动生成目录