
你有没有想过,为什么现在AI能画出以假乱真的人脸,能生成完整的3D游戏角色,却很难画出一个能被工厂机床直接读取加工的螺丝钉图纸?
这不是危言耸听。在计算机辅助设计(CAD)领域,有一种叫做B-Rep的图纸格式,它是所有工业设计软件的标准语言。但直到最近,让AI自动生成合格的B-Rep模型,依然是一件成功率感人的事情。某个业内公认还不错的方法,生成一百个零件模型,最后能被CAD内核认定为"合格实体"的,只有43个左右。剩下的五十多个,不是缺了个面,就是边和边接错了地方,或者干脆薄得像张纸,连体积都算不出来。
这篇来自浙江大学、杭州电子科技大学和广州大学联合团队的论文,标题叫《HiFi-BRep》,讲的就是他们怎么把这个成功率从四成多拉到七成以上的故事。
先搞清楚,B-Rep到底难在哪
边界表示法:B-Rep是CAD软件里用来描述三维形状的标准格式,它不是用像素或者体素堆出一个形状,而是用数学上精确的曲面、曲线和顶点,加上它们之间的连接关系,来定义一个立体模型。
打个比方,如果你要向别人描述一个纸箱子,你可以说"这是六个面拼起来的,每条边被两个面共享,每个角有三条边交汇",这就是B-Rep的思路:用几何加拓扑(也就是这些几何元素怎么连接)来精确定义形状。这种表示法的好处是极其精确,缺点是规则极其严格:每条边必须正好连接两个顶点,每条边必须正好被两个面共享,少一个多一个都不行,这就是所谓的"流形约束"。
流形约束:指的是一个三维实体必须满足的几何拓扑规则,比如每条棱边恰好被两个面共享、模型内部没有缝隙或自相交,只有满足这些规则,模型才能被称为"合法的实体"而不是一堆漂浮的碎片。
这就是难点所在。生成一张人脸图片,哪怕某个像素颜色算错了,人眼也未必能看出来,容错空间很大。但生成B-Rep模型,只要有一条边的归属搞错了,整个模型在CAD软件里可能直接报错,连打开都打不开,更别说拿去3D打印或者数控加工了。论文里管这个叫"错误会像多米诺骨牌一样连锁崩塌"。
现有方法为什么老是翻车
论文把已有方法的毛病归纳成两类,脆弱的表示和脆弱的生成过程。
先说表示层面的问题。早期方法比如SolidGen和BRepGen,处理一个麻烦事:不同的零件,面和边的数量是不一样的,有的零件六个面,有的二十几个面,神经网络喜欢处理固定长度的数据,那怎么办?最简单粗暴的办法就是"填充",把短的序列用没有意义的占位符补齐到统一长度。
填充噪声:为了让不同长度的数据序列变成统一长度,用无意义的占位符号填补空缺位置,但这些占位符本身不携带真实信息,混入网络训练后会带来干扰。
这就好比你要给一个班级拍集体照,有的班30人有的班45人,为了排版整齐,你往30人的班里硬塞了15个穿着灰色衣服的假人凑数。照相机(也就是神经网络)分不清哪些是真学生哪些是灰衣假人,训练久了它可能会把"灰色衣服的存在"也当成某种规律去学习,这就是表示污染的来源。如果不填充,直接用变长序列训练,网络结构会变得极其复杂,工程上几乎没法扩展,这是过去方法不得不妥协的原因。
后来的工作,比如HoLa和DTGBrepGen,意识到填充噪声的问题,转而引入拓扑先验,也就是让边和面之间的连接关系参与到编码过程里。这个方向是对的,但操作起来出了新问题。
HoLa这个方法为了保证生成的边一定是"流形合法"的,用了一个很巧妙的办法:只在两个面之间做一次简单的相交测试,直接算出一条共享边。这个设计非常干净利落,但代价是它假设两个面之间只能有一条共享边。可现实世界的零件常常不是这样。论文里专门做了统计,在ABC这个工业数据集里,把周期性的接缝拆开之后,有63.37%的模型里存在某两个面共享不止一条边的情况。也就是说,超过六成的真实零件,HoLa的这套假设从根子上就不成立。
再看DTGBrepGen,它试图解决拓扑合法性问题,但走的是多阶段级联的路子:先生成一部分,再生成另一部分,一步步往下传。这就产生了论文里说的"生成脆弱性":前面阶段生成错了,后面阶段是没法回头修正的,误差会一直往下传。而且很多方法把"合法性检查"这件事放在生成完成之后,用后处理的方式打补丁,而不是在训练阶段就让网络明白什么是合法的什么是非法的。这就造成了训练和推理之间的"错位",网络训练的时候没被教过要遵守规则,到了实际生成的时候却指望它自觉守规矩,这本身就是矛盾的。
HiFi-BRep怎么解决这两个问题
论文提出的方案分成两部分,一个是重新设计输入表示和编码器,解决表示脆弱性;另一个是重新设计解码器,解决生成脆弱性。
先看表示这部分。研究者选择用贝塞尔曲线和贝塞尔曲面来描述每一条边和每一个面。
贝塞尔曲线/曲面:一种用少量控制点就能定义出光滑曲线或曲面的数学表示方法,广泛用于图形学和工业设计中,比如你在PPT里拖动锚点画出的圆滑曲线,背后往往就是贝塞尔曲线的原理。
这个选择聪明在哪里?因为一条贝塞尔曲线天然带着两个端点,而这两个端点直接就是这条边连接的两个顶点。也就是说,只要你生成了一条合法的贝塞尔曲线,"每条边连接两个不同的顶点"这条规则就自动满足了,根本不需要额外去检查。这是一种把约束"焊死"在表示里的思路,而不是生成完之后再去检查修补。
除了几何表示,论文还引入了一个显式的边面邻接矩阵,直接记录哪条边属于哪个面。这个矩阵既用来指导编码过程,也直接作为解码目标。
有了表示,接下来是编码器怎么把这些信息压缩成一个干净的潜在空间。这里的核心设计叫拓扑引导注意力。
拓扑引导注意力:在神经网络处理边和面的特征时,强制规定只有拓扑上真正相邻的边和面之间才能互相"看见"对方、交换信息,不相邻的一律屏蔽,通过在注意力计算里加一个硬性掩码来实现。
为什么要这么做?因为如果任由所有的边和所有的面互相交换信息,网络确实能学到更丰富的全局关系,但同时也会把大量不相关的信息搅拌进来。论文举了个例子,如果为了分析任务去传播多跳邻居的信息,这对理解整体结构是有好处的,但对于生成任务来说,你真正需要预测的只是"这条边到底挨着哪两个面"这种最直接的一阶关系,多余的信息反而成了噪声。
这就好比你在开一个部门会议,讨论的是市场部和产品部之间的一个具体对接问题。这时候如果把整个公司所有部门的人都拉进会议群里发言,理论上信息更全,但实际上大部分发言都是噪声,真正相关的两个部门的意见反而被淹没了。如果不加这层限制,直接让所有信息自由流动,网络在预测邻接关系时就会被无关信息干扰,准确率下降。论文的消融实验证明了这一点:去掉编码器里的拓扑掩码后,邻接矩阵的准确率从97.5%掉到92.7%,最终生成的有效率从95.2%跌到89.5%。
除了拓扑掩码,编码器还用了另一个技巧,叫可学习查询,用来替代填充。
可学习查询:一组数量固定、参数可训练的向量,它们像若干个"提问者"一样主动去关注输入序列里的所有真实token,把变长的信息聚合压缩成固定长度的输出,而不需要用无意义的占位符填满序列长度。
这就好比之前那个拍集体照的比喻,如果你不想用假人凑数,另一个办法是雇几个专业摄影师,无论班级是30人还是45人,他们都负责走进班级把每个真实学生的信息采集下来,最后统一整理成一份标准格式的报告,报告的篇幅是固定的,但里面装的全是真实信息,没有一个字是编造出来凑数的。这样处理之后,潜在空间里就不会再有填充噪声的污染。
接下来是解码器部分,这也是论文里"生成脆弱性"这个问题的正面回应。
单阶段解码:不再采用先生成一部分内容、再依据这部分内容生成下一部分的接力方式,而是让模型在同一个计算过程里,并行地把面的几何形状、边的几何形状、以及边和面之间的连接关系一次性全部预测出来,让几何信息和拓扑信息互相参考、共同决定最终结果。
这个设计背后的逻辑是这样的:几何和拓扑其实是互相影响的,一个面的形状会限制它能连接哪些边,反过来边的连接关系也会限制面应该长成什么样。如果非要先做一个再做另一个,那就相当于先斩后奏,前面做错的决定后面没有办法反悔。论文做了一个对照实验,专门验证这个假设:把单阶段解码换成"先解码几何、再用一个独立模块推断拓扑"的两阶段流程,结果邻接准确率从97.5%骤降到73.2%,最终有效率从95.2%掉到69.3%,这是所有消融实验里降幅最大的一项。
这组数字说明什么?说明几何和拓扑分开做不仅仅是效率问题,而是从根本上限制了模型能达到的上限。就像你不能指望一个建筑师先把楼盖好,再让另一个人事后去调整承重结构和门窗位置的对应关系,结构问题必须在设计阶段就一起考虑。
解码器里还有一个巧妙的设计,叫行级双峰目标。
行级双峰目标:在预测每条边到底连接哪两个面时,模型对每一条边输出一整行的匹配分数,这一行的分数经过归一化处理后,被要求把概率质量集中分配在真正相邻的那两个面上,形成两个"峰值",其余面的分数则被压低。
这个设计直接把"每条边恰好连接两个面"这条硬性规则,变成了一个可以用梯度下降来优化的训练目标。之前如果用普通的独立二分类方式去预测每一对边和面是否相邻,虽然推理时依然可以人为规定"只选分数最高的两个",但训练过程中并没有要求这些分数之间互相竞争、此消彬长,结果就是分数校准得不够准,容易把不该选的面也误判进前两名。论文的消融实验显示,把双峰目标换成普通的独立交叉熵损失后,邻接准确率从97.5%降到90.4%,有效率从95.2%降到87.2%。
这就好比一场选拔考试,如果满分是100分,只是简单地告诉每个人"你及格了或者你没及格",那么多个人可能都恰好卡在及格线附近,很难精确排出前两名。但如果换一种方式,让所有人的得分必须加起来等于一个固定总数,且规则明确写着"只有前两名能拿到奖学金",那么打分的人天然会更谨慎地去拉开第一名、第二名和第三名之间的差距,排序结果自然更可靠。
论文里还提到,解码器一开始先预测这个零件到底有几个面几条边,用这个数字先划定一个"有效范围",这个范围之外的位置在后续所有计算里都会被强制屏蔽掉,相当于先确定好画布的大小,再往里面填内容,避免了序列长度本身的不确定性给后续预测带来混乱。
实验数据说了什么
论文在两个标准数据集上做了测试,一个叫DeepCAD,一个叫ABC,都是B-Rep生成领域公认的评测基准。
在DeepCAD数据集上,HiFi-BRep达到了72.20%的有效率,是所有对比方法里最高的,同时MMD-CD(一种衡量生成分布和真实分布之间几何距离的指标)也是最低的1.05,说明生成的形状不仅合法率高,长得也更像真实数据。作为对比,此前表现较强的DTGBrepGen有效率是43.20%,BRepGen只有20.76%,BrepDiff是63.69%。
在ABC数据集上,HiFi-BRep的有效率是32.66%,同样是最高的,虽然DTGBrepGen在分布匹配指标(覆盖率和几何距离)上表现更好,但它的有效率只有24.88%。
论文里特别强调了一个叫"可编译率与有效率之间的差距"的指标。可编译率指的是生成的文件能不能被CAD软件正常打开导出,有效率则要求打开之后还得是一个真正水密无缝、拓扑合法的实体。这两者之间的差距越小,说明"看起来能用"和"真正能用"越接近。DTGBrepGen在DeepCAD上这个差距是49.28个百分点,也就是说接近一半能打开的文件其实内部结构是有问题的,而HiFi-BRep的差距只有18.18个百分点。
推理速度上,HiFi-BRep每生成一个零件平均耗时3.83秒,比BRepGen的8.09秒快2.1倍,比DTGBrepGen的23.55秒快6.2倍,比BrepDiff的26.28秒快6.9倍。之所以快,是因为它不需要像其他方法那样,生成完之后再花大量时间去做面片拟合或者网格相交这类耗时的后处理,单阶段设计本身就省掉了很多来回折腾的步骤。
论文还做了一个很实在的可靠性验证,按照零件的面数量分组统计重建有效率。结果显示,哪怕是训练数据里样本数量很稀少的高面数零件(比如二十几个面的复杂零件),有效率依然能保持在61.5%以上,没有出现"常见情况表现好、罕见情况直接崩溃"的现象,这说明模型学到的是几何和拓扑之间真正的内在规律,而不是死记硬背训练集里出现次数最多的那几种形状。
它还能听懂你的要求
除了随机生成之外,这套系统还支持根据条件来生成模型,比如给一个类别标签,让它生成对应类别的家具;给一张点云(三维空间里采样出来的一堆点),让它据此还原出完整的实体模型;甚至给一张单视角的图片,或者一张手绘的线框草图,它也能生成对应的B-Rep模型。这背后用的是扩散模型的技术路线。
潜在扩散模型:一种先把复杂数据压缩到一个低维的"潜在空间",再在这个潜在空间里训练一个逐步去噪的生成过程的技术框架,先前爆红的很多图片生成工具背后都用的是这套思路,这篇论文把它挪用到了三维CAD模型的生成上。
条件信息通过一种叫自适应层归一化的技术注入到扩散过程中,图片用DINOv2这个预训练视觉模型编码,点云用PointNet++编码。论文的补充材料里展示了大量条件生成的案例,包括从部分残缺的点云里补全整个零件形状,从多视角图片里恢复更精细的细节,这些结果都表明这套统一的潜在表示确实具备相当强的泛化能力。
论文还专门做了一个查重实验,随机抽取500个生成的模型,用几何距离和视觉相似度分别去训练集里检索最相似的样本,结果显示检索出来的训练样本虽然整体轮廓接近,但在具体的孔洞排布、接缝细节上都和生成结果存在明显差异,说明模型不是简单地在背诵训练数据,而是真的学到了可以自由组合、举一反三的能力。
这项工作还有哪些没解决的问题
论文自己也很坦诚地列出了局限。目前这套系统只针对封闭、水密的实体模型,对于开放边界的零件、多零件组装成的复杂装配体、或者非流形结构,暂时还处理不了。另外,即便设计了这么多约束,偶尔依然会出现修剪失败导致某个面丢失、顶点合并后产生非流形连接、控制点条件不佳导致出现退化面片这类问题,这些残余错误恰恰解释了为什么可编译率和有效率之间依然存在那18个百分点的差距,说明真正精确的曲面裁剪和相交计算,最终还是要交给底层的CAD几何内核去兜底。
写在后面
读完这篇论文,最让我印象深刻的其实是那个"两个面共享多条边"的统计数字。63.37%的真实工业零件里存在这种情况,这个比例远超我的直觉。我原本以为这是一种边缘情况,没想到它才是常态。这也提醒我一件事:很多看起来优雅的技术简化,背后可能悄悄丢掉了大部分真实场景。HoLa那个"一次相交测试对应一条边"的设计确实很漂亮,但漂亮的代价是它其实只覆盖了不到四成的真实情况,这种取舍在论文里往往一笔带过,但对实际落地的影响是巨大的。
另一个值得琢磨的地方是,这篇论文反复在强调一件事:约束不应该是训练完之后打的补丁,而应该从表示设计的那一刻起就焊死在结构里。贝塞尔曲线自带两个端点这个特性,看起来是个很小的技术选择,但它直接省掉了后续单独验证顶点合法性的一整套逻辑。这种"用数据结构本身来消灭一类错误"的思路,其实在很多工程领域都通用,只是往往被忽视。
Q&A
Q1:HiFi-BRep是什么?
A:HiFi-BRep是浙江大学、杭州电子科技大学和广州大学团队提出的一种B-Rep(边界表示法)三维模型生成框架,通过重新设计编码器和解码器结构,同时解决了以往方法在表示噪声和生成误差累积上的两大问题,在结构合法率和几何精度上都超过了此前的方法。
Q2:HiFi-BRep相比其他方法有哪些明显优势?
A:在DeepCAD数据集上有效率达到72.20%,明显高于DTGBrepGen的43.20%和BRepGen的20.76%;生成速度也更快,每个零件平均耗时3.83秒,比其他方法快2到7倍;同时支持点云、图片、类别标签等多种条件生成。
Q3:这套方法能生成任意复杂的工业零件吗?
A:目前主要针对封闭水密的单一实体模型,对开放边界零件、多零件装配体以及非流形结构还无法处理,同时在极少数情况下仍会出现修剪失败或非流形连接等残余错误,这也是未来需要继续改进的方向。
好文章,需要你的鼓励
这篇论文提出一种插件式2D动作接口,让已训练好的3D运动语言模型无需修改或微调即可直接理解2D姿态输入。实验证明2D输入效果媲美3D输入,且在真实视频场景下配合专门的降噪适配器,2D方案比3D姿态估计更省算力、更实用,为动作理解模型的现实部署提供了新路径。
研究团队让8种AI智能体独立完成100项真实科研任务,深度剖析800份研究轨迹后发现,即便是最强模型,也普遍存在"发现问题却不修正"的现象,背后根源指向AI缺乏检验自身产出、主动纠错的元认知能力。
WorldRover是一套面向可探索世界建模的合成视频数据引擎,基于虚幻引擎构建,能让同一段探索轨迹在保持路线与场景一致的前提下,重新渲染为多种视角和外观状态,并同步提供深度、光流、长程点追踪等丰富标注,最终发布WorldRover-10M数据集,含2190万帧、202.7小时视频。
这篇论文指出,现有多目标强化学习训练大模型时存在"一刀切"分配优化精力的问题,提出SA-MRPO方法,根据每个奖励目标的饱和程度动态调整其权重,在数学推理、自适应推理、代码生成等任务上均取得优于现有方法GDPO的效果。