跳转至

cadrille: Multi-modal CAD Reconstruction with Reinforcement Learning

会议: ICLR 2026
arXiv: 2505.22914
代码: https://github.com/col14m/cadrille
领域: 3D视觉
关键词: CAD重建, 多模态, 强化学习, VLM, 代码生成

一句话总结

cadrille 是首个同时处理点云、多视角图像和文本输入的多模态 CAD 重建模型,通过 VLM 基础架构 + SFT + RL 微调的三阶段训练范式,在 10 个 CAD 重建基准上达到 SOTA,尤其是 RL 微调将无效率降至接近 0%。

研究背景与动机

  1. 领域现状:CAD 模型在工程制造中至关重要,现有 CAD 重建方法主要从点云、图像或文本单一模态输入恢复 CAD 模型。最新方法 CAD-Recode 将 CAD 模型表示为可执行 Python 代码,取代了传统的特殊 token 表示。
  2. 现有痛点
  3. 单模态方法局限性大——点云需要专业设备,图像和文本方法各有不足
  4. 现有多模态方法(CAD-GPT、CAD-MLLM)质量远落后于单模态 SOTA
  5. SFT 训练的模型在跨域场景(如真实世界扫描数据)泛化能力差,CC3D IoU 仅 60%,无效率近 10%
  6. 核心矛盾:手工标注 CAD 数据集小且多样性有限;程序生成数据量大但与真实数据有 domain gap;简单混合两种数据进行 SFT 反而会降低性能(因 CAD 操作不一致)
  7. 本文要解决什么?
  8. 如何在统一框架中同时处理点云/图像/文本三种模态?
  9. 如何在不需要大规模手工标注数据的前提下提升跨域泛化能力?
  10. 如何将生成的 Python 代码无效率降到最低?
  11. 切入角度:借鉴 LLM 训练范式(预训练→SFT→RLHF),将 RL 微调引入 CAD 重建。RL 阶段不需要 CAD 序列标注,只需 3D mesh 即可计算奖励(IoU),因此可以利用更容易获取的非标注数据集。
  12. 核心idea一句话:用大规模程序生成数据做 SFT 学通用 CAD 能力,用稀缺的手工/真实数据做 RL 微调来弥补 domain gap,从而一个模型在三种模态下全面超越所有单模态 SOTA。

方法详解

整体框架

输入为点云/多视角图像/文本中的任意一种 → VLM(Qwen2-VL-2B)编码 → 生成可执行 Python 代码 → 执行得到参数化 B-Rep 3D 形状。三阶段训练:(1)预训练 VLM(直接用已训练好的)→(2)在程序生成数据上 SFT → (3)在手工数据上 RL 微调。

关键设计

  1. 多模态统一架构:
  2. 做什么:统一处理点云、图像、文本三种模态输入
  3. 核心思路:基于 Qwen2-VL-2B VLM,文本和图像走原生的 embedding/视觉编码器;点云通过 furthest point sampling 采样后,用单层 projection layer 嵌入到 VLM 的表示空间。输出统一为 Python 代码。
  4. 设计动机:VLM 天然支持文本和图像处理且已具备 Python 代码生成能力,只需增加一个点云投射层即可扩展到三模态,这比为每个模态设计专门架构要高效得多。

  5. 分阶段数据使用策略:

  6. 做什么:SFT 用大规模程序生成数据(CAD-Recode ~100万),RL 用小规模手工数据(DeepCAD + Fusion360)
  7. 核心思路:程序生成数据量大、多样性好,但 CAD 操作与手工数据存在不一致(如 DeepCAD 有 symmetric extrusion、extruded cut,而 CAD-Recode 没有)。简单混合两种数据做 SFT 会互相干扰。解决方案是让 SFT 专注于学习通用 CAD 重建能力,RL 微调专注于适配真实域。
  8. 设计动机:RL 微调只需要 3D mesh(不需要 CAD 序列标注)来计算 IoU 奖励,因此可以利用原本无法用于 SFT 的数据集(如 Fusion360 的 train set)。

  9. RL 微调方法(DPO + Dr. CPPO):

  10. 做什么:两种 RL 策略,offline DPO 和 online Dr. CPPO(后者效果显著更好)
  11. 核心思路:
    • DPO:对每个输入 \(q\) 从 SFT 模型采样 \(K=5\) 个 Python 代码,随机选两个按奖励高低构成偏好对 \((\tau_w, \tau_l)\),用标准 DPO loss 训练。每 10 epoch 以当前模型替换参考模型,允许模型逐渐偏离原始 SFT 策略。
    • Dr. CPPO:结合 Dr. GRPO(无需参考模型)和 CPPO(只用最强信号样本)。对每个输入采样 \(G\) 个序列,计算 advantage \(A_g = r_g - \text{mean}(\{r_i\})\),选 \(|A_g|\) 最大的 \(N\) 个样本组成批次,用 PPO 的 clipped objective 更新策略。
  12. 设计动机:DPO 性能受限于最佳采样质量的上界,而 Dr. CPPO 作为 online 方法可以持续生成新样本,打破这个上界。

