大数跨境

AI 科研前沿分享 |CAD-Coder:开源视觉语言模型在CAD代码生成中的突破性研究

AI 科研前沿分享 |CAD-Coder:开源视觉语言模型在CAD代码生成中的突破性研究 小A闯跨境
2025-10-19
279
导读:告别手动绘图!AI视觉模型直接生成CAD代码,效率提升100倍

本文针对MIT研究团队发表的《CAD-CODER: AN OPEN-SOURCE VISION-LANGUAGE MODEL FOR COMPUTER-AIDED DESIGN CODE GENERATION》论文进行深度分析与精读。CAD-Coder是一个专为计算机辅助设计(CAD)代码生成而微调的开源视觉语言模型(VLM),能够直接从图像输入生成可编辑的CadQuery Python代码。研究通过构建大规模数据集GenCAD-Code(包含163,671个CAD图像-代码对),实现了在语法有效性和几何准确性上的显著提升,超越了GPT-4.5等先进基线模型。本文将系统解析其核心创新、方法架构、实验结果及行业影响。

1. 研究背景与动机

传统CAD设计流程高度依赖人工操作,耗时且需专业经验。尽管AI驱动的CAD生成研究取得进展,但现有模型存在三大局限:
  • 表示不完整:多数模型基于领域特定语言(DSL),仅支持有限CAD操作;
  • 泛化能力不足:难以处理真实世界图像或未见过的CAD操作;
  • 输出准确性低:生成代码常出现语法错误或几何偏差。
CAD-Coder旨在解决这些痛点,通过微调通用VLM,实现从图像到可编辑CAD代码的端到端生成,推动CAD设计自动化。

2. 核心创新点

2.1 专有数据集GenCAD-Code

  • 规模与内容:包含163,671个CAD模型图像和对应CadQuery脚本,源自GenCAD数据集的转换(CAD程序→CadQuery代码)。
  • 数据分布:token数量分布右偏,平均611 token,99.9%脚本低于3000 token,反映数据集以简单模型为主,复杂样本较少。
  • 公开可用:为社区提供最大CAD图像-代码配对数据集,促进后续研究。

2.2 模型架构与训练策略

CAD-Coder基于LLaVA 1.5架构,整合CLIP-ViT-L-336px视觉编码器和Vicuna-13B语言模型,采用两阶段训练:
  • 阶段1(特征对齐):冻结视觉编码器和LLM,训练两层MLP将图像特征映射到词嵌入空间,使用595K图像-文本对(来自CC3M数据集)。
  • 阶段2(端到端微调):使用GenCAD-Code数据集,解冻LLM权重,优化整个模型以最大化CadQuery代码的生成概率。训练参数:学习率2e-5,批量大小128,1轮训练耗时5.7小时(4×H100 GPU)。

2.3 评估指标创新

  • 有效语法率(VSR):生成代码的语法正确百分比。
  • 最佳交并比(IOUbest):基于固体几何相似性的新指标,通过惯性矩阵归一化和主轴对齐计算,优于传统Chamfer距离,更精确反映形状匹配度。

3. 方法细节

3.1 数据集生成流程

GenCAD-Code通过脚本将GenCAD数据集中的CAD程序(序列化命令:Sketch Line/Arc/Circle、Extrude)转换为CadQuery Python代码。转换直接但未优化(如用多个line命令画矩形,而非.rect()方法),未来可改进代码简洁性。

3.2 模型推理与提示工程

  • 输入:图像(渲染CAD或真实照片) + 固定文本提示:“Generate the CadQuery code needed to create the CAD for the provided image. Just the code, no other words.”
  • 输出:可直接执行的Python脚本,赋值给变量solid
  • 约束:最大token限制4096,过滤超长样本(<0.1%)。

4. 实验结果与性能分析

4.1 基线对比

在100个测试样本上评估,CAD-Coder全面领先:
  • VSR:100%(所有代码语法正确),远超GPT-4.5(92%)、Qwen2.5-VL-72B(94%)。
  • IOUbest:0.675,比最佳基线GPT-4.5(0.524)高28.8%,几何准确性显著提升。
