目录
论文相关信息

文献地址:https://arxiv.org/abs/1812.04244
论文源码:https://github.com/sshaoshuai/PointRCNN
Abstract:文章提出的PointRCNN直接在原始点云上进行3D目标检测,检测器由两个阶段组成:第一阶段是bottom-up的3D proposal generation,第二阶段用于在规范坐标中精炼proposals 以获得最终的检测结果。我们的第一阶段子网不是像以前的方法那样从RGB图像、投影点云到鸟瞰图或体素等表示方式中生成proposals,而是通过将整个场景的点云分为前景点和背景,从下而上直接从点云中生成少量高质量3D proposals。第二阶段子网将每个proposals中池化后点转换为规范坐标,以学习更好的局部空间特征,将该局部空间特征与在第1阶段中学习的每个点的全局语义特征相结合,以进行精确的box精炼和置信度预测。在KITTI上的 3D detection benchmark 上取得SOTA。
思考
整体而言,架构类似于2D目标检测的Faster R-CNN,这是这里一般用PointNet系列作骨干网,然后生成建议框的方式不同,但是第一阶段生成的建议框方式也和2D中的RPN比较像,如果是一阶段的3D点云目标检测可能就是一阶段子网络这样架构,没有第二阶段的精炼。所以可以思考像2D那样如何只用1阶段的方式来高效简洁的作3D目标检测。
1. Introduction
当前SOTA的3D目标检测器要么将点云投影到BEV或前视图,要么是转为规则的3D体素,从而利用成熟的2D目标检测技术,但是这样在量化的时候会有信息损失。因此PointRCNN跟随PointNet的思想,直接从点云上学习3D特征表示来进行分类和定位任务。

3D目标检测和2D目标检测不同的一点在于,3D物体很好的被标准的3D边框所分开了,3D目标检测的训练数据直接提供了用于3D 目标分割的语义掩膜,这是2D检测和3D检测训练数据上的区别。基于这一区别,作者提出了一个two-stage的3D目标检测架构——PointRCNN。
正如摘要中提到那样,通过利用3D边框来生成ground-truth的分割掩膜,第一个stage分割了前景point,同时生成了小量的边框proposals,这样就避免了从整个3D点云空间从产生大量的3D anchor box,节约计算。
PointRCNN的第二个stage规范地精炼3D边框。在生成3D proposals之后,使用一个点云区域的池化操作来池化第一stage学习得到的point representation。池化后的3D 点被转换到规范坐标,并且与池化后的点特征和第一stage学到的分割掩膜相结合,用于学习相对的坐标精炼。这样充分利用了第一阶段的分割和proposal子网络提供的信息。
为了学习得到更加有效的坐标精炼,我们提出用于生成proposals和精炼的完全的bin-based 3D 边框回归损失(regression loss),消融实验表明该损失比其他3D边框回归损失收敛快,召回率也更高。
主要贡献:
(1)提出新的bottom-up的基于点云的3D建议边框生成算法,其通过将点云划分为前景物体和背景生产力少量的高质量3D proposals。从分割中学习到的点表示(point representation)不仅利于生成建议边框而且还能用于之后的边框精炼。
(2)提出的规范化3D边框精炼充分利用了第一阶段生成的高召回率的建议框,使用bin-based loss来学习精炼规范的边框坐标。
(3)只使用点云输入,KITTI上达到当时的SOTA。
2. Related Work
介绍了使用2D图片做3D检测的方法,指出其存在不足,即由于缺少深度信息,检测是粗略的,不具有鲁棒性。然后是使用点云做3D目标检测的,分为点云投影为鸟瞰图和将点云量化为体素的,这两种方式都会造成不同程度的信息丢失,而且体素而言其3D卷积空间和内存消耗大。而且由于有些信息是只有3D空间才能获取到的信息,所以只使用2D图像生成的proposals会遭遇瓶颈。
PointRCNN和PointNet一样,直接从点云学习特征,大大增加了点云分类和分割的速度与精度。
3. PointRCNN for Point Cloud 3D Detection
PointRCNN的整体架构如图2所示。

