新智元報(bào)道
編輯:KingHZ【新智元導(dǎo)讀】Stability AI推出3D重建方法:2D圖像秒變3D,還可以交互式實(shí)時(shí)編輯。新方法的原理、代碼、權(quán)重、數(shù)據(jù)全公開,而且許可證寬松,可以商用。新方法采用點(diǎn)擴(kuò)展模型生成稀疏點(diǎn)云,之后通過Transformer主干網(wǎng)絡(luò),同時(shí)處理生成的點(diǎn)云數(shù)據(jù)和輸入圖像生成網(wǎng)格。以后,人人都能輕松上手3D模型設(shè)計(jì)。近日,Stability AI發(fā)布消息,公開3D重建新方法SPAR3D的設(shè)計(jì)原理、代碼、模型權(quán)重等。
SPAR3D可在一秒內(nèi)從單張圖像生成3D物體的完整結(jié)構(gòu)并且可以實(shí)時(shí)編輯。
文章亮點(diǎn):新方法SPAR3D實(shí)現(xiàn)了實(shí)時(shí)編輯,在不到一秒內(nèi)可從單圖完成3D對(duì)象的結(jié)構(gòu)生成。
SPAR3D將點(diǎn)云采樣與網(wǎng)格生成技術(shù)相結(jié)合,可以完全的控制3D對(duì)象。
第一階段主要依賴擴(kuò)散模型生成稀疏點(diǎn)云數(shù)據(jù),第二階段主要靠Transformer生成網(wǎng)格。
不確定性集中在點(diǎn)采樣階段,提高了計(jì)算效率。
用實(shí)驗(yàn)證明了,新方法主要依賴輸入圖像重建正面,依賴點(diǎn)云生成背面。
基準(zhǔn)測(cè)試,比SPAR3D快的沒它好,比它好的沒它快。
使用Stability AI Community License,可以免費(fèi)商用。
論文鏈接:https://arxiv.org/pdf/2501.04689項(xiàng)目鏈接:https://spar3d.github.io/架構(gòu)設(shè)計(jì)
整個(gè)過程分為兩個(gè)階段:
點(diǎn)云生成階段:專門的點(diǎn)擴(kuò)散模型生成詳細(xì)的點(diǎn)云,捕捉物體的基本結(jié)構(gòu)。
網(wǎng)格生成階段:三平面Transformer在處理原始圖像特征的同時(shí)處理點(diǎn)云,生成高分辨率的三平面數(shù)據(jù)。利用三平面數(shù)據(jù)進(jìn)行3D重建,準(zhǔn)確捕捉源圖像的幾何形狀、紋理和光照。
圖1:SPAR3D雙階段架構(gòu)圖
雙階段架構(gòu)
新方法結(jié)合了基于回歸建模的精確性與生成技術(shù)的靈活性,實(shí)現(xiàn)了精確的重建和全面的控制。
新方法是「既要也要」:既要享受擴(kuò)散模型分布學(xué)習(xí)的好處,又要避免輸出保真度低和計(jì)算效率低的問題。
第一階段使用擴(kuò)散模型生成稀疏點(diǎn)云。然后是網(wǎng)格劃分階段,將點(diǎn)云轉(zhuǎn)化為高度精細(xì)的網(wǎng)格。
主要想法是將不確定性建模集中到第一階段,在這一階段,點(diǎn)云的低分辨率允許快速迭代采樣。
隨后的網(wǎng)格劃分階段,利用局部圖像特征將點(diǎn)云轉(zhuǎn)換為高輸出保真度的詳細(xì)網(wǎng)格。
利用點(diǎn)云降低網(wǎng)格劃分的不確定性,進(jìn)一步促進(jìn)了反渲染的無監(jiān)督學(xué)習(xí),從而減少了紋理中的烘托照明。
關(guān)鍵設(shè)計(jì)
關(guān)鍵的設(shè)計(jì)選擇是使用點(diǎn)云來連接兩個(gè)階段。
為確?焖僦貥(gòu),中間表示只有足夠輕量級(jí)才能高效完成生成任務(wù)。但是,它也要為網(wǎng)格劃分階段提供足夠的指導(dǎo)。
這是因?yàn)?strong>點(diǎn)云可能是計(jì)算效率最高的三維表示方法,因?yàn)?strong>所有信息比特都被用來表示曲面。
此外,缺乏連通性通常被認(rèn)為是點(diǎn)云的缺點(diǎn)。現(xiàn)在卻變成了兩階段方法進(jìn)行編輯的優(yōu)勢(shì)。
當(dāng)背面與用戶預(yù)期不一致時(shí),可以輕松地對(duì)低分辨率點(diǎn)云進(jìn)行局部編輯,而不必?fù)?dān)心拓?fù)浣Y(jié)構(gòu)(見下圖)。
圖2:局部編輯
將編輯后的點(diǎn)云送入網(wǎng)格劃分階段,可生成更符合用戶要求的網(wǎng)格。比如在上圖中,通過在點(diǎn)云中修改了人物鼻子長(zhǎng)度,之后輸出的網(wǎng)格后人物鼻子也變長(zhǎng)了。
點(diǎn)采樣階段
點(diǎn)采樣階段生成稀疏點(diǎn)云,作為網(wǎng)格劃分階段的輸入。在點(diǎn)采樣階段,點(diǎn)擴(kuò)散模型會(huì)根據(jù)輸入圖像學(xué)習(xí)點(diǎn)云的條件分布。
由于點(diǎn)云的分辨率較低,這一階段的計(jì)算效率較高。
之后的網(wǎng)格劃分階段將采樣點(diǎn)云轉(zhuǎn)換為與可見表面對(duì)齊的高精細(xì)網(wǎng)格。
點(diǎn)采樣的不確定性降低,有利于了在網(wǎng)格劃分階段以無監(jiān)督方式學(xué)習(xí)材質(zhì)和光照。
最后,使用稀疏點(diǎn)云作為中間表示,SPAR3D可以實(shí)現(xiàn)人工編輯。
此階段包括:點(diǎn)擴(kuò)散框架、去噪器設(shè)計(jì)和反照率點(diǎn)云。
點(diǎn)擴(kuò)散框架
該框架基于去噪擴(kuò)散概率模型。其中包括兩個(gè)過程:
1)前向過程,在原始點(diǎn)云中添加噪聲。
2)后向過程,去噪器學(xué)習(xí)如何去除噪音。
在推理(inference)階段,使用去噪擴(kuò)散隱式模型(Denoising diffusion implicit models,DDIM)生成點(diǎn)云樣本,并使用無分類器擴(kuò)散指導(dǎo)(Classifier-free diffusion guidance,CFDG)改進(jìn)抽樣的保真度。
去噪器設(shè)計(jì)
使用與Point-E類似的Transformer去噪器,將噪聲點(diǎn)云線性映射到一組點(diǎn)token中。
使用DINOv2將輸入圖像編碼為條件token。
然后將條件和點(diǎn)token串聯(lián)起來,作為Transformer的輸入,用來預(yù)測(cè)每個(gè)點(diǎn)上添加的噪聲。
反照率點(diǎn)云
在網(wǎng)格劃分階段,新方法同時(shí)估算幾何體、材質(zhì)和光照。
然而,這種分解本身就很模糊,因?yàn)橄嗤妮斎雸D像可以被多種光照和反照率組合解釋。
如果只在網(wǎng)格劃分階段學(xué)習(xí),非常難這種高度不確定的分解。
因此,在點(diǎn)采樣階段,通過擴(kuò)散模型直接生成反照率點(diǎn)云,減少了不確定性。
將反照率點(diǎn)云采樣輸入到后續(xù)的網(wǎng)格生成階段,大大降低了反渲染的不確定性,并使分解學(xué)習(xí)穩(wěn)定了下來。
網(wǎng)格生成階段
網(wǎng)格生成階段根據(jù)輸入圖像和點(diǎn)云生成紋理網(wǎng)格。網(wǎng)格模型的主干是一個(gè)大型三平面Transformer,它能根據(jù)圖像和點(diǎn)云條件預(yù)測(cè)三平面特征。
在訓(xùn)練過程中,會(huì)將幾何圖形和材質(zhì)輸入可微分渲染器,以便應(yīng)用渲染損失來監(jiān)督新模型。
三平面Transformer
新方法的三平面Transformer由三個(gè)子模塊組成:點(diǎn)云編碼器、圖像編碼器和Transformer主干網(wǎng)絡(luò)。Transformer編碼器將點(diǎn)云編碼為一組點(diǎn)token。由于點(diǎn)云的分辨率較低,每個(gè)點(diǎn)都可以直接映射為一個(gè)token。新模型的圖像編碼器是DINOv2,它可以生成局部圖像嵌入。
三平面Transformer采用了與PointInfinity和SF3D相似的設(shè)計(jì)。
這種設(shè)計(jì)可以生成384×384高分辨率的三平面圖。
表面估計(jì)
為了估計(jì)幾何形狀,使用淺層MLP對(duì)三平面進(jìn)行查詢,以生成密度值。
使用可變行進(jìn)四面體(Deep marching tetrahedra,DMTet)將隱式密度場(chǎng)轉(zhuǎn)換為顯式曲面。
此外,還使用兩個(gè)MLP頭來預(yù)測(cè)點(diǎn)偏移和表面法線以及密度。
這兩個(gè)屬性減少了行進(jìn)四面體所帶來的假象,使局部表面更加平滑。
材質(zhì)和光照度估算
反向渲染,與幾何圖形一起聯(lián)合估計(jì)材質(zhì)(反照率、金屬和粗糙度)和光照。
利用RENI++基于學(xué)習(xí)的光照先驗(yàn)建立了光照估計(jì)器。
RENI++最初是一個(gè)用于HDR照明生成的無條件生成模型,因此需要學(xué)習(xí)編碼器,將三平面特征映射到RENI++的潛空間中。
這樣,就能估算出輸入圖像中的環(huán)境光照度。
反照率是通過與幾何類似的三平面來估算的,其中淺層MLP可預(yù)測(cè)每個(gè)三維位置的反照率值。
對(duì)于金屬和粗糙度,采用SF3D,并通過貝塔先驗(yàn)學(xué)習(xí)以概率方法進(jìn)行估計(jì)。
并用AlphaCLIP代替SF3D的CLIP編碼器,利用前景物體遮罩來緩解這一問題。
可微渲染
新方法實(shí)現(xiàn)了一個(gè)可微渲染器(renderer),它能根據(jù)預(yù)測(cè)的環(huán)境貼圖、PB材質(zhì)和幾何體表面渲染圖像(見圖3)。
圖3:可微分著色器
作者向可微網(wǎng)格光柵器(rasterizer)添加了可微著色器(shader)。由于使用RENI++重構(gòu)環(huán)境貼圖,因此需要明確整合傳入的輻照度。在此,使用了蒙特卡羅積分法。
由于在訓(xùn)練過程中樣本數(shù)較少,采用了平衡啟發(fā)式的多重重要度采樣(Multiple Importance Sampling,MIS),以減少整合方差。
此外,為了更好地模擬之前工作中通常忽略的自遮擋(self-occlusion)現(xiàn)象,利用可見度測(cè)試,更好地模擬了陰影。
作者從實(shí)時(shí)圖形學(xué)中汲取靈感,將可見度測(cè)試建模為一種屏幕空間方法。圖4是該測(cè)試的示意圖。
圖4:陰影建模
具體來說沿著MIS提出的所有采樣方向,在6個(gè)步驟內(nèi)進(jìn)行短距離(0.25)的光線步進(jìn),并將位置投影回圖像空間。如果當(dāng)前光線的深度比深度圖中采樣到的值更遠(yuǎn),則該光線會(huì)被標(biāo)記為陰影光線。
損失函數(shù)
新模型的主要損失函數(shù)是渲染損失,它用于比較來自新視角的渲染結(jié)果與真實(shí)圖像(GT)。
具體來說,渲染損失是以下幾項(xiàng)的線性組合:1)渲染圖像與GT圖像之間的L2距離,2)通過LPIPS測(cè)量的渲染圖像與GT圖像之間的感知距離,3)渲染的透明度與GT前景遮罩(mask)之間的L2距離。
除了渲染損失外,還遵循SF3D并應(yīng)用網(wǎng)格與著色正則化,分別對(duì)表面光滑度和逆向渲染進(jìn)行正則化。
交互式編輯
兩階段設(shè)計(jì)的一個(gè)獨(dú)特優(yōu)勢(shì)是,它自然支持對(duì)生成的網(wǎng)格中的不可見區(qū)域進(jìn)行交互式編輯。
在大多數(shù)情況下,可見表面由輸入圖像決定,并保持高度精確,而未知表面主要基于采樣點(diǎn)云,可能與用戶意圖不一致。
在這種情況下,可以通過改變點(diǎn)云來編輯網(wǎng)格的未知表面。
如果只考慮編輯,點(diǎn)云可能是最靈活的三維表示方法之一,因?yàn)闆]有拓?fù)浼s束。
由于點(diǎn)云分辨率較低,編輯點(diǎn)云非常高效和直觀。
用戶可以輕松刪除、復(fù)制、拉伸或重新著色點(diǎn)云中的點(diǎn)。
高效網(wǎng)格模型能夠在0.3秒內(nèi)生成調(diào)整后的網(wǎng)格,因此這一過程具有相當(dāng)高的交互性。
實(shí)驗(yàn)結(jié)果
這部分包含了定量比較、定性結(jié)果、編輯效果和實(shí)驗(yàn)分析。文中也討論了消融實(shí)驗(yàn)。
定量比較在GSO和Omniobject3D數(shù)據(jù)集上定量比較了SPAR3D與其他基準(zhǔn)方法。
如表1和表2所示,SPAR3D在這兩個(gè)數(shù)據(jù)集的大多數(shù)指標(biāo)上顯著優(yōu)于所有其他回歸或生成基準(zhǔn)方法。
SPAR3D也是可以做到1秒內(nèi)完成重建的模型之一,每個(gè)物體的推理速度為0.7秒,顯著快于基于3D或多視圖的擴(kuò)散方法。
簡(jiǎn)而言之,比SPAR3D快的沒它好,比它好的沒它快。
定性結(jié)果純回歸方法如SF3D或TripoSR重建的網(wǎng)格與輸入圖像對(duì)齊良好,但背面往往不夠精確且過度平滑。
基于多視圖擴(kuò)散的方法,如LGM、CRM和InstantMesh,在背面展示了更多的細(xì)節(jié)。然而,合成視角中的不一致性導(dǎo)致了明顯的偽影,整體效果更差。
純生成方法如Shap-E和LN3Diff能夠生成銳利的表面。然而,許多細(xì)節(jié)是錯(cuò)誤的虛擬幻象,未能準(zhǔn)確地遵循輸入圖像,且可見表面重建得也不正確。
與先前的工作相比,SPAR3D生成的網(wǎng)格不僅忠實(shí)地再現(xiàn)了輸入圖像,還展現(xiàn)了生成得當(dāng)?shù)恼趽醪糠,?xì)節(jié)合理。
作者進(jìn)一步展示了SPAR3D在自然圖像上的定性結(jié)果。
這些圖像通過文本-圖像模型生成,或來自ImageNet驗(yàn)證集。高質(zhì)量的重建網(wǎng)格展示了SPAR3D的強(qiáng)泛化能力。
編輯效果使用顯式點(diǎn)云作為中間表示,能夠?qū)崿F(xiàn)對(duì)生成網(wǎng)格的交互式編輯。
用戶可以通過操控點(diǎn)云輕松地改變網(wǎng)格的不可見表面。
在圖7中,展示了一些使用SPAR3D進(jìn)行編輯的示例,用戶可以通過添加主要物體部件來改進(jìn)重建,或改善不理想的生成細(xì)節(jié)。
圖7:編輯效果
在左側(cè)的兩個(gè)例子中,通過復(fù)制現(xiàn)有點(diǎn)云,為馬克杯添加了把手,為大象添加了尾巴。在右側(cè)的兩個(gè)例子中,通過移動(dòng)或刪除點(diǎn)云,修復(fù)了不完美之處,并改善了網(wǎng)格的局部細(xì)節(jié)。所有編輯耗時(shí)不到一分鐘。
實(shí)驗(yàn)分析為了進(jìn)一步了解SPAR3D的工作原理,作者設(shè)計(jì)了新的實(shí)驗(yàn)。
設(shè)計(jì)SPAR3D時(shí)的核心假設(shè)是:兩階段設(shè)計(jì)有效地將單目三維重建問題中的不確定部分(背面建模)和確定部分(可見表面建模)分開。
理想情況下,網(wǎng)格化階段應(yīng)主要依賴輸入圖像重建可見表面,同時(shí)依賴點(diǎn)云生成背面表面。
為了驗(yàn)證這一假設(shè),作者設(shè)計(jì)了一個(gè)實(shí)驗(yàn),特意使用與輸入圖像沖突的點(diǎn)云。
在圖8中,將一只松鼠的輸入圖像和一匹馬的點(diǎn)云輸入網(wǎng)格模型。
圖8:正面看像松鼠,側(cè)面看像馬。
如圖所示,重建的網(wǎng)格在可見表面上與松鼠圖像很好地對(duì)齊,而背面表面則主要遵循點(diǎn)云。這一結(jié)果驗(yàn)證了假設(shè)。
在圖像和點(diǎn)云沖突的情況下,模型根據(jù)圖像重建可見表面,同時(shí)根據(jù)點(diǎn)云生成背面表面。
作者介紹
另外值得一提的是本文第一作者是中科大校友。
Zixuan Huang,伊利諾伊大學(xué)香檳分校在讀博士,在Stable AI主導(dǎo)了此次工作。
之前,在威斯康星大學(xué)麥迪遜分校獲得計(jì)算機(jī)科學(xué)碩士學(xué)位,在中國(guó)科學(xué)技術(shù)大學(xué)獲得學(xué)士學(xué)位。
參考資料:https://x.com/StabilityAI/status/1877079954267189664
https://stability.ai/news/stable-point-aware-3d?utm_source=x&utm_medium=social&utm_campaign=SPAR3D
https://arxiv.org/pdf/2501.04689