分享自:

NURBS-Diff:一种NURBS的可微编程模块

期刊:Computer-Aided DesignDOI:10.1016/j.cad.2022.103199

本文属于类型a,即单一原创研究的学术论文。以下是根据文档内容生成的学术报告。


可微分NURBS模块NURBS-Diff:连接CAD与深度学习的桥梁

一、研究作者、机构与发表信息

本文由Anjana Deva Prasad、Aditya Balu、Harshil Shah、Soumik Sarkar、Chinmay Hegde和Adarsh Krishnamurthy共同完成。其中前四位作者及通讯作者Adarsh Krishnamurthy来自爱荷华州立大学(Iowa State University),Chinmay Hegde来自纽约大学(New York University)。该研究发表于Elsevier旗下的《Computer-Aided Design》期刊第146卷(2022年),文献编号为103199,于2021年9月3日投稿,2021年12月13日收到修改稿,2022年1月5日被接收。

二、研究背景与目标

在现代计算机辅助设计(CAD)系统中,实体模型通常采用边界表示法(Boundary Representation, B-rep)进行描述,其中实体边界由样条曲面定义。非均匀有理B样条(Non-Uniform Rational B-Splines, NURBS)是定义这些样条曲面的标准表示形式。NURBS曲面具有高度的控制灵活性和紧凑的几何表达能力,能够表示比贝塞尔(Bézier)曲面或普通B样条曲面更复杂的形状,这主要得益于其非均匀节点向量和权重带来的非线性变换能力。

然而,尽管NURBS是工程领域CAD的标准表示,其在深度学习(Deep Learning, DL)方法中的实用性尚未得到充分研究。当前的三维深度学习研究通常需要将标准CAD表示转换为更适合机器学习的几何表示,如体素(voxels)或三角网格(triangular meshes)。这种转换往往是不可逆的,并且难以与深度学习算法直接集成。

将NURBS表示扩展到深度学习的主要挑战之一在于NURBS求值的可微分编程(Differentiable Programming)。可微分编程的核心思想是以可微分的方式定义神经网络中的每个操作,从而利用基于梯度的方法优化网络参数。对于NURBS的可微分编程,需要计算NURBS曲面点相对于其参数(控制点、权重和节点向量)的梯度。然而,由于NURBS曲面点是节点、控制点和权重的函数,需要计算每个输入参数的偏导数,使得反向传播(backward evaluation)具有挑战性。此外,由于基函数是分段连续多项式,其梯度在节点处可能不连续甚至为零,而基函数的递归定义进一步增加了对节点向量求导的难度。

为了克服这些问题,本文作者利用可微分编程范式的近期理论进展——即如果前向求值算子的雅可比矩阵(Jacobian)可以用块稀疏矩阵表示,则该近似雅可比可用于执行反向传播。基于此方法,作者开发了一个名为“NURBS-Diff”的可微分NURBS模块,旨在将NURBS表示的B-rep曲面集成到深度学习框架中,并支持对控制点、权重以及节点向量的全面优化。

三、研究的工作流程与详细方法

本研究的工作流程可以分为三个主要部分:NURBS-Diff模块的数学定义与实现、CAD应用验证以及深度学习应用验证。

3.1 NURBS-Diff模块的数学定义

NURBS曲面在参数空间((u,v)\in[0,1]\times[0,1])上采样得到有限点集(\mathbf{s})。曲面点根据NURBS公式计算:

[ s(u,v) = \frac{\sum{i=0}^{n}\sum{j=0}^{m} n_i^p(u) nj^q(v) w{ij} p{ij}}{\sum{i=0}^{n}\sum_{j=0}^{m} n_i^p(u) nj^q(v) w{ij}} ]

其中(n_i^p(u))和(nj^q(v))是由Cox–de Boor递归公式计算的基函数,(p{ij})为控制点,(w_{ij})为权重,(u)和(v)为节点向量。