模型
VSR (%)
IOUbest
CAD-Coder
100
0.675
GPT-4.5
92
0.524
Qwen2.5-VL-72B
94
0.423
LLaVA-v1.5-13B(通用VQA训练)
0
0

4.2 泛化能力实验

4.2.1 真实世界图像生成

  • 测试设置:3D打印GenCAD测试集物体并拍摄等距视图照片,输入CAD-Coder。
  • 结果:模型能生成合理CAD代码,但尺寸比例准确性下降(如物体2的边长低估),因训练数据仅含渲染图像(灰度、完美视角)。IOUbest低于渲染图像条件生成。

4.2.2 未见CAD操作处理

  • 测试案例:圆角操作(fillet),未包含在训练数据中。
  • 初始失败:CAD-Coder(基于Vicuna-13B)无法生成正确语法,因LLM缺乏CadQuery知识。
  • 改进尝试:换用代码专家LLM Qwen2.5-Coder-14B,并降低学习率(1e-5),成功生成圆角代码,但需具体提示(如提醒.fillet()方法用法)。
  • 意义:显示通过预训练知识保留,模型可泛化到新操作,但依赖提示工程。

5. 局限性与未来工作

5.1 当前局限

  • 视角敏感性:真实图像输入时,尺寸推断易受视角影响。
  • 复杂特征处理:多拉伸操作或复杂几何体生成准确性低。
  • 提示依赖:泛化到新操作需详细提示,抽象提示无效。
  • 数据集偏差:Token分布右偏,复杂样本不足。

5.2 未来方向

  • 多视图训练:加入多视角图像增强鲁棒性。
  • 真实图像增强:扩展数据集包含真实照片,改善泛化。
  • 连续学习:探索LORA等参数高效微调,更好保留预训练知识。
  • 推理集成:引入思维链(Chain-of-Thought)提高复杂生成准确性。

6. 研究意义与行业影响

6.1 学术贡献

  • 新范式:证明通用VLM通过领域微调可专精CAD代码生成,突破DSL限制。
  • 指标创新:IOUbest提供更可靠的几何评估方法。
  • 开源资源:发布模型、代码和数据集,促进社区发展。

6.2 工业应用

  • 设计民主化:降低CAD使用门槛,非专家也可快速生成专业模型。
  • 流程加速:从图像到可制造模型的时间从小时级缩短到分钟级。
  • 制造自动化:与3D打印/CNC集成,实现端到端数字化生产。

结论

CAD-Coder代表了CAD生成领域的重大进步,通过结合视觉语言模型和领域特定微调,实现了高准确性、高可靠性的代码生成。其开源特性和泛化潜力为未来研究奠定基础,有望彻底改变传统工程设计流程。然而,仍需解决真实世界泛化和复杂操作处理等挑战。未来工作应聚焦于多模态训练和知识保留策略,以进一步提升模型实用性。
论文链接https://arxiv.org/abs/2503.xxxxx
项目地址https://github.com/anniedoris/CAD-Coder


  • 本文基于多项前沿研究深度解读,仅供参考学习。欢迎在评论区分享您的看法!

希望对大家有用,点点小手指,关注和转发!!🤝🤝

扫码关注「ContextEcho」了解学习AI领域最前沿实战技巧和经验分享



视频分享途径多样,感兴趣可以按照自己喜好方式来哈, 需要高清视频+课件+练习文件+源码,可以移步到小店支持一把! plmhome.taobao.com
plmhome.taobao.com

1. bilibili 哔哩哔哩

账号: 工业软件传道士

地址:https://space.bilibili.com/1002682218

所有全集,免费学习


合集·PLM之家-UG NX同步建模功能入门教程

合集·PLM之家- Teamcenter基础培训视频教程全集

合集·PLM之家--- 西门子NX钣金设计视频全集

合集·PLM之家-西门子UG NX软件机械管道视频教程全集

合集·PLM之家- UG NX装配从入门到精通

