SketchGraphs 数据集深度解析:面向 CAD 设计与机器学习的几何关系建模

核心问题:什么是 SketchGraphs,它解决了哪些研究与应用中的痛点?

SketchGraphs 是一个包含 1500 万个真实 CAD 草图的大规模数据集。每个草图都被表示为几何约束图(geometric constraint graph),其中节点代表几何图元(例如点、线、圆),边代表设计师设定的约束关系(如平行、垂直、相切等)。
该数据集的目标是为 机器学习辅助设计几何程序归纳(program induction) 提供研究基础,同时推动 图神经网络(GNN) 在几何建模与生成式设计领域的应用。

SketchGraphs 示例
图片来源:SketchGraphs 项目


为什么 SketchGraphs 重要?

核心问题:为什么我们需要一个像 SketchGraphs 这样的大规模 CAD 数据集?

  • 🍂
    CAD 设计复杂性:现代 CAD 系统生成的几何关系远比几何形状本身更有价值,约束条件决定了设计是否稳健、可变和可扩展。
  • 🍂
    缺乏公开数据:在此之前,研究人员几乎没有大规模的真实 CAD 草图数据可供训练与实验。
  • 🍂
    AI 辅助设计的基础:机器学习模型需要大规模、真实的标注数据来学习 “设计意图”,而不仅仅是几何形状。

换句话说,SketchGraphs 提供了一个 桥梁:它连接了真实 CAD 工程实践与前沿机器学习研究,使得 AI 能够学习如何“像工程师一样”设计草图。


数据集结构与表示方式

核心问题:SketchGraphs 数据集具体由哪些部分组成?

SketchGraphs 提供了三类主要数据形式,适合不同层次的研究需求:

1. 原始 JSON 数据(43GB,适合高级用户)

  • 🍂
    来源:从 Onshape CAD 系统提取的草图。
  • 🍂
    格式:128 个 .tar 压缩包,使用 zstandard 压缩,总计约 43GB。
  • 🍂
    特点:包含完整的几何实体与唯一标识符,信息最丰富,但处理开销大。
  • 🍂
    使用场景:需要完全重现原始设计数据,或开发自定义解析与建模流程。

示例下载链接:
SketchGraphs Shards


2. 构造序列数据(15GB,推荐 ML 应用)

  • 🍂
    格式:单一文件,二进制格式存储,去除了冗余标识符。
  • 🍂
    特点:更紧凑,专为 机器学习模型训练 而设计。
  • 🍂
    应用:SketchGraphs 提供的基线模型(Graph Neural Network)就是基于该格式训练的。

下载链接:
sg_all.npy


3. 过滤后的构造序列(分割为训练/验证/测试)

  • 🍂
    特点:对草图进行筛选,去除过大或过小的草图,仅保留核心几何约束与实体。
  • 🍂
    优势:适合快速实验,包含 训练、验证和测试划分
  • 🍂
    应用:SketchGraphs 的公开模型训练主要基于这一子集。

下载链接:


数据表示方式

每个草图 = 几何约束图 (Constraint Graph)

  • 🍂
    节点(Nodes):几何图元(点、线、圆等)。
  • 🍂
    边(Edges):几何约束(平行、垂直、相切等)。

草图与约束图示例
图片来源:SketchGraphs 项目

这种图结构不仅能表达几何形状,还能体现 设计意图与逻辑关系,使得模型能够学习设计师的思维方式。


安装与使用

核心问题:如何快速开始使用 SketchGraphs?

安装步骤

# 克隆并安装
pip install -e SketchGraphs

该命令会安装必要的依赖,用于加载与探索数据。

如果要训练模型,还需要手动安装以下依赖:

快速上手

SketchGraphs 提供了一个 Demo Notebook,展示了如何:

  • 🍂
    加载草图数据
  • 🍂
    使用 Onshape API 进行约束求解
  • 🍂
    可视化草图与约束关系

文件路径:demos/sketchgraphs_demo.ipynb


基线模型

核心问题:SketchGraphs 提供了哪些模型参考?

