通用場景拉滿了!GenXD:生成任何3D&4D場景(新加坡國立&微軟最新)
寫在前面&筆者的個人理解
近年來,利用擴(kuò)散和自回歸建模生成2D視覺內(nèi)容已經(jīng)取得了顯著成功,并已在實際應(yīng)用中進(jìn)行廣泛使用。除了 2D 生成之外,3D 內(nèi)容生成也至關(guān)重要,可應(yīng)用于視頻游戲、視覺效果和可穿戴混合現(xiàn)實設(shè)備。然而,由于 3D 建模的復(fù)雜性和 3D 數(shù)據(jù)的局限性,3D 內(nèi)容生成仍然遠(yuǎn)遠(yuǎn)不能令人滿意,并且正在引起學(xué)術(shù)界和工業(yè)界越來越多的關(guān)注。
之前大多數(shù)的研究工作主要聚焦于使用合成的目標(biāo)數(shù)據(jù)實現(xiàn)3D和4D內(nèi)容的生成。合成的目標(biāo)數(shù)據(jù)通常是網(wǎng)格,從而允許研究人員從任何的視角來渲染圖像和其他的3D信息。然而,目標(biāo)生成對領(lǐng)域?qū)<业囊嫣庍h(yuǎn)遠(yuǎn)大于大眾。相比之下,場景級的生成可以幫助每個人用更加豐富的內(nèi)容來增強(qiáng)他們的圖像以及視頻。因此,最近的研究探索了單一模型中的一般 3D 生成,并取得了令人印象深刻的生成性能。盡管如此,這些研究工作僅關(guān)注靜態(tài) 3D 生成,而沒有解決動態(tài)的問題。
考慮到 4D 生成面臨的首要挑戰(zhàn)是缺乏通用 4D 數(shù)據(jù)。在這項工作中,我們提出了 CamVid-30K數(shù)據(jù)集,其中包含大約 30K 個 4D 數(shù)據(jù)樣本。4D 數(shù)據(jù)需要多視圖空間信息和時間動態(tài),因此我們轉(zhuǎn)向視頻數(shù)據(jù)來獲取必要的 4D 數(shù)據(jù)。
此外,我們也提出了一個統(tǒng)一的框架 GenXD,用于在單個模型中處理 3D 和 4D 生成,能夠從不同視角和時戳生成任意數(shù)量的條件圖像,其生成的部分內(nèi)容如下圖所示。
此外,我們對各種現(xiàn)實世界和合成數(shù)據(jù)集進(jìn)行了廣泛的實驗和評估,證明了與之前的 3D 和 4D 生成方法相比,我們提出的GenXD算法模型具有更好的有效性和多功能性。
論文鏈接:https://arxiv.org/pdf/2411.02319
GenXD網(wǎng)絡(luò)結(jié)構(gòu)&技術(shù)細(xì)節(jié)梳理
生成模型
由于大多數(shù)的場景級3D和4D數(shù)據(jù)通過視頻獲得,因此這些數(shù)據(jù)缺少明確的表示。所以,我們采用一種生成與空間相機(jī)姿勢和時間戳步長對齊的圖像的方法。具體而言,我們將擴(kuò)散模型納入到我們的框架當(dāng)中,引入額外的多視圖時域?qū)樱ǘ嘁晥D時序ResBlocks和多視圖時序Transformer,以解耦和融合3D和時序信息,下面是我們提出的GenXD的整體網(wǎng)絡(luò)結(jié)構(gòu)圖。
Mask Latent Conditioned Diffusion Model
GenXD 生成具有相機(jī)姿勢和參考圖像的多視圖圖像和視頻,因此它需要相機(jī)和圖像條件。相機(jī)條件對于每幅圖像都是獨立的,無論是 條件性的還是有針對性的。因此,很容易將其附加到每個潛在圖像中。在這里,我們選擇Plucker射線作為相機(jī)條件
Plucker 射線是一種密集嵌入編碼,不僅編碼了像素信息,還編碼了相機(jī)位姿和內(nèi)在信息,相比于全局相機(jī)而言更具有優(yōu)勢。參考圖像條件更為復(fù)雜。GenXD 旨在通過單視圖和多視圖輸入進(jìn)行 3D 和 4D 生成。單視圖生成要求較低,而多視圖生成結(jié)果更一致。因此,將單視圖和多視圖生成結(jié)合起來將帶來更好的實際應(yīng)用。
然而,之前的相關(guān)研究工作通過將潛在條件連接到目標(biāo)潛在條件,并通過交叉注意力合并CLIP模型的圖像嵌入來生成圖像。連接方式的改變需要更改模型的通道,無法處理任意輸入視圖。CLIP嵌入可以支持多種條件。然而,這兩種方式都無法對多種條件的位置信息進(jìn)行建模,也無法對輸入視圖之間的信息進(jìn)行建模。鑒于這種局限性,我們利用掩碼作為潛在條件來處理圖像條件。如上圖所示,我們使用VAE編碼器之后,對目標(biāo)幀應(yīng)用前向擴(kuò)散過程,使用條件保持原樣。然后通過去噪模型估計兩幀上的噪聲,并通過后向過程進(jìn)行去除。
掩碼潛在條件有三個主要優(yōu)點。首先,模型可以支持任何輸入視圖而無需修改參數(shù)。其次,對于序列生成(多視圖圖像或視頻),我們不需要限制條件幀的位置,因為條件幀在序列中保持其位置。相反,許多工作要求條件圖像在序列中的固定位置(通常是第一幀)。第三,如果沒有來自其他模型的條件嵌入,可以刪除用于集成條件嵌入的交叉注意層,這將大大減少模型參數(shù)的數(shù)量。為此,我們在GenXD算法模型中利用掩碼潛在條件方法。
MultiView-Temporal Modules
3D表達(dá)生成
GenXD 可以使用一個或多個條件圖像生成具有不同視點和時間步長的圖像。但是,為了呈現(xiàn)任意的 3D 一致視圖,我們需要將生成的樣本提升為 3D 表示。以前的工作通常通過從生成模型中提取知識來優(yōu)化 3D 表示。由于 GenXD 可以生成高質(zhì)量且一致的結(jié)果,我們直接使用生成的圖像來優(yōu)化 3D 表示。具體來說,我們利用 3D Gaussian Splatting 和 Zip-NeRF 進(jìn)行 3D 生成,利用 4D Gaussian Splatting (4D-GS) 進(jìn)行 4D 生成。
CAMVID-30K數(shù)據(jù)集介紹
由于缺乏大規(guī)模 4D 場景數(shù)據(jù)限制了動態(tài) 3D 任務(wù)的發(fā)展,包括但不限于 4D 生成、動態(tài)相機(jī)姿勢估計和可控視頻生成。為了解決這個問題,我們在本文中引入了一個高質(zhì)量的 4D 數(shù)據(jù)集。首先,我們使用基于結(jié)構(gòu)運動 (SfM) 的方法估計相機(jī)姿勢,然后使用所提出的運動強(qiáng)度過濾掉沒有物體運動的數(shù)據(jù),整個流程如下圖所示。
相機(jī)位姿估計
相機(jī)姿態(tài)估計基于SfM,它從一系列圖像中的投影重建 3D 結(jié)構(gòu)。SfM 涉及三個主要步驟:(1) 特征檢測和提取,(2) 特征匹配和幾何驗證,(3) 3D 重建和相機(jī)姿態(tài)估計。在第二步中,匹配的特征必須位于場景的靜態(tài)部分。否則,在特征匹配期間,物體移動將被解釋為相機(jī)移動,這會損害相機(jī)姿態(tài)估計的準(zhǔn)確性。為了獲得準(zhǔn)確的相機(jī)姿勢,必須分割所有移動像素。在這種情況下,假陽性錯誤比假陰性更容易接受。為了實現(xiàn)這一點,我們使用實例分割模型來貪婪地分割所有可能移動的像素。在分割出可能移動的像素后,我們使用 Particle-SfM估計相機(jī)姿態(tài),以獲得相機(jī)信息和稀疏點云。
目標(biāo)運動估計
雖然實例分割可以準(zhǔn)確地將物體與背景分開,但它無法確定物體本身是否在移動,而靜態(tài)物體會對運動學(xué)習(xí)產(chǎn)生負(fù)面影響。因此,我們引入了運動強(qiáng)度來識別真正的物體運動,并過濾掉只有靜態(tài)物體的視頻。
由于攝像機(jī)運動和物體運動都存在于視頻中,因此基于 2D 的運動估計方法無法準(zhǔn)確表示真實的物體運動。有兩種方法可以捕捉真實的物體運動:通過測量 3D 空間中的運動或通過將視頻中的運動投影到同一臺攝像機(jī)。這兩種方法都需要與攝像機(jī)姿勢比例對齊的深度圖。稀疏深度圖可以通過投影 3D 點云到相機(jī)視角來獲得
由于在 3D 重建過程中僅匹配靜態(tài)部分的特征,因此我們只能獲得靜態(tài)區(qū)域的稀疏點云。然而,動態(tài)部分的深度信息對于估計運動至關(guān)重要。為了解決這個問題,我們利用預(yù)先訓(xùn)練的相對單目深度估計模型來預(yù)測每幀的相對深度,然后我們應(yīng)用比例因子和移位來使其與 SfM 稀疏深度對齊
有了對齊的深度,我們可以將幀中的動態(tài)目標(biāo)投影到 3D 空間中,從而提供一種直接測量目標(biāo)運動的方法。如上圖 (b) 所示,如果目標(biāo)(例如,穿綠色襯衫的人)正在移動,則投影的 3D 點云中將發(fā)生位移。但是,由于 SfM 的運行范圍很廣,因此直接在 3D 空間中測量運動可能會導(dǎo)致幅度問題。因此,我們將動態(tài)目標(biāo)投影到相鄰視圖中并估計目標(biāo)運動場。
具體來說,我們首先需要在 2D 視頻中找到匹配點。我們不使用光流等密集表示,而是為每個目標(biāo)實例采樣關(guān)鍵點,并在 2D 視頻中使用視頻目標(biāo)分割和關(guān)鍵點跟蹤來建立匹配關(guān)系。然后將每個關(guān)鍵點投影到相鄰幀中。首先將第幀中的關(guān)鍵點反向投影到世界空間,以獲得 3D 關(guān)鍵點。
有了每個物體的運動場,我們可以通過平均運動場的絕對幅度來估計物體的全局運動。對于每個視頻,運動強(qiáng)度由所有物體中的最大運動值表示。如下圖所示,當(dāng)相機(jī)移動而物體保持靜止時(第二個示例),與有物體運動的視頻相比,運動強(qiáng)度明顯較小。使用運動強(qiáng)度,我們進(jìn)一步過濾掉缺乏明顯物體運動的數(shù)據(jù)。
實驗結(jié)果&評價指標(biāo)
4D生成實驗結(jié)果
我們將 GenXD 與開源相機(jī)條件視頻生成方法進(jìn)行了比較,我們使用Stable Video Diffusion作為baseline模型,并利用攝像機(jī)軌跡和第一幀條件生成視頻,相關(guān)的實驗結(jié)果如下表所示。
以第一視圖為條件,GenXD 在兩個指標(biāo)上均明顯優(yōu)于 CameraCtrl 和 MotionCtrl。此外,以 3 個視圖(第一幀、中間幀和最后一幀)為條件,GenXD 的表現(xiàn)遠(yuǎn)遠(yuǎn)優(yōu)于之前的作品。這些結(jié)果證明了 GenXD 在 4D 生成上的強(qiáng)大泛化能力。
此外,為了直觀的展現(xiàn)出GenXD算法模型的性能,我們將相關(guān)的生成結(jié)果展示在下圖中。我們比較了三種方法的定性結(jié)果。在這個例子中,MotionCtrl 無法生成明顯的物體運動,而 CameraCtrl 生成的視頻既不是 3D 的也不是時間一致的。相反,我們的單視圖條件模型可以生成流暢且一致的 4D 視頻。通過 3 個條件視圖,GenXD 可以生成非常逼真的結(jié)果。
3D生成實驗結(jié)果
對于少視圖 3D 重建設(shè)置,我們在分布內(nèi)和分布外數(shù)據(jù)集上評估 GenXD。我們從 Re10K 中選擇了 10 個場景,在 LLFF 中選擇了所有 8 個場景,每個場景中的 3 個視圖用于訓(xùn)練。使用渲染測試視圖上的 PSNR、SSIM 和 LPIPS 指標(biāo)評估性能。作為生成模型,GenXD 可以從稀疏輸入視圖中生成附加視圖,并提高任何重建方法的性能。在這個實驗中,我們利用了兩種基線方法:Zip-NeRF 和 3D-GS。這兩個基線是多視圖重建的方法,因此我們調(diào)整超參數(shù)以實現(xiàn)更好的少視圖重建。如下表所示,Zip-NeRF 和 3D-GS 都可以使用 GenXD 生成的圖像進(jìn)行改進(jìn),并且 Zip-NeRF 基線的改進(jìn)更為顯著。具體來說,Re10K(分布內(nèi))和 LLFF(分布外)上的 PSNR 分別提高了 4.82 和 5.13。
更加直觀的展示結(jié)果如下圖所示,使用生成的視圖,重建場景中的浮動物和模糊減少了。
結(jié)論
在本文中,我們提出了GenXD算法模型來處理一般的 3D 和 4D 內(nèi)容生成。GenXD 可以利用多視圖時間模塊來解開相機(jī)和物體的移動,并且能夠通過掩碼潛在條件來支持任意數(shù)量的輸入條件視圖。提出的GenXD算法模型可以處理多種應(yīng)用,并且可以通過一個模型在所有設(shè)置中實現(xiàn)相當(dāng)或更好的性能。