DeepCAD论文笔记

摘要

基于Transformer提出了用操作序列表示3D生成模型。

1 引言

现有3D模型

  • 3D 点云:大量离散的 3D 点组成的数据表示形式;

  • 多边形网格:一系列相连的多边形组成的 3D 模型;

  • 水平集场:使用数值函数来表示物体的边界,并根据函数值的正负来确定物体内部和外部的区域;

局限性:仅能创建 3D 形状的离散表示,都缺少生成 3D 形状设计本质的能力 — 绘制过程。         

        作者提出了一个(基于Transform)深度生成网络 DeepCAD,能够输出 CAD 工具(如 AutoCAD)中用于构建 3D 形状的操作序列,这是 CAD 模型的 “绘制” 过程。

挑战在于:CAD 设计的顺序和参数化性质,(例如,曲线草图、拉伸、圆角、布尔、倒角)组成,每个操作由某些不规则的参数(离散或连续)控制。故以前开发的 3D 生成模型不适合 CAD 模型生成。

作者只考虑最常用操作,把它们统一在一个公共结构中,对命令类型、参数、序列顺序进行编码,类比CAD命令和自然语言生成基于Transformer的自编码器。该自编码器也是本篇文章的核心,如何将除本文外的常用CAD操作(圆角、布尔、倒角)按照作者思路编码。

为了训练这个自编码器,作者还创建了一个新的 CAD 命令序列数据集,以促进未来基于学习的 CAD 设计的研究

2 相关工作

参数化形状推断

3D形状生成模型

基于Transform模型

3 方法

3.1神经网络的CAD表示

CAD模型提供两种方式的表示,其一为用户的操作序列,如在一个二维平面上的画闭合轮廓草图,再通过拉伸成三维实心形状,再进行布尔操作等;另一种是CAD模型的内核表示,如B-rep,给定一个命令序列,其 B-rep 会自动计算出来,通常通过行业标准库 Parasolid。它由拓扑组件及其连接组成,以形成一个实心形状。

 作者目的在于生成CAD命令序列的模型,而不是B-rep。B-rep只是CAD命令序列的抽象表示。

3.1.1 CAD指令的规范

作者仅考虑sketch and extrusion

sketch用于在三维空间的二维平面上指定闭合曲线。每个闭合曲线被成为loop(环),多个环形成一个闭合区域,称为profile(轮廓)。一个环总是以SOL开始,按逆时针顺序排列,以最左下角曲线开始,仅考虑三种常见:直线、曲线和圆。其中直线用结束点,曲线用结束点、弧度角和逆时针标示,圆用圆心和半径表示。

Table 1

每个曲线命令由其曲线类型(L,A,R)和参数(Table 1)描述,曲线参数指定了曲线在草图平面的局部参考框架中的二维位置。由于每个环中的曲线是一个接一个连接的,为了简洁,我们从参数列表中排除了曲线的起始位置;第一条曲线从草图平面的原点开始,原点的空间坐标通常在拉伸命令中指定。草图轮廓由一个环列表表示$S=[Q_1,\dots,Q_N]$,每个环Q_i由一系列从指示命令开始的曲线组成,例如Q_i=[\langle\text{SQL}\rangle, C_1,\dots,C_{n_i}],每个曲线命令C_j=(t_j,p_j)指定曲线类型t_j以及形状参数p_j

拉伸命令有两个目的:

将二维草图拉伸成三维实体,可以是单向、对称或者双向,由u确定

指定布尔运算将新拉伸的三维实体与先前形状合并,包括创建新实体、与现有实体连接、切割和相交,由b确定

拉伸命令还需要定义草图平面的三维方向和其二维局部参考框架,这是通过旋转矩阵(Table 1 中 (\theta,\gamma,\phi) 参数确定)定义。命令参数包括一个拉伸轮廓的比例因子 s

通过这些命令,我们将一个 CAD 模型 M描述为交替出现的曲线命令和拉伸命令序列。换句话说 M=[C_1,\dots,C_{N_c}],其中每个C_i=(c_i,p_i) 指定命令类型和参数。

3.1.2 网络友好的表示

