在制造业中,CAD 的应用十分广泛。凭借着精准、灵活、快速的特性,CAD 已经取代了纸笔画图,并且不再只是应用于汽车制造、航空航天等领域,哪怕小到一个咖啡杯,生活中几乎每个物件都由 CAD 画图建模。
CAD 模型中最难制作的部件之一就是高度结构化的 2D 草图,即每一个 3D 构造的核心。尽管时代不同了,但 CAD 工程师仍然需要多年的培训和经验,并且像纸笔画图设计的前辈们一样关注所有的设计细节。下一步,CAD 技术将融合机器学习技术来自动化可预测的设计任务,使工程师可以专注于更大层面的任务,以更少的精力来打造更好的设计。
在最近的一项研究中,DeepMind 提出了一种机器学习模型,能够自动生成此类草图,且结合了通用语言建模技术以及现成的数据序列化协议,具有足够的灵活性来适应各领域的复杂性,并且对于无条件合成和图像到草图的转换都表现良好。
具体而言,研究者开展了以下工作:
使用 PB(Protocol Buffer)设计了一种描述结构化对象的方法,并展示了其在自然 CAD 草图领域的灵活性;
从最近的语言建模消除冗余数据中吸取灵感,提出了几种捕捉序列化 PB 对象分布的技术;
使用超过 470 万精心预处理的参数化 CAD 草图作为数据集,并使用此数据集来验证提出的生成模型。事实上,无论是在训练数据量还是模型能力方面,实际的实验规模都比这更多。
对于 DeepMind 的这项研究,网友的评价非常高。用户 @Theodore Galanos 表示:「非常棒的解决方案。我曾使用 SketchGraphs 作为多模态模型的候选方案,但序列的格式和长度太不容易处理了。等不及在建筑设计中也使用这种方法了。」
草图之于 CAD
2D 草图是机械 CAD 的核心,是构成三维形式的骨架。草图由通过特定的约束(例如正切、垂直和对称)相关联的各种线、弧、样条线和圆组成。这些约束旨在传达设计意图,并定义在实体的各种变换下,形状应该如何发生变化。下图说明了约束是如何将不同的线、弧等几何图形组合创建成特定的形状的。虚线显示了丢失约束时的另一个有效的解决方案。所有的几何实体都位于一个草图平面上,共同形成封闭的区域,供后续操作(例如放样和拉伸)使用,以生成复杂的 3D 几何。
草图与自然语言建模的相似性
草图构造的复杂性有些类似于自然语言建模。在草图中选择下一个约束或实体就像生成句子中的下一个单词,而两者中的的选择又必须在语法上起作用(在草图中形成一个一致约束系统),并保留设计意图。
在生成自然语言方面,已经有了许多成功的工具,其中表现最佳的无疑是在大量现实世界数据上进行训练的机器学习模型。比如 2017 年的 Transformer 架构,展示了强大的连贯造句的能力。这些自然语言模型中的规律,是否可以用来绘制草图呢?
数据
Onshape 是维度驱动设计的一个参数化实体建模软件。但为了存储和处理草图,研究者使用 PB,而不是 Onshape API 提供的原始 JSON 格式。使用 PB 具有双重的优势:由于移除了不必要的信息,结果数据占用的空间更少;使用 PB 语言可以轻松地为结构各异的复杂物体定义精准的规格。
一旦设定好所有必要的对象类型,就需要将数据转换为可以通过机器学习模型来处理的表格。研究者选择将草图表示为 tokens 序列,以便使用语言建模生成草图。文本格式包含了结构和数据的内容,这样使用的优势是可以应用任何现成的文本数据建模方法。不过,即使对于现代语言建模技术,这样做也是有代价的:模型为了生成有效的语法,将额外占用模型容量的一部分。
解决的手段就是避免使用字节格式 PB 定义的通用解析器,利用草图格式的结构来自定义构建设计解释器,即输入一系列代表草图创建过程中各个决策步骤有效选择的 tokens。在这种 tokens 序列的格式下设计解释器会导致 PB 消息有效。
在这种格式下,研究者将消息表示为 triplets 序列(,,),其中是 token 的索引。给定一系列这样的 triplets,推断每个 token 对应的确切字段是可能的。实际上,第一个 token(,,)始终与 objects.kind 相关联,因为它是创建一个草图消息的首选。第二个字段取决于1 的具体值。如果1= 0,那么第一个对象是一个实体,这意味着第二个 token 对应于 entity.kind。该序列的其余部分以类似的方式关联。字段标识符及其在对象中的位置构成了 token 的上下文。因为它使解释 triplets 值的含义以及了解整体数据结构更容易,研究者将此信息用作机器学习模型的其他输入。
这些只是最初的概念验证实验。DeepMind 表示,希望能够看到更多利用已开发接口的灵活性优势开发的应用程序,比如以各种草图属性为条件,给定实体来推断约束,以自动完成图纸。