谭海军,芮勤甫
(长江师范学院 信息中心,重庆 408100)
三维模型作为记录物体信息的一种方式,有着比二维图片更为丰富的立体信息,可以更真实地呈现物体在空间中的位置和形态,如何借助计算机技术准确还原出目标的三维结构是当前的研究热点之一[1-2]。传统的三维目标生成是通过三维扫描仪采集目标的点云数据,然后运用算法生成网格模型,最常用的是多边形化(Polygonization),最终呈现出目标的三维结构。传统方法需要专业设备和复杂的数据处理流程,成本较高,不适合进行实时三维建模。随着深度学习的发展,卷积神经网络(Convolutional Neural Network,CNN)表现出比传统模型更为强大的特征提取和建模能力,使得许多研究人员将目光聚集在基于深度学习的三维重建算法上,这类方法可以准确地提取目标的三维信息,并自动生成相应的三维模型,极大地提高了三维模型的制作效率。
本文提出了基于GAN的三维目标生成算法,在生成器中设计使用3D卷积和Transformer[3]来捕捉目标三维结构的局部细节和全局信息,以生成高质量的三维图像。判别器使用一系列3D卷积对输入图像进行下采样,最终得到判别该输入图像属于生成图像还是真实图像的类别概率。通过对生成器和判别器的交替训练,可以使生成器逐渐拟合到目标样本的真实分布。
随着近年来GAN的提出,其高效和高质量的样本生成模式迅速得到了研究人员的青睐。GAN主要由一个生成器和一个判别器组成。生成器的作用是学习输入数据的分布,以生成与训练数据相似的新样本,判别器则负责对数据进行分类,即给定一个数据点,判别器会输出这个数据点属于真实的数据还是生成器所生成的数据,两者通过在相互的博弈训练中提升了各自的表达能力[4]。在工业领域中常常使用GAN进行三维建模,例如Wu等[5]第一次提出由二维扩展到三维生成的3D GAN,该模型可以从单一类别中生成目标物体形状的高质量图像。Pan等[6]使用多视图的2D图像重建三维模型,取得了非常好的性能。
对于三维图像生成,传统的方法大多是通过堆叠3D卷积构建的深度网络来实现。但是基于卷积的方法缺乏交互全局信息的能力,使得生成的三维图像边缘常常出现伪影或缺失。由于3D模型与2D模型相比包含了更丰富的信息,因此需要算法从高维的特征空间中挖掘出与目标整体结构相关的语义信息,对算法的全局感知能力提出了考验。因此,本文提出了一种融合3D卷积和Transformer的生成对抗网络,利用卷积的局部性和Transformer长距离建模的优点,网络能更好地学习到目标的局部细节信息和整体结构信息,从而生成更为真实的三维图像。
ModelNet40数据集是一个用于三维形状识别和分类的点云数据集,包含了生活中40种常见物体的3D模型,比如飞机、桌椅和汽车等。由于每一份数据都采用点云形式保存,因此无法直接放入神经网络进行训练,需要先对其进行体素化,将点云格式转换为体素格式。优势在于体素化的三维模型在计算机中的存储形式与二维图像极其相似,这使得原本用于二维图像的卷积、池化和反卷积等神经网络操作都能通过将三维替换为二维进行三维计算。其次,考虑到原始数据的分辨率较高,对于自注意力运算而言具有很大的计算负担,因此本文设置每份数据的体素分辨率为32×32×32,该分辨率下的数据既保留了足够的原始内容又能显著降低网络的训练成本。
网络的主体架构由生成器和判别器两个网络组成,如图1所示。首先从符合标准正态分布的概率空间中进行随机采样,然后将得到的噪声数据输入生成器。生成器是GAN模型的主要组成部分,其任务是生成与真实数据具有相似特征的样本,并欺骗判别器认为生成的数据与真实数据相同。判别器的任务是将输入的样本分类为真实数据或虚假数据,其结构类似于一个二分类器。GAN的训练过程就是不断迭代优化生成器和判别器的过程,其核心思想在于通过两个模型相互对抗的方式不断提升三维目标图像生成的质量。在每个训练迭代中,生成器产生一些虚假图像,判别器给出关于这些图像是否为真实数据的反馈。根据反馈结果,对两个网络的参数进行调整,最终达到某种平衡。
图1 基于GAN的三维目标生成架构
生成器如图2所示。首先,输入经过随机采样得到的一维随机噪声向量Z,在本实验中长度设置为64,然后,通过上采样层将其逐步映射到高维特征空间中,其次,经过一个1×1×1的卷积层后输出目标的三维图像。每一个上采样层由一个卷积块和一个自注意力块组成,卷积块中使用的是卷积核为3×3×3,步长为2×2×2的转置卷积,每经过一个卷积块图像分辨率增大两倍,相应地通道数减少为原来的一半,最终通道数缩减为1,生成的图像分辨率为32×32×32。除最后一层外,每一个卷积块均有批处理层(BatchNorm,BN)和整流线性单元(Rectified Linear Unit,ReLU)。BN层用于将输入数据归一化到均值为0、方差为1的分布上,可以加快网络的收敛速度,同时提高训练的稳定性,激活函数ReLU用于增强网络的非线性以提升网络的表达能力。
图2 生成器
在生成器的self-attention block中加入了Transformer。Transformer的核心就是自注意力机制的运算。鉴于Transformer具备全局感受野的优势,本文在每一个卷积块后面跟上了一个自注意力块,用于捕获高维特征之间的相关性。具体做法是先将经过卷积运算后的特征使用全连接层进行线性映射,得到3个映射矩阵Q、K和V,然后计算多头自注意力。由于原始的自注意力操作具有O(N2)(N代表体素总个数)的时间复杂度,对于三维数据来说开销比较大,因此,本文遵循Wang等[7]的做法对矩阵进行简化,先用不同卷积核大小的均值池化对K和V矩阵进行降维,然后将不同池化后的特征在通道维度上拼接,再计算多头自注意力,这样时间复杂度降到了O(S*N)(S≪N),在实验中每一层的池化率都设置为1、2、4。在经过空间缩减注意力运算后,最后再经过两个全连接层恢复输入数据的原始形状。
生成器的最后一层是1×1×1的卷积再加上Sigmoid激活函数。1×1×1的卷积用于细化特征同时调整通道数为1,Sigmoid函数用于将特征值映射到[0,1]的区间。经过整个流程后,生成器根据随机噪声Z最终生成大小为32×32×32的三维目标图像。
判别器和生成器结构对称,包含4个卷积层和最后的全连接层,但去掉了Transformer块。判别器接收输入大小为32×32×32的样本,然后经过一系列的卷积层进行下采样,卷积核大小设置为3×3×3,步长为2×2×2,再经过全连接层和Sigmoid激活函数后输出一个概率值,该值表示判别器判别输入样本是真实目标图像还是生成目标图像的概率。
模型的损失函数由两部分组成,分别是重建损失Lrec和分类交叉熵损失Lce(见公式1)。其中,Lrec用于计算生成器生成的三维目标图像和真实目标图像逐像素点的L1距离,而Lce则是计算判别器判断该图像属于生成图像还是真实图像的二分类损失。
Lcls=Lrec+Lce
(1)
本实验设置Batch大小为32,随机噪声Z长度为64,生成器的学习率初始化为0.002 5,判别器的学习率初始化为0.000 1,最大运行500个epoch后停止训练。
本文使用ModelNet40数据集进行了实验,每间隔10轮对生成器生成的最后8张图像进行采样,并将结果输出进行可视化。图3和图4分别显示了针对椅子这个目标,算法在迭代10轮和500轮后生成对应三维结构图的可视化。从图中可以看出,在训练的前期,由于采样的是随机噪声,生成器不能很好地生成目标的三维图像,而随着训练次数的增加,网络能从随机的概率空间中逐渐拟合到目标真实的数据分布。通过生成器和判别器的联合训练,网络在运行500轮后生成的三维结构图较为准确,整体轮廓也逐渐清晰,表明了算法的有效性。
图3 迭代10轮后的结果
图4 迭代500轮后的结果
本文提出了一种基于生成对抗网络的三维目标生成算法,结合了3D卷积和Transformer进行建模。卷积可以捕获三维结构的局部细节信息,而Transformer可以对三维模型的整体结构进行感知,使网络关注到更重要的内容。通过结合二者的优点可以生成高质量的三维图像,在试验中也取得了比较好的性能,验证了算法的有效性。但是仍然存在着一些问题,首先,本文使用的生成对抗网络和目前主流的CycleGAN、StyleGAN等复杂的图像生成模型相比,结构较简单,这限制了模型学习能力的上限,需要在考虑小参数量的情况下进一步提升模型的学习能力。其次,在GAN中如何更有机地结合3D卷积和Transformer两种不同运算模式的优点,也值得后续进一步的研究。