类别自然语言,词汇表由一系列CAD命令组成,形成句子。其中草图轮廓是主语,拉伸是谓语。

每个命令有有不同数量的参数,且参数是离散和连续的混合,因此对这些参数进行正则化。

首先,对于每个命令,其参数堆叠成一个 16×1 的向量,其元素对应于 Table 1 中所有命令的集合参数$p_i=[x,y,\alpha,f,r,\theta,\phi,\gamma,p_x,p_y,p_z,s,e_1,e_2,b,u]$,将未使用参数记作-1.

在此基础上固定每个模型的命令总数N_c,通过添加空命令填充命令序列长度到达最大命令长度60.

此外,我们通过量化连续参数来统一连续和离散参数。为此,我们将每个 CAD 模型规范化到一个 2×2×2的立方体内;我们还将每个草图轮廓规范化到其边界框内,并在拉伸命令中包括一个比例因子 s来恢复规范化轮廓到其原始大小。这种规范化限制了连续参数的范围,使我们能够将其值量化为 256 个级别,并使用 8 位整数表示。结果是,所有命令参数都只有离散值集合。参数量化不仅是训练基于 Transformer 网络的常见实践,对于 CAD 模型来说,它对于提高生成质量尤为重要。在 CAD 设计中,必须遵循某些几何关系,例如平行和垂直的草图线条。然而,如果生成模型直接生成连续参数,通过参数回归获得的值容易产生错误,破坏这些严格的关系。相反,参数量化使网络能够将参数 “分类” 到特定级别,从而更好地遵循学习到的几何关系。             

3.2 CAD模型的自编码器

输入为一个CAD命令序列$M = [C1,\dots , C_{N_c}]$N_c 为固定数量

首先,每个命令 C_i被分别投射到维度为 d_E = 256的连续嵌入空间。然后,将所有嵌入组合起来输入编码器 ,输出一个潜在向量z\in \mathbb{R}^{256}。解码器以潜在向量 z作为输入,输出生成的 CAD 命令序列 \hat{M}

一个CAD命令中包含两部分:命令类型和命令参数。C_i=(c_i,p_i)

嵌入部分:

e(C_i)= e^\text{cmd}_i+ e^{\text{param}}_i+ e^\text{pos}_i

编码器:

四层 Transformer 块组成,每层有八个注意力头和512的前馈维度

解码器:

解码器 DDD 也建立在 Transformer 块上,具有与编码器相同的超参数设置。它以学习到的常量嵌入为输入,同时关注潜在向量 zzz。最后一个 Transformer 块的输出被送入线性层,以预测 CAD 命令序列

3.3 CAD数据集创建

新数据集构建过程始于 ABC 数据集:

  1. 利用其中每个 CAD 模型链接至 Onshape 的原始设计。

  2. 接着,通过 Onshape 的 FeatureScript 语言(一种专门用于解析 CAD 操作与参数的领域特定语言),作者筛选出仅使用 “草图” 和 “拉伸” 操作的模型,舍弃了那些采用更复杂操作的模型。

  3. 对于符合条件的模型,作者编写了一段 FeatureScript 程序来提取其草图轮廓和拉伸操作,并将其转化为 Table 1 中列出的命令格式。

3.4 模型训练和生成

训练时优化目标为交叉熵函数,使用 Adam 优化器,初始学习率为 0.001,并设置线性预热期为前 2000 步。所有 Transformer 模块的 Dropout 率设定为 0.1,并在反向传播中应用梯度裁剪值为 1.0。我们以批处理大小 512 对网络进行 1000 轮的训练。

当自编码器训练完成后,我们可以使用一个 256 维的潜在向量 z 来表示一个 CAD 模型。为了自动生成 CAD 模型,我们运用 latent-GAN 技术于已学得的潜在空间上。生成器和判别器都是简单的多层感知机(MLP)网络,各自包含四层隐藏层,它们的训练采用带有梯度惩罚的 Wasserstein-GAN 策略。最后,生成 CAD 模型时,我们从多元高斯分布中采样一个随机向量,并将其输入 GAN 的生成器中。GAN 的输出是一个潜在向量 z,随后将其输入基于 Transformer 的解码器,从而生成 CAD 模型。

