← 返回 2026-02-19

CADEvolve:通过程序进化创建逼真的CAD CADEvolve: Creating Realistic CAD via Program Evolution

Maksim Elistratov, Marina Barannikov, Gregory Ivanov, Valentin Khrulkov, Anton Konushin, Andrey Kuznetsov, Dmitrii Zhemchuzhnikov 📅 2026-02-18 👍 30 2026-07-13 08:35
CAD生成 VLM微调 数据集 程序合成 进化算法

基于VLM引导的进化流程生成复杂CAD程序数据集,在Image2CAD任务上达到SOTA。

前置知识

计算机辅助设计(CAD)

CAD是使用计算机软件创建、修改、分析或优化工程设计的技术。它允许工程师和设计师以精确的参数化方式创建2D和3D模型,支持快速迭代和编辑。在制造业和工程领域,CAD是数字化设计的核心工具,能够将设计意图转化为可制造的几何形状。本文关注的是参数化CAD,其中设计由参数和操作序列定义,而不是静态的几何体。

理解CAD的基本概念是理解本文目标的前提:生成能够创建逼真、复杂工程零件的可执行CAD程序。

CadQuery

CadQuery是一个基于Python的开源参数化CAD脚本库。它允许用户通过编写Python代码来创建3D CAD模型,支持拉伸、旋转、扫掠、放样、圆角、倒角、抽壳、布尔运算和阵列等丰富的操作。CadQuery脚本是可执行的、参数化的,并且可以生成实体几何体(B-rep)。本文使用CadQuery作为目标代码格式,因为它具有强大的表达能力,能够表示工业级复杂的CAD设计。

本文生成的所有CAD程序都是CadQuery脚本。理解CadQuery的操作集和语法对于理解数据集的构成和模型的输出至关重要。

视觉语言模型(VLM)

VLM是一种能够同时处理图像和文本输入的人工智能模型。它结合了视觉编码器和语言模型,可以理解图像内容并生成文本响应。在本文中,VLM(具体为GPT-5-mini)被用作进化过程中的“提议引擎”,它根据父代代码和文本描述,提出新的代码编辑建议。VLM的3D理解能力直接影响生成代码的质量和多样性。

VLM是本文进化流程的核心驱动力。理解VLM的能力和局限性(如3D基础有限)是理解本文动机和解决方法的关键。

进化算法

进化算法是一类受生物进化启发的优化算法,通过选择、变异、重组等操作,在候选解种群中迭代搜索更优解。在本文中,进化算法被用于离线数据合成:从一个初始种子池开始,通过VLM提出编辑(变异),执行验证(适应度评估),选择通过验证的程序作为下一代的父代。这个过程逐步累积复杂性,生成多样化的CAD程序。

本文的核心创新是将进化算法应用于CAD数据生成,而不是推理时搜索。理解进化算法的基本原理有助于理解本文的提出-执行-过滤流程。

Image2CAD任务

Image2CAD是一种条件生成任务:给定一个或多个2D渲染视图(如正交视图和等轴测视图),模型需要生成一个CAD程序,该程序编译后的3D几何体与目标视图匹配。这是一个受控的评估设置,因为多视图渲染完全指定了目标几何体,不需要每个形状的文本描述(如Text2CAD)或额外的点云编码器(如PC2CAD)。

本文使用Image2CAD作为验证数据集质量的任务。理解这个任务的设定对于理解实验结果和比较基线至关重要。

研究动机

当前CAD领域的数据瓶颈严重制约了AI自动化的发展。公开的CAD数据集,如Fusion 360 Gallery、DeepCAD和CAD-Recode,主要包含简单的草图-拉伸序列,缺乏复杂的操作(如旋转、放样、扫掠、圆角、倒角、抽壳、局部阵列)、多操作组合以及设计意图。这限制了模型学习多操作组合和复杂拓扑的能力。一些工作试图用冻结的VLM直接生成代码,但单次提示生成的程序通常非常简单,操作集狭窄,甚至无效,因为当前基础模型的3D基础能力有限,无法可靠地链接异构操作。例如,早期实验发现,单次VLM倾向于饱和在挤出棱柱上,无法可靠地链接异构操作。这导致了数据质量与数量之间的矛盾:现有数据集要么规模小但操作丰富(如手写生成器),要么规模大但操作简单(如规则生成器)。

