看透物體的3D表示和生成模型:NUS團隊提出X-Ray
- 項目主頁:https://tau-yihouxiang.github.io/projects/X-Ray/X-Ray.html
- 論文地址:https://arxiv.org/abs/2404.14329
- 代碼地址:https://github.com/tau-yihouxiang/X-Ray
- 數據集:https://huggingface.co/datasets/yihouxiang/X-Ray
如今的生成式AI在人工智能領域迅猛發展,在計算機視覺中,圖像和視頻生成技術已日漸成熟,如Midjourney、Stable Video Diffusion [1]等模型廣泛應用。然而,三維視覺領域的生成模型仍面臨挑戰。
目前的3D模型生成技術通常基于多角度視頻生成和重建,如SV3D模型[2],通過生成多角度視頻并結合神經輻射場(NeRF)或者3D高斯渲染模型(3D Gaussian Splatting技術逐步構建3D物體。這種方法主要限制在只能生成簡單的、無自遮擋的三維物體,且無法呈現物體內部結構,使得整個生成過程復雜而且不完美,顯示出該技術的復雜性和局限性。
究其原因,在于目前缺乏靈活高效且容易泛化的3D Representation (3D表示)。
圖1. X-Ray序列化3D表示
X射線能夠穿透并記錄關鍵物體內外表面信息,受到這個啟發,新加坡國立大學(NUS)胡濤博士帶領研究團隊發布了一種全新的3D表示—X-Ray,它能夠序列化地表示從相機攝像角度看過去的物體的逐層次的物體表面形狀和紋理,可以充分利用視頻生成模型的優勢來生成3D物體,可以同時生成物體的內外3D結構。
本文將詳細展示X-Ray技術的原理、優勢及其廣泛的應用前景。
圖2. 與基于渲染的3D模型生成方法比較。
技術革新:物體內外表面的3D表示方法
X-Ray表示:從相機中心開始朝向物體方向的H×W個矩陣點發射射線。在每條射線方向上,逐個記錄與物體的表面相交點的L個包含深度、法向量和顏色等的三維屬性數據,然后將這些數據組織成L×H×W的形式,實現任意3D模型的張量表示,這就是該團隊提出的X-Ray表示方法。
值得注意的是,該表示形式與視頻格式一樣,因此可以用視頻生成模型做3D生成模型。具體過程如下。
圖3. 不同層數的X-Ray示例樣本。
1.編碼過程: 3D模型轉X-Ray
給定一個3D模型,通常是三維網格,首先設置一個相機觀測該模型,然后通過光線投影算法(Ray Casting Algorithm)來記錄每個相機射線與物體相交的所有表面的屬性,包括該表面的深度
,法向量
,顏色
等,為了指示方便,用
表示該位置是否存在表面。
然后,獲取所有相機射線等相交表面點,即可得到一個完整的X-Ray 3D表達,如下表達式和圖3所示。
通過編碼過程,將一個任意的3D模型轉化為X-Ray,它和視頻格式是一樣的,并且具有不同的幀數,通常情況下,幀數L=8 足夠表示一個3D物體。
2.解碼過程:X-Ray轉3D模型
給定一個X-Ray,也可以通過解碼過程轉化回3D模型,這樣只需要通過生成X-Ray即可生成3D模型。具體過程包括點云生成過程和點云重建表面兩個過程。
- X-Ray到點云:X-Ray很容易轉化為點云,該點云中的每個點除了有3D點的位置坐標,還具有顏色和法向量信息。
其中r_0,r_d分別是相機射線的起點和歸一化方向,通過對每個相機射線的處理,就可以獲得一個完整的點云。
- 點云到三維網格:接下來就是將點云轉化為三維網格的過程,這是一個被研究了很多年的技術,因為這些點云具有法向量,所以采用Screened Poisson 算法直接將點云轉化為三維網格模型,即最終的3D模型。
基于X-Ray表示的3D模型生成
為了生成高分辨率的多樣3D X-Ray模型,該團隊使用了與視頻格式相似的視頻擴散模型架構。這個架構可以處理連續的3D信息,并通過上采樣模塊來提高X-Ray的質量,生成高精度的3D輸出。擴散模型負責從噪聲數據逐步生成細節豐富的3D圖像,上采樣模塊則增強圖像分辨率和細節,以達到高質量標準。結構具體如圖4所示。
X-Ray 擴散生成模型
擴散模型在X-Ray生成中使用潛在空間,通常需要自定義開發向量量化-變分自編碼器(VQ-VAE)[3] 進行數據壓縮,這一缺少現成模型的過程增加了訓練負擔。
為有效訓練高分辨率生成器,該團隊采用了級聯合成策略,通過技術如Imagen和Stable Cascaded,從低到高分辨率逐步訓練,以適應有限的計算資源并提高X-Ray圖像質量。
具體而言,使用Stable Video Diffusion中的3D U-Net架構作為擴散模型,生成低分辨率X-Ray,并通過時空注意機制從2D幀和1D時間序列中提取特征,增強處理和解釋X-Ray能力,這對高質量結果至關重要。
X-Ray 上采樣模型
前一階段的擴散模型僅能從文本或其他圖像生成低分辨率的X-Ray圖像。在隨后的階段,著重提升這些低分辨率X-Ray至更高分辨率。
該團隊探索了兩種主要方法:點云上采樣和視頻上采樣。
由于已經獲得了形狀和外觀的粗糙表示,將這些數據編碼成帶有顏色和法線的點云是一個很直接的過程。
然而,點云表示結構過于松散,不適合進行密集預測,傳統的點云上采樣技術通常只是簡單增加點的數量,這對于提升諸如紋理和顏色等屬性可能不夠有效。為了簡化流程并確保整個管道的一致性,選擇使用視頻上采樣模型。
這個模型改編自Stable Video Diffusion(SVD)的時空VAE解碼器,專門從頭開始訓練,以4倍的因子上采樣合成的X-Ray幀,同時保持原始的層數。解碼器能夠在幀級和層級上獨立進行注意力操作。這種雙層注意力機制不僅提高了分辨率,還顯著改善了圖像的整體質量。這些功能使得視頻上采樣模型成為在高分辨率X-Ray生成中更加協調和有效的解決方案。
圖4:基于X-Ray表示的3D模型生成框架,包括X-Ray擴散模型與X-Ray上采樣模型。
實驗
1. 數據集:
實驗使用了Objaverse數據集的一個篩選子集,從中移除了缺少紋理和不充分提示的條目。
這個子集包含超過60,000個3D對象。對于每個對象,隨機選擇4個攝像機視角,覆蓋從-180到180度的方位角和從-45到45度的仰角,攝像機到對象中心的距離固定為1.5。
然后使用Blender軟件進行渲染,并通過trimesh庫提供的光線投射算法生成相應的X-Ray。通過這些過程,可以創建超過240,000對圖像和X-Ray數據集來訓練生成模型。
2. 實現細節:
X-Ray擴散模型基于Stable Video Diffusion (SVD) 中使用的時空UNet架構,進行了輕微調整:模型配置為合成8個通道:1個命中通道,1個深度通道和6個法線通道,與原始網絡的4個通道相比。
鑒于X-Ray成像與傳統視頻之間的顯著差異,從頭開始訓練模型,以彌補X-Ray與視頻領域之間的大差距。訓練在8個NVIDIA A100 GPU服務器上進行了一周。在此期間,學習率保持在0.0001,使用AdamW優化器。
由于不同的X-Ray具有不同數量的層,將它們填充或裁剪到相同的8層,以便更好地批處理和訓練,每層的幀尺寸為64×64。對于上采樣模型,第L層的輸出仍然是8,但每個幀的分辨率提高到256×256,增強了放大X-Ray的細節和清晰度,結果如圖5和圖6所示。
圖5:圖像到X-Ray并到3D模型生成
圖6:文本到X-Ray并到3D模型生成
未來展望:新表示帶來無限可能
隨著機器學習和圖像處理技術的不斷進步,X-Ray的應用前景無限廣闊。
未來,這種技術可能會與增強現實(AR)和虛擬現實(VR)技術結合,為用戶創造出完全沉浸式的3D體驗。教育和訓練領域也可以從中受益,例如通過3D重建提供更為直觀的學習材料和模擬實驗。
此外,X-Ray技術在醫療影像和生物技術領域的應用,可能改變人們對復雜生物結構的理解和研究方法。期待它如何改變與三維世界的互動方式。