首页 > 编程知识 正文

3d目标检测深度学习方法,双目视觉模型分析

时间:2023-05-06 13:44:22 阅读:245801 作者:488

【CVPR 2020】Point-GNN (开源)通过图神经网络实现3d目标检测论文解读

文章目录 【CVPR 2020】Point-GNN (开源)通过图神经网络实现3d目标检测论文解读摘要介绍相关工作点云数据规则化处理点云直接处理图处理点云 Point GNN在点云数据目标检测构建图下采样找寻周围临近点,并将编码临近点的信息为Si Point GNN主体框架框的合并以及打分Loss 实验个人总结(优点太多讲不完,只谈一些自认为的不足)
注:摘要、介绍、相关工作仅仅为翻译,帮助读者理解目前3D目标检测的方法。其他部分为解读内容

摘要

在本文中,我们提出了一个图神经网络来从激光雷达点云检测目标。对这个目标,我们将点云有效地编码到一个固定半径的近邻图中。我们设计了一个图神经网络,并称为点Point GNN,来预测类别和图中每个顶点所属的对象的形状。在PointGNN里,我们提出了一个自动配准的机制来保证平移不变性(reduce translation variance),并设计一个框合并和打分操作,以精确结合多个顶点的检测结果。我们在KITTI数据集上做的实验结果表明,该方法(仅使点云)达到了领先水平,精确度甚至可以超过基于融合的算法。我们的结果证明了利用图神经网络作为一种新的三维目标检测方法的潜力。
代码在这里https://github.com/WeijingShi/Point-GNN

介绍

理解3D环境对机器人感知至关重要。三维点云是一种广泛应用于三维传感器(如激光雷达)的数据格式。从点云中准确地检测目标对于自动驾驶等应用来说是至关重要的。
卷积神经网络用来检测图像中的目标依赖于卷积运算。虽然卷积运算是有效的,但它需要一个规则的网格输入(基于欧式距离)。与图像不同,点云通常是稀疏的且不均匀。把点云放在规则网格会导致每个cell中点的数目不均匀。对这些网格进行相同的卷积操作,可能会导致拥挤网格中的信息丢失或者空网格浪费计算。
最近在神经网络方面的突破允许以无序的点集作为输入。此类研究利用这种类型的神经网络来提取点云特征,而不需要将点云映射到网格。但是,它们通常需要迭代的对点进行取样和分组(sample&group),以得到点集表示。在大型点云上的重复分组和采样计算代价非常昂贵。最近的三维检测方法通常采用混合方法在不同的阶段使用网格和点集表示。虽然它们展现一些较好的结果,但这种混合策略可能会受到两种表现的缺点的影响。
在本文中,我们提出使用图作为一个点云的紧凑表示,并设计一个称为PointGNN的图神经网络来检测对象。**我们把点作为图顶点来编码点云。图的边将位于固定半径内的邻域点连接起来,使得特征信息可以在邻域之间流动。**这样的图表示可以直接适应点云的结构,而不需要使它具有规则性。图神经网络在每一层都重复使用图的边,避免了对点的重复分组和采样。
研究探讨了利用图神经网络对点云进行分类和语义分割。然而,利用图神经网络在点云中进行三维目标检测的研究很少。我们的工作证明了在点云中使用GNN进行高精度目标检测的可行性。
我们提出的图神经网络PointGNN以点图作为输入。它输出每个顶点所属的对象的类别和边界框。PointGNN是一种单阶段检测方法,可以在一个场景中检测多个目标。为了保证图神经网络中的平移不变性,我们引入了一种自动配准机制,该机制允许点根据其特征对坐标进行配准。我们进一步设计了一个框合并和打分操作,以精确的从多个定点结合得到检测结果。
我们在KITTI的benchmark上对所提出的方法进行了评估。在KITTI测试中,Point GNN单独使用点云实现了最先进的精度,甚至超过了传感器融合方法。我们的Point GNN显示了一种利用图神经网络的新型三维目标检测方法的潜力,可以作为未来研究的有力基础。我们对点GNN中各组成部分的有效性进行了广泛的消融研究。
本文的贡献:

提出了新的点云目标检测方法,利用图神经网络。设计了PointGNN,一个有自动配准机制的在单帧检测多个目标的图神经网络。在KITTI benchmark的3D目标检测模块sota(现在不是了),深入分析了各部分的有效性。 相关工作

点云数据规则化处理