SketchGraphs 官方实现了两类基线模型:

  1. 生成式建模 (Generative Modeling)

    • 🍂
      目标:生成新的 CAD 草图。
    • 🍂
      方法:基于图神经网络,学习几何约束图的分布。
  2. 自动约束 (Autoconstrain)

    • 🍂
      目标:自动为草图添加约束,使其成为稳定设计。
    • 🍂
      方法:将几何实体作为节点,约束作为边,使用 GNN 学习预测缺失约束。

更多文档与模型细节:
SketchGraphs Models


应用场景与案例

核心问题:SketchGraphs 在实际研究与应用中能解决哪些问题?

  1. AI 辅助 CAD 设计

    • 🍂
      场景:设计师绘制初始草图,AI 自动补全缺失约束,使设计更稳健。
  2. 几何生成与逆向设计

    • 🍂
      场景:输入部分草图,模型预测完整几何结构。
  3. 程序归纳与结构化学习

    • 🍂
      场景:通过草图序列数据,学习生成几何操作的“程序逻辑”。

作者反思与见解

在实际使用 SketchGraphs 时,我意识到一个关键点:
CAD 草图的价值不仅在于几何形状,而在于约束所表达的设计逻辑。

传统几何数据集只保存形状,但缺乏“为什么要这么画”的解释。
SketchGraphs 提供了这个解释,使得模型不仅能画“像”,还可能学会“为什么这样画”。

这让我想到一个现实中的问题:当我们在团队里交接 CAD 文件时,约束逻辑的保留往往比图纸本身更重要。如果逻辑缺失,修改设计就会变得脆弱甚至无法继续。
从这个角度看,SketchGraphs 不只是数据集,更是对工程思维的一种抽象与保存。


实用摘要 / 操作清单

  • 🍂

    数据来源:1500 万个 CAD 草图,来源于 Onshape。

  • 🍂

    数据形式

    • 🍂
      原始 JSON(43GB,最完整)
    • 🍂
      构造序列(15GB,ML 友好)
    • 🍂
      过滤构造序列(分训练/验证/测试,推荐使用)
  • 🍂

    安装命令

    pip install -e SketchGraphs
    
  • 🍂

    额外依赖:PyTorch、torch-scatter。

  • 🍂

    模型:提供生成式建模与自动约束的基线模型。

  • 🍂

    应用:AI 辅助 CAD、自动约束、逆向设计、程序归纳。


一页速览(One-page Summary)

  • 🍂

    SketchGraphs 是什么?
    一个包含 1500 万 CAD 草图的大规模数据集,用于研究 CAD 设计中的几何关系与 AI 建模。

  • 🍂

    为什么重要?
    提供真实 CAD 草图数据,推动机器学习在设计自动化中的应用。

  • 🍂

    如何使用?
    安装 SketchGraphs,下载数据(推荐使用过滤后的构造序列),基于 GNN 模型进行实验。

  • 🍂

    能做什么?

    • 🍂
      自动生成 CAD 草图
    • 🍂
      为草图自动添加约束
    • 🍂
      学习几何设计的程序逻辑

常见问答(FAQ)

Q1: SketchGraphs 的数据能否直接在 CAD 软件中使用?
A1: 原始 JSON 数据可还原 CAD 草图,但更推荐使用构造序列数据配合 Python 库。

Q2: 我只想训练模型,应该下载哪个数据集?
A2: 推荐使用“过滤后的构造序列”数据集,已划分训练/验证/测试集。

Q3: 数据集太大了,有轻量级版本吗?
A3: 官方提供的过滤数据集就是轻量化后的版本,适合快速实验。

Q4: 模型训练需要什么依赖?
A4: 必须安装 PyTorch 和 torch-scatter。

Q5: 这个数据集能用来生成完整 CAD 零件吗?
A5: 目前主要用于草图级别的研究,而非完整三维零件建模。

Q6: 是否可以商用?
A6: 数据的版权归 CAD 草图原作者所有,请参考 Onshape 的使用条款。

Q7: SketchGraphs 提供了预训练模型吗?
A7: 官方仅提供基线模型实现,用户需要自行训练。

Q8: 是否支持在线浏览或可视化?
A8: 可以使用官方 Demo Notebook 配合 Onshape API 进行可视化和约束求解。