合集·PLM之家-西门子UG NX高级教程-产品参数化设计Wave专题

合集·PLM之家高级专题- UG NX 高精可视化HD3D专题教程

合集·PLM之家-UG NX高级仿真原创视频

合集·PLM之家-UG NX运动仿真视频全集

合集·PLM之家--UG NX 冲压模具分析工具

合集·PLM之家原创西门子NX软件Check-mate视频合集

合集·PLM之家Teamcenter安装视频教程

合集·PLM之家UG NX自定义特征UDF视频学习合集

合集·PLM之家- UG NX高级技巧

合集·UGNX二次开发高级实例教程

合集·PLM之家产品接口PI的视频

合集·PLM之家NX视频-表达式专题视频

合集·PLM之家-UG NX三维零件设计实战

合集·PLM之家-Simens NX 二次开发从入门到精通高清视频合集

合集·NX-部件族专题视频

合集·三维设计UG NX画

合集·工业软件UG NX二次开发培训入门课程


更多实视频和专辑课陆续享!

欢迎转载学习!


更多精彩内容请关注PLM之家

http://www.plmhome.com





END

PLM之家plmhome


▲长按二维码“识别”关注

~~~~往期经典章链接~~~~

Teamcenter软件安装部分

1.1 虚拟机安装

1.2 工具及Java安装PLM之家TC安装视频教程

1.3 Oracle数据库安装配置

1.4 数据库安装

 1.5 许可证服务器安装

 2.1 两层胖客户端安装

3.1 J2EE 安装

 3.3 安装weblogic

 3.4 部署war文件

 3.5 验证廋客户端登陆

 3.6 安装appache

3.7 四层胖客户端安装完毕

4.1 安装BMIDE

5.1 安装本地TcVis

5.2 两层TcVIS安装

5.3 四层TcVIS安装

6.1 服务器及两层客户端升级

UDF自定义特征部分

PLM之家-西门子NX软件 1自定义特征UDF概述
PLM之家- 西门子NX软件UDF专题 2 创建UDF的过程
PLM之家-西门子NXUDF专题 3 插入UDF的使用
PLM之家- 西门子NX软件UDF专题 4 编辑一个UDF
PLM之家- NX8.5自定义UDF专题 5 UDF库的配置
PLM之家- NX软件UDF专题 6 创建自己的UDF库
PLM之家- 西门子NX软件UDF专题 7 UDF库实例演习
NX高级技巧部分
第12章如何控制关联到表达式值的文本中的小数数位
第11章 如何在 NX 中直接输入度分秒格式的角度
第10章 如何确定一个模型或者装配模型的最大边界盒尺寸
第9章 如何避免NX在处理大型装配时的内存溢出报错
第8章如何在 NX 中构造大型模型
第7章 NX 中设置的所有环境变量的列表
第6章 NX中如何控制模型的质量
第5章 图纸导出CGM文件(2)
第5章 图纸导出CGM文件(1)
第4章 自定义命令(二次开发)
第3章 JA录制(二次开发)
第2章 Debug工具条调用
第1章 妙用环境变量设置
NX二次开发高级实例部分
PLM之家NX二次开发高级实例-1.1 NX二次开发注意事项
PLM之家NX二次开发高级实例-1.2 装配相关开发类说明
PLM之家NX二次开发高级实例-1.3 自动装配项目菜单创建
PLM之家NX二次开发高级实例-1.4 自动装配VS项目创建
PLM之家NX二次开发高级实例视频-1.5 自动加载组件
PLM之家NX二次开发高级实例视频-1.6 创建固定约束
PLM之家NX二次开发高级实例视频-1.7 创建配对约束
NX二次开发高级实例视频-2.1 标准件创建项目概述
NX二次开发高级实例视频-2.2 钓饵标准件项目初始化
NX二次开发高级实例视频-2.3 钓饵标准件弹出对话框值设置
NX二次开发高级实例视频-2.4 钓饵标准件对话框初始值设置
PLM之家NX二次开发高级实例视频-2.5 导入模板文件
PLM之家NX二次开发高级实例视频-2.6 更新表达式
PLM之家NX二次开发高级实例视频-2.7 模板自身导入处理
NX二次开发高级实例视频-2.8 默认模板路径的处理
NX二次开发高级实例视频-3.1 批量后处理项目介绍
NX二次开发高级实例视频-3.2 批量后处理项目设置
NX二次开发高级实例视频-3.3 批量后处理项目对话框初始化
NX二次开发高级实例视频-3.4 批量后处理项目获取操作
NX二次开发高级实例视频-3.5 批量后处理项目后处理生成
NX二次开发高级实例视频-3.6 批量后处理项目完成
NX二次开发高级实例视频-4.1 工程图模板项目概述

