2021CVPR——LiDAR R-CNN: An Efficient and Universal 3D Object Detector

作者:AI新手学习;
公众号:AI新手学习

0 基本信息:

**论文链接:**2103.15297.pdf (arxiv.org)
**代码链接:**GitHub - TuSimple/LiDAR_RCNN
**论文来源:**2021CVPR

1 Motivation

通过对之前二阶段目标检测框架的分析,发现R-CNN网络不知道proposal的大小,即存在尺寸模糊问题,本文基于此展开实验和分析。

2 Abstract

LIDAR R-CNN是一个二阶段的3D目标检测框架,且是一个即插即用的模块。通过对之前工作的分析,简单使用point-based的框架,如pointnet,导致学到的特征忽视了proposals的尺寸!即:网络并不知道proposal的大小,那它自然不能判断proposal是否准确、也不能在proposal的基础上回归出更准确的Bbox!
因此,本文着重分析这个问题,并提出几个解决方法,提升性能。

3 Introduction

本文关注于二阶段检测框架,即R-CNN系列的检测方法:基于已有的3D空间的proposals,然后对其进一步refine!

PointNet直接在原始点云上处理,其主干部分由5个MLP和1个max-pooling组成,参数量和计算量都非常小,因此选用PointNet作为主干网络。然而,实验发现直接采用PointNet的实验效果并不好,分析后发现了尺寸模糊问题(size ambiguity problem)!与voxel-based将空间划分为等间距的方法不同,PointNet只从点聚合特征,而忽略了3D空间中的间距。然而,间距编码了目标的尺寸等基本信息。因此,我们从该问题出发,提出解决方案,本文的贡献如下:

  • 提出了LIDAR R-CNN框架,即插即用,不需要重新训练原始的检测器;
  • 发现了point-based的R-CNN检测框架中尺寸模糊问题,并提出了对应解决方案,使网络能意识到proposals的大小,简单且有效;
  • 在WOD和KITTI数据集上性能取得优势。

4 Related Work

  • Voxel-based;
  • View-based;
  • Point-based。

5 Method

在现有3D目标检测器生成3D Bbox proposals 的基础上,本文的目标是对这些Bbox进行refine和打分。为了确保本文的模型可以即插即用,且避免量化损失,输入为原始点云。

5.1 point-based R-CNN

Input feature:
对于每一个proposal,扩大其长宽以获得周围包含语义信息的点,再将扩大后Bbox内的所有点,作为R-CNN模型的输入。为了提高模型的泛化性,对输入点进行归一化处理:原Bbox中心作为坐标原点,heading方向作为x轴方向,其水平正交轴作为y轴,垂直方向为z轴。
在这里插入图片描述

Backbone:
选择PointNet作为backbone,其主干部分由5个MLP和1个max-pooling组成,参数量和计算量都非常小。
在这里插入图片描述

Loss function:

对于分类分支,损失函数为softmax交叉熵函数:
在这里插入图片描述

对于回归分支:
在这里插入图片描述

5.2 尺寸模糊问题

问题:当直接套用二阶段网络时,对于单个类别还好,当网络需要同时预测多个类别时,部分类别会掉点。分析后发现了一个潜在问题:RCNN网络并不知道proposal的大小,那它自然谈不上判断proposal是否准确、也谈不上在proposal的基础上回归出更准确的框?
在这里插入图片描述

这个问题与点云本身特性有关。2D图像中像素空间是规则且稠密的,但3D点云空间是非常稀疏且无规则的。如果直接使用point-based的方法,网络仅仅只会考虑proposal中存在的点,而proposal中的空白部分无法在特征中表示,**因为point-based的网络(如pointnet),只会提取点云部分的特征并融合。如下图所示:如果只考虑其中的红色点,那么蓝色和绿色的边界框具有相同的特征表示,但是它们的分类和回归目标可能会差异很大。**同样,在KITTI等数据中,在我们所感兴趣的物体如车和行人的周围,通常来说是没有点云的。如果我们将一个本身比较准的proposal扩大1米,提取到的点云往往是不变的或者只引入了少量地面点,但这样的proposal显然是不准确的,我们会给它一个负的label来进行分类。同样的,对于框的尺寸回归,其目标是基于proposal的对数相对值,当propsal尺寸扩大时,回归目标会跟着变小。

(通过计算IoU,不能判断蓝色框和绿色框的大小吗?)
在这里插入图片描述

点云不变就意味着PointNet等point-based网络提取到的特征是不变的,但目标却在变化,这样网络显然无法进行准确的预测。这个由proposal大小带来的问题称为尺寸模糊问题(Size Ambiguity Problem)。
因此,我们需要LIDAR R-CNN可以感知proposals空白和尺寸的能力。

5.3 尺寸感知点云特征

1.Normalization:

解决上述问题最简单的解决方案是根据proposal的大小来归一化点的坐标。将proposals的边界对齐到(-0.5,0.5),如果扩大proposals,点坐标将更小,目标尺寸会变高,因此模型可以知道proposal的大小。如下图所示,归一化坐标会扭曲目标的形状,如果任务是单分类,这样做确实解决了问题,但在多分类情况下,虽然这样可以将proposal的大小隐式地告诉RCNN,但归一化之后物体的形状就改变了,忽略了不同类别尺寸的差异(一辆大卡车和一个行人压缩到同一个尺度,并不利于PointNet判断其类别。),归一化使得模型难以区分目标类别。
在这里插入图片描述

2.Anchor:

另一个方法是为每个类别设置一个anchor,这样回归目标会基于固定的anchor,消除了尺度模糊问题。但是我们的目标是判断proposal质量的好坏并改进,而不是判断anchor的好坏。由于网络仍然不知道proposals的边界,该方法不能解决分类模糊性。此外,如果box中点很少,不同种类目标特征可能相同,在这种情况下,回归会存在歧义,因为不同种类有不同的anchor,对应于不同的回归目标。所以,这个方法在一定程度上也不行。
在这里插入图片描述

3.Voxelization:

还有一些方法将proposals中的点云体素化,形成类似于2D图像中规则的网格,网格中的空体素或点分布可能表示proposals中的尺寸和间距。然而,这种方法中,体素类似于“sub-anchor”,其中的点依然不知道体素的边界在哪,只解决了体素级proposals尺寸信息,变向削弱了尺寸模糊问题,并没有完全解决。

(此处给出大佬的一种形象解释:图像上不存在这个歧义问题的主要原因是图像是非常致密的,不存在前景的地方会有背景的存在,只要网络能区分前景和背景,当proposal变大时,网络会发现背景变大了,从而给出proposal不准的信息。但3D点云中,proposal变大时,网络虽然能看到最外围的voxel中没有点的存在,但网络所能感知到的边界只能到达voxel级别,而无法做到point级别的精度。而且如果对于每个类别都设置同样数量的voxel,也会存在类似第一种尺寸归一化带来的多类别分类不容易区分的问题。)
在这里插入图片描述

4.Boundary offset:

既然原因是网络不知道边界的位置,最简单的方法是将proposal的边界信息作为输入告诉网络,在每个点后面串联上它们到上下左右前后6条边的归一化距离。从偏移量出发,网络将能够知道这些点离proposals的边界有多远,这就可以解决尺寸模糊问题。
在这里插入图片描述

5.Virtual points:

由于R-CNN模型忽略了间距,一个自然的想法是用“虚点”来填空,以表示它们的存在:在proposals中生成一些均匀分布的虚点,让虚点充当2D图像中背景的作用,所有proposals的虚点数相等,虚点的坐标与原点云进行相同的归一化,且在所有的点上附加一个二进制特征(0-1),以指示这些点是虚点还是原点云,从而让RCNN网络感知到prospoal框的大小。
在这里插入图片描述

总结一下,解决尺寸模糊问题的关键在于要将proposal尺寸的信息传递到RCNN网络中,但同时要注意不能引入新的问题。

6 Experiments

选用常见的SECOND和Point Pillars作为baseline,直接将二者的输出(即proposals)作为我们网络新的输入:直接去原始点云上抠取proposal内的点云xyz,并将其旋转平移至proposal坐标系,之后将它们输入进PointNet,由分类和回归两个loss来监督网络的训练。

(这里的二阶段检测:相当于利用pointpillar输出的检测结果,对Bbox里面的点利用pointnet提特征然后输出新的检测结果,相当于进一步refine的过程?)
在这里插入图片描述

(着实没有看明白level_1和level_2是什么意思?)
在这里插入图片描述

消融实验:

在这个pointpillar的基础上,套用二阶段网络,单独对Vehicle(单类别)进行refine,结果如下:可以看到原始的PointNet RCNN即可将AP提升2.5个点(从71.6提升至74.1),而在解决了尺寸模糊问题后,还能进一步提升1.5个点(从74.1提升至75.6),达到75.6的AP。
在这里插入图片描述

然而在多分类场景下,原始的PointNet RCNN就只能将Vehicle提升0.5个点(71.6到72.1),而在Pedestrian(70.6到69.2)和Cyclist(64.4到62.2)两个类别上甚至还会掉点,且一系列之前分析的几个方案(voxel、anchor、归一化等),均存在或多或少的掉点现象, 而我们提出的两种有效的策略均能实现显著涨点。
在这里插入图片描述

耗时分析:
最后,与体素化的二阶段方法相比,我们的输入就是原始点云坐标,且主干网络是一个很小的PointNet,所以速度上也比之前的二阶段方法要快很多,仅需4.5ms即可完成一帧点云的refine。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值