← 返回 PaperDaily 视觉与图像

复旦字节新方法:CAD代码生成提升8.87%

这篇论文把 CAD 代码生成从“会画个大概”往“能执行、能编辑、能落地”推了一大步。更有意思的是,它不是单模型硬扛,而是让多个异构专家协作,再用强化学习把这些专家的长板拼起来。

复旦字节新方法:CAD代码生成提升8.87%
🐉 龙哥读论文知识星球来了!
公众号每日8篇拆解不够看?星球无上限更AI领域论文、资讯、招聘、招博、开源代码,一站式干货,每日2分钟刷完即赚!
👇扫码加入「龙哥读论文」知识星球,前沿干货、实用资源一站式拿捏~ xingqiu_header

龙哥导读:
这篇论文把 CAD 代码生成从“会画个大概”往“能执行、能编辑、能落地”推了一大步。更有意思的是,它不是单模型硬扛,而是让多个异构专家协作,再用强化学习把这些专家的长板拼起来。


原论文信息如下:
论文标题:
CME-CAD: Heterogeneous Collaborative Multi-Expert Reinforcement Learning for CAD Code Generation
发表日期:
2025年12月
发表单位:
复旦大学,字节跳动
原文链接:
https://arxiv.org/pdf/2512.23333.pdf
开源数据集链接:
没有
如果把 CAD 代码生成这件事说得直白一点,它的目标不是“画个差不多”,而是让模型真的能写出一段可执行、可编辑、可复用的工程代码。这个要求一上来就很狠:不仅要懂图,还要懂尺寸、约束、坐标系和建模顺序。很多方法看起来会“生成三维物体”,但一落到工业设计里就露馅了——能看,不一定能改;像,不一定能用。
封面
图1:CME-CAD 的整体流程图。方法不是单纯让一个模型硬扛,而是把多个异构专家拉到同一张训练桌上,先分工,再协作,最后让它们互相补短板。

从手绘草图到工业级CAD模型,自动化之路为何步履维艰?

难点其实不在“生成”两个字,而在“生成得像工程师写的”。工业级 CAD 不是随便堆一个三维外壳就行,零件尺寸要对,孔位要准,草图约束要完整,建模步骤还得能在软件里一条条执行。换句话说,模型不仅要会画,还得会“做题”,而且答案必须能在 CAD 环境里跑通。
论文先点出了两个老问题。第一,很多方法从文本或自然图片出发,虽然看起来很“智能”,但工业场景里最常见的输入并不是一段描述,而是带尺寸标注的二维工程图。第二,现有强化学习方法大多是基于可验证奖励的单路优化,模型更像在自己熟悉的路径里反复抠细节,而不是主动去探索更好的推理路线。说得不客气一点,就是“会做的题越做越熟,不会做的题还是不会”。
更麻烦的是,CAD 代码生成对数值误差极其敏感。普通视觉任务里,框偏一点可能只是“差不多”;但在 CAD 里,坐标系偏一点、顺序错一步、参数少一个小数位,最后都可能直接变成“代码能跑,模型不对”。这也是为什么这类任务看着像生成,实际上更接近几何推理 + 程序合成的混合题。

另辟蹊径:从2D工程图纸出发,更贴近工业真实流程

这篇论文最实在的地方,是没有继续跟“文本描述→CAD”的老路线死磕,而是直接把输入改成了带精确尺寸标注的二维工程图。这一步很像工程现场的真实做法:设计师先给图纸,系统再按图做三维模型。相比随口一句“帮我画个带孔的支架”,工程图纸的信息密度高得多,尺寸、视图、约束关系都摆在那儿,模型少猜一点,出错概率就能少一截。
这套思路还有个现实好处:二维工程图在工业里更常见,也更容易标准化采集。文本标注往往要人工写,成本高、风格不统一;而工程图本身就是设计流程的一部分,天然携带几何和尺寸信息。论文的判断很明确:与其让模型从一句模糊描述里猜,不如让它从更接近真实工况的图纸里做题。
图1:CAD代码生成的整体工作流
图2:CAD 代码生成的工作流。输入是带尺寸的二维工程图,模型先生成推理过程,再输出可执行的 CADQuery 代码,最后通过执行结果反推几何是否正确。
这里还要顺手解释一下两个关键词。CADQuery 是一种基于 Python 的参数化 CAD 建模库,能用代码直接控制拉伸、切孔、倒角、布尔运算等操作;IoU 是 Intersection-over-Union,中文一般叫交并比,用来衡量预测三维形状和真实形状重叠得有多像。前者看能不能执行,后者看做得准不准,两个指标一前一后,刚好把“能跑”和“跑得对”都盯住了。