NX产品接口 PI 专题

PLM之家UG NX 产品接口视频-1 产品接口PI概述
PLM之家NX 产品接口视频-2 创建产品接口PI的过程
PLM之家NX 产品接口视频-3 产品接口的部件引用规则
PLM之家NX 产品接口视频-4 wave中的产品接口
PLM之家UG NX 产品接口视频-5 PI被引用的查看
产品接口视频-6 PI与Teamcenter的集成管理
PLM之家UG NX 产品接口视频-7 产品接口创建实例

NX部件族Part Family专题

部件族专题-1 部件族Part Family概述
部件族专题-2 部件族Part Family对话框
部件族专题-3 部件族电子表格的选项
部件族专题-4 创建单个部件族Part Family
部件族专题-5 加载部件族实例
PLM之家plmhome-部件族专题-6 装配部件族实例
部件族专题-7 标准件部件族的创建实例


NX三维建模实例视频
2.1 阀体管道建模及出图1
2.2 阀体管道建模及出图2
2.3 阀体管道建模及出图3
2.4 阀体管道建模及出图4
3.1图片建模思路
3.2 摄像头脚掌曲面绘制
3.3 摄像头脚指头曲面线条绘制
3.4 摄像头脚指头曲面绘制
3.5 摄像头曲面绘制完成
3.6 摄像头渲染
4.1 外轮廓绘制
4.2 顶部曲面绘制
4.3 把手曲面绘制
4.4 整体完成
5.1 外形绘制
5.2 上端部面绘制
5.3 细节处理(1)
5.3 细节处理(2)
5.4 整体完成
6.1 顶部轮廓绘制
6.2 底部灯管绘制
6.3 整体完成
6.4 工程图细节处理
7.1 铸件下断面绘制
7.2 铸件上断面绘制
7.3 铸件连接部分绘制
7.4 典型铸件内部腔体绘制(1)
7.5 3D零件绘制实例 -- 铸件内部腔体绘制(2)
7.6 工程出图-基本视图处理
7.7 工程出图-细节视图处理
7.8 工程出图-完成
8.1【3D零件绘制实例】 锻件外轮廓绘制
8.2 【3D零件绘制实例】 锻件凹槽绘制
8.3 锻件细节绘制(1)
8.4 锻件3D设计实例-锻件细节绘制(2)
8.5 锻件3D设计--锻件细节绘制(3)
8.6 3D设计-锻件建模完成
8.7 出图设计-锻件基本视图
8.8 视图操作-细节视图处理
8.9 制图完成

NX表达式视频


PLM之家表达式专题视频-1 表达式概述

PLM之家表达式专题视频-2 创建、编辑表达式

PLM之家表达式专题视频-3 用户表达式、系统表达式

PLM之家表达式专题视频-4 表达式的导入导出

PLM之家表达式专题视频-5 条件表达式

PLM之家表达式专题视频-6 部件间表达式

PLM之家表达式专题视频-7 表达式建模综合练习


NX冲压分析可成形一步式视频

冲压模具分析工具 1 分析可成形性 - 一步式介绍
冲压模具分析工具 2 分析可成形性 - 一步式类型及功能
冲压模具分析工具 3 全部展开实例
冲压模具分析工具 4 中间展开实例)
PLM之家-NX9.0冲压模具分析工具 5 高级展开实例


