CAD 模型中最难制作的部件之一就是高度结构化的 2D 草图,即每一个 3D 构造的核心。尽管时代不同了,但 CAD 工程师仍然需要多年的培训和经验,并且像纸笔画图设计的前辈们一样关注所有的设计细节。下一步,CAD 技术将融合机器学习技术来自动化可预测的设计任务,使工程师可以专注于更大层面的任务,以更少的精力来打造更好的设计。
在最近的一项研究中,DeepMind 提出了一种机器学习模型,能够自动生成此类草图,且结合了通用语言建模技术以及现成的数据序列化协议,具有足够的灵活性来适应各领域的复杂性,并且对于无条件合成和图像到草图的转换都表现良好。
- 使用 PB(Protocol Buffer)设计了一种描述结构化对象的方法,并展示了其在自然 CAD 草图领域的灵活性;
- 从最近的语言建模消除冗余数据中吸取灵感,提出了几种捕捉序列化 PB 对象分布的技术;
- 使用超过 470 万精心预处理的参数化 CAD 草图作为数据集,并使用此数据集来验证提出的生成模型。事实上,无论是在训练数据量还是模型能力方面,实际的实验规模都比这更多。
这些约束确保了当每个实体的尺寸和位置发生变化时,形状仍保持着设计者想传达的状态。由于实体之间复杂的相互作用,很容易意外地指定一组约束,从而导致草图无效。例如,同时满足平行和垂直约束的两条线是无法绘制的。在复杂的草图中,约束依赖关系链会导致设计人员确定要添加的约束变得极为困难。此外,对于给定的一组实体,有许多等效的约束系统能产生类似的草图。
一个高质量的草图通常会使用一组保留设计意图的约束,这意味着即使更改了实体参数(例如尺寸),草图的语义也得以保留。简而言之,无论实体尺寸如何变化,上图中的心形永远是心形。捕捉设计意图与选择一致的约束系统的复杂性使草图生成变成极其困难的问题。
在生成自然语言方面,已经有了许多成功的工具,其中表现最佳的无疑是在大量现实世界数据上进行训练的机器学习模型。比如 2017 年的 Transformer 架构,展示了强大的连贯造句的能力。这些自然语言模型中的规律,是否可以用来绘制草图呢?
一旦设定好所有必要的对象类型,就需要将数据转换为可以通过机器学习模型来处理的表格。研究者选择将草图表示为 tokens 序列,以便使用语言建模生成草图。文本格式包含了结构和数据的内容,这样使用的优势是可以应用任何现成的文本数据建模方法。不过,即使对于现代语言建模技术,这样做也是有代价的:模型为了生成有效的语法,将额外占用模型容量的一部分。
解决的手段就是避免使用字节格式 PB 定义的通用解析器,利用草图格式的结构来自定义构建设计解释器,即输入一系列代表草图创建过程中各个决策步骤有效选择的 tokens。在这种 tokens 序列的格式下设计解释器会导致 PB 消息有效。
在这种格式下,研究者将消息表示为 triplets 序列(??,??,??),其中?是 token 的索引。给定一系列这样的 triplets,推断每个 token 对应的确切字段是可能的。实际上,第一个 token(??,??,??)始终与 objects.kind 相关联,因为它是创建一个草图消息的首选。第二个字段取决于?1 的具体值。如果?1= 0,那么第一个对象是一个实体,这意味着第二个 token 对应于 entity.kind。该序列的其余部分以类似的方式关联。字段标识符及其在对象中的位置构成了 token 的上下文。因为它使解释 triplets 值的含义以及了解整体数据结构更容易,研究者将此信息用作机器学习模型的其他输入。
从字节模型取样很简单,该过程与任何典型的基于 Transformer 的语言建模过程相同,而 Triplet 模型需要更多的定制处理。
训练细节
研究者使用 128 个通道的批次训练模型以进行 10^6 个权重更新。每个通道都可以在 triplet 设置中容纳 1024 个 tokens 的序列,在字节设置中容纳 1990 个 tokens。为了提高占用率并减少计算浪费,研究者动态地填满了通道,在继续前进到下一条道之前将尽可能多的例子打包。每个批次由 32 个 TPU 内核并行处理。
此外,研究者还使用了 Adam 优化器,学习率为 10^−4,梯度范数为 1.0,所有实验均采用 0.1 的失活率。
实验结果
下图是从 triplet 模型中取样的实体与约束。第一列节点代表了不同的实体,节点从上至下遵循生成的顺序。第二列代表着不同的约束,按照序列索引排序。第三列是从频率最高到最低的约束类型。