点云作为输入,使用pointnet++作为骨干网提取特征,得到每个点的特征(包含context信息),即Point-wise 特征向量,然后再这个特征向量上有两个分支,前景点分割分支用于判断每个点是前景的概率(3D目标检测数据集有个特点,即无重叠,所以可以把物体边框视为一个初步的分割掩膜,在边框内的点label为1,对应前景,不在边框内的点label为0,表示背景。这里的前景分割分支正是基于这个特点来学习愈合分割前景点的),然后上面的分支Bin-based 3D box Generation分支则是给每个点都预测一个该点所在物体对应的边框,这里是前景点和背景点都会预测边框,但计算loss时只有前景点计算loss。然后根据每个点分割的分数,粗糙的当作其生成的边框的质量来给边框排序,通过nms筛选留下少量的框(比如300个)。这些框需要初步精炼(用到bin-based regression losses),对于预测的物体的中心,将前景点周围分为两个离散的坐标,然后物体的中心就会坐落于这些坐标内的一个bin之中,使用交叉熵loss判断是否在每个bin之中,从而将回归转换成分类任务。但是这样的话位置不够精确,所以还引入了res来回归在bin中的具体位置,res这个回归使用smoothL1来学习。这样的话物体中心位置的估计center=bin+res。这样得到第一个stage的proposal。不过这个建议框是初步的,其质量和回归判断是依据点分割的概率,没有十分的关联,所以需要进一步精炼。
在第一stage生成proposals,为了学习每个proposal更加局部的特征,池化每个点和其对应点特征。然后对于每个proposals会做轻微方法,增加长宽高以包含一些context信息。然后遍历所有点, 如果点在一个建议框内,则保留该袋年特征来精炼该边框。该点的特征包括其3D坐标,反射强度,一阶段预测的分割掩膜,和一阶段学习到的C维特征。下一stage中消除那些内部每一点的建议框。
第二阶段将建议框中的所有点坐标转为规范坐标系下的坐标,得到局部空间点,这个局部点(特征)会增加一些额外的特征,编码该局部特征到和一阶段学习得到的分割特征(全局特征)相同维度后,局部和全局特征拼接,送入一个PointNet++这样的特征编码层学习特征,然后最后再做置信度预测和基于bin的3D边框精炼。
3.1. Bottom-up 3D proposal generation via point cloud segmentation
基于整个场景的点云分割,使用准确且健壮的3D建议框生成算法作为一阶段的子网络。我们观察到3D场景中的物体与其他物体没有重叠,因此自然地相互分开。所以3D物体的分割掩膜可以直接通过他们的3D边框标注获得,如在3D边框内部的点被视为前景点。
因此我们提出以自底向上的方式来生成3D建议框,具体而言,学习point-wise 的特征来分割原始点云,同时从分割的前景点中生成3D建议框。这样避免了在3D空间中使用大量预定义的3D框,极大地限制了3D建议框的搜索空间,从而减少计算。
Learning point cloud representations.
前景点能提供丰富信息来预测相关物体的位置和方向,通过学习分割前景点,点云网络能够获取背景信息,从而做精确预测,并且也有利于生成3D建议框。3D建议框直接从前景点生成,即前景点分割和3D建议框同时进行。
如图2所示,在由骨干网编码后得到的point-wise特征上应用了一个用于分割前景点的分割头,和一个用于生成3D建议框的边框回归头。对于前景点分割,ground truth分割掩膜由3D ground truth 边框得到,而前景点数量相比背景点数量很少,有很大的类别不平衡,故使用focal loss解决这个问题:

Bin-based 3D bounding box generation. 训练时,只要求边框回归头从前景点上回归3D边框位置。虽然边框不是从背景点上回归的,但是因为点云网络的感受野,这些背景点也提供了用于生成边框的信息。(即每个点都会生成proposals,但是只有前景点才会计算loss来回归)。
一个3D边框表示为(x, y, z, h, w, l, θ),其中xyz是物体中心位置,hwl是物体尺寸,θ是物体在鸟瞰图上的朝向。为了限制生成的3D建议框,使用一个基于bin的回归损失来使其贴近物体的3D边框。

为了估计一个物体的中心,如图3所示,我们将每个前景点周围沿着X和Z轴分割成一个离散单元bin,对每个前景点沿着X和Z轴设置一个搜索范围S,每1维度的搜索范围S被等分为长度都为δ的若干bins,来表示不同物体在X-Z象限上的中心(x,z)。使用基于bin的方法来定位,然后用交叉熵损失分类每个bin比直接使用smooth L1损失回归能更加精确定位物体中心。
X或Z轴的定位损失包括两部分,一部分是沿着X和Z轴的bin分类,一部分是在被分类为含物体中心的bin中的残差回归损失。对于沿着垂直的Y轴的中心y,直接使用smooth L1,因为大部分物体的y值非常小,使用L1 loss就能获取足够的精度。因此,定位对象表示为:

$ (x^{§} ,y^{§} ,z^{§}) 是 感 兴 趣 前 景 点 的 坐 标 , 是感兴趣前景点的坐标, 是感兴趣前景点的坐标,(xp,yp,zp)$是他对应物体中心坐标,$bin_x{§}和bin_z^{§} 是 沿 着 X 和 Z 轴 分 配 的 g r o u n d t r u t h b i n , 是沿着X和Z轴分配的ground truth bin, 是沿着X和Z轴分配的groundtruthbin,res_z^{§}$是在分配的bin内进一步精炼定位的ground truth residual,C是用于归一化的bin长度。
对于物体的尺寸 (h, w, l) 和朝向 θ 的估计和F-PointNet相似,将朝向的2π划分为n个bins,然后计算每个bin的分类对象 b i n θ ( p ) bin_\theta^{(p)} binθ(p)以及和X和Z轴一样的残差的回归对象 r e s θ ( p ) res_\theta^{(p)} resθ(p) 。物体尺寸 (h, w, l) 直接通过计算相对于整个训练集中每个类的平均尺寸的残差 ( r e s h ( p ) , r e s w ( p ) , r e s l ( p ) ) ( res_h^{(p)},res_w^{(p)},res_l^{(p)}) (resh(p),resw(p),resl(p))得到。
推断时,对于基于bin的参数,首先选着置信度最高的bin,然后将res与bin相加获得最终精炼后的参数。对于直接回归的参数,则将res和其最初的值相加。
整体的3D边框回归损失 L r e g L_{reg} Lreg如下:

其中 N p o s N_{pos} Npos是的前景点数, F c l s 是 交 叉 熵 分 类 损 失 , F r e g 是 s m o o t h L 1 回 归 损 失 F_{cls}是交叉熵分类损失,F_{reg}是smooth L1回归损失 Fcls是交叉熵分类损失,F

本文介绍PointRCNN,一种高效的3D目标检测方法,直接在原始点云上进行检测,通过两阶段网络实现高质量3D目标检测。第一阶段生成3D建议框,第二阶段进行规范坐标下的边界框精炼。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



