【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection

论文题目:Point Density-Aware Voxels for LiDAR 3D Object Detection

cvpr2022 多伦多大学
这篇文章主要是对于现在voxel的方法忽略点云在roi中的稠密度的问题做了一定的工作。
过去的一些工作要么就是进行规则的voxel操作,在每个voxel的格子中规则地提取feature,要么就是利用FPS考虑一些关键点,来进行特征的提取。这些关键点对于点云的稠密度有一定的识别作用:例如在稠密的地方,选取的点肯定多一些,这样便利于物体的识别。(例如PVRCNN),当然这种方法是计算量巨大的,而且容易受到一些离群点的影响,对于噪声十分敏感。
一些小物体,例如行人和单车,他们上面的点云点一般都是很稀疏的,训练一个对于点云密度敏感的网络对于这些物体的识别是用作用的。
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第1张图片
老规矩,上图吧。
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第2张图片
文章分为三个部分:voxel中心的编码、roi格子点的特征提取,最后的检测head。
提取roi的rpn实际上就是一个fpn的3d结构,主要是为了提取rpn。
首先第一个部分voxel中心的编码
对于前面的3d voxel操作后,每个voxel都有了自己的特征,我们在这里计算他们的中心点:
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第3张图片

随后对于每一层voxel进行逐层地计算中心:
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第4张图片
这个计算中心的过程实际上也是每个voxel特征向每个voxel的点云稠密处偏移的过程。

第二部分:roi格子点的特征提取:
对于前面rpn得到的roi,我们进行划分格子:UXUXU,每个格子中有一个几何中心格子点(grid point)。
我们对于每一个格子点,做一个ball query,查询在半径r中所有的voxel中心点。对于每一个中心点进行编码:
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第5张图片
编码由三个部分组成:voxel的特征,相对于格子点的距离,及经过kernel density estimation计算的稠密相似度。
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第6张图片
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第7张图片
编码得到的值为每个voxel中心点的稠密度,如果某一个中心点和其他voxel中心点都很近,代表此处的点云十分稠密,那么该值就会很大。
在这里插入图片描述
在这里插入图片描述
编码后进行max操作,最后将每一层的feature进行拼接,得到每个格子点最后的feature。
请注意,这时候的格子点是汇集了多层的特征的、对于点云稠密度敏感的特征。
随后我们将得到的格子点及其特征送进自注意力模块,这么操作是为了建立起长期的各格子点的依赖关系。
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第8张图片
当然,作者这里的位置编码还有一个小trick,不是传统的计算各个点的相对距离或者绝对距离
在这里插入图片描述

把每一个格子点附近的voxel中心点也考虑进来,这里还是进一步增强我们文中所提到的density概念。

最后就是detect head
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第9张图片
没啥好说的,作者引入了一个小trick,首先检测出refine后的box,随后将他的几何中心也考虑进confidence检测中。

看到现在是不是觉得文章的结构似曾相识?我打算拿他和sassd和pvrcnn进行一下对比,具体的便写在我的思考中。

我的思考

文章写得很不错,学习写文章可以按照这个思路来写,围绕一个主题“density”,对某一类模型进行改进(SASSD等),讲一个故事:kernel density estimation,摆结果:最后小物体的ap真的提升了不少,最后加上详细的实验,做的就比较充分了!

正如我前面所说,看这篇文章我觉得和pvrcnn很类似,作者也给出了ap比较,我便写一写他们的异同吧。
【论文阅读】【3d目标检测】Point Density-Aware Voxels for LiDAR 3D Object Detection_第10张图片
几乎一样的网络框架,只不过pvrcnn是利用的fps收集关键点,随后在每一层voxel进行feature聚类,最后对于grid点进行类似的聚类操作,得到最后的总feature。
作者采用fps采集关键点,对于收集到的点其实也是有一些density aware的,然而首先这个操作是计算量巨大的,其次容易受到噪声的影响。这在本文后面的实验可以看到其fps是小于本文的方法的。
随后将每个关键点进行球查询,进行voxel特征的mlp操作,最后把每一层进行拼接。这个方法和本文的方法是类似的,但是我么需要考虑这样的一个问题:经过3d卷积操作后的voxel,其feature是不是与每一个voxel中心对齐呢?我想答案是否定的,因为点云不是均匀分布的。这时候我们用这种方法得到的concat的feature实际上与原始的关键点并不对齐。这样显然会造成ap的下降。
最后的grid point 作者也没有用自注意力机制建立起每个grid点的联系。
综上,本文可以看做是pvrcnn的一个加强版。考虑点的稠密度对于小目标来说是有意义的!!!

你可能感兴趣的:(论文阅读,神经网络,深度学习)