NX产品模板工作室PTS视频

1 产品模版工作室概述
2 产品模版工作室界面
3 创建一个基本的模版
4 PTS高级模版技巧
5 PTS添加需求HD3D
6 添加装配模版
8 产品模版技巧实例

NX高精可视化HD3D视频

1. PLM之家NX全息3D培训-HD3D概述
2. PLM之家NX全息3D培训-HD3D基本使用
3. PLM之家NX全息3D培训-HD3D客户化展示
4. PLM之家NX全息3D培训-创建HD3D
5. PLM之家NX全息3D培训-创建多维可视化报告


NX模型检查一致性check-mate视频

1. Check-Mate基本概念及使用流程   
 2 Check-Mate结合HD3D的使用
3 Check-Mate问题修复方法   
 4 创建自定义企业的Check-Mate规范
5 客户化规范验证和Check-Mate报告管理    
6 使用check-mate Viewer创建报告
7 使用质量仪表Quality Dashboard  
  9 中国包中的Check-Mate插件使用


NX入门视频实例教程(8 小时)
1 二次开发环境配置    
2 二次开发模式    
3 简单的消息框   
 5 使用ufun创建圆柱体
8 NXOpen对象选择功能    
9 ufun对象选择功能    
10 二次开发工程项目创建
11 菜单MenuScrip脚本    
12 NX6之前老的UI设计   
 13 新的Block UI对话框设计
14 使用uistyler和C创建block    
15 使用uistyler和C++创建block
16 创建Block(1)UI设计   
 16 创建Block(2)代码模版分析    
16 创建Block(3)特征创建
16 创建Block(4)创建完成    
17 Block UI创建圆柱体特征(1)对话框设计
17 Block UI创建圆柱体特征(2)获取UI值    
17 Block UI创建圆柱体特征(3)程序创建
18  二次开发利器:JA的使用技巧   
 19 NXOpen结合.net的使用   
 20 完善JA的选择功能
21 JA作为程序调用    
22 Snap最新简易开发程序   
 23 BodyCollector选择容器
24 创建自定义基准CSYS控件使用(1)   
 24 创建自定义基准CSYS控件使用(2)
24 创建自定义基准CSYS控件使用(3)    
24 创建自定义基准CSYS控件使用(4)
24 创建自定义基准CSYS控件使用(5)    
25 遍历整个部件对不同的面设置颜色(1)
25 遍历整个部件对不同的面设置颜色(2)   
 26 NX Open C++获取装配所有组件(1)
26 NX Open C++获取装配所有组件(2)    
26 NX Open C++获取装配所有组件(3)
27 NX Open 获取装配组件加载状态   
 28 TreeList显示装配组件和加载状态(1)
28 TreeList显示装配组件和加载状态(2)    
28 TreeList显示装配组件和加载状态(3)
28 TreeList显示装配组件和加载状态(4)   
 28 TreeList显示装配组件和加载状态(5)
29 TreeList添加快捷菜单功能(1)    
29 TreeList添加快捷菜单功能(2)
29 TreeList添加快捷菜单功能(3)    
30 UFUN获取实体的最小包络尺寸(1)
30 UFUN获取实体的最小包络尺寸(2)    
31 NXOpen C++草图的创建(1)
31 NXOpen C++草图的创建(2)    
31 NXOpen C++草图的创建(3)
31 NXOpen C++草图的创建(4)    
31 NXOpen C++草图的创建(5)
31 NXOpen C++草图的创建(6)    
31 NXOpen C++草图的创建(7)
31 NXOpen C++草图的创建(8)    
32 NXOpen C++创建拉伸草图(1)
32 NXOpen C++创建拉伸草图(2)  
 33 NXOpen C++创建旋转草图(1)
