彌合2D和3D生成領(lǐng)域之間的次元壁,X-Dreamer實現(xiàn)高質(zhì)量的文本到3D生成
近年來,在預(yù)訓(xùn)練的擴散模型 [1, 2, 3] 的開發(fā)推動下,自動 text-to-3D 內(nèi)容創(chuàng)建取得了重大進(jìn)展。其中,DreamFusion [4] 引入了一種有效的方法,該方法利用預(yù)訓(xùn)練的 2D 擴散模型 [5] 從文本中自動生成 3D 資產(chǎn),從而無需專門的 3D 資產(chǎn)數(shù)據(jù)集。
DreamFusion 引入的一項關(guān)鍵創(chuàng)新是分?jǐn)?shù)蒸餾采樣 (SDS) 算法。該算法利用預(yù)訓(xùn)練的 2D 擴散模型對單個 3D 表示進(jìn)行評估,例如 NeRF [6],從而對其進(jìn)行優(yōu)化,以確保來自任何攝像機視角的渲染圖像與給定文本保持較高的一致性。受開創(chuàng)性 SDS 算法的啟發(fā),出現(xiàn)了幾項工作 [7,8,9,10,11],通過應(yīng)用預(yù)訓(xùn)練的 2D 擴散模型來推進(jìn) text-to-3D 生成任務(wù)。
雖然 text-to-3D 的生成通過利用預(yù)訓(xùn)練的 text-to-2D 的擴散模型已經(jīng)取得了重大進(jìn)展,但是 2D 圖像和 3D 資產(chǎn)之間仍存在很大的領(lǐng)域差距。這種區(qū)別在圖 1 中清楚地展示出來。
首先,text-to-2D 模型產(chǎn)生與相機無關(guān)的生成結(jié)果,專注于從特定角度生成高質(zhì)量圖像,而忽略其他角度。相比之下,3D 內(nèi)容創(chuàng)建與相機參數(shù) (如位置、拍攝角度和視場) 錯綜復(fù)雜地聯(lián)系在一起。因此,text-to-3D 模型必須在所有可能的相機參數(shù)上生成高質(zhì)量的結(jié)果。
此外,text-to-2D 生成模型必須同時生成前景和背景元素,同時保持圖像的整體連貫性。相反,text-to-3D 生成模型只需要集中在創(chuàng)建前景對象上。這種區(qū)別允許 text-to-3D 模型分配更多的資源和注意力來精確地表示和生成前景對象。因此,當(dāng)直接采用預(yù)訓(xùn)練的 2D 擴散模型進(jìn)行 3D 資產(chǎn)創(chuàng)建時,text-to-2D 和 text-to-3D 生成之間的域差距構(gòu)成了顯著的性能障礙。
圖 1 text-to-2D 生成模型 (左) 和 text-to-3D 生成模型 (右) 在同一文本提示下的輸出,即 "A statue of Leonardo DiCaprio's head.”。
為了解決這個問題,論文提出了 X-Dreamer,這是一種用于高質(zhì)量 text-to-3D 內(nèi)容創(chuàng)建的新穎方法,可以有效地彌合 text-to-2D 和 text-to-3D 生成之間的領(lǐng)域差距。
X-Dreamer 的關(guān)鍵組成部分是兩種創(chuàng)新設(shè)計: Camera-Guided Low-Rank Adaptation (CG-LoRA) 和 Attention-Mask Alignment (AMA) 損失。
首先,現(xiàn)有方法 [7,8,9,10] 通常采用 2D 預(yù)訓(xùn)練擴散模型 [5,12] 來進(jìn)行 text-to-3D 生成,缺乏與相機參數(shù)的固有聯(lián)系。為了解決此限制并確保 X-Dreamer 產(chǎn)生直接受相機參數(shù)影響的結(jié)果,論文引入了 CG-LoRA 來調(diào)整預(yù)訓(xùn)練的 2D 擴散模型。值得注意的是,在每次迭代期間 CG-LoRA 的參數(shù)都是基于相機信息動態(tài)生成的,從而在 text-to-3D 模型和相機參數(shù)之間建立魯棒的關(guān)系。
其次,預(yù)訓(xùn)練的 text-to-2D 擴散模型將注意力分配給前景和背景生成,而 3D 資產(chǎn)的創(chuàng)建需要更加關(guān)注前景對象的準(zhǔn)確生成。為了解決這一問題,論文提出了 AMA 損失,使用 3D 對象的二進(jìn)制掩碼來指導(dǎo)預(yù)訓(xùn)練的擴散模型的注意力圖,從而優(yōu)先考慮前景對象的創(chuàng)建。通過合并該模塊,X-Dreamer 優(yōu)先考慮前景對象的生成,從而顯著提高了生成的 3D 內(nèi)容的整體質(zhì)量。
項目主頁:
https://xmu-xiaoma666.github.io/Projects/X-Dreamer/
Github主頁:https://github.com/xmu-xiaoma666/X-Dreamer
論文地址:https://arxiv.org/abs/2312.00085
X-Dreamer 對 text-to-3D 生成領(lǐng)域做出了如下貢獻(xiàn):
- 論文提出了一種新穎的方法,X-Dreamer,用于高質(zhì)量的 text-to-3D 內(nèi)容創(chuàng)建,有效地彌合了 text-to-2D 和 text-to-3D 生成之間的主要差距。
- 為了增強生成的結(jié)果與相機視角之間的對齊,論文提出了 CG-LoRA,利用相機信息來動態(tài)生成 2D 擴散模型的特定參數(shù)。
- 為了在 text-to-3D 模型中優(yōu)先創(chuàng)建前景對象,論文引入了 AMA 損失,利用前景 3D 對象的二進(jìn)制掩碼來引導(dǎo) 2D 擴散模型的注意圖。
方法
X-Dreamer 包括兩個主要階段:幾何學(xué)習(xí)和外觀學(xué)習(xí)。對于幾何學(xué)習(xí),論文采用 DMTET 作為 3D 表示,并利用 3D 橢球?qū)ζ溥M(jìn)行初始化,初始化時的損失函數(shù)采用均方誤差 (MSE) 損失。隨后,論文使用分?jǐn)?shù)蒸餾采樣 (SDS) 損失和論文提出的 AMA 損失來優(yōu)化 DMTET 和 CG-LoRA,以確保 3D 表示和輸入文本提示之間的對齊。
對于外觀學(xué)習(xí),論文利用雙向反射分布函數(shù) (BRDF) 建模。具體來說,論文利用具有可訓(xùn)練參數(shù)的 MLP 來預(yù)測表面材料。類似于幾何學(xué)習(xí)階段,論文使用 SDS 損失和 AMA 損失來優(yōu)化 MLP 和 CG-LoRA 的可訓(xùn)練參數(shù),以實現(xiàn) 3D 表示和文本提示之間的對齊。圖 2 展示了 X-Dreamer 的詳細(xì)構(gòu)成。
圖 2 X-Dreamer 概覽,包括幾何學(xué)習(xí)和外觀學(xué)習(xí)。
幾何學(xué)習(xí) (Geometry Learning)
在此模塊中,X-Dreamer 利用 MLP 網(wǎng)絡(luò)將 DMTET 參數(shù)化為 3D 表示。為了增強幾何建模的穩(wěn)定性,本文使用 3D 橢球體作為 DMTET
的初始配置。對于屬于四面體網(wǎng)格
的每個頂點
,本文訓(xùn)練
來預(yù)測兩個重要的量:SDF 值
和變形偏移量
。為了將
初始化為橢球體,本文采樣了均勻分布在橢球體內(nèi)的 N 個點,并計算相應(yīng)的 SDF 值
。隨后,利用均方誤差(MSE)損失來優(yōu)化
。該優(yōu)化過程確保
有效地初始化 DMTET,使其類似于 3D 橢球體。MSE 損失的公式如下:
初始化幾何圖形后,將 DMTET 的幾何圖形與輸入文本提示對齊。具體的操作方法是通過使用差分渲染技術(shù),在給定隨機采樣的相機姿勢 c 的情況下,從初始化的 DMTET生成法線映射 n 和對象的掩碼 m 。隨后,將法線映射 n 輸入到具有可訓(xùn)練 CG-LoRA 嵌入的凍結(jié)的 Stable Diffusion 模型(SD)中,并使用 SDS 損失更新
中的參數(shù),定義如下:
其中,表示 SD 的參數(shù),
為在給定噪聲水平 t 和文本嵌入 y 的情況下的 SD 的預(yù)測噪聲。此外,
,其中
表示從正態(tài)分布采樣的噪聲。
、
和
的實現(xiàn)基于 DreamFusion [4]。
此外,為了將 SD 集中于生成前景對象,X-Dreamer 引入了額外的 AMA 損失,以將對象掩碼 與 SD 的注意力圖對齊,如下所示:
其中表示注意力層的數(shù)量,
是第 i 個注意力層的注意力圖。函數(shù)
用于調(diào)整渲染出來的 3D 對象掩碼的大小,確保它的尺寸與注意力圖的尺寸對齊。
外觀學(xué)習(xí) (Appearance Learning)
在獲得 3D 對象的幾何結(jié)構(gòu)后,本文的目標(biāo)是使用基于物理的渲染(PBR)材料模型來計算 3D 對象的外觀。材料模型包括擴散項,粗糙度和金屬項
,以及法線變化項
。對于幾何體表面上的任一點
,利用由參數(shù)化的多層感知機(MLP)來獲得三個材料項,具體可以表示如下:
其中,表示利用哈希網(wǎng)格技術(shù)進(jìn)行位置編碼。之后,可以使用如下公式計算渲染圖像的每個像素:
其中,表示從方向
渲染 3D 物體表面的點
的像素值。
表示由滿足條件
的入射方向集合
定義的半球,其中
表示入射方向,
表示點
處的表面法線。
對應(yīng)于來自現(xiàn)成環(huán)境圖的入射光,
是與材料特性(即
)相關(guān)的雙向反射分布函數(shù) (BRDF)。通過聚合所有渲染的像素顏色,可以獲得渲染圖像
。與幾何學(xué)習(xí)階段類似,將渲染圖像
輸入 SD,利用 SDS 損失和 AMA 損失優(yōu)化
。
Camera-Guided Low-Rank Adaptation (CG-LoRA)
為了解決 text-to-2D 和 text-to-3D 的生成任務(wù)之間存在的領(lǐng)域差距而導(dǎo)致的次優(yōu)的 3D 結(jié)果的生成,X-Dreamer 提出了 Camera-Guided Low-Rank Adaptation。
如圖 3 所示,利用攝像機參數(shù)和方向感知文本來指導(dǎo) CG-LoRA 中參數(shù)的生成,使 X-Dreamer 能夠有效地感知攝像機的位置和方向信息。
圖 3 攝像機引導(dǎo)的 CG-LoRA 示意。
具體的,給定文本提示和相機參數(shù)
,首先使用預(yù)訓(xùn)練的文本 CLIP 編碼器
和可訓(xùn)練的 MLP
,將這些輸入投影到特征空間中:
其中,和
分別是是文本特征和相機特征。之后,使用兩個低秩矩陣將
和
投影到 CG-LoRA 中的可訓(xùn)練降維矩陣中:
其中,和
是 CG-LoRA 的兩個降維矩陣。函數(shù)
用于將張量的形狀從變換為
。
和
是兩個低秩矩陣。因此,可以將它們分解為兩個矩陣的乘積,以減少實現(xiàn)中的可訓(xùn)練參數(shù),即
;
,其中
,
,
,
,
是一個很小的數(shù)字(如:4)。根據(jù) LoRA 的構(gòu)成,將維度擴展矩陣
初始化為零,以確保模型開始使用 SD 的預(yù)訓(xùn)練參數(shù)進(jìn)行訓(xùn)練。因此,CG-LoRA 的前饋過程公式如下:
其中, 表示預(yù)訓(xùn)練的 SD 模型的凍結(jié)參數(shù),
是級聯(lián)運算。在本方法的實現(xiàn)中,將 CG-LoRA 集成到 SD 中注意力模塊的線性嵌入層中,以有效地捕捉方向和相機信息。
Attention-Mask Alignment Loss (AMA Loss)
SD 被預(yù)訓(xùn)練以生成 2D 圖像,同時考慮了前景和背景元素。然而,text-to-3D 的生成需要更加重視前景對象的生成。鑒于這一要求,X-Dreamer 提出了 Attention-Mask Alignment Loss(AMA 損失),以將 SD 的注意力圖與 3D 對象的渲染的掩碼圖像對齊。具體的,對于預(yù)訓(xùn)練的 SD 中的每個注意力層,本方法使用查詢圖像特征和關(guān)鍵 CLS 標(biāo)記特征
來計算注意力圖。計算公式如下:
其中, 表示多頭注意力機制中的頭的數(shù)量,
表示注意力圖,之后,通過對所有注意力頭中注意力圖
的注意力值進(jìn)行平均來計算整體注意力圖
的值。
由于使用 softmax 函數(shù)對注意力圖值進(jìn)行歸一化,因此當(dāng)圖像特征分辨率較高時,注意力圖中的激活值可能變得非常小。但是,考慮到渲染的 3D 對象掩碼中的每個元素都是 0 或 1 的二進(jìn)制值,因此將注意力圖與渲染的 3D 對象的掩碼直接對齊不是最佳的。為了解決這個問題,論文提出了一種歸一化技術(shù),該技術(shù)將注意力圖中的值映射到(0,1)之間。此歸一化過程的公式如下:
其中,代表一個小的常數(shù)值 (例如
),來防止分母中出現(xiàn) 0。最后,使用 AMA 損失將所有注意力層的注意力圖與 3D 對象的渲染的掩碼對齊。
實驗結(jié)果
論文使用四個 Nvidia RTX 3090 GPU 和 PyTorch 庫進(jìn)行實驗。為了計算 SDS 損失,利用了通過 Hugging Face Diffusers 實現(xiàn)的 Stable Diffusion 模型。對于 DMTET 和 material 編碼器,將它們分別實現(xiàn)為兩層 MLP 和單層 MLP,隱藏層維度為 32。
從橢球體開始進(jìn)行 text-to-3D 的生成
論文展示了 X-Dreamer 利用橢球作為初始幾何形狀的 text-to-3D 的生成結(jié)果,如圖 4 所示。結(jié)果證明 X-Dreamer 具有生成高質(zhì)量和照片般逼真的 3D 對象的能力,生成的 3D 對象與輸入的文本提示準(zhǔn)確對應(yīng)。
圖 4 從橢球體開始進(jìn)行 text-to-3D 的生成。
從粗粒度網(wǎng)格開始進(jìn)行 text-to-3D 的生成
雖然可以從互聯(lián)網(wǎng)上下載大量粗粒度網(wǎng)格,但由于缺乏幾何細(xì)節(jié),直接使用這些網(wǎng)格創(chuàng)建 3D 內(nèi)容往往會導(dǎo)致性能較差。然而,與 3D 橢球體相比,這些網(wǎng)格可以為 X-Dreamer 提供更好的 3D 形狀先驗信息。
因此,也可以使用粗粒度引導(dǎo)網(wǎng)格來初始化 DMTET,而不是使用橢球。如圖 5 所示,X-Dreamer 可以基于給定的文本生成具有精確幾何細(xì)節(jié)的 3D 資產(chǎn),即使所提供的粗粒度網(wǎng)格缺乏細(xì)節(jié)。
圖 5 從粗粒度網(wǎng)格開始進(jìn)行 text-to-3D 的生成。
定性比較
為了評估 X-Dreamer 的有效性,論文將其與四種 SOTA 方法進(jìn)行比較: DreamFusion [4],Magic3D [8],F(xiàn)antasia3D [7] 和 ProlificDreamer [11],如圖 6 所示。
當(dāng)與基于 SDS 的方法進(jìn)行比較時 [4,7,8],X-Dreamer 在生成高質(zhì)量和逼真的 3D 資產(chǎn)方面優(yōu)于他們。此外,與基于 VSD 的方法 [11] 相比,X-Dreamer 產(chǎn)生的 3D 內(nèi)容具有相當(dāng)甚至更好的視覺效果,同時需要的優(yōu)化時間明顯減少。具體來說,X-Dreamer 的幾何形狀和外觀學(xué)習(xí)過程只需要大約 27 分鐘,而 ProlificDreamer 則超過 8 小時。
圖 6 與現(xiàn)有技術(shù) (SOTA) 方法的比較。
消融實驗
- 模塊消融
為了深入了解 CG-LoRA 和 AMA 損失的能力,論文進(jìn)行了消融研究,其中每個模塊單獨加入以評估其影響。如圖 7 所示,消融結(jié)果表明,當(dāng) CG-LoRA 被排除在 X-Dreamer 之外時,生成的 3D 對象的幾何形狀和外觀質(zhì)量顯著下降。
此外,X-Dreamer 缺失 AMA 損失也對生成的 3D 資產(chǎn)的幾何形狀和外觀保真度產(chǎn)生有害影響。這些消融實驗為 CG-LoRA 和 AMA 損失在增強生成的 3D 對象的幾何形狀、外觀和整體質(zhì)量方面的單獨貢獻(xiàn)提供了有價值的研究。
圖 7 X-Dreamer 的消融研究。
- 有無 AMA 損失的注意力圖比較
引入 AMA 損失的目的是將去噪過程中的注意力引導(dǎo)到前景對象。這個是通過將 SD 的注意力圖與 3D 對象的渲染掩碼對齊來實現(xiàn)的。為了評估 AMA 損失在實現(xiàn)這一目標(biāo)方面的有效性,論文在幾何學(xué)習(xí)和外觀學(xué)習(xí)階段可視化了有和沒有 AMA 損失的 SD 的注意力圖。
如圖 8 所示,可以觀察到,加入 AMA 損失不僅會改善生成的 3D 資產(chǎn)的幾何形狀和外觀,而且會將 SD 的注意力特別集中在前景對象區(qū)域上??梢暬C實了 AMA 損失在引導(dǎo) SD 注意力方面的有效性,從而在幾何和外觀學(xué)習(xí)階段提高了質(zhì)量和前景對象的聚焦。
圖 8 注意力圖、渲染掩碼和渲染圖像的可視化,包括和不包括 AMA 損失。
這項研究引入了一個名為 X-Dreamer 的開創(chuàng)性框架,該框架旨在通過解決 text-to-2D 和 text-to-3D 生成之間的領(lǐng)域差距來增強 text-to-3D 的生成。為了實現(xiàn)這一點,論文首先提出了 CG-LoRA,這是一個將 3D 相關(guān)信息(包括方向感知文本和相機參數(shù))合并到預(yù)訓(xùn)練的 Stable Diffusion(SD)模型中的模塊。通過這樣做,本文能夠有效地捕獲與 3D 領(lǐng)域相關(guān)的信息。此外,本文設(shè)計了 AMA 損失,以將 SD 生成的注意力圖與 3D 對象的渲染掩碼對齊。AMA 損失的主要目標(biāo)是引導(dǎo) text-to-3D 模型的焦點朝著前景對象的生成方向發(fā)展。通過廣泛的實驗,本文徹底評估了提出方法的有效性,證明了 X-Dreamer 能夠根據(jù)給定的文本提示生成高質(zhì)量和真實的 3D 內(nèi)容。