最近的许多研究将点云转换为规则网格,以利用卷积神经网络。[20]将点云投射到2D鸟瞰(BEV)图像上,并使用2D CNN进行对象检测。[4]将点云投射到BEV图像和FV图像上。由于图像分辨率的限制,这种投影会产生量化误差。有些方法把点云保留在三维坐标。[23]把点用3d体素表示并用3d卷积来目标检测。当体素的分辨率增大时,3D CNN的计算量也随之增大,但由于点的稀疏性,许多体素是空的。稀疏卷积[19]等优化降低了计算成本。将点云转换为2D/3D网格会遇到点的规则分布与网格的规则结构不匹配的问题。

点云直接处理

在PointNet[3]和DeepSet[22]等点集上的深度学习技术表明,神经网络可以直接从无序的集合中提取特征。在这种方法中,每一个点都经过多层感知器(MLP)处理以获得点特征向量。通过平均或最大池化函数将这些功能聚合起来,形成此点集一个全局的特征向量。[14]进一步提出了点特征的层次聚合,并通过对某些点的采样来生成点的局部子集。然后将这些子集的特征再次group到集合中,以进行进一步的特征提取。许多三维目标检测方法利用这种神经网络来处理点云,而不需要将点云映射到网格。然而,在大尺度上对点的采样和分组会增加额外的计算成本。大多数的目标检测研究只使用这个网络作为框架的一部分。
[13]通过图片生成提案,并使用[14]来从背景中分割属于目标的点,来预测3d bbox。[16]用[14]作为backbone生成框提案,然后用第二阶段来优化框。混合方法如[23 19 10 21]使用[3]从局部点集提取特征,并将特征放在规则网格中进行卷积操作。尽管它们将点云的不规则性降低了一定程度,它们仍然受到规则网格和整体点云结构之间匹配的影响。

图处理点云

图论神经网络的研究[18]试图将神经网络推广到图的表示。GNN迭代的更新顶点特征,通过聚合边沿特征。尽管集合模式有时类似于基于点集的深度学习,GNN允许沿边缘确定更复杂的特性。它通常不需要重复采样和分组顶点。在计算机视觉领域,有几种方法将点云表示为图。[15]使用递归GNN对RGBD数据进行语义分割。[9]将点云划分为简单的几何形状,并将它们链接到图中进行语义分割。[2 17]研究使用GNN对点云进行分类。迄今为止,很少有研究探讨设计一个图神经网络用于目标检测,这需要对目标形状进行显式预测。我们的工作与以前的工作不同,我们设计了一个用于对象检测的GNN。与将点云转换为规则网格(如图像或体素)不同,我们使用图表示来保留点云的不规则性。与重复采样并将点分组的技术不同,我们只构建一次图。该算法通过迭代更新同一图上的顶点特征来提取点云的特征。我们的工作是一种1-stage检测方法,不需要第二阶段的优化如[4 16 21 11 13]。

Point GNN在点云数据目标检测

关注点:从论文的题目可以直接看出,该论文的亮点为通过图神经网络进行目标检测的分割。

基于此,小编关心的重点则在与网络如何构建点与点之间的边关系。网络的迭代的方式。 构建图 下采样

我们都知道且明白–车前目标检测场景大约包含有数万个点。如果不做任何处理直接将这么庞大的点云数据直接输入场景中,以目前显卡的计算能力来讲是非常困难的,且实用性不高。**目前现存的网络都会使用降采样的方法来从原始点云场景中提取一部分点,并对其进行目标检测。在Point GNN网络中同样如此。

网络是用voxel downsample对原始点云进行下采样。体素采样是一种均匀采样,但是其计算量是远远大于一般采样算法的。fps最远点采样可以看做是一种近似均匀的采样方法,并且相对于体素采样的方法计算量减少很多。这一点是小编看这篇论文很疑惑的,文中并没有阐述voxel downsample的任何对网络益处,在原本网络计算量如此高的情况下,sqdmj使用如此高的计算量的采样方法,有点让人想不通。

找寻周围临近点,并将编码临近点的信息为Si


文中使用一种单元列表的方法找到中心点周围的临近点,其计算复杂度为O(cN),c为在半径r内临近点的最大数量。这种方法真的没有听过,是否说这种方法是基于体素采样的基础上,使得每个点的算法复杂度均为c,N个点的算法总复杂度为cN,这点我觉得可能需要去看代码才能够明确知道。
Si为一个K为向量,初始化的公式按照论文中的文字阐述,小编自己编写的应该如下,第i个点:

最终N个点都有一个K维的特征向量Si,到此则完成了图的构建。G = (P, E), P=(pi, Si)

Point GNN主体框架

先来根据论文的主线索,讲讲传统图神经网络—>点云图神经网络

1、传统的图神经网络:

t表示第几次迭代,e表示边的特征,v表示顶点的特征。f(.)表示生成两个顶点之间边的关系,p(.)生成中心点与所有邻近点之间的边关系,g(.)加入第t次迭代改中心点的特征后,生成第t+1次迭代的顶点特征。

2、点云图神经网络:


根据传统的图神经网络经过细微的改变之后所得,也没啥差别,就是一种简单的修订。画个简单的示意图来理解一下这个公式:

加入数据增强后的公式

∆x 就是通过计算边的状态值所得的坐标位移差。

**论文中给的数据增强有四个:整个点云场景的旋转、整个点云场景基于x轴的翻转、box和其内部的点加上外部10%的点旋转、通过体素下采样造成点的抖动。**因为有这些的数据增强,所以增加了∆x,当然你也可以不用。

具体的公式:

这就没什么好解释了,上下两个公式放在一起对比一下就看得出来具体的对应关系。

讲完所有内部结构后,就看看整体的框架内容:图中显示的是一次迭代的内容,安装实验细节阐述,T=3

对照公式看图,应该很简单的看出来,看不出来对应关系,留言吧。没有手写笔画图实在是很麻烦。

框的合并以及打分

文中应该是对每个点生存一个框,但我好像没找到对应的字眼。那就找到的时候在回来补。但是下采样后应该还是有上万个点或者说接近一万,那么对每个点都要生成框就会造成大量的相似框。**为了更好的合并,文中提出一种合并框的方法。**同时也给出该方法的设计的原因: 部分遮挡的物体可以有一个很强的线索来指示物体的类型,但缺乏足够的形状信息,分类的分数不能够总是正确对应着框的质量,所以作者认为要加上遮挡的因素。

合并框的方法通常为NMS,文中作者改进了这一方法,绿色为作者改进的部分。


median: 具体的函数内容作者没有给出来,从文中和代码的意思推断大概是从这一些重叠框中,选择中间位置和尺寸的重叠框。感觉是所有宽的参数的平均值所构成的框。

occlusion: 框内物体体积 / 框的体积, 是一个0~1的比率。


输出: M是合并的后所得框,Z是对应框的分数 。分数是中间框与其他框的IOU的和值,再加上这个和值乘遮挡值为分数。(匪夷所思,前所未见。文中都没详细解释为啥这呢做,一句话带过。。。)

Loss

类别的loss:

两个类别:背景或所关心的物体。y真实值的标签,p预测的标签。M为预测改点预测的可能性有几种。

box的loss: 该loss与通常用的loss有所不同

x、y、z、l、h、w、角度为预测的框的参数,xm、ym、zm、lm、hm、wm、角度m为文中给的超参数。

xu, yu,zu为预测该预测框的顶点。

什么时候才计算loss呢?即兴趣点是什么: 预测该预测框的顶点在预测框内

**总loss: **

Lreg为L1正则化loss,在每个一个MLP后面加上L1正则化,L1 loss计算这些MLP的权重和,以防止过拟合。

实验

3D检测的精度:

BEV检测的精度:

精度细节什么的就各位自己去看吧,看不懂的留言探讨。

个人总结(优点太多讲不完,只谈一些自认为的不足)

1、不得不说这篇论文给了我们一个很好的思路从点与点之间的关系出发进行目标检测。但我个人觉得这种临近点的特征提取得到局部特征来构成边有的信息有点过于少。

2、一阶段的网络呢他的优势就是速度快,但是这篇论文就优点失去这一相对于二阶段网络的优势。没有当初这篇文章当时在kitti登顶的截图,就随意看看现在的截图吧。

些自认为的不足)

1、不得不说这篇论文给了我们一个很好的思路从点与点之间的关系出发进行目标检测。但我个人觉得这种临近点的特征提取得到局部特征来构成边有的信息有点过于少。

2、一阶段的网络呢他的优势就是速度快,但是这篇论文就优点失去这一相对于二阶段网络的优势。没有当初这篇文章当时在kitti登顶的截图,就随意看看现在的截图吧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。