许振楠,沈 洋,许 浩,包艳霞,刘 江
(1.浙江理工大学 计算机科学与技术学院,浙江 杭州 310018;2.丽水学院 工学院,浙江 丽水 323000)
三维点云的生成方法是计算机视觉领域关注的热点问题之一。二维图像难以表示现实世界中多个物体之间的深度信息,并且不适用于需要深度和定位信息的场景,从机器人导航[1]到自动驾驶汽车[2-3],从增强现实[4]到医疗保健[5],3D 数据集正在被广泛使用。在各种数据模式中,原始点云作为一种紧凑的表示形式正变得流行起来,它能够捕捉物体的复杂细节。三维点云可以被认为是从一个物体的表面收集到的一个无序的不规则点集,每个点由一个笛卡尔坐标组成,以及其他附加信息,如曲率、表面法线估计和RGB 颜色值等。由于曲率和法线是由点云坐标经过一系列线性变换计算得到,曲率和法线无法提供比坐标更多的信息,因此点云的曲率等因素对点云的生成影响较小。
近年来,基于生成对抗网络的点云生成模型相继出现,生成对抗网络(Generative Adversarial Networks,GAN)是Goodfellow 等[6]于2014 年提出的一种生成式模型,目前已成为人工智能学界的一个热门研究方向。在二维图像中,图像生成的像素是以规则的格子排列,而三维形状是由三维空间中的离散点表示,缺乏结构性。传统GAN 由于初始潜码从高斯分布中采样,导致生成具有不均匀性的点云,鉴于每个点云中点的数量是固定的(现有的GAN 通常为2 048 个),这种不均匀性使得点集中在一个区域,使得其他区域稀疏甚至空洞。如果没有适当的正则化,更多的点会聚集在物体的几何中心或不同语义部分的连接处,导致点云生成高度不均匀的形状。点云数据是一个包含三维坐标信息的无序点集合,对数据顺序不敏感,相同的一个点云数据模型完全可以有多种不同的存储顺序,并且传统三维GAN 在训练过程中缺乏概率分布信息的学习,因此在训练点云生成上效率不高。
本文提出了一种基于点云概率分布学习的生成对抗网络以处理生成点云分布不均和生成真实点云效率不高的问题,在映射网络中训练了一个潜码用以学习点云的概率分布,网络输出得到一个概率分布更加准确的潜码,在树结构生成网络中的每一层使点云的分布对齐到潜码的分布,改变了生成点云的位置分布,使生成点云的形状更具结构性,不仅解决了分布不均的问题,在生成真实点云的效率上也高于以往三维GAN 生成点云方法,并且通过改变初始的潜码,可以改变生成点云的局部特征,并通过相关实验证明了该方法具有可行性和有效性。本文主要贡献如下:①将从高斯分布采样的潜码通过映射网络训练学习点云的概率分布,使点云的概率分布对齐到潜码的概率分布,生成点云的形状更具结构性,可以提高模型训练效率;②通过映射网络中全连接层训练学习到的概率分布可以解决树结构生成网络子节点受父节点影响产生的点云生成不均匀的问题;③通过改变初始潜码,使得生成点云的位置分布改变,达到改变生成点云局部特征的效果。
最近,基于深度神经网络的3D 数据生成问题备受关注,并产生了许多解决方案,包括图像到点云[7]、图像到体素[8]、图像到网格[9]、点云到体素[10]和点云到点云[11]。生成的3D 数据已广泛应用于计算机视觉(例如:分割[12-13]、分类[14-15]、目标检测[16-17]、特征提取[18]等),并取得显著效果。
用于2D 图像生成任务的GAN[19-20]已被广泛研究并取得良好效果,在StyleGAN[21]中,一个新的生成器结构(Style-based Generator)被提出,与传统GAN 直接将随机潜在向量输入生成器不同,其在生成器前添加了一个非线性映射网络,并且结合风格迁移方法,基于潜码调整各卷积层的图像风格,达到了控制图像风格的效果。与三维点云不同,二维图像的像素是规则排列的,StyleGAN 中潜码控制的是图像的灰度颜色特征。本文受StyleGAN 启发,将映射网络和风格迁移方法加以改进并应用于点云生成,改进后的映射网络中的潜码能有效地学习点云的概率分布信息,改变生成点云的分布及特征。
近几年,在3D 点云生成方面,Achlioptas 等[22]提出一种用于3D 点云的GAN,称为r-GAN,其生成器基于全连接层。由于全连接层无法保持结构信息,r-GAN 难以生成具有多样性的逼真形状。Valsesia 等[23]使用图卷积作为GAN 的生成器。在训练期间的每一层图卷积中,使用来自每个顶点的特征向量动态构建邻接矩阵。然而,为了提取图的连通性,在单层计算邻接矩阵时会产生二次计算复杂度O(V2),其中V 表示顶点数量,因而这种方法对于多批次和多层网络是难以处理的。与Valsesia 中的方法不同,Tree-GAN 在计算上更为高效,因为它不构造邻接矩阵[24]。相反,Tree-GAN 使用来自树的祖先信息并利用了图的连通性,只需一个树结构列表即可。由于没有适当的正则化,Tree-GAN 不同分支的点会倾向于形成类似高斯的分布,如更多的点聚集在物体的几何中心或不同语义部分的连接处,并且树形结构生成的点分布更依赖其祖先分布,导致生成点云的形状不均匀。在ShapeInversion 中,一个均匀损失以解决生成点云不均匀性的问题被提出,通过最远点取样(FPS)对物体表面的n个种子位置进行随机取样,再让每个种子的k个最近邻居形成小区块,计算每个种子与其k个最近邻居之间的平均距离,并对所有区块的平均距离的方差进行惩罚[25]。
与ShapeInversion 中通过损失函数解决生成点云不均匀性问题不同,本文在训练过程中分为两部分:于映射网络中训练一个潜码得到概率分布更加均匀的特征向量,于树型生成网络中训练学习点云的特征信息,在树型生成网络的每一层通过AdaIN 模块将特征向量结合达到解决生成点云的不均匀性,并且不需要额外的损失函数,效率较传统GAN 更高。
本文提出了一种基于TreeGAN[24]的树结构深度生成网络Probability-TreeGAN(P-TreeGAN)。受StyleGAN[21]通过风格迁移方法改变生成图片内容样式的启发,本文在生成器中加入一个改进后的映射网络,用以学习点云位置的概率分布,使用风格迁移方法结合学习的概率分布改变点云的位置分布。
TreeGAN 的生成器是一个典型的树结构生成网络,从高斯分布中获取一个点作为输入,在生成器的每一层,都会进行分支(Branching)和图卷积(GraphConv)操作以生成下一层的点。先前层生成的所有点都被存储并附加到当前层的树中,树从根节点开始,通过分支操作分裂为子节点,并通过图卷积操作修改节点的值。Branching 模块是用于生成点云过程中增加点的总数,与二维卷积中的上采样类似。在生成器中,对每一层使用不同的分支度,经过最后一层分支操作得到2 048 个点。与传统图卷积通过邻接点的值更新其值不同,TreeGAN 提出的树图卷积(TreeGCN)是通过每个顶点祖先的值更新它的值,为GCN引入了树结构,如式(1)所示。
由于TreeGCN 是通过祖先节点的值更新当前节点的值,它可以使用祖先信息提高特征的表示能力。但同时,在树型结构中每一层新生成的点分布均受祖先节点分布影响,如果祖先节点的分布不均匀,子节点也会不均匀,且经过Branching 后的点分布容易集中在物体的语义中心部分或者不同语义连接处(见图1),并且训练效率不高,存在一定局限性。
Fig.1 Chair point cloud generated by TreeGAN图1 TreeGAN生成的椅子点云
本文引入了WGAN-GP[26]的目标函数,生成器的损失函数Lgen定义如式(2)所示。
其中,D为判别器,G为生成器,Z为潜在分布,采用正态分布N(0,I)。
判别器的损失函数Ldisc定义如式(3)所示。
其中,G(z)为生成的点云,x为真实的点云,R表示真实的数据分布,并且使用了梯度惩罚的方法,x是从真假点云中采样,λgp为梯度惩罚项的常系数。
判别器的损失函数会使网络生成的点集中于点云判别性特征,如边缘明显的部分,同样会造成生成点云分布不均匀。为了改善该问题,本文通过映射网络训练学习得到概率分布更加准确的潜码,并且在生成过程中使点云的分布对齐到潜码的分布,生成点云分布更加均匀。Shape-Inversion[25]中,通过加入一个损失项以约束生成点之间的距离,具有一定效果。但与之相比,本文方法不需要额外的损失函数,计算量更少、效率更高。
为了解决树型网络和判别器损失函数产生的不均匀性问题,本文在生成器中引入风格迁移[27]方法并结合改进后的映射网络中学习的概率分布改变生成点云的位置分布。
2.3.1 改进后的映射网络
StyleGAN 中,映射网络学习的潜码控制图像风格的功能已得以广泛应用。受其启发,本文将映射网络加以改进并引入生成器,使潜码在网络中学习点云的概率分布。StyleGAN 中生成的是二维图像,控制二维图像特征的是图像的灰度颜色信息,图2(a)为StyleGAN 中的映射网络,其潜码是通过8 层全连接层后直接映射到各网络层。三维点云的特征是通过点云的位置分布进行控制,与StyleGAN不同,本文映射网络中的潜码学习的是点云的概率分布,图2(b)为本文改进后的映射网络,其每一层潜码都会映射到对应生成网络层,映射网络的前两层学习的是点云的粗粒度特征(如形状、大小等),其潜码需要多层全连接层进行训练以学习其概率分布。随着网络深度增加,潜码控制生成点云的细节特征和分布的均匀性,用于学习点云的概率分布的全连接层数减少。通过全连接层的学习使潜码的概率分布更加均匀,能更好地控制生成点云的特征。
2.3.2 AdaIN模块
风格迁移中的主要方法是自适应实例标准化AdaIN(Adaptive Instance Normalization)[27],将内容图像特征的均值和方差对齐到风格图像的均值和方差,以实现风格迁移。本文使用AdaIN 模块将通过映射网络学习得到的潜码,与生成网络中基向量x结合,使三维点云位置特征的均值和方差对齐到潜码的均值和方差,达到改变生成点云分布的效果,如式(4)所示。
其中,σ(x)、σ(y) 分别为基向量和潜码的方差,μ(x)、μ(y)分别为基向量和潜码的均值。由于树型生成网络子节点受父节点影响导致点云生成不均匀,本文在树型生成网络每一层进行分支和图卷积之前加入AdaIN 模块,用于改变生成点云的分布。
2.3.3 生成器网络
生成器主要由映射网络和树结构生成网络两个部分组成,映射网络中共有11 个全连接层,用以学习点云的概率分布;树结构网络由7 个PT-Block 模块(ProbabilityTree-Block)组成,每个模块有自适应性实例标准化(AdaIN)、分支(Branching)、图卷积(GraphConv)3 个部分,用以学习点云的特征信息。将潜码通过全连接层进行训练使其概率分布更加准确,再映射到各PT-Block 模块中,通过AdaIN模块结合使树结构网络中每一层生成的点云分布均受潜码的概率分布影响,网络结构如图3所示。
2.3.4 训练阶段算法流程
在模型训练阶段,本文算法分为两个部分。一部分在映射网络中学习点云的概率分布信息,一部分在树型网络中学习点云的形状信息。从高斯分布中随机采样潜码z、x。将潜码z输入映射网络学习点云概率分布,在映射网络中通过全连接层及上采样层得到对应树型生成网络每一层不同维度的潜码向量w1,w2,...,w7;将潜码x输入树型生成网络作为基向量用以生成点云,在树型生成网络每一层分支上采样前加入AdaIN 模块,在AdaIN 模块中将每一层生成的点云x1,x2,...,x7对齐到潜码w1,w2,...,w7上,结合映射网络中学习好点云概率分布的潜码改变当前层生成点云的分布信息。算法流程如图4所示。
本文生成器网络模型是金字塔结构,从上到下生成信息更丰富的点云,映射网络中潜码通过全连接层和上采样,逐渐学习更深层的信息,全连接层可以整合网络层中具有类别区分性的局部信息,更好地提取特征,金字塔底部潜码可以比顶部的潜码学习更加准确的概率分布信息,更能反映点云结构的形状信息。树型生成网络是根据父节点的信息生成子节点,当前层点云的均匀性及分布信息会被前几层的点云影响,网络层数越深影响越大。在树型生成网络每一层中都加入对应维度的潜码,通过AdaIN 模块使生成点云对齐到学习好概率分布的潜码,改变当前层生成点云的分布信息,使生成点云的位置更加准确,更具结构性,在训练过程中生成接近真实的点云时间更短,提升了模型训练效率。这不仅解决了树结构生成点依赖祖先点产生的不均匀性问题,对判别器损失函数趋于生成点集中在边缘特征明显位置的情况也有所改善。
使用ShapeNet Part 数据集对本文提出的模型进行训练和评估。ShapeNet Part 总共有16 类,训练集12 137 个,验证集1 870 个,测试集2 874 个,总计16 881 个。该数据集中样本呈现出不均衡特性,如Table 类别有5 263 个样本,而Earphone 类别只有69 个样本。每个样本包含2 048个点,属于小数据集。实验平台为搭载GeForce RTX 3090 GPU 的服务器,配置环境为Python3.8 和Tensorflow2.4-gpu。
本文使用JS 散度(Jensen-Shannon Divergence)评估GAN 生成点云的质量,JS 散度是定义在欧几里得三维空间边缘分布的。假设条件为轴对齐的点云数据和环境空间中的规范体素网格,可以测量点云A 与点云B 占据相似位置的程度。通过分别计算点云A 和点云B 中每个体素内的点数,获得经验分布(PA,PB)之间的JSD,如式(5)所示。
其中,M=(PA+PB)/2,D(·||·)是两个分布之间的KL散度(Kullback-Leibler divergence),KL 散度是一个用来衡量两个概率分布之间相似性的度量指标,如式(6)所示。
本文对生成器和判别器网络都使用了Adam 优化器,学习率为α=10-4,其他系数为β1=0 和β2=0.99。在生成器中,使用LeakyReLU(α=0.2)作为没有批归一化的非线性函数。损失函数中梯度惩罚系数设置为10,判别器每次迭代更新5 次,而生成器每次迭代更新一次。潜在向量z∈R96从正态分布N(0,I)中采样以作为输入,TreeGCN 的循环项有K=10 个支持,最后一层的总点数设置为n=2 048。判别器网络结构及参数如表1所示。
Table 1 Discriminator network structure and parameter表1 判别器网络结构及参数
在生成点云前,潜码需要通过映射网络进行训练以学习点云位置的概率分布。为了观察映射网络学习点云概率分布的效果,将潜码直接输入生成网络与经过映射网络训练学习的原网络进行对比。对飞机类别进行了2 000 个周期的训练,通过观察两个模型的JSD 变化趋势以判断映射网络的重要性,从折线图(见图5)可以看出,网络直接加入从高斯分布采样的潜码生成点云的JSD 指标波动大,并且最终生成的点云分布也不规则。因为经过映射网络中全连接层训练后的潜码概率分布更加均匀,生成点云的分布更接近潜码的概率分布,使生成的点云更加规则和稳定,证明了模型中映射网络学习到的点云概率分布的有效性。
Fig.5 JSD change curve with and without mapping network图5 有无映射网络的JSD变化曲线
将本文提出的模型与其他用于点云生成的GAN 模型进行定量和定性比较。由于Valsesia 等[23]只展现了飞机和椅子的点云结果,且其源代码没有公开,因而本文基于飞机和椅子的结果与其他GAN 进行了比较,并且对所有16 个类别进行了评估。在ShapeNet Part 数据集上进行了5 000 个epoch 的训练,将实验结果与其他模型进行比较,如表2所示。
Table 2 Quantitative comparison in terms of the JSD metrics表2 JSD指标的定量比较
在Shapenet Part 数据集上,本文提出模型的JSD 在椅子和飞机以及总体16 类上分别达0.093、0.074 和0.091,均优于其他用于点云生成的GAN 模型,表明本文模型生成点云质量更高,模型泛化性更强。
针对GAN 模型生成点云具有不均匀性的问题,本文通过映射网络训练了一个概率分布更加准确的潜码,在点云生成过程中加入概率分布信息,使得生成点云更加均匀。为了方便对比观察,对TreeGAN 和P-TreeGAN 进行了可视化实验,将两个模型生成的点云(2 048 个点)训练2 000 个epoch 进行对比,可视化结果如图6所示。
Fig.6 Uniformity comparison of point cloud generation图6 生成点云的均匀性比较
对比图6 中TreeGAN 和P-TreeGAN 生成的结果,TreeGAN 生成的点云会有更多的点聚集在物体的几何中心以及不同语义部分的连接处,导致生成点云的形状不均匀。如图6 所示,TreeGAN 生成的椅子大量聚集在椅背和椅座连接的位置;飞机中的点聚集在机身,机翼和机尾的点较为稀疏;桌子中的点聚集在桌面中心,桌子边缘及桌腿的点稀疏。而本文提出的模型在生成网络中的图卷积之前增加了AdaIN 模块,将映射网络中训练得到概率分布更加准确的潜码结合,改变了生成点云的位置分布,实验可视化结果证明本文模型生成的点云更加均匀。
针对TreeGAN 模型训练速度慢、JSD 指标收敛慢的问题,本文提出的模型在点云生成过程中加入了学习了概率分布的潜码,使得生成点云的形状更具结构性,生成更加真实的点云速度更快,提高了训练效率和收敛速度。将本文提出的模型与TreeGAN 在相同参数条件下,对椅子类别进行了2 000 个epoch 的实验,对指标JSD 的变化情况进行了对比,选取前150个epoch 绘制折线图如图7所示。
Fig.7 Comparison of model training efficiency图7 模型训练效率比较
对图7 中折线进行分析得出,本文提出的模型在JSD收敛速度上明显快于TreeGAN。为了更清楚地看到模型训练时生成点云的质量,取两个模型训练各周期时生成的点云图进行对比,结果如图8所示。
Fig.8 Comparison of the point clouds generated by training each epoch图8 训练各epoch生成的点云比较
图8 对两个模型在训练相同周期时生成的点云进行对比,在训练100 个epoch 时,本文模型生成的椅子已经初具形状,而TreeGAN 生成的椅子大量散点仍然聚集在一起;在训练500个epoch 时,TreeGAN 生成的椅子仅有轮廓,而本文模型生成的椅子已经特征明显,从可视化结果可以看出P-TreeGAN 生成点云的效果比TreeGAN 更好。此外,为了更直观地比较速度,对达到不同JSD 所需要的训练周期进行了统计,结果如表3所示。
Table 3 The period required for training to reach the specified JSD表3 训练达到指定JSD所需周期
可以看出,在达到相同精度的JSD 情况下,本文提出的模型所需训练周期远少于TreeGAN。当JSD 达到0.3 时,TreeGAN 需要600 个epoch,而P-TreeGAN 只需要100 个epoch 训练周期,速度是TreeGAN 的6 倍;当JSD 达到0.15时,P-TreeGAN 所需训练周期比TreeGAN 少了1 000 个epoch。以上实验均证明本文提出模型在训练效率上的高效性。
本文模型在训练阶段,映射网络的潜码和树型生成网络的基向量均从正态分布随机采样。将训练好的模型通过改变映射网络中初始的潜码以达到改变生成点云局部特征的效果。对椅子、飞机和桌子进行实验,分别取6 个不同的初始潜码改变生成点云的局部特征,同时训练2 000个epoch,可视化结果如图9所示。
Fig.9 Point cloud renderings generated under different features图9 不同特征下生成点云效果
本文提出一种基于点云概率分布学习的树结构生成对抗网络P-TreeGAN。在生成器中加入映射网络用以训练学习点云位置的概率分布,在点云生成过程中使点云位置分布对齐到潜码的概率分布,生成点云的形状更具结构性,不仅训练效率更高,生成点云分布更加均匀,并且通过改变初始的潜码可以改变生成点云的特征。
本文模型生成的点云在椅子、飞机以及总体16 类别上的JSD 指标评估上均优于r-GAN、TreeGAN 等传统点云生成GAN 模型,更加接近真实点云。并且与TreeGAN 进行了均匀性和训练效率比较,可视化结果均显示本文模型效果更好。本文还展示了控制生成椅子和桌子特征的可视化结果,效果良好。后续将针对映射网络进行改进,进一步提升训练效率和生成点云质量;同时,对生成点云的特征进行控制,例如特征混合等。