基于三维卷积神经网络的点云标记
摘要
本文研究三维点云的标记问题。介绍了一种基于三维卷积神经网络的点云标记方法。我们的方法最大限度地减少了标记问题的先验知识,并且不像大多数以前的方法那样需要分割步骤或手工制作的特征。特别是,我们提出了在培训和测试过程中处理大数据的解决方案。在包含7类对象的城市点云数据集上进行的实验显示了我们应用程序的鲁棒性。
一
介绍
点云标记是计算机视觉和目标识别中的一项重要任务。因此,每个点都指定了一个重新定义的标签。这进一步为场景分析和理解提供了线索。感兴趣的类别包括城市场景中最常见的对象(图1):大型平面(包括地面和屋顶)、建筑物、树木、汽车、房产以及电线。
图1 感兴趣的对象。 建筑物是橙色的,水平面(如地面和屋顶)是黄色的,树木是绿色的,汽车是红色的,电线杆是蓝色的,电线是黑色的。其他类别中的点用浅灰色着色
传统上,手工制作的特征在现有方法[1],[2],[3]中被广泛使用。然而,近年来深度学习技术的发展表明,最简单的象素特征可以直接与神经网络相结合,共同训练。另一方面,简单地将3D数据投影到诸如深度图像之类的2D表示,然后应用2D技术很容易导致3D表示中嵌入的重要结构信息丢失。灵感来自于对二维图像问题的成功深入学习。在点云标记问题上,我们提出了基于体素的全三维卷积神经网络。
在大多数现有的方法中,在执行诸如检测和分类之类的任务之前,分割是必要的步骤[4]。我们的方法不需要先验知识,例如分割地面和/或构建预计算的法线等。一切都基于体素化数据,这是一种简单的表示。从另一个角度来看,我们的方法是一种端到端的分割方法。我们的工作显示了神经网络的力量,能够捕捉到区分不同类别所需的基本特征。
尽管将点云表示为体素以解决问题的概念上很简单,但仍有许多潜在的挑战。首先,稠密体素表示会很快超过任何计算机的内存限制;其次,如果没有适当的优化算法,则需要太多的时间。此外,分类器很容易偏向于一些主要类别(例如建筑物),而不必刻意平衡训练数据。
我们的贡献主要包括:(1)提出了一个三维卷积神经网络(3D-CNN)的框架,并设计了一种有效的算法来标记复杂的三维点云数据。(2)提出了在三维网络的体素化、训练和测试过程中有效处理大数据的解决方案。
二
相关工作
A.三维目标检测和标记
Pinheiro等人递归神经网络在场景分析中的应用[5]。Habermann等人提出了一种基于多层感知器(mlp)和投影数据的三维目标识别方法[4]。然而,他们的方法需要数据分类。Koppula等人采取large-margin的方法,执行基于各种特征的三维标签分类[1]。PCA分析和基于PCA的维数特征在点级分类任务中得到了应用[6],[3]。尽管如此,这些特征的参数选择是高度经验的,我们在这项工作中表明,基于最简单占用体素的3d-cnn可以在没有任何特定任务特征的情况下达到可比的效果。
B.3D CNN
3d-cnn在视频数据分析中的应用是首次被提出的,因为视频可以看作是2d图像的一个时间3d扩展,并且具有定义良好的网格值。提出了一种基于三维CNN的人体动作识别方法[7]。对于三维点云,Maturana和Schererappied 3D-CNN用于从激光雷达点云探测着陆区域[8]。Prokhorov提出了一种用于分段点云分类的3D-CNN方法[9]。3D-Shape Nets应用3DCNN学习三维形状的表示[10].voxnet与cnn[l]集成了一个体积占用网格表示。所有的方法在应用3D-CNN方法之前都需要预先分割对象。为了将定位问题纳入三维cnn框架Songand Xiao在深度图像[2]和RGB-D图像[12]中提出了用于三维目标检测的深度滑动形状,并使用了三维区域建议网络(RPN)。然而,他们使用曼哈顿世界假设来定义室内物体的包围盒方向,这在我们的案例中是不可行的。
三
系统概述
我们的标签系统如图2所示。系统由离线训练模块和在线测试模块组成。
图2 标签系统管道。包括离线培训模块和在线测试模块
离线训练将带注释的训练数据作为输入,训练数据通过体素化过程进行解析,生成以一组关键点为中心的占用体素网格。关键点是随机生成的,它们的数量在不同的类别之间是平衡的。体素网格的标签是由围绕关键点的单元格中的主要类别决定的。然后,将占领盒和标签馈送到3d卷积神经网络,该网络由两个3d卷积层、两个3d-max池层、一个全连接层和一个logistic回归层组成(第五节)。在训练过程中节省了最佳参数。
在线测试需要一个没有输入标签的原始点云。点云通过一个密集的体素网格进行解析,得到一组分别以每个网格中心为中心的占用体素。然后将体素作为训练后的三维卷积网络的输入,每个体素网格将产生一个准确的标签。然后将推断的标签映射回原始点云,以生成点标记结果(第六节)
需要注意的是,由于训练和测试模块的不同要求,除了网格大小和体素数等参数外,体素化过程是非常不同的。我们将在第四节讨论体素化的细节。
四
体素化
我们通过以下过程将点云转化为三维体素。我们首先计算全点云的边界框。然后,我们描述了如果选择点云的中心点,如何保持局部体素化。中心的选择将根据我们是在培训过程中还是在测试过程中而有所不同,并将在实验部分进行讨论。
给定中心点(x,y,z),在其周围建立半径R的三次包围盒,即[x−R,x+R]×[y−R,y+R]×[z−R,z+R]。然后,我们将立方体细分为n × n× n个网格单元。在我们的实验中,R=6,N=20,得到一个0.3x0.3x0.3和8000个细胞大小的细胞。然后我们通过立方体内的点,用整数索引投影它们。局部体素化的结果就是8000维向量。
计算每个单元的值有几种方法。最简单的方法是计算占用值,即,如果其中有一个点,则该值变为1,否则变为0。一个稍微复杂的版本是计算密度值,这可以通过计算每个细胞内有多少个点来实现。在我们的实验中,我们发现占用值足以产生一个好的结果。
通过移动中心点,可以生成不同局部体素化结果的字典。图3显示了原始输入点云和生成的体素。
(b)
图3 密集体素化的图示。输入点云(A)通过体素化过程进行解析,生成(B)中描述的密集体素表示。
上面的过程对于测试过程来说已经足够了,但是,为了训练的目的,我们需要为每个生成的体素网格提供一个唯一的标签。我们将整个体素网格的标签定义为围绕其中心的细胞的标签,即[x−r,x+r]×[y−r,y+r]×[z−r,z+r],在我们的实验中r = 0.3/2 = 0.15。使细胞的大小与构建体素网格的细胞相同。在大多数情况下,一个单元格中存在多个类别的点。采用投票的方式来决定细胞的标签,即细胞内点数最多的类别将被视为细胞的代表性类别。在两个或多个类别具有相同点数的罕见情况下,我们只选择一个随机的类别。
五
3D卷积神经网络
在生成体素之后,我们将它们输入到三维卷积神经网络。以下是一些制作3D-CNN的基本模块。
A.3D卷积层
三维卷积层可以表示为c(n,d,f)。表示具有输入尺寸n×n×n的卷积层和具有尺寸f×f×f的d个特征映射。通常,在三维卷积层l的第m个特征图的位置(x,y,z)处的输出是
其中blm是特征映射的偏差项,q通过第(l-1)层中的特征映射,ωijklmq是第q个特征映射位置(i,j,k)的核心的权重。权重和偏差将通过训练获得。
B.三维池化层
一个3d池化层可以表示为P(n,g),即输入大小为n×n×n的池层和一个池内核g×g×g,我们使用3d 最大池化。形式上,3d max pooling layer 第l层的第m个特征图上的位置(x,y,z)的输出是
为了增加非线性,我们在每个池层后使用双曲正切tanh(.)激活函数。
C.网络布局
在二维网络的布局方面,我们的工作是基于lenet[i3]的成功,lenet[13]由2个卷积层、2个池层和1个FC层组成。我们将二维卷积层和二维池化层分别替换为三维卷积层和三维池化层,并获得我们的体系结构(图4)。
图4 三维卷积神经网络。顶部的数字表示每个层中的节点数。输入是大小为203的体素网格,然后是卷积层,其中20个特征映射大小为5×5×5,结果是20×163个输出;最大池层的大小为2×2×2,结果是20×83个输出,第二卷积层,具有20个大小为5×5×5的特征映射,产生20×43个输出;第二最大池层,具有2×2大小的非重叠分区,产生20×23个输出;全连接层,具有300个隐藏节点,最终输出基于超过8个标签的softmax(包括7个类别和一个空标签)。
体系结构可以表示为c(n c1,d c1,f c1)-p(n p1,g p1)-c(n c2,d c2,f c2)-p(n p2,g p2)-fc(n f1)-lr(n f2);fc(n)表示具有输入大小n的完全连接层;lr(n)表示具有输入大小n的logistic回归层。表示标记结果的最终输出是整数l∈{0,1,2,…,l}由softmax产生。在这种情况下,L=7表示图1中指定的7个类别,而标签0表示体素网格的中心区域不包含点的退化情况。
六
标签推断
给定训练好的网络,我们可以对细胞进行体素水平分类。我们以0.3的距离对体素网格的中心点进行密集采样。中心距与单元尺寸的重合,是为了产生整个空间的非重叠紧划分。给定局部体素盒的标记结果,我们将盒中心附近的cell中的所有点标记为相应的类别。
紧凑型分区会精确地标记数据中的每个点一次。然而,在我们的实验中,这将把标记的精度限制在细胞大小的程度上,我们发现颗粒度足以产生相当好的结果(见第七节),边界伪影可以忽略不计。在实际应用中,当有足够的计算资源时,我们可以改变中心并重新进行分类处理,最后,我们可以使用投票方案来决定分配给每个点的标签。
七
实验
A.数据集和培训设置
在渥太华市区的一个大型激光雷达点云数据集上对该标记系统进行了评估。数据来自一个机载扫描仪和四个车载扫描仪的融合。我们利用Theano库[14]实现了三维卷积网络,并用Stochastic梯度下降法对网络进行训练。小批量30例,学习率为0.1,衰减率为0.95。我们从整个数据集中手工标注了几个主干,可以生成多达500k个特征和标签,但在随机平衡的情况下,我们只选取其中的50k个作为训练数据,20k个作为验证数据。
B.训练样本的平衡
在训练过程中,我们发现密集的训练数据采样会导致常见类别(如建筑物)与不太常见的类别(如电线)之间出现不期望的偏差行为。因此,我们对不同类别的训练数据实施平衡随机抽样。具体地说,我们从每个类别中提取相同数量的关键点,因为体素化区域的中心实验表明,尽管真实数据中类别中的点的数量极不均匀,但是每个类别之间的训练数据的平衡有助于提高该方法的性能。
C.参数选择
我们用一些参数设置进行实验。我们将内核大小固定为5x 5,并评估内核数量如何影响性能。从表一中我们可以看出,当de1=de2=20时,可以获得最佳的性能。一般来说,这里的参数对标记结果没有太大的影响。
表1 两个三维卷积层中不同核数的比较
D.定性结果
图5显示了我们的方法在渥太华市大面积区域的标记结果。图6显示了从结果可以看出,虽然我们没有此任务的分割步骤,但是生成的结果显示了不同对象的早期区分标记结果
图5 利用3D-CNN对大城市区域的标注结果
图6 标签结果的特写镜头。(a)地面、建筑物、树木和(b)带有各种灯杆的街景,包括灯杆、路标、电线杆和旗杆。(c)有张力的电线杆。(d)停车场
E.定量结果
我们通过比较结果和基本事实标签来评估我们的方法。我们实现了一个自动程序来评估这些方法。这些点按O(nlogn)时间内的坐标排序,这样标签就可以在o(n)时间内进行比较,其中n是点的数量。
图5显示了分类中的混淆矩阵第i行的条目和第j列表示第i个真值分类中被分类为第i个真值分类的点的百分比,以及对细胞进行颜色编码以便将1映射到黑色的背景,0被映射到白色,其间的任何内容都映射到相应的灰色值。
从表中我们可以看出,汽车和飞机分类良好,精度高于95%,而建筑、电线杆和电线的精度在80%到90%之间。树木的准确度略低于80%,这主要是由于与包含人类和灌木丛等人造星团的其他类别相混淆。在某些地方。平行导线密度高,与水平面有一定的混淆。所有类别的点标记的总体精度为93.0%。
图7 不同类别的混淆矩阵。第i行和第j列处的条目表示第j个真值类别的点数百分比,该类别被归类为第i个类别。
尽管体素表示和三维cnn具有高维性,但我们的系统在空间和时间上都是高效的。培训过程大约需要2个小时在一台电脑与英伟达Geforce GTX 980M GPU。对于一个数据主干(100米x 100米),体素大小为0.3米x 0.3米x0.3m,体素化过程不到5分钟,分类步骤不到3分钟。
八
总结展望
提出了一种基于全三维卷积神经网络的三维点云标注系统。我们的方法不需要先验知识进行分割。在未来,我们可以探索几个方向。首先,当前的标签可以再次用作网络的输入,这类似于递归神经网络的思想。同时,网络的多分辨率版本可能对大尺度方差的目标更有效。
目前微信交流群不断壮大,由于人数太多,目前有两个群,为了鼓励大家分享,我们希望大家能在学习的同时积极分享,将您的问题或者小总结投稿发到群主邮箱主邮箱dianyunpcl@163.com。