33 NXOpen C++创建旋转草图(2)    
33 NXOpen C++创建旋转草图(3)
33 NXOpen C++创建旋草图(4)    
34 创建基本特征高级UI组合(1)
34 创建基本特征高UI组合(2)    
34 创建基本特征高UI组合(3)
34 创建基本特征高级UI合(4)   
34 创建基本特征高级UI组合(5)
34 创建基本特征高级UI组合(6)    
34 建基本特征高级UI组合(7)
35 Block UI 弹出另一个UI对话框(1)    
35 Block UI 弹出另一个UI对话框(2)


NX机管道布置培训课程(10小时)
1 管道模块简介

1.1 管道模块简介

1.3 NX管道对象及选择

1.2 NX创建管道装配及配置
 2 创建编辑路径

2.1 创建路径

2.3 编辑删除路径

2.2 指派拐角

2.4 变换路

3 审核部件
3 审核部件

4 添加部件到管道系统

4.1 管道标准件库

4.3 切割弯头

4.2 放置部件

4.4 添加自动弯头

5 添加型材

5.1 型材Stock简介

5.3 创建编辑型材Stock

5.5 相连曲线

5.2 型材Stock默认设置

5.4 处理非圆形型材

6 HVAC管道功能

6.1 型材过渡

6.2 拆分管道
7 管理管道布置装配

7.1 管道中的装配约束

7.3 统一路径

7.5 转换型材为装配组件

7.7 设计规则检测

7.2 常用命令

7.4 不连续点处理

7.6 水密连接件

 8 管理管道部件选择

8.1 了解管道规范

8.3 创建管道过滤实例

8.2 过滤管道部件库

8.4 创建管道后置处理

 9 创建管道通路

9.1 关于管道通路

9.3 定义管道通路

9.2 定义管道通路
 10 创建管线布置逻辑图

10.1管道逻辑图简介

10.3 创建逻辑图管路

10.2 创建逻辑图
 11 创建标准库

11.1 管道零件库环境简介

11.3 创建自己的库

11.2 库工作原理
NX二次开发入门经典教程(35小时)
1.1 NX 二次开发API简介    
1.2 NX二次开发API选择及帮助文档
1.3 NX二次开发模式及环境变量    
3.3 ufun创建圆柱中心线实例
3.2 ufun链表的使用    
4.2 ufun其他常用函数讲解
4.3 ufun实例-竖直边倒圆角    
5.1 菜单脚本开发
5.3 Block Sytler简介    
6.1 block sytler模板Code讲解
6.3 创建圆柱体长方体界面切换及功能实现    
7.1 Journal日志录制及DeBug技巧
7.3 NXOpen对象操作    
8.2 NXOpen部件操作


其他重点咨询


工业互联网咨询:

《工业互联网创新发展行动计划(2021-2023年)》解读

工业互联网创新发展行动计划(2021-2023年)

智算中心纳入新基建-风口正当时

工业软件APP:

西门子NX创建机械管道--创建编辑型材Stock基本功能使用

西门子NX管道设计模块-- 添加管道设计部件到布置中

西门子NX管道设计,创建标准件库库工作原理

NX软件机械布管模块--创建自己的管道标准件库-创教程

NX机械布管中统一路径的用法,一个小技巧,节省你很多的时间

数字化转型:

工业4.0新利器-数字化制造应用程序-3D技术文档发布功能

Gartner发布2020年十大战略科技发展趋势

快速了解如何使用Teamcenter(AW)|NX|Polarion|Mentor进行跨领域BOM管理

工业互联网技术栈:

干货来袭!NX二次开发之单机版 VS Teamcenter集成开发环境下文件作方法

40多页PPT看懂最全的焊接符号,真的一点儿都不难

NX二次开发几何关系判断技巧:如何判断两个面是否相切

Threejs 基于webGL的3D开发神器

西门子NX软件二次开发高效开发环境搭建技巧

基于WebGL的三维建模是否可以成为国产CAD的突破口


【声明】内容源于网络
0
0
小A闯跨境
跨境分享舍 | 每日更新实用内容
内容 1
粉丝 13
小A闯跨境 跨境分享舍 | 每日更新实用内容
总阅读1
粉丝13
内容1