1. 从“看图说话”到“读图识意”:为什么CAD特征识别这么难?
如果你用过一些3D建模软件,比如SolidWorks或者Fusion 360,你肯定知道,一个复杂的零件是由很多“特征”堆叠起来的:这里挖个孔,那里开个槽,再倒个圆角。对我们人来说,一眼就能看出“这是个通孔,得用钻头加工”。但对计算机来说,让它从一堆冰冷的几何数据里自动认出这些“加工特征”,这事儿可就太复杂了。
我刚开始接触这个领域时,也觉得这不就是个“看图分类”的问题吗?后来自己上手做项目才发现,完全不是那么回事。传统的3D模型,比如你在游戏里看到的那些酷炫角色,通常是用三角网格(Mesh)或者点云(Point Cloud)来表示的。你可以把它们想象成用无数个三角形小碎片拼成的模型,或者用无数个空间中的点来描绘轮廓。这类数据格式规整,很适合直接喂给深度学习模型,比如3D卷积神经网络(3D CNN),让模型去学习形状特征。
但问题来了,工业领域最核心的CAD模型,比如工程师设计的发动机缸体、机床夹具,它们最“正宗”的存储格式是边界表示(B-Rep)。这玩意儿可复杂多了。它不仅仅记录形状,还严格定义了模型的拓扑结构和几何信息。简单来说,一个B-Rep模型由“面”(Face)、“边”(Edge)、“环”(Loop)、“顶点”(Vertex)这些元素,按照严格的层级关系组织起来。每个面有它的几何定义(是平面还是圆柱面),每条边有它的曲线类型(是直线还是圆弧),并且面和边之间通过“邻接关系”连接,构成了一个极其复杂的结构图。
这就好比,Mesh模型像是一幅用马赛克拼成的画,你只需要看颜色块;而B-Rep模型是一份带有严格制图规范、标注了所有尺寸和公差的工程蓝图。前者直观但信息粗糙,后者精确但结构复杂。直接把B-Rep这种非欧几里得数据结构塞进为规整网格设计的CNN里,就像把一本立体的、带超链接的百科全书强行拍扁成一张图片,大量关键的结构化信息都丢失了。
所以,很长一段时间里,要让AI理解CAD模型,要么得把B-Rep转换成体素或网格,牺牲精度;要么就得依赖大量人工编写的规则,既费时又难以应对千变万化的复杂特征,尤其是当多个特征相互交叉、融合在一起时,规则系统很容易“死机”。这就是加工特征识别领域多年来的核心痛点:如何让AI直接“读懂”原生的、结构复杂的B-Rep模型,并像经验丰富的老师傅一样,精准地识别出每一个待加工的几何特征。
2. BRepNet:为B-Rep“量身定制”的初代解决方案
既然通用的CNN处理不了B-Rep,那我们就为它专门设计一个网络。这就是BRepNet出现的背景。你可以把BRepNet理解成一位专门训练来阅读工程蓝图的“AI制图员”。它的核心思路非常直观:既然B-Rep模型是由“面”作为基本单元构成的,那么我就把识别任务拆解成两步。
第一步,面级别分类。 BRepNet把模型的每一个“面”都当作一个独立的观察对象。它会提取每个面的各种属性,比如面的类型(平面、圆柱面)、面积、法向量等等,同时也会考虑这个面与相邻面、边的关系。然后,它用一个神经网络(通常是一种特殊的图神经网络变体或精心设计的局部特征聚合器)来对这些面进行分析,预测每个面最可能属于哪个加工特征(比如“盲孔底面”、“通孔圆柱面”、“槽的侧面”)。
第二步,连通分量分析。 光把面分类还不够,一个完整的“通孔”特征可能由底面和一个圆柱面组成。所以,在第一步之后,BRepNet会做一个类似“聚类”的操作:把所有被标记为同一类特征


被折叠的 条评论
为什么被折叠?



