
新智元報道
新智元報道
編輯:KingHZ
【新智元導讀】Stability AI推出3D重建方法:2D影像秒變3D,還可以互動式即時編輯。新方法的原理、程式碼、權重、資料全公開,而且許可證寬鬆,可以商用。新方法採用點擴充套件模型生成稀疏點雲,之後透過Transformer主幹網路,同時處理生成的點雲資料和輸入影像生成網格。以後,人人都能輕鬆上手3D模型設計。
近日,Stability AI釋出訊息,公開3D重建新方法SPAR3D的設計原理、程式碼、模型權重等。

SPAR3D可在一秒內從單張影像生成3D物體的完整結構並且可以即時編輯。

文章亮點:
-
新方法SPAR3D實現了即時編輯,在不到一秒內可從單圖完成3D物件的結構生成。 -
SPAR3D將點雲取樣與網格生成技術相結合,可以完全的控制3D物件。 -
第一階段主要依賴擴散模型生成稀疏點雲資料,第二階段主要靠Transformer生成網格。 -
不確定性集中在點取樣階段,提高了計算效率。 -
用實驗證明了,新方法主要依賴輸入影像重建正面,依賴點雲生成背面。 -
基準測試,比SPAR3D快的沒它好,比它好的沒它快。 -
使用Stability AI Community License,可以免費商用。

論文連結:https://arxiv.org/pdf/2501.04689
專案連結:https://spar3d.github.io/
架構設計
整個過程分為兩個階段:
-
點雲生成階段:專門的點擴散模型生成詳細的點雲,捕捉物體的基本結構。
-
網格生成階段:三平面Transformer在處理原始影像特徵的同時處理點雲,生成高解析度的三平面資料。利用三平面資料進行3D重建,準確捕捉源影像的幾何形狀、紋理和光照。

圖1:SPAR3D雙階段架構圖
雙階段架構
新方法結合了基於迴歸建模的精確性與生成技術的靈活性,實現了精確的重建和全面的控制。
新方法是「既要也要」:既要享受擴散模型分佈學習的好處,又要避免輸出保真度低和計算效率低的問題。

第一階段使用擴散模型生成稀疏點雲。然後是網格劃分階段,將點雲轉化為高度精細的網格。
主要想法是將不確定性建模集中到第一階段,在這一階段,點雲的低解析度允許快速迭代取樣。
隨後的網格劃分階段,利用區域性影像特徵將點雲轉換為高輸出保真度的詳細網格。
利用點雲降低網格劃分的不確定性,進一步促進了反渲染的無監督學習,從而減少了紋理中的烘托照明。
關鍵設計
關鍵的設計選擇是使用點雲來連線兩個階段。
為確保快速重構,中間表示只有足夠輕量級才能高效完成生成任務。但是,它也要為網格劃分階段提供足夠的指導。
這是因為點雲可能是計算效率最高的三維表示方法,因為所有資訊位元都被用來表示曲面。
此外,缺乏連通性通常被認為是點雲的缺點。現在卻變成了兩階段方法進行編輯的優勢。
當背面與使用者預期不一致時,可以輕鬆地對低解析度點雲進行區域性編輯,而不必擔心拓撲結構(見下圖)。

圖2:區域性編輯
將編輯後的點雲送入網格劃分階段,可生成更符合使用者要求的網格。比如在上圖中,透過在點雲中修改了人物鼻子長度,之後輸出的網格後人物鼻子也變長了。
點取樣階段
點取樣階段生成稀疏點雲,作為網格劃分階段的輸入。
在點取樣階段,點擴散模型會根據輸入影像學習點雲的條件分佈。
由於點雲的解析度較低,這一階段的計算效率較高。
之後的網格劃分階段將取樣點雲轉換為與可見表面對齊的高精細網格。
點取樣的不確定性降低,有利於了在網格劃分階段以無監督方式學習材質和光照。
最後,使用稀疏點雲作為中間表示,SPAR3D可以實現人工編輯。
此階段包括:點擴散框架、去噪器設計和反照率點雲。
點擴散框架
該框架基於去噪擴散機率模型。其中包括兩個過程:
1)前向過程,在原始點雲中新增噪聲。
2)後向過程,去噪器學習如何去除噪音。
在推理(inference)階段,使用去噪擴散隱式模型(Denoising diffusion implicit models,DDIM)生成點雲樣本,並使用無分類器擴散指導(Classifier-free diffusion guidance,CFDG)改進抽樣的保真度。