核心创新:CME-CAD,让多个AI专家“取长补短”协同学习

CME-CAD 的全称是 Heterogeneous Collaborative Multi-Expert Reinforcement Learning,中文可以理解为“异构协同多专家强化学习”。名字很长,但逻辑不复杂:既然一个模型在 CAD 代码生成里容易卡壳,那就别让它独自硬撑,而是让多个能力风格不同的专家一起上场,再把它们的长处揉进同一个训练框架里。
这套方法的关键不是“简单投票”,而是“互相学习”。论文使用了三个异构的视觉语言模型作为专家:不同模型擅长的推理路径、表达习惯和错误模式都不一样。于是系统先让它们各自生成思维链,再比较谁在当前样本上表现更好,之后把好专家的思路和弱专家的策略拉近。这个设计的妙处在于,它不是把答案平均一下,而是把更强的推理方式当成学习信号,去修正较弱专家的盲区。
图2:CME-CAD整体架构图
图3:CME-CAD 的整体架构图。不同专家共享输入,但各自使用独特的系统提示词,形成不同推理风格;训练时再通过协同学习和强化学习把这些风格中的有效部分保留下来。
论文里还有一个很实用的工程判断:多专家并不意味着推理成本一定翻 N 倍。这里借助 vLLM 的并行批量采样和 paged attention,训练时间只比单专家基线多 20% 到 30%,没有变成“专家一多,显存先爆”的灾难现场。更重要的是,推理阶段还能直接选表现最好的专家,避免传统多专家架构那种“全员上阵、最后再挑一个”的浪费。

MEFT与MERL:分阶段训练,先学会思考,再学会协作

整套训练被拆成两步。第一步叫 MEFT,即 Multi-Expert Fine-Tuning,中文是“多专家微调”;第二步叫 MERL,即 Multi-Expert Reinforcement Learning,中文是“多专家强化学习”。这个顺序很合理:先让模型学会不同专家的思考方式,再让这些专家在奖励信号下真正协作起来。要是一上来就强化学习,模型连题都没看懂,奖励再漂亮也只是空中楼阁。
MEFT 这一步做的事情,说白了就是先“模仿高手”。论文用多个异构专家生成不同风格的 Chain-of-Thought(CoT,链式思维)和最终答案,再把这些样本组织成专家特定的数据,让模型先学会什么样的推理路径更像工程师的做法。这里有个很关键的细节:论文还采用了“反向任务”思路,也就是先给模型工程图和对应代码,再反过来引导它推理“如何从图纸得到这段代码”。这种做法的好处是,推理路径更容易被约束在合理范围内,减少胡编乱造式思考。
MERL 则更像“边做边改”。它的奖励函数不是只看最终答案,而是同时盯住四件事:输出格式是否规范、代码是否可执行、生成几何是否接近真实模型、工作平面和坐标系是否一致。这里的格式奖励和可执行奖励被当成门槛,只要这两项不过关,后面的几何奖励再高也没用。这个 gating 设计很像工程审核:先看格式和语法,再谈几何质量,不然一段代码连跑都跑不起来,谈精度纯属自我感动。
图3:CADExpert样例展示
图4:CADExpert 的样例展示。可以看到数据里不只是简单几何体,还包含倒角、钻孔、差集等更接近工业设计的复杂操作。
MERL 里最有意思的一招,是专家间协同学习。系统会统计每个专家在当前样本上的平均奖励,挑出最强专家和最弱专家,让弱专家向强专家的高质量输出靠拢。这样做的逻辑不是“弱的全删掉”,而是“弱的别原地踏步”。再配合 hard negative sample buffering mechanism(困难样本缓冲机制),那些所有专家都没做对的难题不会被直接扔进垃圾桶,而是被单独收进缓冲区,后续再做监督微调。这个设计很接地气:难题不消失,只是被单独拎出来反复拷打,直到模型长记性。
如果把这套方法翻译成人话,那就是:先让多个老师分别讲题,再让学生从最靠谱的老师那里学解题套路,最后把那些全班都不会的题目拎出来单独补课。相比只靠单一路径的强化学习,这种多专家协同更容易打破“奖励稀疏”和“路径单一”的死循环。
表1:CADExpert上的主结果对比
图5:CADExpert 上的主结果对比。上半部分是未针对任务微调的通用视觉语言模型,下半部分是经过微调的方法。可以明显看到,这个任务不是“通用大模型随便来一下”就能搞定的。