本文的目标是本文的具体目标是创建一个大规模、多样化、高质量的CAD程序数据集,该数据集能够覆盖CadQuery的完整操作集,包含复杂的多操作组合和明确的设计意图。这个数据集应该能够用于训练VLM,在Image2CAD等下游任务上达到最先进的性能。更广泛的目标是为CAD领域提供一种通用方法,用于在开放语料库稀缺时合成高质量的监督数据,从而推动AI驱动的CAD自动化。

与已有工作不同的是,本文的独特切入角度是将进化搜索从推理时(如EvoCAD)重新定位到离线数据合成阶段。与依赖单次VLM生成或规则生成器不同,本文提出一个“提出-执行-过滤”的进化流程:从少量手写基本体开始,由VLM(GPT-5-mini)反复提出编辑建议,每个候选程序必须通过编译和几何验证才能成为下一代的父代。这种方法利用VLM的创造力进行探索,同时利用严格的自动化验证确保质量和有效性。此外,本文首次发布了一个覆盖CadQuery完整操作集的开放CAD序列数据集,填补了该领域的数据空白。

核心方法

CADEvolve是一个基于进化的离线数据合成流程,其核心思想是“提出-执行-过滤”。流程从46个手写CadQuery基本体(覆盖拉伸、旋转、放样、扫掠、抽壳、圆角、倒角、布尔运算和局部阵列)组成的种子池开始。在每一代,从当前接受池中随机采样K个父代,VLM(GPT-5-mini)根据父代的代码和文本描述,提议k个子代程序。每个子代程序必须通过三阶段验证:1)执行检查(必须编译并运行,返回一个实体);2)几何有效性(通过严格的CAD完整性测试);3)视觉-文本一致性(VLM验证渲染的七视图蒙太奇是否与子代的文本描述匹配)。只有通过所有验证阶段的子代才会被接受,并成为下一代的父代。这个过程迭代进行,直到达到固定预算或新颖性饱和。最终生成7,945个验证过的参数化生成器(CADEvolve-G),每个生成器是一个从形状参数到CadQuery实体的映射函数。

本文的核心创新点是将进化搜索用于离线数据合成,而不是推理时搜索。与EvoCAD(在推理时维护种群并进行交叉变异)不同,CADEvolve只在数据生成阶段使用进化。这意味着在训练和推理时,模型是一个标准的单次解码器,没有额外的进化开销。这种设计使得数据生成过程可以大规模并行化,并且生成的训练数据可以用于任何标准的序列生成模型。另一个关键创新是提出了三层数据集:CADEvolve-G(参数化生成器)、CADEvolve-P(可执行的CadQuery脚本)和CADEvolve-C(规范化的、用于训练的脚本)。这种分层设计分离了数据生成、执行和训练的不同需求,确保了数据的质量和多样性。

方法步骤详情

方法分为三个主要阶段:第一阶段是进化合成参数化生成器(CADEvolve-G)。具体步骤包括:1)父代采样:从当前接受池Dt中随机采样K个父代,以鼓励跨操作重组。2)子代元数据提议:GPT-5-mini提议k个子代,每个子代提供名称、摘要、详细描述以及它继承自哪些父代。提议必须暗示单一实体,避免重复实体的装配,并鼓励比父代更复杂的几何。3)带检索的代码合成:对于每个子代,通过嵌入详细描述检索最近邻,并与父代代码联合。然后GPT-5-mini生成一个单一的、参数化的CadQuery函数param2cq,该函数将语义参数z映射到实体S。4)分阶段验证和自修复:执行检查(param2cq必须编译并运行返回单一实体)、几何有效性(通过CAD完整性测试)和视觉-文本一致性(VLM验证渲染的七视图蒙太奇与描述匹配)。如果任何阶段失败,模型会发出有针对性的修复。5)选择和增长:只有通过所有验证阶段的子代才被接受并加入Dt+1。第二阶段是采样和解析生成器(CADEvolve-P)。对于每个生成器,提取参数z并搜索N=15个变化向量,这些向量产生有效的实体并覆盖设计空间的不同区域。使用CMA-ES进行黑盒优化。对于每个接受的参数向量z和生成器,通过追踪和切片生成一个确定性的CadQuery脚本。第三阶段是规范化和标准化(CADEvolve-C)。包括统一代码模板、符号名称、居中、范围规范化和二值化。最后进行长度过滤、截断和旋转增强,最终得到约130万训练脚本。 在RL微调阶段,奖励函数定义为:如果代码编译成功,则 = 10 \cdot ext{IoU}$,否则 = -10$,其中IoU是预测网格与目标网格之间的交并比。

