一种面向散乱点云语义分割的深度残差-特征金字塔网络框架
2022-01-13彭秀平仝其胜林洪彬
彭秀平 仝其胜 林洪彬 冯 超 郑 武
三维点云数据理解在计算机视觉和模式识别领域是一项非常重要的任务,该任务包括物体分类,目标检测和语义分割等.其中,语义分割任务最具有挑战性,传统的方法大多是在对点云数据进行必要特征提取的基础上,应用支持向量机(Support vector machine,SVM)一类的分类算法,通过训练一组特征分类器来完成散乱点云数据的语义分割任务[1].显然,这类方法的性能很大程度上依赖点云特征的设计、特征提取的精度以及特征分类器的性能.虽然国内外学者提出了几十种点云特征和大量的分类算法,但是依然没有一种或几种特征能完全适用于所有语义分割场景,算法适用性、精度和可靠性都得不到保障.
近年来,随着深度学习技术的发展,涌现出许多端对端的学习算法,这种端对端的学习方式不依赖于手工设计的特征,只需给定输入数据和对应的数据标签,将其输入神经网络,即可通过反向传播算法自动学习一组可以抽象高级特征的权重矩阵,最后再由全连接层(Fully connected layer,FC)对高级特征进行分类,从而完成分割任务.现有的基于深度学习的点云分割研究方法大体可分为如下两类:
一类是基于散乱点云数据结构规则化的深度学习方法,这类方法通常是先通过体素化处理或八叉树、KD 树等树形结构,将无序和不规则的散乱点云处理成规则的结构化数据,再将结构化数据输入三维卷积神经网络(Convolutional neural network,CNN)进行训练.基于体素化方法[2-3]的提出首次将深度学习技术应用于三维点云数据理解任务,通过将三维点云体素化为规则的结构化数据,解决了其无序性和不规则性问题.但是,使用体素占用表示三维点云带来了量化误差问题,为了减小这种误差必须使用更高的体素分辨率表示,高分辨率的体素表示又会在训练神经网络过程中带来大内存占用问题.因此,受限于目前计算机硬件的发展水平,基于体素化的散乱点云深度学习方法往往难以完成诸如大规模室内三维场景一类的复杂、需要细粒度的三维场景的语义分割和场景理解任务.基于八叉树[4-5]和KD树[6]结构方法的提出解决了直接体素化点云所带来的大内存占用问题,但是这种树形结构对三维点云旋转和噪声敏感,从而导致卷积内核的可训练权重矩阵学习困难,算法的鲁棒性往往不够理想.
另一类是基于参数化卷积设计的深度学习方法,这类方法以原始三维点云作为输入,通过设计一种能够有效抽象高层次特征的参数化卷积,再使用堆叠卷积架构来完成点云分割任务.PointNet[7]是这类方法的代表,其首先使用共享参数的多层感知机(Multi-layer perception,MLP)将三维点云坐标映射到高维空间,再通过全局最大池化(Global max pooling,GMP)得到点云全局特征,解决了点云的无序性问题;此外,文献[7]还提出了一种Tnet 网络,通过学习采样点变换矩阵和特征变换矩阵解决了散乱点云的旋转一致性问题,但是由于缺乏点云局部特征信息局限了其在点云分割任务中的性能.随后PointNet++[8]提出一种分层网络,通过在每一图层递归使用采样、分组、PointNet 网络来抽象低层次特征和高层次特征,再经过特征反向传播得到融合特征,最终使用全连接层预测点语义标签,解决了文献[7]方法对点云局部特征信息提取不足的问题.RSNet[9]通过将无序点云特征映射为有序点云特征,再结合循环神经网络(Recurrent neural network,RNN)来提取更丰富的语义信息,从而进行语义标签预测.PointCNN[10]则定义了一种卷积,通过学习特征变换矩阵将无序点云特征变换成潜在的有序特征,再使用堆叠卷积架构来完成点云分割任务.
总体而言,基于参数化卷积设计的深度学习为散乱三维点云场景的理解提供了具有广阔前景的新方案.然而,目前该领域的研究尚处于萌芽阶段,许多切实问题尚待解决,如:由于卷积方式的局限性,用于二维图像处理的主流深度神经网络构架(如:UNet[11],ResNet[12],Inception V2/V3[13],DenseNet[14]
等)无法直接用于三维散乱点云数据的处理;由于针对点云特征提取设计的参数化卷积的局限性,现有的方法普遍存在特征抽象能力不足、无法将用于二维图像处理的一些主流神经网络框架适用于三维点云分割任务等问题.
基于此,本文设计了一种立方体卷积运算,不仅可以通过二维卷积实现三维表示点的高层特征的抽取,还可以解决当前参数化卷积设计通用性差的问题;其次,将定义的立方体卷积计算和残差网络相结合,构建面向散乱点云语义分割的深度残差特征学习网络框架;进一步,将深度残差网络与特征金字塔网络相结合,以实现三维表示点高层特征多尺度学习和语义分割.
1 提出的方法
本文方法以原始三维点云作为输入,首先,将定义的立方体卷积运算和残差网络(ResNet)相结合,构建面向散乱点云语义分割的深度残差特征学习网络框架;其次,将深度残差网络与特征金字塔网络(Feature pyramid network,FPN)[15]相结合,以实现三维表示点高层特征多尺度学习;最后,通过全连接层对融合特征进行分类得到语义标签输出,整体分割网络框架如图1 所示.
图1 深度残差-特征金字塔网络框架Fig.1 Depth residual-feature pyramid network framework
1.1 立方体卷积
残差网络自2015 年提出以来,一经出世,便在ImageNet 竞赛中斩获图像分类、检测、定位三项的冠军.随后许多基于残差网络的研究在图像分割领域也取得了巨大的成功[16-20].然而,残差网络是专门为二维图像类的规则化数据设计的深度网格结构,在处理类似散乱三维点云等非规则、无序化散乱数据时遇到困难;另一方面,现有的基于深度学习的用于点云特征提取的参数化卷积设计普遍存在卷积计算通用性差、无法拓展至现有二维图像处理的深度学习框架的问题.为此,本文在深入研究现有二维图像卷积计算的基础上,基于局部点云结构规则化思想,提出一种新的适用于散乱三维点云的立方体卷积计算模型,旨在通过二维卷积运算实现散乱三维点云数据高层次特征的抽象;同时,该立方体卷积计算模型具有良好网络框架适用能力,使现有大多数二维图像处理深度神经网络可用于散乱三维点云分割中.
本文提出的立方体卷积计算模型设计思路如下:
考虑一幅二维图像,集合表示为S={sx,y∈R3|x=0,1,2,···,h;y=0,1,2,···,w}.对于任意像素点sx,y(1≤x ≤h-1;1≤y ≤w-1),当大小为3×3的卷积核作用于该点时,将其局部感受野表示为集合Nx,y={sa,b∈R3|a=x-1,x,x+1;b=y-1,y,y+1},将学习权重矩阵表示为
其中,w∈R3.在二维图像分割任务中,卷积神经网络可通过端对端的方式学习得到权重矩阵W,实现图像高层次特征抽取,其最重要的原因之一在于:在固定视角下,感受野所包围的像素点是关于给定表示像素点的欧氏距离邻近点,且权重值和像素点具有位置对应关系,如图2 所示.然而,由于散乱三维点云具有无序性和不规则性,同一点云模型可用多种不同的集合表示,当直接把二维卷积神经网络应用到三维点云上时,并不能保证感受野所包含的点与表示点是这种欧氏距离邻近关系,也无法保证权重值和点是位置对应的.
图2 二维卷积Fig.2 The 2D convolution
为此,基于局部点云结构规则化的思想,本文提出一种适用于三维点云特征提取的立方体卷积运算,具体过程描述如下:设三维点云表示为集合P={pi∈R3|i=0,1,2,···,n-1},n为点的个数,其对应的特征集合为F={fi∈Rc|i=0,1,2,···,n-1},c为点的特征维度.对于表示点pi,定义一个边长为s的立方体.以pi中心,将立方体按网格划分为27 个子立方体,每个子立方体以固定顺序进行索引,如图3 所示.
图3 立方体卷积Fig.3 The cube convolution
首先,定义点云局部特征集合V={vi∈R27×c|i=0,1,2,···,n-1},其中,vi={vi,j∈Rc|j=0,1,2,···,26}.对于第j个子立方体,选取离子立方体中心欧氏距离最近的一个点作为表示点pi的一个邻近点,vi,j设置为该邻近点的特征.当集合F等于P(即输入点云的特征为其三维坐标)时,vi,j设置为该邻近点相对表示点的相对坐标值,如果子立方体内没有点,则设置为 0.遍历所有表示点得到特征集合V,然后,再通过二维卷积对特征集合V进行卷积来抽象输入三维点云的高层特征.那么卷积输出即可表示为:F′=Conv(V,1×27,c′),其中V为卷积输入,1×27 为卷积核和移动步长大小,c′为输出特征通道数.对于表示点的邻近点选取,另一可行方案是:首先计算子立方体内包围点到其中心的距离,再对包围点的特征进行反距离加权平均得到的值,但是随着网络层数的加深以及特征维度的升高将会带来计算量的大幅增加.因此,为平衡性能本文选取距离子立方体中心最近的一个点作为表示点的一个邻近点这一近似方案.
本文提出的立方体卷积运算主要有两个关键点:立方体网格划分和子立方体固定索引排序.我们给出分析如下:在二维图像理解领域中,许多主流网络框架(如U-Net[11]、ResNet[12]、Inception V2/V3[13]和DenseNet[14]等)都是采用大小为3×3的卷积核来提取特征.文献 [13] 中指出大卷积核可以通过小卷积核的叠加获得相同大小的感受野,并且小卷积核的叠加引入了二次非线性,其实验结果证明了精确率会得到提升.其次,相比大卷积核,小卷积核具有更小的参数量.鉴于此,本文采用将空间划分为网格的方式来感知表示点的局部三维空间结构,从而可以以较小的参数量获得较高的精确率;另外,由于三维点云具有无序性,直接使用二维卷积进行卷积运算会导致神经网络在训练过程中无法学习到有效的权重矩阵来抽象高层特征.因此,本文也是基于常用于二维图像理解任务中的二维卷积特点,通过将子立方体以固定索引进行排序的方式来保证在固定坐标系下二维卷积核的可学习权重矩阵和无序点云有一一对应的关系,以此通过二维卷积有效地抽象三维点云的高层特征,使得用于二维图像处理的主流神经网络框架可以适用于三维点云理解任务中.
1.2 立方体最大池化
在二维图像中,最大池化是对邻域内特征点取最大值运算,可以学习某种不变性(旋转、平移、尺度缩放等).为了使残差网络完全适用于三维点云分割任务从而可以学习三维点云的旋转、平移、尺度缩放不变等特性,本文提出一种基于局部点云结构规则化思想的立方体最大池化方法,具体过程描述如下:
给定三维点云集合P={pi∈R3|i=0,1,2,···,n-1},n为点的个数,以及对应的特征集合F={fi∈Rc|i=0,1,2,···,n-1},c为点的特征维度.首先用文献[7]中迭代最远点采样算法得到采样点集合P′=R3| l=0,1,2,···,m-1},m为采样点的个数,定义点云局部特征集合V={vl∈R27×c|l=0,1,2,···,m-1},其中vl={vl,j∈Rc|j=0,1,2,···,26}.对于采样点,使用本文提出的立方体卷积运算中邻近点搜索方法在P中搜索其邻近点,得到邻近点特征集合vl.遍历所有采样点得到特征集合V.然后,再通过二维最大池化对特征V进行最大池化处理.最大池化输出即可表示为F′=max(V,1×27),其中,V为最大池化输入,1×27为卷积核和移动步长大小.
与本文提出的立方体卷积运算相似,立方体最大池化的关键点也在于 3×3×3 网格划分,所获取的邻近点对表示点的局部点云几何结构表示完整性将直接影响最大池化的输出.因此,我们同样基于局部点云结构规则化的思想,通过将局部空间划分为网格来获取表示点更加合理的邻近点,以此再通过常用于二维图像处理的最大池化操作对输入特征进行最大池化处理.
1.3 三维点云特征残差学习结构
残差网络由文献[12]提出,其核心思想是一种特殊的残差结构.这种结构通过将神经网络中特征映射近似问题转化为残差学习问题,不仅解决了随着神经网络层数的加深出现的梯度退化问题,而且能够以更少的模型参数实现更高的准确率.为了将这种结构适用于三维点云分割任务,本文提出一种三维点云特征残差学习结构,如图4 所示.
图4 三维点云特征残差学习结构Fig.4 The residual learning structure for 3D point cloud feature
本文提出的三维点云特征残差学习结构和文献[12]提出的残差结构都由三层卷积和一次跳跃连接组成,第1 层和第3 层同为卷积核大小为1×1的二维卷积.不同之处在于:对于二维图像,当输入输出维度不匹配时,文献[12]通过第1 层卷积核大小为 1×1、移动步长为 2×2 的卷积层进行下采样.针对三维点云,我们则先使用文献[7]中迭代最远点采样算法进行下采样,再通过卷积核大小为1×1、移动步长为 1×1 的卷积层进行卷积;另外,在文献[12]中第2 层为卷积核大小为 3×3、移动步长为 1×1 的卷积层,我们将其替换为本文提出的立方体卷积运算层.
1.4 三维点云特征金字塔网络
在文献[19]中,特征金字塔网络的组成结构是首先使用最邻近上采样法把高层特征做2 倍上采样,然后与对应的前一层特征相加融合.考虑到特征金字塔网络是为具有规则像素网格结构排列的二维图像设计的,而三维点云数据具有不规则性,当表示点的局部点云分布密度不均时,最邻近点的特征并不能够准确近似表示点的特征.因此,我们采用文献[8]中的基于K 邻近的反距离加权插值法进行特征上采样,如图5 所示.反距离加权插值可表示为
图5 三维点云特征金字塔网络Fig.5 The feature pyramid network for 3D point cloud
2 实验结果与分析
本文实验环境为Intel(R)Core(TM)i7-7800X CPU @ 3.50 GHz,16 GB×4 内存,NVIDIA GTX 1080Ti×2 GPU,系统为Ubuntu 16.04.
2.1 实验数据集
实验数据集为S3DIS 数据集[21]和ScanNet 数据集[22].
S3DIS 数据集总共包含271 个由Matterport 扫描仪从真实室内场景扫描得到的场景数据,包含在6 个文件夹中.本文采用与S3DIS 官方相同的K 折交叉验证策略进行数据集划分.采用与文献[10]相同的训练方法,将原始场景沿着x轴和y轴分成大小为1.5 m×1.5 m 的小块,使用点的位置和颜色信息用于训练和测试,并在训练期间将块点云沿Z轴随机旋转一定角度进行数据增强处理.
ScanNet 数据集总共包含1 513 个从真实室内环境扫描并重建得到的场景数据.本文按照Scan-Net 官方划分标准将数据集分为训练集和测试集两部分.采用和S3DIS 数据集相同的训练方法.另外,由于其他方法没有使用颜色信息用于训练,因此,为了公平比较,本文也不使用颜色信息.
2.2 参数设计
为了验证本文提出的立方体卷积运算的有效性和本文方法的可行性,我们基于文献[19]提出的用于二维图像分割的残差网络-特征金字塔网络结合本文提出的立方体卷积运算构建一种面向散乱点云语义分割的残差网络-特征金字塔网络框架(下文中以ResNet-FPN_C 表示),网络结构参数设计如表1 所示.所有程序由开源框架TensorFlow 及其Python 接口实现,采用ADAM (Adaptive moment estimation)方法进行训练.
表1 参数设计Table 1 The parameter design
2.3 评价指标
本文采用总体精确率(oAcc)、类别平均精确率(mAcc)和类别平均交并比(mIoU)评价指标对试验结果进行评估,并与其他方法进行对比.假设共有k个类别,定义pii表示类别i的预测标签等于真实标签的个数,pij表示类别i的标签预测为类别j的个数.则oAcc可表示为
mAcc表示为
mIoU表示为
另外,由于ScanNet[22]提供的全卷积神经网络基线方法以体素化数据作为输入,其预测标签是基于体素统计的,因此我们采用与文献[8]相同的方法将点预测标签转化为体素预测标签来统计预测结果的oAcc、mAcc和mIoU指标.
2.4 实验结果分析
为验证本文方法的有效性,我们在S3DIS 数据集和ScanNet 数据集上进行了测试.同时,为进一步证明本文提出的立方体卷积运算的通用性,我们基于文献[11]提出的用于医学图像分割的U-Net网络搭建了适用于三维点云语义分割的U-Net网络框架(下文中以U-Net_C 表示).
我们统计了在S3DIS 数据集上的6 折交叉验证结果,如表2 所示,本文ResNet-FPN_C 方法和U-Net_C 方法在oAcc、mAcc和mIoU评价指标上均优于其他方法.各类别IoU统计结果如表3所示,其中,本文ResNet-FPN_C 方法有7 个优于其他方法,U-Net_C 方法有8 个优于其他方法.
表2 S3DIS 数据集分割结果比较 (%)Table 2 Segmentation result comparisons on the S3DIS dataset (%)
表3 S3DIS 数据集各类别IoU分割结果比较 (%)Table 3 Comparison ofIoUfor all categories on the S3DIS dataset (%)
另外,我们在ScanNet 数据集上也进行了测试,结果如表4 所示,从中可以看出,本文ResNet-FPN_C 方法和U-Net_C 方法在oAcc、mAcc和mIoU评价指标上均优于其他方法.各类别的IoU统计结果如表5 所示,其中,本文ResNet-FPN_C方法有8 个优于其他方法,U-Net_C 方法有10 个优于其他方法.
表4 ScanNet 数据集分割结果比较 (%)Table 4 Segmentation result comparisons on the ScanNet dataset (%)
表5 ScanNet 数据集各类别IoU分割结果比较 (%)Table 5 Comparison ofIoUfor all categories on the ScanNet dataset (%)
由于ScanNet 数据集是由便携设备从真实室内场景扫描重建得到的,其重建场景中存在大量缺失、未标注、杂乱信息,且相比S3DIS 数据集包含更多标注类别,因此其语义分割任务更具挑战性.从S3DIS 数据集和ScanNet 数据集测试结果可以看出,本文方法相比其他方法在难以识别的小物体(如picture)和复杂结构物体(如chair、sofa)类别上具有更好的分割性能.值得注意的是door 和window 这两种类别,它们在空间位置和几何结构上和wall 很相近,相比于其他类别这两种类别的分割难度更大,而本文方法较其他方法有较大的分割精度提升.我们分析如下:PointCNN 方法采用的是基于KNN (K-nearest neighbor)的邻近点搜索算法,由于这种算法对点云分布密度比较敏感,当点云分布密度不均时,所获取的邻近点可能全部来自表示点的同一个方向,此时邻近点不能准确反映表示点的局部特征,且由于其卷积设计的局限性对局部空间几何结构的微小变化也不够敏感;Point-Net++提出的MSG (Muti-scale grouping)和MRG (Muti-resolution grouping)方法虽然能够更加合理地获取邻近点,但是由于采用的是Point-Net 中共享参数的多层感知机结合全局最大池化的特征提取方法,而全局最大池化会丢失信息.因此,同样不能准确抽象表示点的高层特征;RSNet 则是先将点云数据分别沿着x,y,z方向进行切片,再将切片后的点云所对应的特征输入循环神经网络提取特征.其试验结果表明这种方法对平面结构物体(如wall、floor、desk 等)有较高的分割精度,但是将点云切片会严重丢失点的空间邻域关系,从而导致循环神经网络很难学习非平面复杂结构物体的特征.而本文提出的立方体卷积运算通过将局部空间划分为 3×3×3 网格来获取表示点的邻近点,能对点云分布密度不均具有更好的鲁棒性,且能感知空间几何结构的微小变化.另外,通过对所获取的邻近点进行排序可以使得二维卷积能够感知视角信息,从而准确地抽象表示点的高层特征.因此,相比其他方法本文方法具有更好分割性能.
同时我们也做了耗时统计实验,所有方法均在相同实验环境下以在1080Ti 单GPU 上所发挥的最大性能统计.如表6 所示,当输入点云个数为8 192时,本文ResNet-FPN_C 方法单batch 平均训练时间和前向传播时间分别为0.060 s 和0.042 s,略慢于其他方法.虽然U-Net_C 方法在mIoU 指标上可以取得更好的结果,但是其速度也明显降低.因此,本文提出的ResNet-FPN 网络具有更为平衡的运行效率和分割精度.由于本文提出的立方体卷积运算具有简单、通用性强等特点,可以将用于二维图像处理的一些主流神经网络适用于三维点云分割任务,因此后续我们将尝试更多主流的神经网络框架或针对三维点云分割任务对网络结构进行改进来提高精确率和减少耗时.另外值得一提的是,由于PointCNN 方法中参数化卷积设计的局限性,限制了其输入点的个数,而本文方法当输入点个数4倍于PointCNN方法时,在训练时间和前向传播时间方面依然取得了不错的表现.验证了本文方法的有效性和可行性.
表6 耗时比较Table 6 Comparison of running time
3 结语
本文分析了二维卷积的特点和现有参数化卷积设计的局限性,提出了一种通用立方体卷积运算,以通过二维卷积实现三维表示点的高层特征的抽取;基于此,提出了一种面向散乱点云语义分割的深度残差-特征金字塔网络,将用于二维图像处理的神经网络框架适用到了三维点云分割任务中.实验结果表明,本文提出的立方体卷积运算具有良好的适用性,且本文提出的深度残差-特征金字塔网络框架在分割精度方面优于现存同类方法.在后续工作中,作者将结合特征可视化分析,进一步发现本文方法的不足并做出改进.此外,结合本文提出的立方体卷积运算,将更多主流的二维卷积神经网络框架用于三维点云分割任务也是我们下一步的工作.