CADExpert数据集:为工业级CAD代码生成定制的高质量基准

如果没有高质量数据,再聪明的训练框架也容易变成“拿着菜谱做空气”。CADExpert 的价值就在于,它不是拼凑出来的玩具集,而是专门为可执行、可编辑的 CAD 代码生成设计的工业级基准。数据集一共 17,299 个样本,每个样本都包含带精确尺寸标注的三视图、专家生成的推理过程、可执行的 CADQuery 代码,以及渲染出的三维模型。
数据构建过程也挺“工程化”。先随机生成带约束的 CADQuery 代码,在标准基准平面上组合矩形、圆、多边形、折线等轨迹,再加入拉伸、钻孔、倒角、差集等复杂操作。接着做两轮过滤:第一轮用 Python 解释器检查语法和可执行性,第二轮由 10 位专家人工抽查几何是否符合设计意图。最后再把生成的 STEP 文件转成二维投影,并通过 FreeCAD API 和 ezdxf 等工具补上尺寸标注,形成最终的图纸输入。
这个数据集最值得肯定的一点,是它刻意把任务往真实工业场景里拉。很多旧数据集的问题不是量太少,而是太“干净”:形状简单、操作单一、尺寸信息缺失,导致模型训练出来以后,到了真实设计里就开始露怯。CADExpert 则故意加入更复杂的操作和更严格的标注,让模型不得不学会处理那些工程里真正会遇到的麻烦事。

实验效果斐然:IoU提升8.87%,代码可执行率达98.25%

先看整体结果。论文在 CADExpert 上把一众通用视觉语言模型都拉开了差距,最终把 IoU 做到 80.71%,比当前最强基线提升了 8.87 个百分点,代码可执行率也达到了 98.25%。这不是那种“提升一点点但海报做得很热闹”的结果,而是几何精度和工程可用性一起往上抬了一截。
表1:主实验结果
图6:主实验结果表。可以看到,通用模型在这个任务上普遍吃力,而加入 CAD 领域训练后的方法则明显更稳,说明任务本身确实需要专门设计的训练范式。
从实验逻辑上看,这个提升并不意外。因为任务里最难的不是单纯识别图像,而是把二维图纸里的尺寸、视图和几何关系转成一段严格可执行的程序。多专家机制先解决“怎么想”的问题,强化学习再解决“怎么对”的问题,困难样本缓冲则补上“怎么记住不会的题”的问题。三者叠在一起,确实比单纯 SFT 或单专家 GRPO 更像完整的工程训练闭环。
表2:多专家学习与单专家学习对比
图7:多专家学习与单专家学习的对比。单专家即使做了 SFT + GRPO,也还是容易碰到能力上限;而多专家协同后,各个专家的表现都被带着往上走,说明“互相抄作业”在这里是正经科研术语,不是贬义词。
消融实验也挺能说明问题。去掉专家内部优势估计后,模型的整体表现会掉一截,说明“在同一位专家生成的多个候选里选出更好的那个”确实有用;去掉困难样本缓冲后,性能也会受影响,说明这个任务的难点并不是平均水平不够,而是尾部难例太多;而把多专家协同学习拿掉后,整体就更像普通强化学习了,少了那种跨专家互补的味道。换句话说,论文不是靠某一个花哨模块撑场面,而是几个模块一起把链条接完整了。
表3:消融实验
图8:消融实验结果。可以看出,三个核心模块缺一不可,尤其是困难样本缓冲机制,对高难度数据的补强作用相当明显。
如果只看分数,这篇论文已经够硬;如果再看工程意义,它更像是在告诉行业:CAD 代码生成不能只追求“看起来对”,还得把“能执行、能编辑、能落地”一起抓住。对普通从业者来说,这意味着未来的 CAD 自动化不一定是让模型直接替代工程师,而更可能是先从图纸理解、草图补全、代码草拟这些环节切入,逐步降低人工修改成本。