4 实验

评估自编码器的两个维度:自编码性能(用于指示生成模型表达目标数据分布的程度)和形状生成

 5 总结

  1. 曲线命令类型有限:目前,作者仅考虑了三种最常用的曲线命令类型(直线、弧线和圆)。然而,其他曲线命令也可以轻松添加,例如可以通过三个控制点以及起点来指定的三次贝塞尔曲线,其参数结构可以按照 3.1 中描述的方式进行。

  2. 操作命令的局限性:虽然像旋转草图这样的操作可以类似于拉伸命令进行编码,但某些 CAD 操作(如倒角)作用于形状边界的部分,因此需要参考模型的 B-rep(边界表示),而不仅仅是其他命令。将这些命令纳入生成模型仍需进一步研究

  3. 拓扑有效性无法保证:并非每个 CAD 命令序列都能生成拓扑上有效的形状。作者的生成网络不能保证其输出的 CAD 序列的拓扑一致性。在实践中,生成的 CAD 命令序列很少失败,但随着命令序列变长,失败的可能性增加。

在神经科学研究中,钙成像技术因其能够实时捕捉神经元活动而至关重要。然而,由于成像过程中引入的噪声,研究人员在进行神经元活动提取和尖峰推断时面临着挑战。DeepCAD方法的出现,正是为了解决这一问题。通过采用深度自监督学习技术,DeepCAD能够无需大量的标注数据,仅通过对图像自身结构的学习来训练神经网络模型,实现有效的特征表示学习和去噪处理。 参考资源链接:[深度自监督学习在钙成像去噪中的应用:DeepCAD介绍与下载](https://wenku.csdn.net/doc/4akz7955gp?spm=1055.2569.3001.10343) 为了详细解释DeepCAD的工作原理和实现步骤,首先需要了解其核心模块和功能。DeepCAD主要由以下几个部分组成: 1. 数据预处理:在使用DeepCAD之前,需要对钙成像数据进行预处理,包括去噪和格式转换等,以适应模型训练的需求。通常,这一步骤会用到`data_process.py`中的数据处理函数。 2. 网络结构:DeepCAD使用3D U-Net作为其网络模型的基础框架。3D U-Net是一种专门为医学图像分割设计的卷积神经网络,能够处理三维数据,因此非常适合于三维的钙成像数据。 3. 训练与测试:通过`train.py`进行模型训练,使用`test.py`对训练好的模型进行测试。在训练过程中,模型会学习预测图像中的未标记部分,并通过这种方式来实现对噪声的去除。 4. 模型评估:评估模型的性能通常涉及对比去噪前后的图像差异、计算信噪比等指标,以确保去噪处理的有效性。 使用DeepCAD进行钙成像数据的自监督去噪处理的Python实现步骤如下: - 安装PyTorch环境,并下载DeepCAD代码包。 - 准备钙成像数据,并按照DeepCAD的要求格式化数据集。 - 配置训练参数,如学习率、批处理大小、训练轮数等。 - 启动`train.py`进行模型训练,过程中监控损失函数的变化,确保模型收敛。 - 使用`test.py`脚本在训练好的模型上进行测试,评估模型去噪效果。 - 根据结果调整模型参数或训练策略,直至达到预期的去噪效果。 在实践中,DeepCAD的自监督去噪技术能够显著提高神经元活动图像的清晰度和准确性,对理解大脑功能和疾病机制有着重要的贡献。借助自监督学习的先进性,DeepCAD有望在未来的神经科学研究和医疗影像分析中发挥更加重要的作用。 在完成DeepCAD的项目实战后,想要进一步探索自监督学习和深度学习在医学影像处理中的其他应用,可以考虑阅读《深度自监督学习在钙成像去噪中的应用:DeepCAD介绍与下载》这篇文献,它不仅提供了DeepCAD的详细背景知识和实现细节,还有助于理解自监督学习技术在其他相关领域的应用潜力。 参考资源链接:[深度自监督学习在钙成像去噪中的应用:DeepCAD介绍与下载](https://wenku.csdn.net/doc/4akz7955gp?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值