损失函数 / 训练策略

  • SFT 阶段:标准交叉熵 \(\mathbb{E}_{(q,\tau)\sim\mathcal{D}}[\log \pi_\theta(\tau|q)]\)
  • RL 奖励函数\(R(\tau) = r_{\text{IoU}}(\tau) + r_{\text{invalid}}(\tau)\),其中 IoU 奖励乘以 10 倍放大,无效代码惩罚 -10
  • 硬样本挖掘:只使用 SFT 模型三次采样平均奖励 \(< R_{th}=7.5\) 的样本进行 RL 训练,加速收敛
  • 单模态 RL 提升多模态:仅对图像模态做 RL 微调,点云和文本模态也同步提升(共享参数)

实验关键数据

主实验(DeepCAD 测试集,SFT 阶段)

方法 训练数据 点云 CD↓ 点云 IoU↑ 点云 IR↓ 图像 CD↓ 图像 IoU↑ 图像 IR↓
CAD-SIGNet Dp 0.29 77.3 5.0 - - -
CADCrafter Di - - - 0.26 - 3.6
CAD-Recode Rp 0.18 87.1 3.1 - - -
cadrille Dpit 0.25 79.4 0.4 0.25 78.2 0.5
cadrille Rpi+Dt 0.18 87.1 2.1 0.18 86.1 1.5

RL 微调效果(跨数据集 - 图像模态)

配置 DeepCAD IoU↑ Fusion360 IoU↑ CC3D IoU↑ CC3D IR↓
SFT only (Rpi) 86.1 77.6 56.1 7.7%
SFT + 混合数据 (Rpi+Dpi) 85.6 75.2 53.1 6.0%
+ DPO 86.9 78.5 56.0 3.9%
+ Dr. CPPO 92.2 84.6 65.0 0.1%

关键发现

  • RL 微调效果惊人:Dr. CPPO 将 CC3D 上 IoU 从 56.1% 提升到 65.0%(+9%),IR 从 7.7% 降至 0.1%
  • 单模态 RL 提升多模态:只对图像做 RL 微调,点云重建也同步提升(CC3D point cloud IoU 从 61.8% 到 67.9%)
  • 混合数据 SFT 反而降低性能:简单混合 CAD-Recode 和 DeepCAD 做 SFT,在 Fusion360 和 CC3D 上反而比只用 CAD-Recode 差
  • Online RL >> Offline RL:DPO 主要降低 IR 但不显著提升精度;Dr. CPPO 在所有指标上全面提升
  • 硬样本挖掘有效:只在 SFT 模型表现不好的样本上做 RL,加速收敛

亮点与洞察

  • SFT→RL 分治策略极其巧妙:大规模合成数据做 SFT 学通用能力,少量真实数据做 RL 适配域差异。这避免了传统混合训练中的数据不一致问题,同时 RL 阶段不需要 CAD 序列标注(只需 mesh 计算 IoU),大幅降低数据要求。这个策略可以迁移到任何"合成数据丰富但真实数据稀缺"的场景。
  • 单模态 RL 提升多模态是一个非常有趣的发现——意味着 RL 改善的是模型内部"如何生成好的 CAD 代码"的能力,而不只是"如何从某种模态理解输入"。这暗示 RL 主要作用在解码端/生成端的能力提升。
  • 可编程奖励的天然优势:CAD 重建任务的奖励(IoU、代码有效性)可以精确自动计算,天然适合 RL 训练,这与 LLM 推理任务(如 DeepSeek-R1)中的可验证奖励异曲同工。

局限性 / 可改进方向

  • 目前每次只接受单一模态输入,未探索同一 prompt 中混合多模态以互补(如图像+部分文本描述)
  • RL 微调未直接在点云模态上做实验(目前仅用图像模态做 RL,点云的提升是间接的)
  • 程序生成数据的复杂度有限,难以覆盖真实世界的所有 CAD 操作类型
  • 基础模型仅 2B 参数,更大的 VLM 可能进一步提升效果
  • 仅在 CAD 重建的封闭集合上评估,未探索开放世界的零样本泛化

相关工作与启发

  • vs CAD-Recode: 同样用 Python 代码表示 CAD,但 CAD-Recode 是单模态(点云)+ SFT;cadrille 扩展到三模态并加入 RL 微调,IoU 提升 3-7%
  • vs CAD-MLLM: 同为多模态 CAD 方法,但 CAD-MLLM 用特殊 token 表示 CAD 序列且效果远差于单模态 SOTA;cadrille 用 Python 代码 + RL 全面超越
  • vs CADCrafter: 同为图像到 CAD,CADCrafter 用 DPO 但在同一数据集上做 SFT 和 RL;cadrille 分离 SFT 和 RL 数据源,效果更好

评分

  • 新颖性: ⭐⭐⭐⭐ 多模态统一+RL微调的思路在CAD重建领域是首创,但核心技术(VLM+RL)并非全新
  • 实验充分度: ⭐⭐⭐⭐⭐ 10个基准全面评测,包含真实数据CC3D,消融实验丰富
  • 写作质量: ⭐⭐⭐⭐ 结构清晰,动机阐述有说服力,表格设计信息密度高
  • 价值: ⭐⭐⭐⭐ 实用性强,代码开源,SFT→RL分治策略对其他任务有启示