技术新颖性

本文的技术新颖性体现在多个方面。首先,这是首次将进化算法应用于CAD数据生成,而不是推理时搜索。这种“离线进化”的范式将计算密集的探索过程转移到数据合成阶段,使得训练和推理时的模型保持简单高效。其次,本文首次发布了一个覆盖CadQuery完整操作集的开放CAD序列数据集,填补了该领域的数据空白。之前的公开数据集要么只包含简单的草图-拉伸序列,要么不提供可执行的程序历史。第三,本文提出了一种多阶段验证和自修复机制,确保生成的程序在几何上有效且与文本描述一致。这种机制结合了VLM的视觉理解和自动化几何检查,显著提高了生成数据的质量。第四,本文设计了一套完整的数据处理流程,包括代码增强、规范性化、长度过滤和旋转增强,这些步骤共同解决了模板过拟合、代码风格不一致、形状尺度变化等问题,确保训练数据的有效性和多样性。

CADEvolve overview.
Figure 1: CADEvolve overview.
Representation of a shape from CADEvolve-G.
Figure 3: Representation of a shape from CADEvolve-G.
From generator to concrete program.
Figure 4: From generator to concrete program.
Image2CAD training pipeline.
Figure 6: Image2CAD training pipeline.
Example evolutionary trajectories.
Figure 7: Example evolutionary trajectories.

实验结果

本文通过大量实验验证了CADEvolve流程和数据集的有效性。首先,进化流程成功生成了7,945个验证过的参数化生成器(CADEvolve-G),这些生成器覆盖了CadQuery的完整操作集,包括拉伸、旋转、放样、扫掠、抽壳、圆角、倒角、布尔运算和局部阵列。从这些生成器中,通过采样和规范化,最终得到了约130万用于训练的脚本(CADEvolve-C)。在Image2CAD任务上,基于CADEvolve数据集训练的模型(CADEvolve-M)取得了最先进的性能。具体来说,在DeepCAD数据集上,CADEvolve-C big (RL1) 的Chamfer Distance (CD) 为0.15(×10³),IoU为92.6%,无效率(IR)为0.2%,优于基线cadrille RL(CD=0.17, IoU=92.2%, IR=0.1%)。在Fusion360数据集上,CADEvolve-C big (RL1) 的CD为0.16,IoU为87.2%,IR为0.5%,同样优于cadrille RL(CD=0.17, IoU=84.6%, IR=0.1%)。在更具挑战性的MCB数据集上,CADEvolve-C big (RL2) 的CD为0.52,IoU为55.2%,IR为0.4%,显著优于cadrille RL(CD=0.87, IoU=47.6%, IR=2.5%)。这些结果表明,CADEvolve数据集不仅能够训练出有效的模型,而且通过RL微调可以进一步提升性能,尤其是在覆盖更多样化形状的数据集(如MCB)上。此外,消融实验证明了数据处理流程中每个步骤的重要性:代码增强减少了模板过拟合,规范性化统一了代码风格和形状尺度,而添加ABC/ShapeNet预测数据则进一步提升了模型的几何保真度。

CAD sequence generation conditioned on multi-view images.
Table 1: CAD sequence generation conditioned on multi-view images.
Dataset/Regime definitions used in Table 1.
Table 2: Dataset/Regime definitions used in Table 1.
Operation statistics.
Table 3: Operation statistics.
Examples of generated parts.
Figure 2: Examples of generated parts.
Qualitative comparisons across datasets.
Figure 5: Qualitative comparisons across datasets.
Sequence length distribution.
Figure 10: Sequence length distribution.
查看结构化数据
任务指标本文基线提升
Image2CAD (DeepCAD) CD↓ (×10³), IoU↑ (%), IR↓ (%) CADEvolve-C big (RL1): CD=0.15, IoU=92.6, IR=0.2 cadrille RL: CD=0.17, IoU=92.2, IR=0.1 CD降低11.8%,IoU提升0.4%,IR略增
Image2CAD (Fusion360) CD↓ (×10³), IoU↑ (%), IR↓ (%) CADEvolve-C big (RL1): CD=0.16, IoU=87.2, IR=0.5 cadrille RL: CD=0.17, IoU=84.6, IR=0.1 CD降低5.9%,IoU提升2.6%,IR增加
Image2CAD (MCB) CD↓ (×10³), IoU↑ (%), IR↓ (%) CADEvolve-C big (RL2): CD=0.52, IoU=55.2, IR=0.4 cadrille RL: CD=0.87, IoU=47.6, IR=2.5 CD降低40.2%,IoU提升7.6%,IR大幅降低

