1. 引言
随着深度学习的发展,基于二维图像的三维重建技术得到了深入发展。按照重建目标的显示表达方式,可以分为点云、体素和网格三大类[1]-[3]。体素是目标表示的最小体积单位,多个体素的集合可构成三维目标。Choy等人设计了一种基于单视和多视图的三维重建统一框架R2N2,解决了单视图重建导致的模型失真问题[4]。Tatarchenko等人提出八叉树生成网络,在不增加计算资源的情况下提高了体素表示的分辨率[5]。Fan等人提出点云生成网络(Point Set Generation Network, PSGN),能够从一幅图像预测出多个三维点云[6]。Wen等人提出一种三维特征流解耦(Three-dimensional Disentangled Attribute Flow, 3DAttriFlow)模型,获得了比非特征流解耦模型更好的重建性能[7]。网格是指通过三角形或四边形等形状的面近似表示三维目标表面。Goueix等人通过学习二维到三维的映射关系,直接从图像中生成等距参数化的网格[8]。Wang等人将图像像素与三维几何形状相结合,并借助图卷积神经网络对随机初始网格进行变形,极大地简化了三维目标的生成过程[9]。Wen等人利用多视图信息迭代地完成顶点的变形,获取了更多的目标表面细节[10]。Yang等人将图像到网格的复杂映射分解为图像到点映射和点到网格两种更简单的映射,并引入局部特征采样策略和多视点轮廓损失,实现了可见和不可见类别目标的单视图重建[11]。
上述三维重建方法中,体素表示的问题是低分辨率体素的拓扑结构不明显,而高分辨率体素的参数呈几何级数增长,需要消耗大量的计算资源;网格表示的问题是很难生成复杂的几何结构。与体素和网格相比,点云表示方法能够直接反映目标表面形状和结构,并且存储空间较小。因此,本文研究基于二维图像的三维点云重建。3DAttriFlow是一种基于单视图的三维点云重建方法,先将图像特征解耦为语义和几何特征,后用这些明确的特征引导三维球体上采样得到的初始点云进行多次变形,最终获得高质量的三维目标重建结果[7]。然而,单视图中包含的目标信息有限,导致目标重建质量仍有待提高。本文将3DAttriFlow推广至基于多视图的三维目标重建,通过引入注意力模块来融合多视图中提取出的目标特征,进而提高三维重建性能。此外,在特征提取过程中,引入通道注意力、关注重要通道特征信息。为了验证方法的有效性,在ShapeNet数据子集上开展三维重建实验。
2. 多视3DAttriFlow
多视3DAttriFlow的结构如图1所示。与单视3DAttriFlow相同的是,网络的主体结构仍分为特征流管道和变形管道。特征流管道从输入图像编码后的特征中解耦出目标的几何和语义特征流;变形管道利用两个特征流分别引导球面点云变形。与单视情况相比,多视3DAttriFlow的改进之处为红色虚线框内的编码器。一方面,在特征提取主干网络ResNet18的高层引入通道注意力机制,以突显重要特征;另一方面,使用注意力模块对多视图特征进行融合。接下来,详细介绍网络的主体结构、ResNet18的改进、多视图特征的融合,以及网络模型训练时的损失函数。
Figure 1. Network architecture
图1. 网络结构
2.1. 主体结构
(1) 特征流管道
3DAttriFlow的特征流管道如图1(a)所示,主要包括编码器和三个特征流(Attribute Flow, AF)模块。编码器用于从输入图像中提取特征
,AF模块用于从图像特征y和球点云集
(
且K为采样点的数量)中分三个阶段逐步提取几何和语义特征流。编码器采用ResNet18作为主干网络,包括卷积、批归一化、激活函数和残差连接。AF模块包括几何和语义两个子管道,如图1(c)所示。
考虑任意的第i (i = 1, 2, 3)个AF模块运算过程。对于几何子管道,先将图像特征y与球点云集
的坐标位置进行拼接,然后通过多层感知器(Multi-layer Perceptrons, MLPs)获取几何特征
(Ci表示第i阶段的特征维度)。对于语义子管道,先采用MLPs将图像特征y压缩为特征码
(D为特征维度),也可表示为
(
)。然后,采用线性子空间
的一个标准正交基
对zij 变换,并将所有维度的特征求和加偏置得到语义特征
,计算公式为,
(1)
其中,
是一个可学习的参数,
为可学习的偏置。
(2) 变形管道
3DAttriFlow的特征流管道如图1(b)所示,主要包括虚线框内的变形过程和虚线框外的求和。变形过程用于获取点集
的变形量
,又包括三个阶段的图注意力(Graph Attention, GA)模块[12]、自适应实例归一化(Adaptive Instance Norm, AdaIn)、求和运算,以及一个MLPs。虚线框外求和用于获取最终重建的目标点集
。
考虑任意的第i (i = 1, 2, 3)次形变,记GA生成的点特征集为
。采用AdaIn模块将点特征按照几何特征
进行变换,任意的第k个点特征变换公式为,
(2)
其中,
和
分别表示移动平均算法估计
的均值和方差,
和
分别表示
和
的第k行矢量。
之后,又采用MLPs和逐元素求和,将语义特征
集成到点特征
,
(3)
其中,
为MLPs的全连接运算,θ为MLPs的权重参数。
在完成三个阶段的点特征更新后,再用MLP将点特征转换成三维矢量,即变形过程得到的点云。最后用虚线框外求和,将其和初始点云集
相加,得到最终的点云重建结果。
2.2. 编码网络ResNet18的改进
Figure 2. Encoder architecture
图2. 编码器结构
本文采用通道注意力机制(Squeeze-and-Excitation, SE) [13]对ResNet18进行改进。考虑到ResNet18高层包含了丰富的语义信息,且各通道的重要性差异较大。因此,本文在ResNet18最后一个卷积层后添加SE模块,以提高模型对重要通道特征的敏感性。改进后的SE-ResNet18结构如图2所示,主要包括卷积层、批归一化、ReLU非线性激活、基本块、SE层、平均池化层,以及全连接层。其中,基本块又包括卷积层、批归一化、ReLU非线性激活,以及短连接;SE层又主要包括平均池化层、全连接层、ReLU和Sigmoid非线性激活。
假设SE层的输入为特征
(C, H, W分别代表特征的通道数、高和宽),输出为通道注意力权重矩阵
。SE的运算过程可以表示为,
(4)
其中,
表示全局平均池化特征,W0和W1分别为两个全连接层的权重参数,σ为Sigmoid激活函数。
2.3. 多视图编码特征的融合
单视角图像能提供的目标信息有限,而多视角图像因相机拍摄角度不同而使得某一个视角下被遮挡的目标在另一个视角下被看见。因此,将多视角图像包含的信息进行融合,有利于获取更丰富和完整的目标特征信息。本文采用注意力模块[14]融合多视图像特征。
多视图融合模块的结构如图3所示。在用SE-ResNet18提取N幅图像的特征后,得到特征集
,
(
),D为特征维度。采用单层MLP对任意的特征
进行变换,得到各特征的激活矢量
,即
(5)
其中,f代表MLP的全连接运算,
为f的权重。
Figure 3. Multi-view fusion
图3. 多视图融合
记激活矢量构成的集合为
,其中,
。采用Softmax函数对各激活矢量在特征维度上进行归一化,得到注意力分数,
(6)
每个注意力分数矢量表示为
,各注意力分数构成集合
。将得到的注意力分数
和原始的特征集
逐元素相乘,得到聚合特征集
,即,
(7)
最后,将聚合特征矢量
在特征维度上求和,得到
,计算公式为,
(8)
2.4. 损失函数
多视3DAttriFlow模型训练时,一方面为保证
的正交性,采用正交损失
为,
(9)
另一方面,采用预测出的和真实目标的点云集合之间的倒角距离
作为损失函数,其计算公式为,
(10)
其中,
,
分别为模型预测出的目标点云集合和真实的点云集合,N为两个集合中点的数量。
因此,网络总损失函数可以定义为,
(11)
其中,
是平衡因子,其取值设为100。
3. 实验
3.1. 实验准备
ShapeNet数据集包含了大量的三维目标模型。本文从中挑选出13个类别的4378个对象,如飞机、长凳、橱柜、汽车、椅子、显示器、灯具、扬声器、枪支、沙发、桌子、手机和船只,作为实验数据集。每个对象均由24个随机选择的摄像机视点渲染得到。将每个类别对象数据按照7:2:1比例随机划分为训练集、验证集和测试集。
实验采用的软件系统为Ubuntu 20.04,深度学习框架为Pytorch 1.2.0。硬件配置CPU型号为Intel(R) Xeon(R) CPU E5-2680,主频为2.4GHz;GPU型号为NVIDIA Tesla P100,其显存为16G。模型训练时,采用Adam优化器,学习率为1e−3,训练的批次大小为24。
为了定量评估重建质量,采用倒角距离(Chamfer Distance, CD)作为性能平均指标,其计算公式和(10)式一样。显然,CD值越小,代表三维目标重建质量越好。
3.2. 消融实验
以原始的单视3DAttriFlow作为基准,然后依次引入通道注意力和多视图(3视图,4视图)特征融合,得到的实验结果如表1所示。相比基准模型,引入通道注意力后,CD降低了1.66%。进一步地,采用3视图和4视图特征融合后,CD分别降低了2.98%和3.64%。因此,通道注意力和多视图特征融合均能有效提升三维重建质量。其原因主要在于,在RestNet18的高层引入通道注意力,能够关注更重要的特征信息;采用多视图特征融合后,能获取更为丰富和完整的目标信息。
将表1中的基准方法和本文的多视3DAttriFlow方法在训练过程中的损失
变化情况进行对比,结果如图4所示。其中,红色表示基准方法,蓝色和灰色表示本文方法。结果表明,模型在训练初期时基准方法和本文方法的损失变化曲线基本重合;随着训练轮数的增加,3视和4视3DAttriFlow获得的
值明显小于基准方法;当训练轮数大于150轮时,两种方法获得的变化曲线均能收敛,且本文方法的损失收敛值比基准方法更小,这与表1的结论一致。
Table 1. Results of ablation experiment
表1. 消融试验结果
输入视图数量 |
Baseline |
通道注意力 |
多视图融合 |
CD (×10−2) |
1 |
√ |
|
|
3.02 |
1 |
√ |
√ |
|
2.97 |
3 |
√ |
√ |
√ |
2.93 |
4 |
√ |
√ |
√ |
2.91 |
Figure 4. The training loss curves for the baseline and our method
图4. 本文方法和基准方法的训练损失曲线
3.3. 和其它方法的对比
将多视3DAttriFlow (3视和4视)方法与一些基于点云(PSGN [6])、体素(3DR2N2 [4])、网格(AtlasNet [8]、Pixel2Mesh [9]和OccNet [15])表示的三维重建方法及单视3DAttriFlow方法进行比较,每类目标的CD和所有目标的平均CD如表2所示。
结果表明,3DR2N2、PSGN、Pixel2Mesh、AtlasNet和OccNet比3视3DAttriFlow的平均CD分别高出84.64%、45.73%、79.86%、22.53%和41.64%,而单视3DAttriFlow比3视的平均CD高出3.07%。这意味着3DAttriFlow的性能远远优于其他非特征流解耦方法。由此可见,特征流解耦在三维重建中具有显著的优势。
进一步地,在13类目标的CD中,单视、3视和4视获得的最低CD的目标类别数分别是4、5和4,虽然数量基本相当,但单视和3视比4视的平均CD分别高出3.78%和0.68%。这说明多视比单视在性能上有一定的提升,而当视数达到一定数量后,性能提高则不再明显。原因在于单视图像中存在目标信息缺失,其他视角图像可以弥补这些缺失信息;但如果多视图中包含的目标信息已趋于完整,再增加图像视数只会使得目标信息冗余,达不到提升重建质量的目的。另外,随着视数的增加,特征图数量会增加,相应的运算量也增加,因此,需合理地选择图像视数,既获得高的三维重建质量,又兼顾重建效率。
3.4. 不同视数下重建结果的可视化
从13类目标中挑选出长凳、飞机、灯具和手机目标进行可视化,输入图像、单视3DAtrriFlow的重建结果、多视3DAtrriFlow的重建结果(3视和4视)分别如图5(a)~(d)所示。可视化结果表明:(1) 多视比单视的重建结果更为完整(如灯具),形状更接近真实(如手机),且轮廓更为清晰、细节更为丰富(如长凳和飞机)。(2) 4视和3视的重建结果相比,视觉效果只有略微的改变。这些结论与表2相一致。
Figure 5. Visualization of reconstruction results
图5. 重建结果的可视化
Table 2. Comparison with other methods (CD: ×10−2)
表2. 与其他方法的对比(CD: ×10−2)
Methods |
3DR2N2 |
PSGN |
Pixel2Mesh |
AtlasNet |
OccNet |
3DAttriFlow(1 view) |
Ours(3 views) |
Ours(4 views) |
Airplane |
4.94 |
2.78 |
5.36 |
2.60 |
3.19 |
2.11 |
2.15 |
2.14 |
Bench |
4.80 |
3.73 |
5.14 |
3.20 |
3.31 |
2.71 |
2.5 |
2.52 |
Cabinet |
4.25 |
4.12 |
4.85 |
3.66 |
3.54 |
2.66 |
2.7 |
2.82 |
Car |
4.73 |
3.27 |
4.69 |
3.07 |
3.69 |
2.50 |
2.35 |
2.36 |
Chair |
5.75 |
4.68 |
5.77 |
4.09 |
4.08 |
3.33 |
3.07 |
3.02 |
Display |
5.85 |
4.74 |
5.28 |
4.16 |
4.84 |
3.60 |
3.29 |
3.14 |
Lamp |
10.64 |
5.60 |
6.87 |
4.98 |
7.55 |
4.55 |
4.37 |
4.44 |
Loudspeaker |
5.96 |
5.62 |
6.17 |
4.91 |
5.47 |
4.16 |
3.96 |
3.90 |
Rifle |
4.02 |
2.53 |
4.21 |
2.20 |
2.97 |
1.94 |
1.89 |
1.94 |
Sofa |
4.72 |
4.44 |
5.34 |
3.80 |
3.97 |
3.24 |
3.05 |
2.93 |
Table |
5.29 |
3.81 |
5.13 |
3.36 |
3.74 |
2.85 |
2.79 |
2.83 |
Telephone |
4.37 |
3.81 |
4.22 |
3.20 |
3.16 |
2.66 |
2.86 |
2.72 |
Vessel |
5.07 |
3.84 |
5.48 |
3.40 |
4.43 |
2.96 |
3.16 |
3.11 |
Average |
5.41 |
4.27 |
5.27 |
3.59 |
4.15 |
3.02 |
2.93 |
2.91 |
4. 结论
本文分别从特征提取网络引入通道注意力和多视图特征融合两方面对3DAttriFlow模型进行改进,以解决其重建性能受限于单视图像的缺失信息。首先,介绍了网络主体结构,主要包括特征流管道和变形管道。然后,介绍了编码主干网络ResNet18的改进方法,通过在该网络的深层引入通道注意力,以关注重要通道信息。其次,分析了多视图特征的融合过程。最后,在ShapeNet数据集上开展了实验。结果表明,在单视3DAttriFlow模型基础上,引入通道注意力和多视图特征融合均能提高网络的性能。可视化结果表明,多视比单视的重建结果更完整、形状更合理,且细节更丰富。
基金项目
在此特别感谢江西省自然科学基金对本文的支持:20224BAB202002。