PDF: Pyramid R-CNN: Towards Better Performance and Adaptability for 3D Object Detection
CODE: https://github.com/PointsCoder/Pyramid-RCNN
一、大体内容
Pyramid R-CNN是一个两阶段的3D目标检测网络,主要是考虑目前的方法在第二阶段提取感兴趣RoI特征时,不能有效地处理兴趣区域点云稀疏和不均匀分布的问题。如下图所示超过7%的点云总数少于10个,这样特征是不完整的,因此会影响检测效果,另外点云分布也不均匀
为了解决上述问题,Pyramid RCNN在第二阶段提出了一个新颖的pyramid RoI Head模块,主要包含RoI-grid Pyramid、RoI-grid Attention和Density-Aware Radius Prediction(DARP)三个模块,通过组合这几个模块,在KITTI及Waymo Open数据集上都取得了高性能的效果。如下图所示,在第一阶段可以选择不同的BackBone方案来获得3D RoIs以及兴趣点,第二阶段的Pytramid RoI head对每一个RoI首先构建RoI-grid Pyramid模块,通过逐渐放大每个金字塔级别中原始RoI的大小,用于获取更多的特征信息,RoI网格点的坐标由放大的RoI大小和网格大小决定。在每个金字塔级别中,通过DARP模块从全局上下文向量预测RoI网格点的聚焦半径r。然后执行由r参数化的RoI-grid Attention,将兴趣点的特征聚合到RoI网格中。最后,对RoI网格特征进行增强,并将其输入到两个单独的头中进行分类和回归。
二、贡献点
- 提出的二阶段目标检测框架Pyramid R-CNN,可以适用于不同的BackBones。
- 提出pyramid RoI head可以解决兴趣点稀疏和分布不均匀的问题,由RoI-grid Pyramid、RoI-grid Attention和Density-Aware Radius Prediction(DARP)三大块组成。
- Pyramid R-CNN在KITTI和Waymo Open数据集上取得领先的效果
三、细节
3.1 RoI-grid pyramid
由于点的稀疏性,内部的语义特征不够完整,因此用RoI-grid pyramid模块来扩大RoI范围以获取更多的语义特征,增强物体的几何细节,有助于识别不完整的对象,如遮挡和远距离物体。(其背后的思想是:对于每个RoI,inside points包含fine-grained结构信息,用于bbox refinement,outside points则包含丰富的语义信息,用于识别不完整的objects)
实现方式也很简单明了,就是引入一个超参数\(\rho\)来控制RoI的范围,比较一下就清楚了,(1)式是标准的RoI-grid表示,(2)式是RoI-grid pyramid表示。
其中\(W, L, H\)表示RoI的大小,\(x_c, y_c, z_c\)表示RoI的左下角点坐标,\(N_w, N_l, N_h\)表示网格的大小,前面一项是计算出位置的偏移量,后面加上角点坐标即可得到对应的位置。当\(\rho = 1\)时就是标准的RoI-grid表示,值越大,RoI范围越大,可以包含更多周围的点云,语义信息就越多。对于每个金字塔层级,后续通过RoI-grid Attention从兴趣点的特征中聚合网格点特征\(f_{grid}\)。最后会将所有层级的特征组合起来便于对预测框进行优化。
3.2 RoI-grid Attention
用于提取RoI-grid特征,结合了graph-based和attention-based的点算子的优势,RoI特征提取操作的目的是使用相邻点\(p_i\)和特征\(f_i\)的信息来获得RoI-grid点\(p_{grid}\)对应的特征向量\(f_{grid}\)。在介绍RoI-grid Attention前作者回顾了之前的方法:
符号说明
\(p_{grid}\) 表示RoI-grid坐标
\(p_i\)表示靠近\(p_{grid}\)的第i个点坐标
\(f_i\)表示靠近\(p_{grid}\)的第i个点对应的特征向量
Pooling-based算子
这个算子在PV-RCNN、Voxel-RCNN等一些两阶段网络中用于提取RoI特征,其大致步骤是先将相对坐标\(p_i - p_{grid}\) 和
\(p_grid\)点周围特征\(f_i\)相连,送入MLP得到特征\(V\),最后对所有的做maxpooling,得到RoI-grid特征:
作者认为pooling-based的方法仅关注最大通道的相应,不可避免损失了很多的语义和几何信息。
Graph-based算子
这种方法将grid点和兴趣点建模为图的形式,图的节点用MLP提取周围\(f_i\)后的特征表示:
边表示为相对坐标的线性函数:
最后再通过加权来算出特征
Attention-based算子
在Graph-based的基础上学习出一个权重系数:
然后特征计算更改为:
最近的Point Transformer又进行了修改:
RoI-grid Attention
本文提出的RoI-grid Attention方法,主要是通过一个可学习的参数\(\sigma_{*}\)来决定使用上述的哪个算子。(让网络学习使用哪个方法更合适,哪些点对于grid point更重要),将上述方法结合到一起形成了以下特征计算方法。
在[0, 0, 1, 0]的情况下,是Attention-based的,在[1, 0, 0, 0]情况下,是Graph-based
3.3 Density-Aware Radius Prediction(DARP)
用于学习每个RoI的特征提取半径,实现依据密度自适应选择半径,而不是人为给定半径参数。
人为给定半径的方式
大体可以分为两个步骤,第一步依据给定半径选择出兴趣点周围的点
第二步再对选择的点进行加权组合。
DARP方法
提出一个新的分布\(s(i|r)\)来替代\(p(i|r)\),其同时包含inside和outside点:
当点\(p_i\)在半径范围内时,其趋近于1,在范围外时趋于0。
为了能够计算\(r\)的梯度,通过从基本分布中采样,并将原始分布参数的期望作为系数,则梯度可以按照下式计算:
最后DARP模块可以表示为:
对于金字塔的每一层级,首先通过加权RoI附近兴趣点的信息,得到context embedding;再利用这个embedding预测半径r;进一步将r转化为系数参与RoI-grid Attention的计算。
四、效果
-
不同方案效果比较
-
推理速度
-
在KITTI数据集上可视化效果
-
在Waymo Open数据集上可视化效果