局限与改进

本文的局限性主要包括以下几个方面。首先,合成分布不匹配:CADEvolve是一个由进化循环生成的合成数据集,并不旨在匹配任何单一的专有工业CAD分布。因此,诱导的形状和操作频率可能与真实世界数据不同。尽管在多个基准测试中观察到了泛化能力的提升,但作者并不声称对任何特定工业领域的分布级保真度。其次,CadQuery方言范围:生成的程序以CadQuery表达。许多操作在概念上是可移植的(例如拉伸、旋转、放样、扫掠、圆角/倒角、布尔运算),但忠实转换到其他CAD系统可能并非易事,因为特征历史表示、内核行为和约束语义存在差异。第三,进化过程的效率问题:随着搜索的进行,无效提议率迅速上升(后期达到约85%),新颖性接受率下降到40-50%),表明在固定的API或计算预算下,探索的回报递减。进一步扩展可能需要更强的提议策略,而不是简单地运行更长时间。第四,数据集的规模和多样性虽然很大,但仍然受限于初始种子池和VLM的能力,可能无法覆盖所有工业设计场景。

独立分析的弱点

尽管CADEvolve取得了显著成果,但仍存在一些弱点需要改进。首先,进化过程的效率问题:随着迭代进行,无效提议率急剧上升,新颖性接受率下降,导致计算资源浪费。改进方向可以是引入更智能的父代选择策略(如基于多样性的采样),或者使用更强大的VLM来提高提议质量。其次,合成数据与真实工业数据的分布差异:虽然数据集在公开基准上表现良好,但可能无法完全代表复杂的工业设计。改进方向可以是引入少量真实工业数据作为种子或验证参考,或者设计更贴近工业实践的进化目标。第三,CadQuery语言的限制:虽然CadQuery表达能力强,但并非所有工业CAD系统都支持。改进方向可以是扩展流程以支持其他CAD语言(如OpenSCAD、FreeCAD Python),或者开发跨语言的代码转换工具。第四,验证机制的局限性:当前的三阶段验证(执行、几何、视觉-文本)可能无法捕获所有设计意图或美学质量。改进方向可以是引入人类反馈或更细粒度的评估指标。

未来方向

作者提出的未来研究方向包括:将CADEvolve流程扩展到其他CAD系统和语言,以覆盖更广泛的工业应用;改进进化策略以提高数据生成的效率和多样性;将数据集应用于其他下游任务,如PC2CAD(点云到CAD)、Text2CAD(文本到CAD)和更广泛的多模态CAD流水线。基于CADEvolve的成果,还可以延伸以下方向:1)探索更复杂的进化操作,如交叉和重组,以生成更丰富的程序变体;2)利用生成的训练数据进行大规模预训练,然后针对特定工业领域进行微调;3)将CADEvolve的进化思想应用于其他程序合成领域,如机器人控制代码或数据处理流水线的生成;4)研究如何将人类设计师的反馈融入进化循环,以生成更符合设计意图和美学标准的程序。

复现评估

本文在可复现性方面做得很好。作者在论文中明确声明:“Code, dataset, and the SOTA model are available at GitHub, Hugging Face dataset, and Hugging Face model.” 这意味着代码、数据集和最先进的模型都是开源的。数据集包含了三个层级(G、P、C)的完整数据,以及详细的处理流程。代码库应该包含进化流程、数据处理、模型训练和评估的完整实现。此外,论文提供了详细的实验设置,包括使用的VLM(GPT-5-mini)、模型架构(QWEN2-VL-2B)、训练超参数、奖励函数等。数据集的规模(约130万脚本)和算力需求(进化过程需要大量VLM调用)可能使得完全复现整个流程成本较高,但作者提供了预处理好的数据集和预训练模型,降低了复现门槛。总的来说,本文的可复现性很高,其他研究者可以基于开源的代码和数据集进行验证、比较和进一步研究。