前向求值算法分为三步:首先确定参数(u)和(v)所在的节点区间(knot span);然后利用节点区间仅计算非零基函数;最后计算加权控制点并得到曲面点坐标。该模块支持批量处理多个曲面,并在GPU上并行评估每个曲面点。

反向传播需要计算曲面点相对于所有NURBS参数的梯度。对于控制点的导数(s{,p{ij}}),其值直接等于有理基函数本身:

[ s{,p{ij}}(u,v) = \frac{n_i^p(u) nj^q(v) w{ij}}{\sum{k=0}^{n}\sum{l=0}^{m} n_k^p(u) nl^q(v) w{kl}} ]

对于权重的导数(s{,w{ij}}),由于权重同时出现在分子和分母中,其计算更为复杂,需要通过商法则推导。对于节点向量的导数(s_{,ui})和(s{,v_j}),由于基函数的递归定义和分段性质,直接求导在节点处无定义。作者提出使用高斯平滑(Gaussian smoothing)来近似区间指示函数的导数。具体而言,将区间指示函数表示为阶跃函数与狄拉克δ函数的卷积之差,然后用带宽足够小的高斯函数近似δ函数,从而得到可计算的近似梯度。通过这种近似,节点向量的导数可以递归地从低阶基函数传递到高阶基函数。

最终,对于每个曲面求值点(s_{i,j}),构建一个雅可比向量,包含对所有控制点、权重、(u)方向节点和(v)方向节点的偏导数。由于基函数满足单位分解性且仅在局部区间非零,每个雅可比向量是稀疏的,非零元素数量为(4(p+1)(q+1))。将所有曲面点的雅可比向量堆叠形成完整的块稀疏雅可比矩阵,用于反向传播。

3.2 GPU实现

作者使用Python 3.6和PyTorch框架实现NURBS-Diff模块。底层CUDA C++代码通过Pybind11绑定到Python,并利用CUDA工具包进行GPU加速。前向求值中,每个曲面点的三个坐标分量映射到独立的GPU线程,实现了大规模并行计算。反向传播中,采用散射操作(scatter operation)将梯度更新到对应的控制点和权重上。

3.3 CAD应用验证

作者首先在标准CAD操作中验证了模块的有效性,包括曲线拟合、曲面拟合和曲面偏移。

曲线拟合:以解析曲线(y=\sin(x)+2\sin(2x)+\sin(4x))和三维螺旋线为测试对象,从曲线上采样点作为目标点云。使用不同的损失函数(L1损失、L2损失、倒角距离Chamfer Distance和豪斯多夫距离Hausdorff Distance)进行优化。对于二维无序点云数据,作者使用SkelNetOn挑战赛的像素数据集,从二值图像中提取边界点作为目标,并在损失函数中加入曲线长度正则化项以避免自交和环路。实验表明,加入正则化后拟合精度显著提升,例如“bunny”曲线的倒角距离从50.0020降至1.4099。

曲面拟合:作者考虑了两种场景:固定节点向量和允许节点向量优化。对于解析曲面(z=xy\sin(x)\cos(y)),固定节点时L2误差为0.039528,而允许节点优化后降至0.005262,说明节点重参数化能显著改善拟合质量。对于更复杂的“ducky”曲面,节点优化也带来了一定改善。

曲面偏移:传统的NURBS偏移操作需要进行贝塞尔分解,改变参数化。作者提出了一种基于点云拟合的偏移方法:首先在基曲面上计算密集采样点及法向量,沿法向量移动得到偏移点云,然后用NURBS-Diff模块拟合偏移曲面,并保持与基曲面相同的参数化。对于多曲面片模型,作者通过平均共享边上的法向量并约束共享控制点相同来保证偏移曲面的连续性。与直接偏移控制点的方法相比,NURBS-Diff方法在所有测试案例中均获得了更低的归一化倒角距离。

3.4 深度学习应用验证

