1. 引言
点云,作为一种三维显示表征方式,相较于体素以及网格而言,是一种轻量化的结构,但是损失了拓扑结构的信息,观察起来并不直观,为此,有许多传统算法实现了从点云到表面网格的转化,目前,也有越来越多的深度学习算法来完成该任务,并且大多数任务最终模型的输出并不是直接的表面,而是依靠符号距离函数,隐式的生成三维模型。特别地,基于神经辐射场的三维重建算法近几年相当火热,其依靠多视图以及相机位姿的输入,生成相应的光线,并在光线上采样点的方式,本质仍然是基于点的方式隐式生成表面。
在基于深度学习的算法中,大多算法忽略了模型的泛化性,它在未知的形状上的表现不佳。这是因为,他们忽略了形状之间的联系,对于属于同一种类的形状而言,基本上其集合结构应该是相似的,特别是对于室内物体而言,它们都是人造的,人类也是基于经验制造的该类结构性的物体以满足相应的功能。
为此,本文提出了一种形状的假设,该假设结合了同一类别物体的共性信息和其中实例的个性特征,使得同一类别的实例的拓扑结构之间产生了联系,并在该假设下,建立了相应的模型,该模型采用流行的隐式表面重建的思路,通过该模型可以学习空间中任意一点(在边界内)的SDF值,并理论上可以完成任意精度的高质量三维表面重建。我们在ShapeNetV2数据集上进行了相关三组类别的实验,并验证了形状假设的可行性和效果。
2. 相关工作
2.1. 隐式表面重建
基于三维隐式表示的深度学习算法在近几年层出不穷,隐式表示的表征能力相较于显示方法更好,这是因为隐式表征理论上可以显示任意精度的三维模型,而显式方法受存储的限制而扩展精度。 [1] 提出了IM-NET的自编码器,需要点坐标和形状的特征向量的输入,采用解码器和对抗生成后输出该点的占有率。 [2] 提出了一种基于多视图和体渲染的方以彩色图作为监督学习三维模型,其中 [3] 建立了SDF值与体渲染之间的联系可提取出高质量的表面提取网络。上述方法都是基于2D进行三维隐式曲面估计的方法,但本质上仍然是基于点的方式。此外,还有一类直接的方法, [4] 直接使用多层感知机预测每个点的SDF值,并提出了一种自解码器的架构,使得其具有了表示一类形状的能力。 [5] 提出了一种表面生成框架AtlasNet,它将3D形状表示为参数表面元素的集合,直接地推断出形状的表面表示。 [6] 提出了一类基于占有率的网络Occupancy Network,并引入了多分辨率等值面提取算法,以更好地提取表面。 [7] 提出了局部隐式网格表示,具有可扩展性和通用性,训练一个自动编码器来学习在该尺寸下嵌入3D形状的局部组件。
2.2. 基于深度学习的点云特征提取
因为点云的无序、无连接、不规则的性质以至于无法像体素那样,将2D卷积直接应用于3D。为此,对于点云的深度学习也是具有挑战性的一个任务。 [8] 提出了PointNet保证了输入点的排列不变性,并且其非常的高效,随后 [9] 改善了PointNet无法捕捉局部结构的问题,可以学习多尺度结合的点云特征。 [10] 提出了一种边卷积模块,包含了点云的邻域信息并且可以堆叠学习全局形状属性,在点云分类和分割任务上取得了优秀的成绩。
3. 方法
3.1. 总览
![](//html.hanspub.org/file/3-1543003x7_hanspub.png?20231106090436000)
Figure 1. The whole algorithm framework of this paper
图1. 本文算法整体框架
隐式神经三维表面重建的基本思想是用神经网络拟合一个连续函数
,使其满足等式(1)。即可以通
(1)
过该模型,获取三维空间中任意一点的符号距离函数(SDF),其定义为该点到离其最近的表面的有向距离,符号由该点在表面的内部还是外部决定,内部为负,外部为正。需要注意的是,在实际应用中,一般会为距离设定阈值
,以此增强表面细节的刻画并减少无意义的计算,在本算法中,设定阈值
,单位为米。最后,可以利用光线投射进行二维渲染 [11] 或者Marching Cubes [12] 抽取SDF值为零的等值面,本文使用后者获取三维表面网格。
然而,为每一个物体训练单独的网络不仅花销很大且是不合理的。直觉上,同一个类别的物体,几何结构基本上是类似,只是每个具体的物体有些独自的特征,二者结合获得最终的形状。这一点,是本文形状先验假设开展的必要条件,事实上,生活中的物体大多都是结构化的物体,特别是室内的物体。为此,本文希望构建一个针对类别的隐式神经场,以提升模型的泛化性,受到 [13] 的启发,提出了如等式(2)的形状先验的等式:
(2)
假设有某一类别的形状集合
,
为该类别所有形状的共性特征,T是变换函数,在 [13] 中将其定义为一个三维的薄板样条插值(TPS),该方法由于核函数选取和锚点个数的限制,对于三维变换的表征能力有限而本文采用深度学习的方法,提升其表征的能力,其中
为变换函数的参数。此外,为了捕获无法从共性信息中获得的物体个性特征,加入调整项
来改善。
在这一形状先验假设的指导下,我们的模型结构如图1所示,采用Encoder-Decoder架构。输入为某一类别S的实例点云
,在编码器阶段采用动态图卷积提取点云的形状编码
,在解码器阶段,又分为两部分,在三维变换参数估计网络中,将提取的形状编码
和点云中的一点
作为输入,输出该点的变换参数
和改进参数
,而后在三维变换网络中,将
和
连接后作为输入,并输出该点的符号距离值
并加上
作为最终的输出,在训练完成后,通过Marching Cubes (移动立方体)在提取出实例
的表面
。
3.2. 编码器
在编码阶段,对于输入的点云,采用动态图卷积网络(DGCNN)提取形状的特征。其结构如图2所示。
对于输入的形状点云
,在经过四层图边卷积层(Edge Convolution)后,通过最大池化层和全连接层,得到其形状编码
以供后续模块使用。DGCNN在提取点云的特征时,不仅考虑全局的全局特征,并且融合了点云的局部信息,使得其在点云分类任务和点云分割任务上都相较于别的点云特征提取算法有了很大的提升,因此本文考虑使用其作为编码器,生成形状编码供后续模块使用。
在DGCNN中,最为核心的是边卷积模块,其流程如图3所示。对于任意一点
,首先根据该点构建k近邻图,其边的定义如等式(3),可以看到通过
保持了点的全局排列不变性,并通过
(3)
保证了点的局部特征。
的m通道的计算公式如等式(4)所示,其本质是在对
进行k近搜
(4)
索后的全连接的计算,其动态特性是指在每一层边卷积层前重新构图,使得算法具有非局部扩散的性质。
3.3. 基于形状先验的解码器
在解码器模块,其结构如图4所示,基于形状先验等式(2),我们将其分为两个部分,第一个为形变参数估计网络E,对于形状
每一个输入的点
,我们估计其的形变参数
以及位移
,在 [13] 的工作中,其采用传统的三维薄板样条插值来定义三维变换,在计算变换参数时,首先要进行锚点的匹配算法,随后根据匹配的锚点,在迭代地估计参数,因此其计算成本相当巨大,此外,由于锚点选取的多少以及核函数的选取的优劣,有可能影响重建的效果。而在本文中,使用神经网络实现端到端的参数估计。对于输入的每一个点都会计算相应的变换,不再受锚点的限制。此外,受到 [14] 的启发,我们引入了超网络模型(Hyper Network) H,以接收由编码器输出的形状编码
,初始化参数估计网络的权重参数,以此更好地利用形状编码的形状特征的信息。因此,在形变参数估计网路存在两个相应的函数如等式(5)所示。
(5)
在完成上述的计算后,我们设计了第二部分的网络,将
与
合并连接,作为变换网络T的输入,这一部分与 [4] 类以,输出该点未加以改善的符号距离函数的值
,T的映射为:
(6)
这里需要注意两点,第一是由超网络H输出的参数是为变换网络T进行初始化的,因为这一部分变换描述的是从物体的共性信息带有物体参数
而进行的变换,也就是基于平均形状的转换,第二点,也是最为重要的一点是,该网络的输出并不是点
对应的最终的符号距离的值,正如在形状先验(2)中描述的那样,物体的个性特征是无法从变换网络T中经过三维变换转化而来的,因此用
加以修正,所以点
的最终的符号距离值我们将其定义为
。
综上所述,结合DGCNN编码器和基于形状先验的解码器模块,最终的模型形式为:对于输入的特定的类别的点云
,隐式神经重建网络f为:
(7)
3.4. 损失函数
记输入的特定类别的点云
,
为
表面上的点,SDF的损失函数为:
(8)
对于左边求和的第一项,
为
的SDF的真值,第二项中
为空间梯度,对于
梯度,易从反向传播过程中计算,这一项是由Eikonal方程导出,是基于SDF的隐式神经场中常用的损失函数。第二个求和项是用于约束三维物体表面上的物体的法线,
为表面点切平面法线的真值。此外,也使用正则化损失来约束学习的形状编码,最终的损失函数定义为:
(9)
4. 实验
4.1. 数据集与预处理
本文选取ShapeNetV2数据集,其中包含许多室内常见种类的三维模型(OBJ格式),选取其中的Chair (03001627),Table (04379243)以及sofa (04256520)分别训练三个模型。但是,其中的三维模型尺寸规模不一,且没有相对应的点云格式以及需要监督的SDF和法向量的真值信息。为此,我们首先将所有模型归一化在半径为1/1.03的球体内 [4] 。对于表面上的点,使用100个虚拟相机在单位球体上定期采样,为每一个归一化模型渲染100张虚拟图像,通过从这些虚拟图像中反向投影深度像素来获得表面点及其SDF和法向量的真值。对于自由空间上的点,在
的立方体中均匀采样,并通过同样的方法计算相应的SDF的值。样本数据如图5所示。
![](//html.hanspub.org/file/3-1543003x71_hanspub.png?20231106090436000)
![](//html.hanspub.org/file/3-1543003x70_hanspub.png?20231106090436000)
(a) (b) (c)
Figure 5. Presentation of source data and preprocessed data
图5. 源数据与预处理后的数据展示
4.2. 训练细节
在编码器阶段,我们均匀采样点云表面5 K个点,采用四层边卷积,使用的MLP (多层感知机)的输出维度分别为
,每个点选取的近邻点数(K)为20,为了抽取多尺度的特征,将边卷积每一层的输出进行拼接,得到一个512维的向量,随后使用一层输出为1024维的多层感知机聚合特征,最后经过二层
的全连接层获得256维的形状编码,最后两层使用Droupout (随机失活),比例为0.5。此外,所有的全连接层使用LeakyRelu激活和Batch Normalization (批标准化)。
在解码器阶段,超网H采用
的网络,激活函数使用Relu,输出作为参数估计网络E的权重,对于E,使用四层
全连接网络,对于变换网络T,使用与E一致的网络结构,不过最后的输出是一维,这两个网络都使用SIREN激活 [15] 。
本文选取的三个数据集的大小都在3 K ~ 4 K左右,在解码器阶段,参照 [4] ,训练的关键点是平衡训练集和测试集的正样本和负样本,具体地说,选取一半SDF值为负的点,另一半为正,此外,降采样16,384个自由空间上的点,以及16,384个表面上的点用于一个批次的训练。使用Adam优化器,初始学习率为0.0001。模型收敛性如图6所示。
(a)![](//html.hanspub.org/file/3-1543003x78_hanspub.png?20231106090436000)
(b) (c)
Figure 6. Chair, sofa, table training loss trend
图6. 椅子、沙发、桌子训练误差趋势
4.3. 衡量指标
4.3.1. 倒角距离
倒角距离(Chamfer Distance)是三维建模任务中最为常见的指标,给定两个点集
和
,该距离是每个点到另一个点集中最近点的最近邻距离之和,定义如下:
(10)
在我们的实验中,我们在真值表面和由算法得到的表面上,随机选取了10 K个点。
4.3.2. 推土距离
推土距离(Earth Mover’s Distance)在三维建模任务中同样是一个常见的评价指标,其定义如下:
(11)
其中
是一个双射,也就意味着该指标旨在寻找
和
的一一映射,再进行对比,而不是像倒角距离的任意比较,在计算时,随机选取表面上8 K个点进行
的估计与推土距离的计算。
4.3.3. 网格精度
参考 [4] ,网格精度(Mesh Accuracy)定义为90%的测试点位于真值表面的半径为d的球体内的最小距离d。具体地,我们在测试样本上随机选取1 K个点,并计算相应其到真值表面的最小距离。
4.4. 结果分析
我们选取了DeepSDF [4] 和AtlasNet [5] 网络作为比较对象,它们都是基于点云的隐式神经三维建模算法,我们以相同的数据集和样本数量和其源码中给出的超参数设定进行了模型的训练,使用200个样本作为测试样本,最终在三个类别上的指标如表1和表2所示。
![](Images/Table_Tmp.jpg)
Table 1. Comparison of average chamfer distance, earth movers’ distance and mesh accuracy of test samples
表1. 测试样本的倒角距离、推土距离、网格精度平均值比较
![](Images/Table_Tmp.jpg)
Table 2. Comparison of the median of chamfer distance and earth movers’ distance of test samples
表2. 测试样本的倒角距离、推土距离中位数比较
从这些指标中可以看到,无论是平均值还是中位数,我们的模型,相较于AtlasNet和DeepSDF在每个类别上都有着很大的提升。直观地,从图7中可以看出,我们的方法不仅在三维模型的可视效果、平滑度上都有着很好的表现,而且对于未见过的物体的形状的完成度上也更好,以此证明了模型的泛化性。特别地,AtlasNet在对于沙发的重建上,出现了大量的存在空洞的例子,从指标分析中,我们也可以看出该方法相较于我们的方法和DeepSDF都有着一定的差距。
5. 结束语
本文提出了一种基于形状先验的隐式神经网络,联系了类别中各个样本的个性特征和类别整体的共性信息的方法,并且在实验中证明了该方法可以完成高质量的表面生成任务,体现了算法的有效性和优越性。
![](//html.hanspub.org/file/3-1543003x87_hanspub.png?20231106090436000)
Figure 7. Comparison of experimental results (from left to right, the true value, the proposed algorithm, DeepSDF, and Atlasnet)
图7. 实验结果比较(从左至右分别是真值、本文提出的算法、DeepSDF和Atlasnet)
接下来进一步的工作,首先,本文的算法在获得高精度三维表面网格的同时,训练的耗时比较长,因为都是全连接层的缘故,所以考虑进行模型的剪枝或者使用知识蒸馏的方法,获得一个参数量少一点的模型;其次,我们考虑可以从RGB图和深度图片作为源数据,实现从图片到模型的端到端的网络,其中的算法,可以沿用本文的思路,难点是,点云到世界坐标系的配准,以及考虑到图片的像素有限,有效的三维信息可能较少。
基金项目
自然科学基金联合基金(项目号:U18092006);自然科学基金(项目号:62171323);科技部重点研发项目(项目号:2020YFA0711400);上海市重大科技项目(项目号:2021SHZDZX0100);长江学者奖励计划;中央高校基本科研业务费等项目的支持。