SketchGraphs 数据集深度解析:面向 CAD 设计与机器学习的几何关系建模
核心问题:什么是 SketchGraphs,它解决了哪些研究与应用中的痛点?
SketchGraphs 是一个包含 1500 万个真实 CAD 草图的大规模数据集。每个草图都被表示为几何约束图(geometric constraint graph),其中节点代表几何图元(例如点、线、圆),边代表设计师设定的约束关系(如平行、垂直、相切等)。
该数据集的目标是为 机器学习辅助设计 和 几何程序归纳(program induction) 提供研究基础,同时推动 图神经网络(GNN) 在几何建模与生成式设计领域的应用。
图片来源: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
该命令会安装必要的依赖,用于加载与探索数据。
如果要训练模型,还需要手动安装以下依赖:
- 🍂
PyTorch - 🍂
torch-scatter
快速上手
SketchGraphs 提供了一个 Demo Notebook,展示了如何:
- 🍂
加载草图数据 - 🍂
使用 Onshape API 进行约束求解 - 🍂
可视化草图与约束关系
文件路径:demos/sketchgraphs_demo.ipynb
基线模型
核心问题:SketchGraphs 提供了哪些模型参考?
SketchGraphs 官方实现了两类基线模型:
-
生成式建模 (Generative Modeling)
- 🍂
目标:生成新的 CAD 草图。 - 🍂
方法:基于图神经网络,学习几何约束图的分布。
- 🍂
-
自动约束 (Autoconstrain)
- 🍂
目标:自动为草图添加约束,使其成为稳定设计。 - 🍂
方法:将几何实体作为节点,约束作为边,使用 GNN 学习预测缺失约束。
- 🍂
更多文档与模型细节:
SketchGraphs Models
应用场景与案例
核心问题:SketchGraphs 在实际研究与应用中能解决哪些问题?
-
AI 辅助 CAD 设计
- 🍂
场景:设计师绘制初始草图,AI 自动补全缺失约束,使设计更稳健。
- 🍂
-
几何生成与逆向设计
- 🍂
场景:输入部分草图,模型预测完整几何结构。
- 🍂
-
程序归纳与结构化学习
- 🍂
场景:通过草图序列数据,学习生成几何操作的“程序逻辑”。
- 🍂
作者反思与见解
在实际使用 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 进行可视化和约束求解。