龙迷三问

下面是龙哥对于大家可能的一些问题的解答:

这篇论文到底解决了什么问题?它解决的是“如何从带尺寸的二维工程图,生成可执行、可编辑、精度更高的 CADQuery 代码”这个工业痛点,而不是泛泛地生成一个看起来像三维物体的结果。

MEFT 和 MERL 分别在做什么?MEFT 负责先让模型学习多个专家的推理风格和答案格式,MERL 则负责用奖励信号继续优化,让不同专家之间互相学习、互相补短板,同时把难题样本反复拿出来补课。

为什么还要专门做 CADExpert 数据集?因为现有数据集要么太简单,要么缺少精确尺寸和复杂工业操作,模型学不到真实场景里最麻烦的东西。CADExpert 把这些难点补齐了,才让训练和评测更像工业现场。

如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

龙哥点评

论文创新性分数:★★★★☆

把多专家协同学习引入 CAD 代码生成,而且不是简单集成,而是做成了可训练、可奖励、可缓冲的完整闭环,思路比较新。

实验合理度:★★★★☆

对比了通用 VLM、单专家训练和多专家训练,消融也覆盖了核心模块,结论基本站得住,属于比较扎实的实验路线。

学术研究价值:★★★★★

它把 CAD 代码生成从“看图说话”推进到“工程可执行”,对程序合成、视觉推理和工业设计自动化都有启发。

稳定性:★★★★☆

有执行验证、几何奖励和困难样本回流,稳定性比纯生成方法强,但对复杂工业场景的泛化还需要更多验证。

适应性以及泛化能力:★★★☆☆

方法主要面向二维工程图到 CADQuery 代码,场景明确但边界也清楚;换到别的 CAD 表达体系,仍要重新适配。

硬件需求及成本:★★★☆☆

训练用了 8 张 H100,专家协同会增加一定成本;好在 vLLM 把额外开销控制住了,不算离谱,但也绝不是轻量方案。

复现难度:★★★☆☆

数据集和训练流程都比较复杂,且涉及多专家、奖励设计和 CAD 执行环境,复现门槛不低。

产品化成熟度:★★★☆☆

在工业图纸到代码草拟、辅助建模等场景有潜力,但距离直接替代工程师还差一截,尤其是对超复杂零件和严格容错场景。

可能的问题:方法依赖高质量工程图和执行环境,跨 CAD 工具链迁移成本不低;多专家训练虽然有效,但系统复杂度也跟着上来了。


主要参考文献

[1] Niu, K., Yu, H., Chen, Z., et al. CME-CAD: Heterogeneous Collaborative Multi-Expert Reinforcement Learning for CAD Code Generation. arXiv:2512.23333, 2025.
[2] CADQuery: A Python library for building parametric 3D CAD models.
[3] FreeCAD API, ezdxf, vLLM 等工程与推理工具,见原论文方法与数据构建部分。

*本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       

end
欢迎加入龙哥读论文粉丝群,扫描下方二维码或者添加龙哥助手微信号加群:kangjinlonghelper。一定要备注:研究方向+地点+学校/公司+昵称(如 图像处理+上海+清华+龙哥),根据格式备注,可更快被通过且邀请进群。
CAD 代码生成这类“又要准、又要能跑、还得能改”的活,最适合在群里掰开揉碎聊。想看更多强化学习、工业设计、VLM落地的拆解,直接扫码上车。
wechat_helperdianzan
转发文章 微博 X LinkedIn Facebook
龙哥读论文 · PaperDaily

本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。