熱門資訊> 正文
2025-01-15 19:25
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編碼器將點雲編碼為一組點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
本文來自微信公眾號「新智元」,作者:新智元,36氪經授權發佈。