去噪器設計
使用與Point-E類似的Transformer去噪器,將噪聲點雲線性對映到一組點token中。
使用DINOv2將輸入影像編碼為條件token。
然後將條件和點token串聯起來,作為Transformer的輸入,用來預測每個點上新增的噪聲。
反照率點雲
在網格劃分階段,新方法同時估算幾何體、材質和光照。
然而,這種分解本身就很模糊,因為相同的輸入影像可以被多種光照和反照率組合解釋。
如果只在網格劃分階段學習,非常難這種高度不確定的分解。
因此,在點取樣階段,透過擴散模型直接生成反照率點雲,減少了不確定性。
將反照率點雲取樣輸入到後續的網格生成階段,大大降低了反渲染的不確定性,並使分解學習穩定了下來。
網格生成階段
網格生成階段根據輸入影像和點雲生成紋理網格。
網格模型的主幹是一個大型三平面Transformer,它能根據影像和點雲條件預測三平面特徵。
在訓練過程中,會將幾何圖形和材質輸入可微分渲染器,以便應用渲染損失來監督新模型。
三平面Transformer
新方法的三平面Transformer由三個子模組組成:點雲編碼器、影像編碼器和Transformer主幹網路。
Transformer編碼器將點雲編碼為一組點token。由於點雲的解析度較低,每個點都可以直接對映為一個token。
新模型的影像編碼器是DINOv2,它可以生成區域性影像嵌入。
三平面Transformer採用了與PointInfinity和SF3D相似的設計。
這種設計可以生成384×384高解析度的三平面圖。
表面估計
為了估計幾何形狀,使用淺層MLP對三平面進行查詢,以生成密度值。
使用可變行進四面體(Deep marching tetrahedra,DMTet)將隱式密度場轉換為顯式曲面。
此外,還使用兩個MLP頭來預測點偏移和表面法線以及密度。
這兩個屬性減少了行進四面體所帶來的假象,使區域性表面更加平滑。
材質和光照度估算
反向渲染,與幾何圖形一起聯合估計材質(反照率、金屬和粗糙度)和光照。
利用RENI++基於學習的光照先驗建立了光照估計器。
RENI++最初是一個用於HDR照明生成的無條件生成模型,因此需要學習編碼器,將三平面特徵對映到RENI++的潛空間中。
這樣,就能估算出輸入影像中的環境光照度。
反照率是透過與幾何類似的三平面來估算的,其中淺層MLP可預測每個三維位置的反照率值。
對於金屬和粗糙度,採用SF3D,並透過貝塔先驗學習以機率方法進行估計。
並用AlphaCLIP代替SF3D的CLIP編碼器,利用前景物體遮罩來緩解這一問題。
可微渲染
新方法實現了一個可微渲染器(renderer),它能根據預測的環境貼圖、PB材質和幾何體表面渲染影像(見圖3)。

圖3:可微分著色器
作者向可微網格光柵器(rasterizer)添加了可微著色器(shader)。
由於使用RENI++重構環境貼圖,因此需要明確整合傳入的輻照度。
在此,使用了蒙特卡羅積分法。
由於在訓練過程中樣本數較少,採用了平衡啟發式的多重重要度取樣(Multiple Importance Sampling,MIS),以減少整合方差。
此外,為了更好地模擬之前工作中通常忽略的自遮擋(self-occlusion)現象,利用可見度測試,更好地模擬了陰影。
作者從即時圖形學中汲取靈感,將可見度測試建模為一種螢幕空間方法。圖4是該測試的示意圖。

