吴 杨,张海翔,马汉杰,蒋明峰,冯 杰
(浙江理工大学 信息学院,浙江 杭州 310018)
三维形状表达技术一直是计算机视觉领域的重要研究课题。与图片相比,三维模型能够传递出更多的信息,与用户的交互也更加真实。另外,三维模型也应用于无人驾驶、机器人的地图重建上,在游戏和VR领域也有所涉及。因此,如何表达出高质量的三维模型是一个重要的问题。
与传统的三维形状表达工作相比,基于深度学习的三维形状表达任务,是一个重要的研究问题,它能够通过端到端的学习直接产生精细的三维模型。当前,基于深度学习的三维表达,根据表示方法的不同主要分为体素法、八叉树法、隐函数法、点云法和网格法,其中体素形状表达是三维形状表达方法中的重要研究内容,具有很多优势。首先,体素数据具有良好的结构,便于特征学习和计算,基于图像的处理方法,可以应用到三维模型的处理中来,且体素表达形状的结构类型不受限制。其次,三维表达中对体素的特征编码,可以作为三维重建中图片编码器的学习目标,作为三维重建的中间过程。但是,体素表示也存在着很多问题:① 现有的方法主要使用3DCNN来进行编码,仅利用了体素的层次特征,更高精度特征编码方法有待进一步研究;② 由于体素编码的提高存在困难,大多数方法通过提高分辨率的方式来增加模型的效果;③ 体素表示的方法在训练时会占用大量内存,使得学习的成本变高。
针对这些问题,本文提出了一种基于多尺度残差特征的形状表达编码模型,利用3D形状体素多尺度特征之间相关性,学习更有效的特征编码。在此基础上,在解码器中引入自注意机制,进一步提高解码模型的精度。此外,还探索研究了一种体素残差编码的深度分离卷积方法,在精度下降不大的条件下有效降低了模型的参数。实验证明,所提出的网络模型是有效的,并且通过与最近的工作对比,也取得了更好的结果。
重点介绍了最近工作中有关三维形状表达及特征编码的方法,对它们的贡献和不足之处进行了分析。同时,对自注意力机制和深度分离卷积的相关工作,也展开了讨论。
基于体素的形状表达大都是基于CNN来进行体素的编码。八叉树法是将体素数据转化为八叉树的存储结构,采用类似卷积的操作来处理数据。隐函数法编码阶段也都是使用CNN来提取特征。而CNN只利用了体素的层次特征,因此如何对体素特征编码进行优化就成了一项有挑战性的工作。
体素法:由于体素是图像网格中像素的自然3D扩展并允许3D卷积,因此它们常用于三维模型的生成。早期的体素表示方法的研究,受限于内存大小,只能产生低分辨率的生成模型[1-2]。CNN-AE[3]可以直接对体素进行卷积和反卷积运算,实现体素的形状表达。但是由于普通的CNN网络难以提取完整的特征信息,所以学习到的生成模型虽然具有完整的结构但往往缺乏细节。Shubham等人[4]提出一种学习物体的部件并装配成完整物体的方法,这种方法也是通过CNN来进行编码。大部分体素表示的方法,通过三维卷积网络来进行编码,由于浅层的CNN有限的特征提取能力,而无法得到有效的映射。
八叉树法:目前基于体素的研究,通常从高分辨率的角度来获得三维模型。如八叉树法[5-6],就是将体素转化为八叉树的结构,通过多次迭代,获得高分辨率的模型。这种方法是通过存储结构优化的方式来减小内存的消耗,但还是使用CNN来进行编码。
隐函数法:最近基于隐函数的IM-NET[3],通过预测体素中逐点占用来生成模型。虽然能够获得任意分辨率的输出模型,但在编码阶段依然是通过卷积网络对体素进行特征提取。BAE-NET[7]、BSP-NET[8]与IM-NET结构类似,都是采用CNN来进行编码,而对不同的问题进行处理。这些网络虽然能够生成高分辨的模型,但在低分辨率下精度不高,与它们的编码方式有很大的关系。
点云法:由于点云往往可以通过一些扫描设备直接获取,所以点云上的深度学习一直吸引着研究者的关注。特别是在过去五年,一些公开的数据集也被发布,如ModelNet[9],ScanNet[10]等,这些数据集进一步推动了深度学习在三维点云上的研究。PointsNet[11], PointsNet++[12]都是用来对点云进行分类以及语义分割的网络,它们将三维外形看作是无序的点云,使用对称函数来达到点的排列不变性。由于点云的无序性,对点云的特征提取存在困难。在PVCNN[13]中采用了点云和体素特征融合的方式来处理点云,利用了体素良好的表示结构,通过3DCNN来提取体素化点云的特征。也证明了对体素编码的进一步研究有广泛的意义。
网格法:基于网格的方法大都以模板变形为基础预测形状,生成模型受限于模板[14]。T.Groueix[15]、A.Sinha[16]等人将曲面模板变形成目标外形,但是许多三维外形不能用单个面片很好地表示,而来自多个面片集成的输出通常包含由于间隙、折叠和重叠而产生的视觉伪影。总的来说,基于网格的表示方法有很大的限制。
体素的表示方法相对点云和网格,更适合于物体结构的表达,且表达形状的结构类型不受限制。因此,本文采用体素的表示方法,致力于生成高精度三维模型的表达,主要对编码器进行了深入的研究。与之前的网络不同,受Hara等人[17]的启发,设计了多级残差网络作为编码器,能够保留更多有效的信息。通过与相关工作的对比,也证明了所提出方法的有效性。
注意力机制模仿生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制。而自注意机制是注意力机制的改进,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。
自注意机制的提出是为了解决NLP领域对词向量特征关注的问题。Transformer[18]、BERT[19]等模型都充分运用了自注意机制来解决翻译任务。由于自注意机制在NLP领域的巨大成功,许多框架都将注意力引入了视觉任务中。Wang等人[20]提出了一种基于堆叠注意模块的残差注意算法用于图像分类。Zhang等人[21]设计了SAGAN,它使用自我注意进行图像生成。Guo等人[22]将Transformer与点云结合用于3D点云分类、分割。Parmar等人[23]提出了一种图像变换器模型,将自我注意力添加到用于图像生成的自回归模型中。Wang等人[24]将自我关注形式化为非局部操作,以模拟视频序列中的时空依赖性。
基于自注意机制能够捕捉全局特征的性质,在三维领域应当也有重要作用。受Wang等人[24]的启发,本文设计了基于自注意机制的全局关注模块,应用于解码器中以提高模型精度。
深度分离卷积最早由Laurent Sifre[25]在其博士论文中提出,可以减少卷积操作中的参数数量和计算量。随后应用于InceptionNet[26]中,它首先对通道进行多尺度的分组卷积,然后用1×1的卷积核逐点卷积。受InceptionNet的启发,XceptionNet[27]则先逐点卷积,再对每个通道进行卷积。而同时提出的MobileNet[28]与XceptionNet的区别,仅在于MobileNet先进行通道卷积再逐点卷积。XceptionNet和MobileNet几乎同时提出,前者通过拆分普通卷积来减少参数数量,后者是通过对Inception的充分解耦来完成的。
本文中依据这种思想,在三维卷积中实现了深度分离卷积,通过先通道卷积再逐点卷积的方式,有效减小了模型参数和运行内存。
本文提出了一种形状表达方法,主要是对多尺度残差特征编码方法进行了研究。它是一种基于自编码器的网络架构,用于对物体的体素数据编码再恢复出三维形状。整个网络架构包括一个编码器和一个解码器,编码器使用多级残差网络结合深度可分离卷积提取三维的残差特征,解码器将提取到的特征解码,即反卷积成与原有的三维模型。模型的输入是单通道的643的体素网格,经过编码器得到一个256维的特征向量z,z作为解码器的输入再反卷积得到分辨率为643的三维模型。
本网络的结构如图1所示,编码器是多级残差网络,由多个残差块组成。将残差块中的3D卷积修改为深度可分离卷积,以减少模型的参数数量。解码器由多个转置卷积组成,其中加入了自注意层,用以关注全局特征。通过将输入的体素网格与生成的模型做平方差得到损失值,反向训练整个模型的参数。下面将详细介绍网络的各个部分。
图1 网络结构Fig.1 Diagram of network structure
由于深度的3D卷积网络参数过多难以训练,以往的三维表达方法,通常采用浅层的3D卷积网络,只能提取到不完整的特征。为了能够在深层次的网络中更准确地学习到体素的编码,本网络在三维模型处理中使用了多级残差网络来提取编码信息。多级残差网络的结构如图1中编码器所示。
多级残差网络包括一个7×7×7的3D卷积层、3×3×3的最大池化层、多个残差块以及一个平均池化层。由于多个残差块的存在,能够保留更多的信息,提取到多级特征。其中的block模块包括2个卷积层和一个shortcut连接,每个卷积层后都有一个归一化层和Relu激活函数。shortcut连接能够将上一层的输入x和经过2层卷积层的f(x)相加作为输出。表示为:
y=x+f(x)。
(1)
残差网络解决了深度学习中网络退化的问题,使得深层的网络更容易去学习。通过多级残差网络提取体素的特征,能够获得更完整的信息,更好地完成体素到隐向量的映射。在实验中,也得到了有效的验证。
由于体素网格在训练中内存的占用率很大,深层网络中的参数相对较多,本网络修改了残差块中的卷积操作,设计了基于三维卷积核的深度可分离卷积,将原本的一层卷积改为2层分离的卷积,可以有效地减少模型中的参数,如图2所示。
图2 深度可分离卷积结构Fig.2 Depthwise separable convolution structure
深度可分离卷积就是将普通的卷积操作分解为深度卷积和逐点卷积。与标准卷积网络不一样的是,在网络中将卷积核拆分成为单通道形式,在不改变输入特征图像的通道数的情况下,对每一通道进行卷积操作,这样就得到了和输入特征图通道数一致的输出特征图。逐点卷积就是1×1×1的卷积,主要作用是对特征图进行升维和降维。通过深度分离卷积,可以有效地降低模型的参数数量,减小网络的大小。
通过对多级残差网络的block中的卷积进行优化,提出了一个轻量级的网络架构,有效减少了模型的参数以及内存占用。
在解码器中主要使用了转置卷积将提取到的特征恢复成三维模型。解码器结构如图1所示。
解码器中包含多个转置卷积层和一个自注意模块。转置卷积是卷积操作的逆运算,与上池化和上采样层不同,能够在训练中学习参数。为了提高生成模型的精度,提出了适用于三维模型处理的自注意机制。它可以学习特征图的整体特征,获得每一个位置上的关注度,保留重要的信息。自注意机制的结构如图3所示。
图3 自注意模块的结构Fig.3 Structure of self-attention module
传统的卷积核只能对特征图的局部进行加权计算,而不能获得位置上的全局相关信息,自注意机制的提出就是为了弥补这一缺陷。θ,φ和g都是1×1×1的卷积核,实际上是为了降低通道数,从而减少计算量。φ和g对特征图卷积之后,为了减少参数会进行池化操作。同时为了便于计算也会对张量的维度进行变换。θ(xi),φ(xj)矩阵经过点乘获得每2个点之间的相关关系,softmax函数对点乘结果进行归一化和突出差异。将归一化的结果与g(xj)相乘,即将空间注意力机制应用到了所有通道的每张特征图对应位置上,本质就是输出的每个位置值都是其他所有位置的加权平均值。
yi=softmax(θ(xi)Tφ(xj))g(xj),
(2)
(3)
式中,xi为特征图中当前关注位置的信息;xj为全局位置信息。
最后的1×1×1卷积核是对结果进行维度的调整,将它与最初的输入维度保持一致。并用残差连接将最后的结果Wzyi与输入的特征xi图融合得到输出zi。Wz的初始值为0,保证自注意模块的嵌入性,即:
zi=Wzyi+xi。
(4)
通过在解码器中加入自注意层,对特征图的处理中保留了更多的信息,并且能够学习到远距离位置间的相关性,大大提高了模型的精度,在实验中也得到了验证。
采用MSE损失函数来描述输入数据和输出模型间的差异:
(5)
使用的是Chen等人[3]处理过的ShapeNet数据集,包含飞机、汽车、椅子和桌子等13个类别的三维模型,共50 000个643分辨率的体素模型。其中80%用于训练集,20%用于测试集,如图4所示。
图4 ShapeNet数据集Fig.4 ShapeNet datasets
实验过程中,在ShapeNet训练集的13个类别上训练了本网络。在 PyTorch 中实现了网络模型的构建。初始的学习率、eps分别设置为10-5,10-8,Adam用于优化学习速率,批量大小为8。在 20 GB 内存的 Nvidia RTX 3090 Ti GPU上训练本网络,迭代一次需要600多秒,大概迭代300次,网络开始收敛。
将在ShapeNet测试集上验证提出的网络模型。为了与基准保持一致,测试实验中只生成了测试集中每类前100个模型,并计算它们的平均值。实验将倒角距离(CD)和交并比(IOU)作为结果的评价指标。倒角距离描述的是预测的模型与真值之间的距离,其值越小越接近真值。交并比表示的是交集与并集的比值,其值越大交集越多。这2个指标常用作三维重建的损失函数或评价指标,来衡量生成模型与真实值的距离。采用Marching Cubes获得渲染模型,并引入3DPytorch[27]提取1 024个点来计算CD值,PyMesh来计算IOU指标。在下列实验结果中,为了更好地比较,CD值乘以1 000,IOU值乘以100,作为最终结果,同时更好的结果以黑色加粗表示。下面通过实验确定了多级残差网络层数的超参数,也设计了消融实验来证明所加模块的有效性。最后将本网络产生的结果与最新的方法比较,证明了本网络的可比较性。
Resnets在多种任务中都证明了它的有效性,但在三维任务中还没有突出的研究成果。为了取得更好的精度,本文对三维表达任务中的3D-Resnets的层数进行了研究,并对多种层数的网络进行了实验,来获得最好的结果,如表1所示。
表1 不同层数的3D-Resnets与CNN-AE的CD值Tab.1 CD values of CNN-AE and 3D-Resnets with different layers
在本次实验中,比较了多层的多级残差网络,用CNN-AE的解码器作为解码器。实验结果表明,在200次迭代下,18层的Resnets能在各个类别上取得最好的结果,相比CNN-AE也获得了显著的提升。因此在接下来的网络中都使用18层的Resnets网络进行比较。
将从实验上验证网络中模块的有效性。在消融研究中,将Light Res Sa(LRS)也就是加了深度卷积以及自注意机制的网络与分别删减这2个模块的网络进行比较。采用18层的多级残差网络作为编码器,3D反卷积网络作为解码器。将其与在block中修改为深度分离卷积的Light Res(LR)和在解码器中加了自注意机制的Res Sa(RS)比较,并在 ShapeNet数据集上进行实验。本网络可分为2部分:深度可分离卷积的多级残差特征编码器和自注意的解码器。文中将重点介绍深度可分离卷积和自注意机制的有效性。
4.2.1 深度可分离卷积
为了减少模型的参数和内存占用,在网络中将Resnets的残差块中的卷积层调整为深度可分离卷积层。深度分离卷积是一种将卷积层分解的轻量级网络结构,可以在保持精度的条件下,有效减小模型的大小,提高运行效率。网络的调整如图3所示,对比结果如表2所示,更好的结果用黑色加粗表示。调整前后的参数大小(单位MB)、内存大小(单位GB)和训练以及测试时间(单位s)对比如表3所示。
表2 消融实验的CD值对比结果Tab.2 Comparison results of CD value in ablation experiment
表3 模型大小、参数的对比结果Tab.3 Comparison results of model size and parameters
通过Res Sa网络与Light Res Sa网络比较,可以看到模型的参数数量减少了12.1%,内存占用率下降了约2.52%。同时,CD指标平均值与只用Resnets相比,仅下降了约8%,但同时训练时间和测试时间有所加长。因此,实验结果证明了加入深度可分离卷积可以对网络进行优化。
4.2.2 自注意机制
本文设计了适用于三维模型处理的自注意模块,将其应用于解码器的部分。它的作用主要是学习特征图中每2个位置之间的相关性,从而改善传统卷积操作感受野不足的缺陷,得到特征图整体的信息。本网络在解码器的反卷积层中加入自注意机制。
实验证明,加入自注意模块后的确能够优化测试结果。实验结果如表2所示。Light Res Sa与Light Res相比较,CD值的平均结果提升了3%左右,并且在绝大多类别上都有所提升,证明它的有效性。
将本网络与最近的工作做了定性和定量的比较,并且也与最新的表示方法进行了比较,证明了本网络的有效性和可比较性。
4.3.1 定性比较
用不同的方法在ShapeNet数据集上产生的体素模型如图5所示。定性结果显示,基于体素的自编码器相对于隐函数表示的方法,更能保持体素网格的完整性。IM-AE产生的模型往往会有残缺或者多余的部分,而CNN-AE和Light Res Sa及Res Sa网络在大部分类别中都能重建出完整的体素网格。IM-AE的结果相对来说,表面更加平滑一些,这是因为IM-AE是基于体素表面的点来恢复结构的。与CNN-AE相比,Light Res Sa及Res Sa网络能保留更多的细节和完整的结构,这正是3D-Resnets编码器的能够提取多级的残差特征的缘故。
(a) Ground-truth
同时,对于柜子、枪支和船艇这样具有很多细节的物体,重建的效果不是很好,往往得到的是不完整的网格模型,它们只能学习到粗糙的形状,这也是很多生成模型存在的问题。
4.3.2 定量比较
为了评估生成模型,将实验结果与最新的研究做定量比较。将交并比(IOU)和倒角距离(CD)值作为评价指标。
在5个类别上进行试验,将Light-Res Sa和Res Sa与CNN-AE和IM-AE比较了CD和IOU结果,如表4所示。将计算的结果,与IM-AE发布的结果直接进行了比较,可以看到Res Sa网络的结果是最好的,轻量级的Light Res Sa也在所有类别上超过了其他方法,仅次于Res Sa。本网络的CD值在每个类别上超过其他方法。而IOU指标在大部分类别以及平均值上都很有优势。对于aircraft和rifle两个类别上,本网络相比CNN-AE在CD值上有一些降低。由图5也可以看到,Light Res Sa及Res Sa网络的结果中aircraft、rifle相对于CNN-AE,虽然都有整体的结构,但是缺少细节部分。因此可以认为对于具有复杂细节且微小部件的模型,Resnets可能有一定局限性。总体上来说,本网络的表示结果更加接近于真实模型。相对CNN-AE有很大提升。这证明了3D-Resnets在提取特征方面的重要作用,它可以在深度神经网络中有效地学习到三维特征,并将其映射到向量上。同样也证明了Non-local block在保留全局信息上的有效性,因此模型的指标才超过了其他网络。
表4 所提出的方法与基准方法IOU和CD指标对比Tab.4 Comparison of IOU and CD indicators between proposed method and reference method
为了进一步证明本网络的有效性,在飞机、汽车、椅子等多个类别上将Light Res Sa及Res Sa网络与Volumetric Primitives (VP)[4],Super Quadrics (SQ)[30],Branched Auto Encoders (BAE)[7],BSP[8]进行比较。其中BAE*[7]是BAE用隐函数生成的版本,这些网络都是最近的三维模型生成方法。
结果如表5所示。由表中可以看到,与其他网络相比, Res Sa网络在所有类别上都取得了最好的结果,而Light Res Sa仅次于Res Sa,在大部分类别上超过其他方法。只在table和chair两个类别上次于其他方法。2种网络平均的结果也超过了其他类别。再次证明了本网络与最新的方法相比,依然具有竞争力,能够获得精细的生成模型。
表5 所提出的方法与最近的方法IOU值的对比Tab.5 Comparison of IOU values between proposed method and recent methods
本文提出了一种形状表达中的多级尺度残差特征编码模型,利用体素的多尺度特征之间相关性,学习更有效的特征编码。在此基础上在解码器中引入自注意机制,进一步提高解码模型的精度。此外,还探索研究了一种体素残差编码的深度分离卷积方法,在精度下降不大的条件下有效降低了模型的参数。通过消融实验,证明了这些模块的有效性。也通过定性以及定量实验,证明了多级尺度残差特征的编码有效性。但在本文中只研究了形状表达工作,在其他方向上有所不足。在以后的工作中,将探索形状检索、形状分类等其他任务,以期得到更好的结果。