项目主页
2024CVPR
Point2CAD: Reverse Engineering CAD Models from 3D Point Clouds
从3D点云到CAD模型的逆向工程
source code
摘要
提出了一种混合分析神经重建方案,该方案弥合了分段点云和结构化 CAD 模型之间的差距,并且可以轻松地与不同的分割主干相结合。
此外,为了为表面拟合阶段提供动力,提出了一种新颖的自由曲面隐式神经表示,从而提高了整体 CAD 重建方案的性能。
简介
- 使用简单参数化表面基元进行重建已得到广泛研究。对于此类表面,拟合和计算相交都相对简单,并且通过足够干净的点云,可以使用经典几何方法导出边界表示(B-rep)[1,4,47]。
- 关于拟合自由曲面的工作,通常具有各种风格的样条线,但它们大多没有将各个曲面组装成完整的 B-reps [9,42,50]。
- 总之,几何复杂的自由曲面和拓扑复杂的简单曲面组合大多是分开研究的。
本文提出的方法流程
- 首先,预训练的神经网络将点云分割成与不同表面相对应的簇。
- 其次,将曲面拟合到簇,这涉及基本的原始拟合和针对自由曲面的新颖的神经拟合方案。
- 第三,相邻曲面相交以恢复边缘,相邻边缘进一步相交以恢复角点,从而获得完整的 B-rep。
- 总而言之,这些步骤形成了一个全面且多功能的管道,用于将点云逆向工程化为 CAD 模型;
本文贡献
- 提出了 Point2CAD,这是一个综合工作流程,用于从原始 3D 点云重建复杂的自由形式参数化 CAD 模型;
- 为了支持表面拟合阶段,提出了一种新颖的自由曲面神经表示;
- 在具有挑战性的 ABC 数据集上展示了卓越的定量和定性性能。
相关工作
点云分割
学习点云特征嵌入的神经架构包括:无序邻域点集[33,34]、图卷积 [23, 48]、点卷积 [15, 25]、点体素学习 [27, 37] 和转换器 [11, 52]。
一些作者使用逐点标记作为将点云构建为几何基元的机制[12]。例如,PrimitiveNet [16] 通过局部嵌入和对抗性学习将点云分割成基元。在[28]中,图卷积用于检测 3D 点云中的表面边界。
基元拟合
[6, 18] 是将 3D 点云抽象为类似 CAD 的参数化元素的常用方法。
经典解决方案依赖于霍夫变换等强大的统计程序来识别点云中的几何基元,尽管存在噪声和丢失数据[38]。
还有人提出几种基于学习的方法来将几何基元拟合到点云。
- SPFN [24] 被训练来检测不同尺度的不同数量的基元,并使用GroudTruth表面及其在基元中的成员资格进行监督。
- ParSeNet [42] 在点云中查找参数化曲面,包括基本几何图元以及 B 样条曲面,但并没有花太多精力来连接它们。
- HPNet [50] 专注于使用语义和光谱特征以及邻接矩阵形式的边缘信息将点云划分为片段,但不适合实际的图元。
- [40](Unsupervised recursive deep fitting of 3d primitives to points) 提出了一种无监督的递归神经架构,可以学习将几何图元拟合到 3D 点
- [46]开发了一种混合表示,将显式几何形状与有符号距离函数相结合,以表示和操纵规则和自由形式的 3D 形状。
除了传统的几何图元之外,参数化自由曲面也是 CAD 系统的重要构建块。
- DeepSpline [9] 利用分层 RNN 来重建 2D 样条曲线,并结合无监督学习方法来恢复旋转和挤压表面。
CAD 表达
BRepNet [22] 是一种直接在 B-rep 数据结构上运行的神经网络架构。
UV-Net [17] 引入了另一种对 B-rep 数据进行操作的神经架构,无需拟合点。
JoinABLe [49] 从 CAD 基元开始,学习使用标准 CAD 文件中可用的弱监督来组装它们并形成接头。
另一种流行的 CAD 表示形式是构造实体几何 (CSG)。
CAPRI-Net [51] 学习拟合二次 3D 图元的集合和相关的 CSG 树,而 CSGNet [41] 学习使用卷积编码器和循环解码器为给定的 2D 或 3D 形状生成 CSG 程序。
通用CAD建模
- 传统的逆向工程方法通常采用迭代 RANSAC 估计来从点云中提取原始形状,例如[26]。
- [2] 概述了一个手工设计的顺序过程,通过分割、表面和拓扑拟合以及混合来重建 CAD 模型。
- 基于同样灵感的基于学习的方法包括 Point2Cyl [45],这是一种神经网络,通过预测封闭形式的点分割、基本标签、法线和挤压参数,将 3D 点云转换为一组挤压圆柱体。
- ComplexGen [10] 通过自回归检测几何图元来重建 CAD 模型。该模型由一个稀疏 CNN 编码器、三个用于几何基元和拓扑的 Transformer 解码器以及用于细化相当粗略的 Transformer 预测的全局优化后处理组成。
流形学习
- 指一系列旨在发现高维(可能有噪声)数据集背后的低维流形的方法。
- 流形学习方法可以理解为 PCA [7] 的非线性扩展,试图“展平”弯曲流形。
- 大多数方法通过显式地使用这些点来构建映射来关注特定输入点的可视化或保真度[29,39,44]。
- 自动编码器提供了一种自然的方法,不仅可以将数据非线性投影到较低维的潜在空间,还可以从潜在空间解码回原始数据空间[21]。
- 本文利用关于隐式神经表示的最新发现扩展了这种方法,以设计自由曲面的拟合方法。
隐式神经表示(Implicit Neural Representations (INR))
隐式神经表示是一个将任意函数(通常以稀疏样本的形式观察到)编码为神经网络权重的框架。
最近关于神经渲染的研究产生了一些关于隐式神经场的有用且可转移的见解,例如位置编码的重要性[30]和新的(例如正弦)激活函数[43]。
这些发现构成了本文的自由曲面拟合方法的基础。
方法
与最近通用的端到端深度学习流程的趋势相反,本文发现将重建过程分成多个步骤并且仅在必要时使用神经方法是有利的。
总的来说,本文的方法由以下阶段组成
- 将点云划分为与 CAD 模型的拓扑面相对应的簇。依靠现有的(预先训练的)神经网络方法来完成该步骤。
- 将分析表面基元拟合到每个簇。在这里使用混合方法:首先,测试一组流行的几何表面基元,这些基元允许有效的封闭形式拟合。提出了一种基于神经表示的自由曲面的新颖拟合方案。
- 确定每个(有限)参数曲面的有效面积并对其进行裁剪,留出足够的余量以确保相邻曲面的相交。
- 执行成对表面相交以获得一组拓扑上合理的对象边缘。使用这些边,删除输入点不支持的部分。
- 执行成对边相交来识别一组拓扑角。使用这些角根据与剩余表面区域的接近程度来修剪边缘。
应用 Point2CAD 后,得到的是 B-rep 格式的 CAD 模型,其中包括表示模型面的分析曲面、兼容的边和角以及编码拓扑的邻接矩阵。
本文提出的流程的基础是本文提出的将3D中自由形式参数化2D流形表面的隐式神经表示拟合到无序点集。在这种情况下,一个特别的困难是表面必须外推到支撑点之外才能实现稳健的表面相交,这对于神经表面估计器来说是一个挑战。本文的解决方法是设计了一种新颖的自由曲面参数化。
标准基元的参数化
这里本文用的几何基元是常用的平面、球体、圆柱和圆锥。确切的参数化,参考文章【ParSeNet: A parametric surface fitting network for 3d point clouds】以及补充材料。
本文提出不依赖预测的表面类型进行拟合,而是将每个基元对点簇进行拟合,选择具有最低重建误差的最简单模型。
使用 INR 进行自由曲面参数化
本文认为这一步骤的方法应该满足以下条件:
- 输入点云中的抗噪声能力,这对于真实的 3D 传感器来说是不可避免的;
- 支持逆映射,以实现潜在空间的遍历;(逆映射:假设你有一个通过神经隐式表达生成的几何体,支持反向映射意味着你可以从几何体的任意一点找到对应的隐空间表示,并在隐空间中做出修改,从而更新几何体的整体形状。这种技术可以应用于诸如形状插值、形状生成和几何重建等任务。)
- 插值方式灵活,保证数据高保真度,避免过度平滑;
- 外推模式中的强正则化,需要在观察到的数据点周围构造平滑、合理的边缘,以用于后续的表面相交;(外推,与插值的概念相对应,插值是在已有数据范围内预测点,外推就是在已有数据范围外进行点的预测。正则化,防止过拟合)
- 快速拟合,计算成本低。
支持逆变换的现有流形学习技术(例如UMAP),无法直接用于此任务。本文开发了一种具有单个隐藏层的定制神经自动编码器[21],这足以满足简单的非线性变换[14]。
这里作者强调了激活函数选择(ReLU,SiLU,添加位置编码,正弦激活)的重要性,并对使用不同激活函数的优劣做了分析比较,最终决定使用组合激活函数,分析结果得到结论:为一些神经元配备 SiLU,为其余神经元配备正弦激活,可产生平滑外推的几何忠于原表面的拟合。
以下是文章给出的自动编码器的框图
拓扑重建
在实例化所有单独的曲面之后,需要建立它们的边界,这相当于找到相邻曲面之间的相交曲线。此步骤对于 CAD 重建的后续阶段至关重要,正确识别和恢复相交曲线非常重要。这一要求再次需要确定性几何方法,因为独立检测很难保证一组完整的边缘与表面一致。
这里作者经过分析认为从数值上进行曲面相交曲线极其复杂且不稳定,将所有曲面转换为三角形网格,这样能够用成熟的,数值稳定的计算工具进行精确的相交计算。
详细做法这里直接引用原文的翻译
对于每个表面,(无限)几何基元被修剪以在支撑点周围形成宽度为 ε \varepsilon ε的边缘,以确保后续步骤有足够的空间,然后通过曲面细分和三角测量将其输入到标准网格划分算法。我们识别每个网格化表面的所有相交表面,计算成对网格交集以获得多段线边缘,并沿着这些边缘重新网格化表面。类似地,我们与相邻的边缘折线相交以获得角点,然后使用这些角来修剪边缘(边缘仍然延伸到曲面之外,因为它们是从未剪切的曲面生成的)。
实验
主要评估两个部分
- 评估地面实况点云聚类或分割,以量化点云采样稀疏性和样本噪声对重建质量的贡献(别名“Point2CAD GT”);
- 在任何预训练的点云聚类或分割方法之上使用几何拟合和拓扑提取,例如 ParSeNet [42] 或 HPNet [50](别名“Point2CAD ⟨method⟩”)。
数据集
用ABC数据集合ParseNet数据集
评估指标
残差:测量重建表面与通过匈牙利匹配获得的相应ground truth表面之间的差异。
具体来说,我们计算每个采样点与其在重建表面上的投影点之间的距离,这使我们能够评估拟合算法捕获原始表面的基础几何形状的效果。第 i 个表面的残差误差为:
P覆盖率:它量化了生成表面覆盖的输入点云的比例:(公式里的 I I I是大写的i,在机器学习中是一个指示函数)
其中|P|是整个输入点集中的点数 P 和 S 是所有 CAD 重建曲面。 r是距离阈值,按照之前的工作设置为0.01。
表面精度、召回率、F 分数:
我们采用了 ComplexGen [10] 中引入的几个评估指标来评估我们的方法在生成重建表面方面的有效性。如果一个表面与其最近的地面实况表面之间的距离低于某个阈值 θ,则该表面被视为真阳性,该阈值在几何意义上作为该方法的准确性度量。
边缘精度、召回率、F 分数:
该方法的有效性还可以从拓扑角度评估,通过计算成对表面相交产生的边缘上的精度、召回率和 F 分数。该评估策略提供了对该方法捕获重建表面拓扑的能力的可靠测量。
角点精度、召回率、F 分数:
同样,对边缘相交产生的角位置的准确估计是整体精度的重要指标。
倒角距离:
该指标评估整个重建 CAD 模型的准确性,而不区分各个表面。为此,我们对重建模型和地面实况对象的整个表面进行采样,并计算两个点集之间的倒角距离。