圖4:陰影建模
具體來說沿著MIS提出的所有采樣方向,在6個步驟內進行短距離(0.25)的光線步進,並將位置投影回影像空間。如果當前光線的深度比深度圖中取樣到的值更遠,則該光線會被標記為陰影光線。
損失函式
新模型的主要損失函式是渲染損失,它用於比較來自新視角的渲染結果與真實影像(GT)。
具體來說,渲染損失是以下幾項的線性組合:1)渲染影像與GT影像之間的L2距離,2)透過LPIPS測量的渲染影像與GT影像之間的感知距離,3)渲染的透明度與GT前景遮罩(mask)之間的L2距離。
除了渲染損失外,還遵循SF3D並應用網格與著色正則化,分別對錶面光滑度和逆向渲染進行正則化。
互動式編輯
兩階段設計的一個獨特優勢是,它自然支援對生成的網格中的不可見區域進行互動式編輯。
在大多數情況下,可見表面由輸入影像決定,並保持高度精確,而未知表面主要基於取樣點雲,可能與使用者意圖不一致。
在這種情況下,可以透過改變點雲來編輯網格的未知表面。
如果只考慮編輯,點雲可能是最靈活的三維表示方法之一,因為沒有拓撲約束。
由於點雲解析度較低,編輯點雲非常高效和直觀。
使用者可以輕鬆刪除、複製、拉伸或重新著色點雲中的點。
高效網格模型能夠在0.3秒內生成調整後的網格,因此這一過程具有相當高的互動性。
實驗結果
這部分包含了定量比較、定性結果、編輯效果和實驗分析。文中也討論了消融實驗。
定量比較
在GSO和Omniobject3D資料集上定量比較了SPAR3D與其他基準方法。
如表1和表2所示,SPAR3D在這兩個資料集的大多數指標上顯著優於所有其他迴歸或生成基準方法。
SPAR3D也是可以做到1秒內完成重建的模型之一,每個物體的推理速度為0.7秒,顯著快於基於3D或多檢視的擴散方法。
簡而言之,比SPAR3D快的沒它好,比它好的沒它快。


定性結果
純迴歸方法如SF3D或TripoSR重建的網格與輸入影像對齊良好,但背面往往不夠精確且過度平滑。
基於多檢視擴散的方法,如LGM、CRM和InstantMesh,在背面展示了更多的細節。然而,合成視角中的不一致性導致了明顯的偽影,整體效果更差。
純生成方法如Shap-E和LN3Diff能夠生成銳利的表面。然而,許多細節是錯誤的虛擬幻象,未能準確地遵循輸入影像,且可見表面重建得也不正確。
與先前的工作相比,SPAR3D生成的網格不僅忠實地再現了輸入影像,還展現了生成得當的遮擋部分,細節合理。

作者進一步展示了SPAR3D在自然影像上的定性結果。
這些影像透過文字-影像模型生成,或來自ImageNet驗證集。高質量的重建網格展示了SPAR3D的強泛化能力。

編輯效果
使用顯式點雲作為中間表示,能夠實現對生成網格的互動式編輯。
使用者可以透過操控點雲輕鬆地改變網格的不可見表面。
在圖7中,展示了一些使用SPAR3D進行編輯的示例,使用者可以透過新增主要物體部件來改進重建,或改善不理想的生成細節。

圖7:編輯效果
在左側的兩個例子中,透過複製現有點雲,為馬克杯添加了把手,為大象添加了尾巴。在右側的兩個例子中,透過移動或刪除點雲,修復了不完美之處,並改善了網格的區域性細節。所有編輯耗時不到一分鐘。
實驗分析
為了進一步瞭解SPAR3D的工作原理,作者設計了新的實驗。
設計SPAR3D時的核心假設是:兩階段設計有效地將單目三維重建問題中的不確定部分(背面建模)和確定部分(可見表面建模)分開。
理想情況下,網格化階段應主要依賴輸入影像重建可見表面,同時依賴點雲生成背面表面。
為了驗證這一假設,作者設計了一個實驗,特意使用與輸入影像衝突的點雲。
在圖8中,將一隻松鼠的輸入影像和一匹馬的點雲輸入網格模型。

圖8:正面看像松鼠,側面看像馬。
如圖所示,重建的網格在可見表面上與松鼠影像很好地對齊,而背面表面則主要遵循點雲。這一結果驗證了假設。
在影像和點雲衝突的情況下,模型根據影像重建可見表面,同時根據點雲生成背面表面。
作者介紹
另外值得一提的是本文第一作者是中科大校友。

Zixuan Huang,伊利諾伊大學香檳分校在讀博士,在Stable AI主導了此次工作。
之前,在威斯康星大學麥迪遜分校獲得計算機科學碩士學位,在中國科學技術大學獲得學士學位。
參考資料:
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


