30秒生成建模師級Mesh!最大可生成面數提升至1600,GitHub攬星1.9k項目發佈V2版本

木子 投稿

量子位 | 公眾號 QbitAI

只需30秒,AI就能像3D建模師一樣,在各種指示下生成高質量人造Mesh。

NeRF、3D Gaussian Splatting生成的三維重建圖像Mesh效果如下:

點雲造出精細Mesh:

Dense Mesh基礎上生成也可以:

一張圖,甚至文本描述就足夠了:

GitHub已攬星1.9k的MeshAnything項目上新了V2版本,由來自南洋理工大學、清華大學、帝國理工學院、西湖大學等研究人員完成。

MeshAnything V2相比V1,使用了最新提出的Adjacent Mesh Tokenization(AMT)算法,將最大可生成面數從800提升到了1600。

相比之前的Mesh tokenization方法,AMT平均只需要一半長度的token sequence即可表達同一個Mesh。

這項研究一經發佈也迅速得到不少網民關注。

那麼,MeshAnything究竟是一種怎樣的方法?MeshAnything V2做了哪些改進?

高度可控的人造Mesh生成

值得注意的是,雖然AI很早就能夠生成Mesh了,但這與上面所展示的生成人造Mesh有著巨大區別。

團隊表示,所有之前方法,例如Marching Cubes和Get3D,生成的Mesh都是面片非常稠密的Mesh,面片數往往是人造Mesh的數百倍,幾乎不可能應用於遊戲,電影等實際3D工業。

並且由於它們的面片結構不符合人類直覺,3D建模師很難再對其進行細緻的加工。

如下圖所示,這一問題沒法簡單地依靠remesh來解決,在不影響效果的前提下,remesh方法雖然僅僅能夠小幅度地減少面片:

而上述問題直接影響了3D研究應用於工業界。

3D工業界的pipeline幾乎全以人造Mesh作為3D表徵,即使3D研究領域能產出精度極高的NeRF或者3D Gaussian,但沒法將它們轉化為工業界能應用的Mesh的話,應用將十分受限。

因此,之前研究團隊提出了MeshAnything,旨在實現高度可控的人造Mesh生成。

MeshAnything是一個自回歸的transformer,其將Mesh的每個面片視作token,整個Mesh被視作token序列,接著像大語言模型一樣,一個token一個token地生成,最終生成出整個Mesh。

MeshAnything運用精妙的condition設計,其將點雲作為condition來實現高度可控的人造Mesh生成:

MeshAnything以點雲為condition的設計讓其可以與諸多3D掃瞄,3D重建,3D生成的方法結合。

這些種類繁多的方法最終得到的3D表示雖然多樣,但總能從中采樣到點雲,從而輸入到MeshAnything中轉為人造Mesh,幫助這些能輸出3D模型的工作運用到實際3D工業中。

另外,這種設計還大大降低了MeshAnything的訓練難度,提高了效果。因為點雲提供了精細的3D形狀信息,MeshAnything不需要去學習複雜的3D形狀分佈,只需要學習如何搭建出符合給定點雲的人造Mesh。

MeshAnything V2有何提升?

MeshAnything V2在V1版本的基礎上大幅度提高了性能,並將最大可生成面數800提升到了1600。

其主要提升來源於其新提出的Adjacent Mesh Tokenization(AMT)算法。

相比之前的Mesh tokenization方法,AMT平均只需要一半長度的token sequence即可表達同一個Mesh

由於transformer的計算是n^2複雜度,一半長度的token sequence意味著降低了4倍的attention計算量。並且AMT得到的token sequence更加緊湊,結構更好,更有利於transformer的學習。

AMT是通過儘可能地僅僅用一個vertex來表達一個一個面片來實現上述進步的:

上圖清晰地表達出了AMT的運作過程,其通過優先表達相鄰的面片來用1個vertex表達一個面片。當不存在相鄰的沒表達過的面片,AMT添加一個特殊token 「&」來標識這一情況並重新開始。

在AMT的幫助下,V2在性能和效率上大幅超過之前的方法,實現了高質量的人造Mesh生成。

在訓練數據上,MeshAnything使用ShapeNet和Objaverse中的人造Mesh,將這些Mesh展開成token sequence之後使用cross-entropy loss監督。

V1和V2都僅僅使用了350m的transformer架構,100K的訓練數據就得到了以上結果,表明該方向還有非常大scale up潛力。

更多結果如下:

V1項目主頁: V1項目主頁: 

https://buaacyw.github.io/mesh-anything/

V2項目主頁:

https://buaacyw.github.io/meshanything-v2/