- 积分
- 19613
- 明经币
- 个
- 注册时间
- 2015-8-18
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 你有种再说一遍 于 2025-8-29 01:02 编辑
# 智能绘图助手原理
我们上一篇知道了BrepNet卷积是用于三维结构,
但是我想实现是AI助手绘图推荐(类似VS的AI输入推荐,灰显对象tab确定),以及二维平立面反造三维.
立面的二维图元想要联想邻近立面存在原理层面的障碍,
但是神经网络在联想这方便是强项,如何可以利用上呢?
CAD图元存在块,动态块,标注,等等这些复合图元,要如何读取呢?
图片生成2d矢量图元反而比3d困难,
主要是做3d的人太多了,而且有高斯泼溅这种神器,理论路线已经非常清晰.
有时候我还在想,
智能绘制节点图是不是应该to3d再切面,实现升维求解.
还倾向于拟合模糊数字后转为策略引擎实现各种约束传播.
还想在生成2d图元之后要修改尺寸,再依据设计说明的描述生成底层结构,
那么二维数据上面还要加料描述,例如动态块可拉伸的部位是什么.
混乱的细节导致我不知道到底用概率模型还是策略引擎.
然后我查找了一下数据集,
它们都是倾向于是Acad的DWG转为SVG进行描述.
那么我发现了,其实我把后面的工作拿到前面想了,我也应该沿着这个技术路径走.
## 参考
1,CLIP可以将语句向量(描述语句)和图片向量进行共享语义空间的方式对齐特征,
从而输入图片,识别图片当中的元素,得到描述文字.
对齐不同长度的多维向量可以自行问问AI,尤其是需要多次压缩向量.
这种模型叫多模态模型,它的原理是通过切分固定大小的小图片进行识别语义,
它和yolo等卷积神经网络差异是没有滑动窗口,
所以它对于小目标和数数存在缺陷.
2,获取嵌入词之后再根据VAE或者扩散模型进行文生图.
BMP理论上支持无限画布,但是潜在空间与降维建模会限制范围.
潜在空间压缩:文生图AI(如扩散模型)并不直接操作像素空间,
而是先在低维潜在空间(latent space)生成图像特征.
例如,Stable Diffusion将512×512图像压缩到64×64的潜在空间,大幅降低计算量.
扩散过程:通过反向扩散(从噪声逐步去噪)
模型在潜在空间中迭代生成结构化的特征分布,这些特征最终通过解码器(如VAE)映射回像素空间.
3,VAE有生成图片或者矢量的功能.
根据im2vec项目,我们拥有一个技术是根据BMP进行卷积得到隐变量z,
它是一个128维的隐向量(可以理解为曲线多项式函数逼近器),
用VAE解码后就是贝塞尔曲线的控制点.
再用DiffVG重新栅格化,得到路径像素再和原图比较,获取差异值,就可以反向传播了.
它的反向传播并不需要任何点集,而是像你的老板一样,
你调大了,会告诉你这里不对,那里不对,你调到对或者累了为止.
大家对数学感兴趣的话可以看看VAE变分自编码器的数学推导,
ELBO到重参数化均有严格推导,依赖经验性结论,
它是为数不多的具备完整数学理论的AI框架.
它有一个VQ-VAE离散化修复输出不够高清的方案.
4,类似项目
CADCrafter是图片转零件.
Im2cad是室内图片转为三维模型(腾讯/天工技术路径类似)
腾讯和天工的技术路径,生成全景图之后引导生成3d图元,
先在全景图估计深度信息,再根据相机轨迹引导生成2d全景视频,再生成3d全景视频.
3dgs(高斯泼溅)重建3d细节,或者根据网络预测3dgs属性来优化细节.
论文:http://arxiv.org/abs/2412.04827v1
主页:https://people.engr.tamu.edu/nimak/Papers/PanoDreamer
代码:https://github.com/avinashpaliwal/PanoDreamer
5,由于CAD是即时性,
想要速度快的语言模型作为辅助,可以用小模型,例如微软开源的Phi.
总结:
那么我们已经存在的技术是,图生文,文生图,图生文生图,图生矢量曲线,矢量曲线生图(靠渲染).
## 原理设计
CAD也是一个无限大画布,因此首先要处理是空间问题.
需要把数据源DWG生成BMP和WMF
(如果想复用工具链,其实转SVG更好,DXF也行,概念总是和实现南辕北辙)
统一了模型尺度,变相归一化了,它们可以像CLIP一样各自生成多维向量.
如此一来,我们其实通过中间格式渲染机制避免了CAD复合图元的读取问题.
这两种格式会自然存在一些特点.
严格映射:
原点一致,空间大小的局限范围一致,可以完美重叠一起.
图元即token:
BMP是一张包含全部图元的图片,WMF则会存在多张,每个图元单独绘制出来重叠显示.
这个手法不就和GPT一样了,拿着BMP进行猜测对应的矢量图元,猜错了给惩罚.
神经网络可以帮助我们从完整的想象,到绘制每个图元之后判别交叉熵.
单个图元还嵌入"CAD命令"语义.
多个图元的名称,数量,无序(词袋-独热编码,还是某种顺序)是天然的语义内容,可以进行嵌入语义到向量数据中.
在CAD当前画面就可以作为快照,加入噪声,然后让扩散模型进行去噪,诱导生成BMP.
例如图像修复技术上面可以不断延拓.
现在我们做了一个多模态模型,
通过语义嵌入技术把共同描述文本,把原始WMF和原始BMP联系起来了.
TXT->BMP->WMF,顺序调换输出也可以,兼容LLM模型,复用了已经被证明成功的路线.
WMF是矢量文件,自然就可以转为DWG了,只是会有个插入CAD需要重新位移到捕捉点和缩放的小问题.
多级训练,BMP毕竟是像素文件,我们可以制作多种大小的数据源,以此加深神经网络的理解.
这样就不需要把全部AI模型串联起来,只需要按照两两建立.
最后需要用强化学习.
像ClaudeCode用代码进行权限门控,防止上下文溢出异常,指令失败记录等等.
在CAD上面显示就是瞬态图元了,
并且记录用户后续的手工优化命令,如水平垂直坐标修正,循环进行调整参数.
## 数据集
ABC数据集:数百万个CAD模型带参数
FloorplanCAD:标注语义的室内图纸,用了SVG作为媒介.
BuildingNet:包含建筑构件语义标注的3D模型,补充细节优化数据.
归向性
由于pt1-pt2和pt2-pt1组成的直线是画面一致,
神经网络不需要处理这个生成差异,应该说这种手性差异本身就是多余的.
因此,我们需要把数据源的图元进行方向的统一管理,再导出为WMF.
例如矩形只会左下角起顺时针,直线射线只会左向右,下往上,圆弧只会顺时针...
如此一来,它就成为了优质语料. |
评分
-
查看全部评分
|