端到端优化的3D点云几何信息有损压缩模型
2022-07-09徐嘉诚方志军高永彬
徐嘉诚,方志军,黄 勃,高永彬,周 恒
上海工程技术大学,电子电气工程学院,上海201620
0 引言
目前,3D点云已被广泛应用于3D场景的表示。然而,点云往往会占用大量的传输带宽或存储空间。以每秒30帧,每个3D帧有30万个点的点云为例,原始点云视频每秒需要约200 MB的存储空间[1]。因此,点云压缩成为研究的热点。
在点云几何信息压缩研究中,精确的几何信息重构对于高质量的渲染至关重要,因此几何信息的无损压缩在新兴的动态图像专家组(moving picture experts group,MPEG)中得到了广泛的关注和研究。最先进的无损几何信息压缩技术可以有效的利用几何信息重构高质量的点云数据,但其码率仍然超过每个占用体素(bits per occupied voxel,bpov)2比特[2],使用无损几何信息压缩技术压缩密集点云时会占用大量存储空间。在虚拟现实、增强现实和元宇宙等实际应用场景中,往往对点云数据的重构精度要求并不高,更加注重传感器对点云数据的实时采集和高效传输。因此许多现有的点云几何信息有损压缩工作已经集成到MPEG点云压缩(point cloud compression,PCC)标准[3]中。MPEG提供点云几何信息压缩(geometry-point cloud compression,G-PCC)标准[4]作为点云几何信息压缩的基线。G-PCC标准[4]首先将原始点云数据转换为体素化点云数据,然后使用八叉树编码来压缩点云,最后通过改变体素精度来调整码率。然而在低码率情况下,基于八叉树的有损几何信息压缩MPEG G-PCC(Octree)[4]随着码率的降低,八叉树的深度也降低,使得MPEG G-PCC(Octree)[4]只能在衡量码率预算下保留更少的点,造成点云数量以指数方式减少,并伴随着块效应问题。MPEG GPCC(Octree)[4]出现的大面积点云缺失问题是由于在预测过程中,点云数据的误差只通过均方误差(mean square error,MSE)等粗略误差来测量,因此生成的点云不能很好地保留原始点云的质量。有时MSE与实际感知不符,或者存在较大差距。因为MSE认为每个体素点都有同样重要的作用,所以较小的MSE并不意味着点云的质量高。此外,在MSE很小的情况下,重构后的点云数据存在大面积点云缺失问题。近年来深度学习已经在3D点云领域取得不错的成绩[5~7],并且很多研究者使用深度学习方法研究3D点云压缩[8~11]。Tu等[12]提出基于残差块的递归神经网络,直接对原始激光雷达数据进行压缩并具有良好性能。但该方法是先将原始3D激光雷达数据转换为二维矩阵,然后通过二维图像压缩方法进行数据压缩。因此,它不是一种通用的点云压缩方法,不能很好地应用于点云数据压缩。目前,基于学习的点云压缩方法[13,14]大多基于自编码器框架。该类方法通过编码器压缩生成点云数据的潜在向量。在条件高斯分布下,隐向量保留原始点云的特征,并通过解码器解压缩。因此,重构后的点云将更加合理和准确。该类方法有效解决低码率情况下基于八叉树有损几何信息压缩出现的块效应问题,但目前仍然存在大面积点云缺失问题。
针对以上问题,本文提出一种基于深度卷积生成对抗网络(deep convolutional generative adversarial network,DCGAN)优化的自编码器3D点云几何信息有损压缩模型。该模型旨在结合自编码器和生成对抗网络的优势,利用自编码器有效提取深度特征,并使用DCGAN重构高质量的点云数据。DCGAN通过其博弈训练提升压缩系统的整体性能。其中生成器的作用是生成几乎与真实点云一致的点云数据,判别器的作用是判断输入的点云是来自于生成器生成的点云数据还是真实的点云数据。生成器不断地试图“欺骗”判别器。判别器对输入的生成点云数据或真实点云数据生成判断结果,模型利用判决结果计算误差并利用梯度下降法对神经网络参数进行调整和优化,最后使生成器对点云数据的前景和边缘具有更大的权重。即,本文解码器从周围环境中重建缺失部分,并重建出高质量,更加真实的点云。本文模型虽然解决了大面积点云缺失,并重建出高质量的点云数据,但同时出现码率增大的问题。为解决码率增大的问题,本文提出一种反卷积跳跃连接(deconvolution hopping connection,DHC)。该结构将解码器各层信息传递到最后输出层进行特征融合,最终解码器通过DHC结构利用较少的信息重建出高质量的点云数据。简而言之,解码器能够在更低的码率下重建出高质量的点云。
本文主要贡献如下:
1)提出一种基于DCGAN优化的自编码器点云几何信息有损压缩模型。根据我们现有掌握的知识,本文是首次尝试使用生成对抗网络进行3D点云几何信息有损压缩的论文。值得注意的是,本文所提出的DCGAN解决了大面积点云缺失,并且该模型获得了视觉质量更好的重建点云。
2)提出一种反卷积跳跃连接结构,提高了点云解码的精度。解码器能够在更低的码率情况下重建一个高质量的点云数据。
1 本文模型
本文提出的端到端优化的3D点云几何信息有损压缩模型由三个模块组成:基于3D卷积神经网络(convolutional neural network,CNN)的编码器、量化器和基于深度卷积生成对抗网络(deep convolutional generative adversarial network,DCGAN)的解码器。本文基于DCGAN优化的自编码器压缩模型对体素化点云数据进行压缩和解压缩,该压缩系统框架如图1所示。首先,对3D点云数据进行体素化处理得到体素化点云数据。然后,体素化点云数据经过基于DCGAN优化的自编码器压缩模型。该压缩模型包括一个编码器E、一个量化器Q和一个解码器D。编码器E将体素化点云数据作为输入并生成一个压缩表示,量化器Q将由E的输出量化表示并输入解码器D,重构一个体素化点云。因此,我们的压缩模型可以形式化表示为
图1 压缩模型框架图Fig.1 The structure of the compression model
1.1 点云体素化处理
本文选择体素化点云作为点云的3D表示,可以简单地将其视为点云被限制在一个规则的3D体素内。点云几何信息(x,y,z)被量化为规则的、给定步长和轴向对齐的3D体素。其中包含点的体素被称为占用体素,反之没有包含点的体素被称为非占用体素。类似于一般2D图像处理中的行索引和列索引,本文假设体素是通过整数格子中的位置进行寻址,其中UR={0,…,R-1},R=2N表示分辨率上可能的点的集合,N为整数。因此,(x,y,z)被视为N位无符号整数。本文的体素化点云{ui}是一个占用体素的有限集或任意索引列表,每个体素表示如下
其中,第i个体素的坐标信息表示为(xi,yi,z)i,本文将体素化点云定义为{ui}⊆UR的集合,其对应的体素网格信息Vg表示如下
(3)式表达的意思为,如果体素v∈{ui},即Vg=1,v为占用体素。反之,Vg=0,v为非占用体素。点云几何信息在本文中被称为体素化点云。体素化点云数据使得本文应用3D卷积能更高效和紧凑地表示三维空间中的体素间关联性。
1.2 编码器和解码器
通常情况下,基于自编码器的压缩框架分为分析变换(编码)和合成变换(解码)两个阶段。在编码过程中,利用3D CNN对体素化点云空间相关性进行分析和利用。对于任意一个体素化点云v,本文的目标是得到更加紧凑的潜在特征w,该潜在特征是由长度、宽度、高度和通道组成的4D张量。分析转换表示为:w=fe(v;θe),网络参数为θe。相应地,镜像设计了一种合成变换,将量化的潜在特征解码为重构的体素化点云合成变换表示为=网络参数为ψd。
在编码器中,本文提出3D卷积编码网络学习体素化点云数据更加紧凑的潜在特征。编码网络由三个3D卷积层组成,每层有32个卷积核,每层的核大小分别为9、5、5。除了第三个3D卷积层外,其他3D卷积层后面都有一个偏置(bias)层和线性整流(ReLu)激活层。量化器通过熵编码器将编码网络输出的潜在特征变成二进制流。
在解码器中,本文提出由生成器和判别器组成的DCGAN解压重构体素化点云。以下是生成器和判别器网络的详细描述。
生成器:图1中生成器网络用接收到的编码器输出信息重建原始体素化点云数据。生成器网络由三个3D反卷积层组成,前两层每层有32个反卷积核,每层的核大小分别为5。最后一层反卷积层只有1个反卷积核,核大小为9。每个3D反卷积层后面都有一个偏置(bias)层和一个线性整流(ReLu)激活层。最后,解码器对3D反卷积网络输出的特征图进行非占用体素处理,得到体素化点云。
判别器:点云数据分类网络构成判别器,如图1解码器部分所示。将生成的3D点云数据和真实的3D点云数据输入到判别器中,由判别器判断哪个数据是真实的。该判别器利用三个3D卷积层提取特征,其中每个卷积层后面都有一个偏置(bias)层和泄露线性整流(LeakyReLu)激活层,通过激活函数正则化(dropout)层以概率方式将输入的激活函数值改变为0,防止网络过拟合。最后,利用扁平(flatten)层生成一维数据,利用稠密(dense)层作为最后一层进行1或0的真假分类。此外,判别器仅在训练阶段与生成器进行对抗式迭代优化,在测试阶段仅通过生成器就能够重建得到良好的体素化点云。
本文使用DCGAN解压缩重建出高质量点云,但却出现码率增大的问题。为了获得高质量重建点云数据的同时降低码率,本文提出一种反卷积跳跃连接结构(deconvolution hopping connection,DHC)。通过该结构改进解压缩网络,解码器能够获得更全面的点云信息,并在更低的码率下获得更高的解码精度。如图1所示,3D反卷积网络通过DHC结构将前面各层输出信息传输到最后一层进行特征融合,通过融合特征重构出高质量点云数据。在DHC结构中,三个不同的3D反卷积层完成三个跳跃连接。每个反卷积层有32个反卷积核,核的大小为5。由于跳跃连接层级不同,三个3D反卷积核的步幅大小分别为8,4,2。
1.3 量化与熵编码
为了减少存储和传输所需的信息量,量化是多媒体数据压缩的一个重要步骤。然而,像舍入函数这样的量化函数的导数为零或未定义,会造成在端到端训练方案中,反向传播的直接舍入是不可微的。相反,Ballé等[15]用加性均匀噪声代替量化,确保了可微性。=w+α,其中α为之间的随机均匀噪声是具有实际舍入误差的噪声潜在表示。遵循以w为中心的均匀分布Η,表示为w:
熵编码是利用统计冗余进行源压缩的关键。理论上,源符号(如特征元素)的熵界与其概率分布密切相关,准确地估计熵界对率失真优化起着关键作用。本文量化后的潜在特征码率为=,用作为的自概率密度函数(p.d.f)。
量化器将编码器输出的潜在特征转换为二进制流传输到解码器。利用Minnen等[16]提出熵编码算法对数据进行量化,并计算每个输入占用体素的码率(bpov)。解码器将接收到的二进制流重建出体素化点云数据。熵编码算法由非线性网络组成,因此本文提出的模型是一种基于数据驱动的端到端3D点云几何信息有损压缩模型。
1.4 率失真损失
在有损压缩问题中,通常必须在离散化潜在特征的熵和压缩引起的误差之间进行权衡。因此,我们的目标是使占用体素的码率R和失真D加权和最小,使率失真性能达到最大化。本文模型损失函数为
其中,φ为率失真权衡参数控制模型压缩性能,D为失真损失函数,计算如下
其中,超参数γadv和γdec是平衡对抗损失函数和解码损失函数的权重,Ladv为对抗损失函数,Ldec为解码损失函数。
对抗损失函数:本文将g和d作为参变量函数。g表示从二进制流生成实际样本的映射函数。d表示为区分真实的样本和生成的数据的判别函数。对抗损失函数的定义如下
解码损失函数:本文的解码过程可以视为二分类过程,其中每个点v的体素分类为占用或未占用。然而,由于大多数点云非常稀疏,体素化的点云通常等于零。因此,被占用的体素不能被准确地学习,即网络无法有效学习3D体素化点云数据。为了保持占用体素和未占用体素之间的平衡,本文采用文献[17]中定义的σ-平衡焦点损失函数,定义解码损失函数
解码器将输出体素化点云数据v,其关联值为pv。并且,如果v=1定义为pv,否则定义为1-pv。同样的,如果v=1,σv定义为σ,否则定义为1-σ。在本文实验中,σ设置为0.9,ξ设置为2。
2 实验结果与分析
2.1 数据集
本文提出的模型是通过数据驱动的端到端优化3D点云几何信息的有损压缩,需要大量的点云进行训练,所以本文训练点云几何信息有损压缩模型时使用ModelNet40[18]数据集。作为最广泛使用的点云分析基准,ModelNet40因其类别多样、形状清晰、数据集结构良好等而广受欢迎。为将该数据集转换为3D体素化点云数据,首先对每个网格的表面进行均匀采样,然后将点云数据缩放为64×64×64体素。此外,本文的训练数据集由Model-Net40中的12 311个网格组成,其中包括飞机、汽车、植物和灯等40个类别。数据集分为两个子集:用于训练的9 843个样本和用于测试的2 468个样本,这两个子集包含ModelNet40中所有的40个类别。在评价实验中本文在微软体素化上半身(Microsoft Voxelized Upper Bodies,MVUB)[19]数据集中的Andrew、David、Phil和Sarah 4个序列上进行模型的帧内压缩性能评估。该数据集中的点云数据是分别针对Andrew、David、Phil和Sarah的3D点云视频序列,以30帧每秒的速度在其中的7到10 s内捕获得来的。
2.2 模型训练
本文使用python3.6.7实现了基于Tensorflow-GPU 1.13.1平台的模型。在一台i7-8700 CPU和GTX1080ti GPU(11 GB显存)的计算机上训练本文模型。使用Adam优化方法训练网络,学习速率为0.000 1。在30 000步内对模型进行优化训练,批量大小为64。在训练阶段为进行更加公平的率失真性能比较,本文模型将损失函数定义式(4)中率失真权衡φ分别设为1.0×10-4,1.0×10-5,5.0×10-4,5.0×10-5和5.0×10-6,生成5个压缩性能模型。
2.3 评价设置和度量
在评价实验中使用MVUB的体素化点云数据集。原始点云和重建点云可能有不同数量的点。例如,在本文模型中,重建点云比原始点云多出大量点,而在MPEG G-PCC的方法中则相反。点到面对称PSNR(point to plane symmetric peak signal to noise ratio,PPS-PSNR)[20]比标准PSNR更加客观和准确。因此,本文测量每个占用体素的码率,并使用PPS-PSNR评估点云帧质量,PPS-PSNR计算公式如下
其中,Psymmetric(A,B)表示点云数据A中点到点云数据B中面之间最近距离的点到面对称峰值信噪比(PPS-PSNR)计算,并且本文使用BD-BR[21]和BDPSNR[21]对不同的压缩模型进行客观比较。
2.4 率失真性能比较
为进行公平的率失真性能比较,对相似的码率范围或失真执行不同的方法。
1)对于MPEG G-PCC(Octree),将Position Quantization Scale设置为0.25、0.5、0.75、0.875和0.937 5,其他参数保持默认值。
2)对于Quach等[13]方法,在训练中率失真权衡φ分别设为1.0×10-4,1.0×10-5,5.0×10-4,5.0×10-5和5.0×10-6,得到5种不同码率的模型。
表1为本文模型与Quach等[13]方法和MPEG G-PCC标准[4]的率失真性能比较的增益结果(表1中用“+”表示相对于本文模型的增加,“-”表示减少)。
表1 率失真性能比较Table 1 Compar ison of r ate-distortion per for mance
由表1可以看出,本文模型分别与Quach等[13]方法和MPEG G-PCC标准[4]进行比较,BD-BR平均降低了16.60%和62.01%,BD-PSNR平均增加了1.089 9 dB和4.497 1 dB。率失真曲线图如图2所示,因为在低码率的情况下Quach等[13]方法和MPEG GPCC标准[4]会出现点云缺失,导致峰值信噪比较低,然而本文提出端到端优化的3D点云几何信息有损压缩模型,利用自编码器和深度卷积生成对抗网络算法解决了大面积点云缺失问题并重建出高质量的点云数据,使得本文模型在相同码率情况下峰值信噪比增益显著。在中码率情况下Quach等[13]方法和MPEG GPCC标准[4]仅伴随着部分点云缺失,峰值信噪比相对较高。因此本文模型在中码率情况下相较于此两种方法峰值信噪比增益不显著。
图2 率失真曲线Fig.2 Rate-distortion curves
2.5 视觉质量比较
图3为本文模型与现有两种点云压缩方法的视觉质量对比。在同一量级的码率下,Quach等[13]方法和MPEG G-PCC标准[4]只能在衡量码率预算下保留更少的点,所以其编解码器的重构点云相对稀疏并且解压重建出来的点云数据存在着大量点数的丢失。基于点云模型的MPEG G-PCC失真倾向于随机噪声,所以在低码率情况下还伴随着块效应的问题。相比之下,本文的模型具有更好的视觉质量。一个有趣的结果是真实点云中存在一些破损的部分,这些部分是由于采集不完整或者失败造成的,但本文重建的点云填补了真实点云的一些破损的部分。这是由于本文模型利用自编码器有效提取深度特征,并通过DCGAN博弈训练提升压缩系统的整体性能,使得生成器对点云数据的前景和边缘具有更大的权重。最终,本文方法的解码器从周围环境中重建缺失部分,并重建出更加真实的高质量点云。
图3 重建点云的视觉比较Fig.3 Visual comparison of reconstructed point cloud
3 结语
本文提出了一种新颖的端到端优化的3D点云几何信息有损压缩模型,该点云压缩模型具有较好的性能。我们认为这是第一次将生成对抗网络应用于点云压缩。本文模型解决了由于点云压缩导致的大面积点云缺失问题,使点云重建质量更好。同时,通过在解码器中加入反卷积跳跃连接结构,本文在更低的码率下重建了质量更好的点云数据。实验结果表明,在低码率条件下,该模型优于MPEG G-PCC标准和Quach等方法。本文的工作可以推广到动态点云的压缩工作中。利用3D卷积处理体素化点云会造成大量计算开销,下一步我们将使用稀疏3D卷积处理体素化点云降低计算开销。