30秒生成建模師級(jí)Mesh!最大可生成面數(shù)提升至1600,GitHub攬星1.9k項(xiàng)目發(fā)布V2版本
只需30秒,AI就能像3D建模師一樣,在各種指示下生成高質(zhì)量人造Mesh。
NeRF、3D Gaussian Splatting生成的三維重建圖像Mesh效果如下:
點(diǎn)云造出精細(xì)Mesh:
Dense Mesh基礎(chǔ)上生成也可以:
一張圖,甚至文本描述就足夠了:
GitHub已攬星1.9k的MeshAnything項(xiàng)目上新了V2版本,由來自南洋理工大學(xué)、清華大學(xué)、帝國(guó)理工學(xué)院、西湖大學(xué)等研究人員完成。
MeshAnything V2相比V1,使用了最新提出的Adjacent Mesh Tokenization(AMT)算法,將最大可生成面數(shù)從800提升到了1600。
相比之前的Mesh tokenization方法,AMT平均只需要一半長(zhǎng)度的token sequence即可表達(dá)同一個(gè)Mesh。
這項(xiàng)研究一經(jīng)發(fā)布也迅速得到不少網(wǎng)友關(guān)注。
那么,MeshAnything究竟是一種怎樣的方法?MeshAnything V2做了哪些改進(jìn)?
高度可控的人造Mesh生成
值得注意的是,雖然AI很早就能夠生成Mesh了,但這與上面所展示的生成人造Mesh有著巨大區(qū)別。
團(tuán)隊(duì)表示,所有之前方法,例如Marching Cubes和Get3D,生成的Mesh都是面片非常稠密的Mesh,面片數(shù)往往是人造Mesh的數(shù)百倍,幾乎不可能應(yīng)用于游戲,電影等實(shí)際3D工業(yè)。
并且由于它們的面片結(jié)構(gòu)不符合人類直覺,3D建模師很難再對(duì)其進(jìn)行細(xì)致的加工。
如下圖所示,這一問題沒法簡(jiǎn)單地依靠remesh來解決,在不影響效果的前提下,remesh方法雖然僅僅能夠小幅度地減少面片:
而上述問題直接影響了3D研究應(yīng)用于工業(yè)界。
3D工業(yè)界的pipeline幾乎全以人造Mesh作為3D表征,即使3D研究領(lǐng)域能產(chǎn)出精度極高的NeRF或者3D Gaussian,但沒法將它們轉(zhuǎn)化為工業(yè)界能應(yīng)用的Mesh的話,應(yīng)用將十分受限。
因此,之前?研究團(tuán)隊(duì)提出了MeshAnything,旨在實(shí)現(xiàn)高度可控的人造Mesh生成。
MeshAnything是一個(gè)自回歸的transformer,其將Mesh的每個(gè)面片視作token,整個(gè)Mesh被視作token序列,接著像大語(yǔ)言模型一樣,一個(gè)token一個(gè)token地生成,最終生成出整個(gè)Mesh。
MeshAnything運(yùn)用精妙的condition設(shè)計(jì),其將點(diǎn)云作為condition來實(shí)現(xiàn)高度可控的人造Mesh生成:
MeshAnything以點(diǎn)云為condition的設(shè)計(jì)讓其可以與諸多3D掃描,3D重建,3D生成的方法結(jié)合。
這些種類繁多的方法最終得到的3D表示雖然多樣,但總能從中采樣到點(diǎn)云,從而輸入到MeshAnything中轉(zhuǎn)為人造Mesh,幫助這些能輸出3D模型的工作運(yùn)用到實(shí)際3D工業(yè)中。
另外,這種設(shè)計(jì)還大大降低了MeshAnything的訓(xùn)練難度,提高了效果。因?yàn)辄c(diǎn)云提供了精細(xì)的3D形狀信息,MeshAnything不需要去學(xué)習(xí)復(fù)雜的3D形狀分布,只需要學(xué)習(xí)如何搭建出符合給定點(diǎn)云的人造Mesh。
MeshAnything V2有何提升?
MeshAnything V2在V1版本的基礎(chǔ)上大幅度提高了性能,并將最大可生成面數(shù)800提升到了1600。
其主要提升來源于其新提出的Adjacent Mesh Tokenization(AMT)算法。
相比之前的Mesh tokenization方法,AMT平均只需要一半長(zhǎng)度的token sequence即可表達(dá)同一個(gè)Mesh。
由于transformer的計(jì)算是n^2復(fù)雜度,一半長(zhǎng)度的token sequence意味著降低了4倍的attention計(jì)算量。并且AMT得到的token sequence更加緊湊,結(jié)構(gòu)更好,更有利于transformer的學(xué)習(xí)。
AMT是通過盡可能地僅僅用一個(gè)vertex來表達(dá)一個(gè)一個(gè)面片來實(shí)現(xiàn)上述進(jìn)步的:
上圖清晰地表達(dá)出了AMT的運(yùn)作過程,其通過優(yōu)先表達(dá)相鄰的面片來用1個(gè)vertex表達(dá)一個(gè)面片。當(dāng)不存在相鄰的沒表達(dá)過的面片,AMT添加一個(gè)特殊token “&”來標(biāo)識(shí)這一情況并重新開始。
在AMT的幫助下,V2在性能和效率上大幅超過之前的方法,實(shí)現(xiàn)了高質(zhì)量的人造Mesh生成。
在訓(xùn)練數(shù)據(jù)上,MeshAnything使用ShapeNet和Objaverse中的人造Mesh,將這些Mesh展開成token sequence之后使用cross-entropy loss監(jiān)督。
V1和V2都僅僅使用了350m的transformer架構(gòu),100K的訓(xùn)練數(shù)據(jù)就得到了以上結(jié)果,表明該方向還有非常大scale up潛力。
更多結(jié)果如下:
V1項(xiàng)目主頁(yè):
???https://buaacyw.github.io/mesh-anything/???
V2項(xiàng)目主頁(yè):
https://buaacyw.github.io/meshanything-v2/
本文轉(zhuǎn)自 量子位 ,作者:量子位
