当前位置: 首页 > 科技观察

DeepMind的新模型自动生成CAD草图,网友:建筑设计即将起飞

时间:2023-03-12 20:05:41 科技观察

在制造业中,CAD应用广泛。CAD以其精确、灵活、快速的特点取代了纸笔绘图,不再仅仅应用于汽车制造、航空航天等领域。小到咖啡杯,生活中的几乎每一件物品都是由CAD制图创造出来的。模具。在CAD模型中最难制作的部分之一是高度结构化的2D草图,它是每个3D构造的核心。尽管时代变了,CAD工程师仍然需要多年的培训和经验,并像他们的纸笔前辈一样关注所有设计细节。下一步,CAD技术将结合机器学习技术来自动执行可预测的设计任务,使工程师能够专注于更大的任务并以更少的努力创建更好的设计。在最近的一项研究中,DeepMind提出了一种可以自动生成此类草图的机器学习模型,结合通用语言建模技术和现成的数据序列化协议,足够灵活以适应各种领域。复杂性,并且在无条件合成和图像到草图转换方面表现良好。论文链接:https://arxiv.org/pdf/2105.02769.pdf具体来说,研究人员进行了以下工作:使用PB(ProtocolBuffer)设计了一种描述结构化对象的方法,并展示了其在CAD领域的灵活性草图;从最近消除冗余数据的语言建模中汲取灵感,提出了几种用于捕获序列化PB对象分布的技术;使用超过470万个经过精心预处理的参数化CAD草图作为数据集,并使用该数据集来验证所提出的生成模型。事实上,无论是训练数据量还是模型容量,实际的实验规模都远大于这个。CAD草图效果图如下:特写展示:对于DeepMind的这项研究,网友们的评价非常高。用户@TheodoreGalanos说:“很好的解决方案。我正在使用SketchGraphs作为多模态模型的候选者,但是序列的格式和长度太难处理了。迫不及待地想在建筑设计中也使用这种方法。”草图是CAD2D草图是机械CAD的核心,是构成三维形态的骨架,草图是由各种直线、圆弧、样条、圆等通过相切、垂直、对称等特定约束联系起来的。这些约束是为了传达设计意图,定义在实体的各种变换下形状应该如何变化,下图说明了约束如何组合不同的几何图形,如直线和弧线,以创建特定的形状。虚线显示了约束丢失时的另一种有效解决方案。所有几何实体都位于草图平面上,并共同形成一个封闭区域,用于后续操作(例如放样和拉伸)以生成复杂的3D几何体。约束:无法逃脱草图的问题。约束使草图比它们看起来复杂得多。它们代表可以间接影响草图中每个实体的关系。例如,在上图中,如果您向上拖动两条圆弧的交点,同时保持底角固定,则心形会变大。这种转变看似简单,但实际上是所有约束共同作用的结果。这些约束确保当每个实体的大小和位置发生变化时,形状仍然是设计者想要传达的。由于实体之间的复杂交互,很容易不小心指定一组约束,导致草图无效。例如,不能绘制同时满足平行和垂直约束的两条线。在复杂的草图中,约束依赖链会使设计人员很难确定要添加哪些约束。此外,对于一组给定的实体,有许多等效的约束系统可以生成相似的草图。高质量的草图通常会使用一组保留设计意图的约束,这意味着即使实体参数(例如尺寸)发生变化,草图的语义也会得到保留。简而言之,上图中的心形永远是心形,无论物理尺寸如何变化。捕获与约束系统选择一致的设计意图的复杂性使得草图生成成为一个极其困难的问题。Sketch与自然语言建模的相似性Sketch构造的复杂性与自然语言建模有些相似。在草图中选择下一个约束或实体就像在句子中生成下一个单词,两者之间的选择必须在句法上起作用(在草图中形成一致的约束系统)并保持设计意图。已经有许多成功的自然语言生成工具,其中表现最好的无疑是在大量真实世界数据上训练的机器学习模型。例如,2017年的Transformer架构展示了强大的造句连贯能力。这些自然语言模型中的规律可以用来画草图吗?DataOnshape是一款用于尺寸驱动设计的参数化实体建模软件。但是为了存储和处理草图,研究人员使用PB级而不是OnshapeAPI提供的原始JSON格式。使用PB的好处是双重的:由于去除了不必要的信息,结果数据占用的空间更少;使用PB语言可以轻松地为具有各种结构的复杂对象定义精确的规格。一旦设置了所有必要的对象类型,就需要将数据转换为机器学习模型可以处理的表格。研究人员选择将草图表示为一系列标记,以便使用语言建模生成草图。文本格式包含数据的结构和内容,这种使用的优点是可以应用任何现成的文本数据建模方法。然而,即使使用现代语言建模技术,这也是有代价的:模型将消耗模型容量的额外部分以生成有效的语法。解决方案是避免使用字节格式PB定义的通用解析器,使用sketch格式的结构自定义构造设计解释器,即输入一系列代表每个决策有效选择的token——草图创建过程中的制作步骤。以此令牌序列的格式设计解释器会导致数PB的消息有效。在这种格式中,我们将消息表示为三元组(,,)的序列,其中是令牌的索引。给定这样的三元组序列,可以推断出每个标记对应的确切字段。事实上,第一个标记(,,)总是与objects.kind相关联,因为它是创建草图消息的首选。第二个字段取决于1的值。如果1=0,那么第一个对象是实体,也就是说第二个token对应的是entity.kind。序列的其余部分以类似的方式相关。字段标识符及其在对象中的位置构成了令牌的上下文。因为它更容易解释三元组值的含义和理解整体数据结构,研究人员将这些信息用作机器学习模型的额外输入。如上所示,草图包含一个线实体和一个点实体。在左列的每个三元组中,实际使用的值以粗体显示。右列显示三元组与对象的哪个字段相关联。从模型中抽样建立模型的主要目标是估计数据集D中二维草图数据的分布。如上所述,研究人员会将草图视为标记序列。在这项工作中,由于与原始文本格式相关的序列长度挑战,仅考虑字节和三元组。从字节模型中采样很简单,过程与任何典型的基于Transformer的语言建模过程相同,而三元组模型需要更多的自定义处理。上图展示了Triplet的流程:首先嵌入一个特殊的BOStoken并提供给Transformer。Transformer然后输出一组三元组,每个可能的标记组一个。为了准确确定需要发出哪个令牌,应用了根据数据规范自动生成的解释器(状态机),并选择了适当的令牌组并将其与具有复合对象中字段的三元组的活动组件相关联。填写适当的字段后,解释器会转换到下一个状态并生成一个输出标记,然后将其反馈给模型。当状态机接收到最外层重复字段(即object.kind)的“结束”三元组时,停止该过程。实验研究人员使用从Onshape平台上公开可用的文档存储库获得的数据验证了该方法。按照自回归生成模型的标准评估方法,我们使用对数似然作为主要的量化指标。此外,研究人员提供了各种随机和选定的模型样本进行定性分析评估。训练细节研究人员使用128个通道的批次进行10^6次权重更新来训练模型。每个通道可以容纳1024个三元组标记序列和1990个字节设置标记序列。为了提高占用率并减少计算浪费,研究人员动态填充通道,在进入下一个通道之前打包尽可能多的示例。每个批次由32个TPU核心并行处理。此外,研究人员还对所有实验使用了学习率为10^?4、梯度范数为1.0、去激活率为0.1的Adam优化器。实验结果如上图所示,测试了各种模型的可能性。第三列是草图测试样本中每个对象的平均字节数,第四列是第三列乘以对象数。下图显示了从三元组模型中采样的实体和约束。第一列节点代表不同的实体,节点按照从上到下的生成顺序。第二列代表不同的约束,按序列索引排序。第三列是从最频繁到最不频繁的约束类型。下图显示了条件模型的实体和约束。左下角是输入位图,下面的示例说明了模型在分布外输入时的行为。下图是无条件模型采样的各种sketch数据分布统计,而Nucleus采样的top-p参数在括号内。这些只是初步的概念验证实验。DeepMind表示,它希望看到更多应用程序开发出来,利用开发界面的灵活性,例如推断给定实体的约束,以各种草图属性为条件,自动完成绘图。