作者将NURBS-Diff模块集成到ParseNet框架的SplineNet模块中,用于无监督点云重建。原始SplineNet采用监督学习,需要目标控制点网格来计算拉普拉斯匹配损失和控制点回归损失。作者移除了这些监督信号,改用无监督损失函数:倒角距离、拉普拉斯正则化项和豪斯多夫距离的组合。在SplineDataset数据集上的实验表明,NURBS-Diff的无监督方法在倒角距离上比监督基线方法好一个数量级,且使用较小的控制点网格(如5×5或4×4)即可获得相当的重建质量。

此外,作者还展示了NURBS-Diff在几何约束施加方面的应用。在生物假体心脏瓣膜变形分析中,作者基于DLFEA框架,增加了曲面重建损失和边界条件约束损失。实验表明,加入边界条件约束后,边界条件损失从37.69降至10.90,显著改善了变形的物理合理性。

四、主要研究结果及其意义

NURBS-Diff模块在多个CAD操作中表现出色。曲线拟合实验表明,使用L2损失和倒角距离损失可获得最佳收敛特性。曲面拟合结果证明了节点向量优化的价值:对于解析曲面,优化节点向量使L2误差降低了一个数量级。曲面偏移实验中,NURBS-Diff方法在所有测试案例上均优于直接控制点偏移方法。

在深度学习中,无监督点云重建实验显示,NURBS-Diff的倒角距离为0.018(20×20控制网格),而监督基线为1.184,性能提升显著。同时,使用更小的控制网格(5×5和4×4)也能获得类似的重建精度,说明SplineDataset中的曲面复杂度不需要过大的控制网格。在心脏瓣膜变形分析中,加入边界条件约束后,边界条件损失大幅降低,验证了NURBS-Diff在物理约束施加方面的能力。

计算性能方面,作者在配备Intel Xeon 32核处理器和NVIDIA Titan Black GPU的桌面工作站上进行了测试。曲面拟合的迭代时间随控制点数量、评估点数量和曲面阶数的增加而增加,但模块通常能保持每秒5–10次迭代的速度,展示了良好的可扩展性。

五、结论与研究价值

本文开发了NURBS-Diff——一个可微分NURBS模块,能够直接集成到现有深度学习框架中。该模块的数学框架支持前向求值和训练过程中的反向传播,其中反向传播基于作者定义的近似雅可比矩阵,能够同时优化控制点、权重和节点向量。GPU加速的实现使得曲面求值和梯度传播高效进行。

研究的科学价值在于:首次为NURBS表示提供了完整的可微分编程框架,不仅支持控制点优化,还支持节点向量的重参数化,这是一个重要的理论贡献。应用价值方面,NURBS-Diff可以无缝集成到PyTorch等主流深度学习框架中,为CAD与深度学习的融合提供了关键的基础模块。该模块已被作者公开发布,有望推动更多机器学习CAD应用的发展。

六、研究亮点

本研究的亮点包括:(1)定义了NURBS关于节点向量的近似导数,利用高斯平滑解决了递归基函数在节点处不可导的问题;(2)构建了块稀疏雅可比矩阵,使反向传播计算高效可行;(3)GPU加速的PyTorch实现使其易于集成到现有深度学习流程;(4)开发了无监督点云重建方法,消除了对目标控制点的依赖;(5)展示了通过NURBS-Diff模块施加几何约束(如边界条件)的能力,为物理驱动的深度学习提供了新思路。

七、其他有价值的内容

作者在附录中提供了参数曲面导数的完整数学公式、测试曲面的详细参数、多曲面偏移时共享边法向量合并的可视化说明,以及不同优化器在曲线拟合中的表现对比。这些材料为读者复现和扩展该工作提供了重要参考。作者还指出,未来的工作将包括支持修剪NURBS(trimmed NURBS)曲面和沿修剪边界的复杂曲线约束,以实现水密CAD模型的无缝表示。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com