MeshAnything V2建模效果 图源:github
AI赋能Mesh重建,难点在哪?
MeshAnything与其它方法对比 图源:github
什么是MeshAnything?
MeshAnything 是一种自回归的 Transformer 模型,它将每个三角面片视为一个 token,并将整个网格模型视为一系列的token序列。类似于大语言模型逐个 token 地生成文本,MeshAnything也能逐个面片地生成整个网格模型。
此外,MeshAnything将点云作为condition输入,使得该方法可以与激光扫描、视觉重建、AI支持下的3D生成等多种数据获取手段结合。
尽管这些方法的3D表示形态不一,但都可以采样成点云,从而输入到MeshAnything中生成高精度的Mesh,真正将建模成果应用到实际的3D工业中。
并且这种设计方式可以显著降低训练难度,因为点云已经提供了详细的几何信息,MeshAnything不再需要学习复杂的三维形状,只要学习如何构建出符合输入点云形状的人造Mesh即可。
MeshAnything方法示意 图源:github
V2版本有何提升?
MeshAnything V2在V1的基础上显著提升了性能,主要贡献指标在于将最大可生成面数从800提升到了1600。
该性能提升主要源于新提出的 Adjacent Mesh Tokenization (AMT) 算法。与之前的网格 tokenization 方法相比,AMT 平均只需使用一半数量的 tokens 即可表示同一个Mesh。
因为 Transformer 的计算复杂度为 O(n^2),使用一半数量的 tokens 可以减少四倍的注意力计算量。
此外,AMT 产生的 token 序列更为紧凑且结构更优,这有助于 Transformer 更有效地学习。
AMT算法 图源:github
上图清晰地展示了 AMT 的工作流程,它通过优先表示相邻的面片来实现每个面片仅用一个顶点表示。当没有未表示的相邻面片时,AMT 使用一个特殊 token “&” 来标记这种情况,并重新开始。
借助 AMT,版本 V2 在性能和效率方面显著超越了先前的方法,实现了高质量的人造网格生成。在训练数据方面,MeshAnything 利用了 ShapeNet 和 Objaverse 中的人造网格,并将其转换为 token 序列后采用交叉熵损失进行监督训练。
V1 和 V2 均采用了 350m参数的 Transformer 架构,并在100k的训练数据上就取得了上述成果,这表明该方法还具有很大的扩展潜力。
更多结果如下:
MeshAnything V2的更多建模结果 图源:github
实测结果
论文中模型的重建效果十分震撼,我们也是第一时间开测,配置好的测试页面如图所示,只要将点云数据拖到Input Mesh框中,点击Generate按钮,等待30秒,即可将点云数据转为高质量Mesh。并且支持obj、ply、Splat等多种格式。
MeshAnything V2测试页面
高斯泼溅算法生成的点云数据和MeshAnything生成的网格模型如下。可以明显发现MeshAnything生成的网格模型质量较差,这可能与高斯泼溅重建的点云质量较低有一定关系,也意味着MeshAnything对点云的质量要求较高。
高斯泼溅生成的玩偶熊点云以及MeshAnything V2构建的网格模型
质量较低的点云不行,那就再来一份高质量、无噪点的点云,生成结果同样不尽如人意。尽管模型质量有一定提升,但还是构建出了较多的错误面片,距离预期中的工业化应用还有一定距离。
高质量闸机点云和MeshAnything V2构建的网格模型
尽管测试结果不尽如人意,但可以肯定的是,MeshAnything 正在朝着正确的方向前进,并且在不断得尝试与实践中正逐步接近其目标。
正如《黑神话:悟空》制作人冯骥所言:“踏上取经之路可能比抵达灵山更加重要”。
结合大模型通用知识及在交通、社会治理、安全生产、自然资源等行业领域的知识,深入业务场景,精确捕获用户意图,为用户提供智能问答、数据分析、报表生成、工作任务理解与执行等一系列服务
📞若您有相关需求,欢迎点击下方链接与我们沟通洽谈
🗨️也可以在公众号后台给我们留言