【導讀】給一個文本提示就能生成3D模型!
自從文本引導的圖像生成模型火了以后,畫家群體迅速擴張,不會用畫筆的人也能發揮想象力進行藝術創作。
但目前的模型,如DALL-E 2, Imagen等仍然停留在二維創作(即圖片),無法生成360度無死角的3D模型。
想要直接訓練一個text-to-3D的模型非常困難,因為DALL-E 2等模型的訓練需要吞噬數十億個圖像-文本對,但三維合成并不存在如此大規模的標注數據,也沒有一個高效的模型架構對3D數據進行降噪。
最近Google研究員另辟蹊徑,提出一個新模型DreamFusion,先使用一個預訓練2D擴散模型基于文本提示生成一張二維圖像,然后引入一個基于概率密度蒸餾的損失函數,通過梯度下降法優化一個隨機初始化的神經輻射場NeRF模型。
論文鏈接:https://arxiv.org/abs/2209.14988
訓練后的模型可以在任意角度、任意光照條件、任意三維環境中基于給定的文本提示生成模型,整個過程既不需要3D訓練數據,也無需修改圖像擴散模型,完全依賴預訓練擴散模型作為先驗。
從文本到3D模型
以文本為條件的生成性圖像模型現在支持高保真、多樣化和可控的圖像合成,高質量來源于大量對齊的圖像-文本數據集和可擴展的生成模型架構,如擴散模型。
雖然二維圖像生成的應用場景十分廣泛,但諸如游戲、電影等數字媒體仍然需要成千上萬的詳細的三維資產來填充豐富的互動環境。
目前,3D資產的獲取方式主要由Blender和Maya3D等建模軟件手工設計,這個過程需要耗費大量的時間和專業知識。
2020年,神經輻射場(NeRF)模型發布,其中體積光線追蹤器與從空間坐標到顏色和體積密度的神經映射相結合,使得NeRF已經成為神經逆向渲染的一個重要工具。
最初,NeRF被發現可以很好地用于「經典」的三維重建任務:一個場景下的不同角度圖像提供給一個模型作為輸入,然后優化NeRF以恢復該特定場景的幾何形狀,能夠從未觀察到的角度合成該場景的新視圖。
很多三維生成方法都是基于NeRF模型,比如2022年提出的Dream Fields使用預訓練的CLIP模型和基于優化的方法來訓練NeRF,直接從文本中生成3D模型,但這種方式生成的三維物體往往缺乏真實性和準確性。
DreamFusion采用了與Dream Field類似的方法,但模型中的損失函數基于概率密度蒸餾,最小化基于擴散的前向過程的共享的高斯分布族與預訓練的擴散模型所學習的分數函數之間的KL散度。
擴散模型是一個隱變量生成模型,學習如何逐步將一個樣本從簡單的噪聲分布轉換到數據分布。
擴散模型的包括一個前向過程(forward process),緩慢地從數據中添加噪聲并移除結構,兩個時間步之間的過渡通常服從高斯分布,并在反向過程(reverse process)或生成式模型中在噪聲上逐漸添加結構。
現有的擴散模型采樣方法產生的樣本與模型訓練的觀測數據類型和維度相同,盡管有條件的擴散采樣能夠實現相當大的靈活性,但在像素上訓練的擴散模型傳統上只用來對像素進行采樣。
但像素采樣并不重要,研究人員只希望創建的三維模型在從隨機角度渲染時,看起來像是一張好的圖像。
可微分圖像參數化(DIP)允許模型表達約束條件,在更緊湊的空間中進行優化(例如任意分辨率的基于坐標的MLPs),或利用更強大的優化算法來遍歷像素空間。
對于三維來說,參數θ是三維體積的參數,可微生成器g是體積渲染器,為了學習這些參數,需要一個可以應用于擴散模型的損失函數。
文中采用的方法是利用擴散模型的結構,通過優化實現可操作的取樣,當損失函數最小化時生成一個樣本,然后對參數θ進行優化,使x=g(θ)看起來像凍結擴散模型的樣本。
為了進行這種優化,還需要一個可微的損失函數,其中可信的圖像具有較低的損失,而不可信的圖像有高的損失,與DeepDream的過程類似。
在實踐中,研究人員發現即使是在使用一個相同的DIP時,損失函數也無法生成現實的樣本。但同期的一項工作表明,這種方法可以通過精心選擇的時間步長來實現,但這個目標很脆弱,其時間步長的調整也很困難。
通過觀察和分解梯度可以發現,U-Net Jacobian項的計算成本很高(需要通過擴散模型U-Net進行反向傳播),而且對于小的噪聲水平來說條件很差,因為它的訓練目標為近似于邊際密度的縮放Hessian
通過實驗,研究人員發現省略U-Net的Jacobian項可以帶來一個有效的梯度結果,能夠用于優化帶有擴散模型的DIPs
直觀來看,這個損失用對應于時間步長的隨機數量的噪聲來擾動輸入數據,并估計出一個更新方向,該方向遵循擴散模型的得分函數,以移動到一個更高密度的區域。
雖然這種用擴散模型學習DIP的梯度可能看起來很特別,但實驗結果表明更新方向確實是從擴散模型學到的得分函數中得到的加權概率密度蒸餾損失的梯度。
研究人員將該采樣方法命名為得分蒸餾采樣(Score Distillation Sampling, SDS),因為該過程與蒸餾有關,但使用的是得分函數而不是密度。
下一步就是通過將SDS與為該3D生成任務定制的NeRF變體相結合,DreamFusion可以為一組不同的用戶提供的文本提示生成了高保真的連貫的3D物體和場景。
文章中采用的預訓練擴散模型為Imagen,并且只使用分辨率為64×64的基礎模型,并按原樣使用這個預訓練的模型,不做任何修改。
然后用隨機權重初始化一個類似于NeRF的模型,從隨機的相機位置和角度反復渲染該NeRF的視圖,用這些渲染結果作為環繞Imagen的分數蒸餾損失函數的輸入。
給出一個預訓練好的文本到圖像的擴散模型,一個以NeRF形式存在的可w微分的圖像參數化DIP,以及一個損失函數(最小值代表好樣本),這樣無三維數據的文本到三維合成所需的所有組件就齊活了。
對于每個文本提示,都從頭開始訓練一個隨機初始化的NeRF。
DreamFusion優化的每次迭代都包含四步:
1、隨機采樣一個相機和燈光
在每次迭代中,相機位置在球面坐標中被隨機采樣,仰角范圍從-10°到90°,方位角從0°到360°,與原點的距離為1到1.5
同時還在原點周圍取樣一個看(look-at)的點和一個向上(up)的矢量,并將這些與攝像機的位置結合起來,創建一個攝像機的姿勢矩陣。同時對焦距乘數服從U(0.7, 1.35)進行采樣,點光位置是從以相機位置為中心的分布中采樣的。
使用廣泛的相機位置對合成連貫的三維場景至關重要,寬泛的相機距離也有助于提高學習場景的分辨率。
2、從該相機和燈光下渲染NeRF的圖像
考慮到相機的姿勢和光線的位置,以64×64的分辨率渲染陰影NeRF模型。在照明的彩色渲染、無紋理渲染和沒有任何陰影的反照率渲染之間隨機選擇。
3、計算SDS損失相對于NeRF參數的梯度
通常情況下,文本prompt描述的都是一個物體的典型視圖,在對不同的視圖進行采樣時,這些視圖并不是最優描述。根據隨機采樣的相機的位置,在提供的輸入文本中附加與視圖有關的文本是有益的。
對于大于60°的高仰角,在文本中添加俯視(overhead view),對于不大于60°的仰角,使用文本embedding的加權組合來添加前視圖、側視圖 或 后視圖,具體取決于方位角的值。
4、使用優化器更新NeRF參數
3D場景在一臺有4個芯片的TPUv4機器上進行了優化,每個芯片渲染一個單獨的視圖并評估擴散U-Net,每個設備的batch size為1。優化了15,000次迭代,大約需要1.5小時。
實驗部分評估了DreamFusion從各種文本提示中生成連貫的3D場景的能力。
與現有的zero-shot文本到3D生成模型進行比較后可以發現,DreamFusion模型中能夠實現精確3D幾何的關鍵組件。
通過對比DreamFusion和幾個基線的R-精度,包括Dream Fields、CLIP-Mesh和一個評估MS-COCO中原始字幕圖像的oracle,可以發現DreamFusion在彩色圖像上的表現超過了這兩個基線,并接近于ground-truth圖像的性能。
雖然Dream Fields的實現在用無紋理渲染評估幾何圖形(Geo)時表現得很好,但DreamFusion在58.5%的情況里與標準一致。
審核編輯 :李倩
-
圖像
+關注
關注
2文章
1083瀏覽量
40418 -
3D模型
+關注
關注
1文章
72瀏覽量
15687
原文標題:3D版DALL-E來了!谷歌發布文本3D生成模型DreamFusion,給一個文本提示就能生成3D模型!
文章出處:【微信號:CVer,微信公眾號:CVer】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論