標題:<Enhancing Monocular 3D Scene Completion with Diffusion Model>
代碼:https://github.com/CharlieSong1999/FlashDreamer
來源:澳大利亞國立大學
文章目錄
- 摘要
- 一、前言
- 二、相關工作
- 2.1 場景重建
- 2.2 擴散模型
- 2.3 Vision language model (視覺語言模型)
- 三、問題定義
- 四、FlashDreamer
- 五、Flash3D
- 六、3DGS: Merge and align
- 實驗
摘要
??三維場景重建對于虛擬現實、機器人技術和自動駕駛等應用至關重要,它使機器能夠理解復雜環境并與之互動。傳統的三維高斯潑濺技術依賴從多視角拍攝的圖像以獲得最佳性能,但這種依賴性限制了其在僅能獲取單張圖像場景中的應用。本研究提出了FlashDreamer這一創新方法,通過單張圖像實現完整三維場景重建,大幅減少了對多視角輸入的需求。該方法利用預訓練的視覺-語言模型生成場景描述性提示,引導擴散模型生成多視角圖像,繼而融合形成連貫的三維重建。大量實驗表明,我們的方法能高效穩健地將單張圖像輸入擴展為完整三維場景,無需額外訓練即可擴展單目三維重建能力。
一、前言
??三維場景重建通過多幅輸入圖像生成場景的三維表征。這項計算機視覺領域的基礎任務為自動駕駛[31]、機器人技術[25]、游戲開發[27]以及虛擬/增強現實(VR/AR)[35]等應用提供空間表征基礎。近年來,三維高斯潑濺(3DGS)技術憑借其能以極少輸入實現高質量實時渲染的特性,已成為三維表征的熱門方法[3,8,14–16,21]。但3DGS通常需要多視角圖像才能達到最佳效果[3,30,32],這限制了其在單圖像場景中的適應性[17]。Flash3D[28]通過單圖像三維重建技術解決了這一問題,然而當從其他角度觀察此類重建結果時,原始圖像信息不足常導致偽影產生。例如旋轉視角時,初始輸入范圍外的區域常會出現空白或邊界偽影。
??為突破這些限制,可采用擴散模型[23]等生成式模型合成新視角圖像。然而擴散模型在生成同一場景的多幅圖像時往往存在一致性問題[1]——例如生成圖像間的重疊區域可能出現偏差,導致內容不一致。為此我們提出FlashDreamer:該方法通過預定義角度生成視圖,在Flash3D初始化的基礎上完成場景的三維高斯濺射建模。FlashDreamer利用中間3DGS表征對三維空間中的重疊區域進行對齊,從而解決一致性問題。此外,視覺語言模型(VLM)提供的輔助指導能增強擴散過程。本研究的主要貢獻包括:
- FlashDreamer Pipeline:我們推出FlashDreamer流程,該流程利用預訓練的Flash3D、擴散模型和視覺語言模型(VLMs),從輸入圖像及周邊視角構建完整3D場景。
- Alternative Configurations(可選配置):FlashDreamer的多種變體方案,包括采用不同擴散模型、旋轉角度以及為擴散模型選擇不同提示詞。
- 實驗驗證:定性與定量評估表明,FlashDreamer無需額外訓練即可實現高效的3D場景補全。
??
??
二、相關工作
2.1 場景重建
??場景重建指從一個或多個圖像創建真實環境三維表征的過程。在多重視角(圖像)重建領域已有諸多重要成果,從多視角立體視覺[24]、神經輻射場(NeRF)到三維高斯潑濺(3DGS)]。另一些方法專注于少樣本圖像重建[pixelsplat, latentsplat],展示了通過少量視角構建場景的能力。這些方法在多視角設置下能提供精確的實時渲染性能,但要么需要大量輸入圖像,要么要求輸入圖像間存在特定關聯[Gaussianobject],限制了其在少視角或單視角重建中的表現。為突破這一局限,最新研究提出了雙視角[Dust3R]和單視角重建器[Large spatial model:End-to-end unposed images to semantic 3d],利用Transformer在訓練期間捕捉跨視角關系。Flash3D[28]通過采用輕量級卷積層實現單圖像單目場景重建,以簡潔高效的方法推動了該領域發展。
??盡管如此,這些少視角重建方法僅能復原輸入圖像中的內容,使得場景缺失內容的補全成為難題。部分研究[15,16]采用全景圖像進行重建,得益于360度全覆蓋特性,這類方法能實現良好的場景閉環且不存在內容缺失。以PixelSynth[21]、Text2Room[11]和LucidDreamer[4]為代表的迭代式場景生成方法,則通過從局部視角或文本描述自回歸生成場景提供了新思路。
2.2 擴散模型
??計算機視覺中的擴散模型[5]旨在學習從受高斯噪聲干擾的圖像中去噪的過程,進而生成高質量且多樣化的圖像。作為深度生成方法之一,基于擴散的模型被廣泛應用于圖像合成[23]、視頻生成[10]和密集視覺預測[13]等現實場景中。以潛在擴散模型(LDMs)形式呈現的Stable Diffusion[19,23]在高分辨率圖像合成任務中取得了巨大成功。除圖像生成外,擴散模型在圖像修復領域同樣成果斐然——這項圖像編輯技術能根據用戶以文本描述、遮罩或布局[12]等形式提出的需求,對給定圖像進行編輯或補全。Ledits++[2]允許用戶通過提供標注待編輯目標區域的遮罩,結合描述該區域預期生成內容的文本來實現編輯。這種編輯流程與我們補全特定圖像區域的目標高度契合。
2.3 Vision language model (視覺語言模型)
??視覺語言模型(VLM)能夠捕捉圖像與文本之間的關聯性,無需微調即可應用于下游視覺語言任務[34]。開創性模型CLIP[20]采用文本嵌入與圖像嵌入的對比學習方法,二者分別通過獨立的編碼器提取。其核心目標是最大化匹配文本-圖像對的相似度,同時最小化非匹配對的相似度。盡管CLIP在圖文匹配方面表現卓越,但并未解決圖像到文本的生成問題。CoCa[33]通過提出解耦編碼器與解碼器的圖像描述生成框架解決了這一局限,實現了從圖像生成文本的功能。該模型中,圖像和文本先經過獨立編碼,隨后在多模態解碼器中進行交叉注意力處理以生成描述文本。本項工作中,我們采用當前最先進的開源視覺語言模型LLama3[6],基于輸入圖像為我們的處理流程生成文本描述。
??
三、問題定義
??給定單張圖像I0∈RH×W×3I_0∈R^{H×W×3}I0?∈RH×W×3,生成完整的三維場景表征RNR_NRN?,流程如圖1。定義一組三維場景集合{Ri′R'_iRi′?}i=0N^N_{i=0}i=0N?,在每一步中通過Flash3D[28]從單一視角生成,而{RiR_iRi?}i=0N^N_{i=0}i=0N?表示每一步經過合并對齊后獲取的多視角累積三維場景。此外,我們還定義了一組渲染變換{TiT_iTi?}i=0N^N_{i=0}i=0N?和幾何變換角度{gig_igi?}i=0N^N_{i=0}i=0N?,用于從多視角渲染場景。其中Ii′∈RH×W×3I'_i∈R^{H×W×3}Ii′?∈RH×W×3代表擴散模型修復前的圖像,Ii∈RH×W×3I_i∈R^{H×W×3}Ii?∈RH×W×3表示經過擴散模型修復后的圖像。
四、FlashDreamer
??如圖2所示,包含兩個主要步驟:(i) 修復(inpaint)新視角的圖像;(ii) 三維高斯潑濺(3DGS)的合并與對齊過程。首先,輸入圖像I0I_0I0?將被輸入Flash3D 主干網絡,通過以下方程生成場景的初始三維表示R0′R'_0R0′?:
??R0′R'_0R0′?因未被觀測到的部分而包含遮擋或不完整區域。隨后,我們通過預定義的幾何變換 g1g_1g1?(即第一步旋轉的特定角度)從原始重建的三維場景R0R_0R0?渲染出新視角圖像I1′I'_1I1′? (對于 i=0i=0i=0,R0=R0′R_0 = R'_0R0?=R0′?;i=0i=0i=0 時,使用 RiR_iRi? 進行渲染)。
??I1′I'_1I1′?中的黑色mask區域表示需要通過擴散模型進行修復的區域。隨后,Stable Diffusion模型[23]對I1′I'_1I1′?進行擴展,生成擴展后的新視角圖像I1I_1I1?。這一優化過程由原始圖像I0I_0I0?的文本描述t0t_0t0?引導——該描述由視覺語言模型VLM生成(具體采用LLaMA-3-1-8B模型)。需注意的是,為確保每個生成視角的一致性,我們在每一步都始終使用描述t0t_0t0?作為擴散提示。
??當我們獲得修復后的場景圖像I1I_1I1?時,會重新應用公式1來渲染R1′R'_1R1′?,該渲染是基于幾何變換角度g1g_1g1?的視點重建的。R1′R'_1R1′?將與R0′R'_0R0′?進行合并和對齊,從而獲得更完整的三維表示R1R_1R1?(見圖2中的紅色方框)
??該序列化流程通過應用預定義的幾何變換 {gig_igi?}i=0N^N_{i=0}i=0N?繼續執行,并生成 {RiR_iRi?}i=0N^N_{i=0}i=0N?集合。最終,RNR_NRN? 是流程的輸出場景表征,既包含原始輸入圖像 I0I_0I0?,也包含擴散模型生成的新視角圖像{IiI_iIi?}i=1N^N_{i=1}i=1N?。
五、Flash3D
??場景補全過程采用增量式處理,未觀測場景會逐步填充由Flash3D[28]模型生成的3D高斯體素。這些高斯體的三維坐標首先根據數據集相機內參進行重縮放以確保尺度一致性。重縮放后,坐標將從相機坐標系轉換至世界坐標系。圖3展示了Flash3D示意圖,對應方程式簡化為公式(1)。
??
??
六、3DGS: Merge and align
??新渲染的圖像可能包含兩個部分:已見區域和未見區域。只需補全未觀測部分,因此基于現有3DGS創建一個mask,定義為:
??MMM作為擴散模型的過濾器,基于現有RGB信息完成圖像補全。新圖像生成后再次輸入Flash3D,使用相同msdk來保留與先前未觀測區域像素相對應的輸出3DGS:
??其中 Ri′R'_iRi′? 表示由 Flash3D 從圖像 IiI_iIi? 生成的 3D 高斯集合,Ri~\tilde{R_i}Ri?~? 表示我們需要保留的 3DGS。將先前和新增的3D高斯模型合并為完整的場景重建 (Ri=Ri?1+Ri′~)(R_i = R_{i?1} + \tilde{R'_i})(Ri?=Ri?1?+Ri′?~?),并通過優化3D高斯參數使渲染圖像更接近Flash3D輸入數據。渲染圖像與Flash3D輸入圖像的對比采用RGB損失函數,定義為:
實驗
?? 定性分析 主要考量三個維度:(i)旋轉角度、(ii)擴散模型選擇、(iii)提示詞多樣性。 定量評估 方面,我們采用弗雷謝特初始距離(FID)[9]和CLIP分數[20]兩項指標,對不同旋轉角度下的生成質量進行系統測量,旨在明確驅動高質量場景生成的核心參數。
??實驗設置。Flash3D結合預訓練的Stable Diffusion-v2模型,實現多視角場景圖像擴展。為提升擴散模型的生成精度,向LLaMA-3.1-8B輸入引導提示詞"請簡要描述該場景",通過視覺語言模型(VLM)生成的描述文本作為擴散模型的提示輸入。最終采用標準3DGS流程完成三維場景重建。實驗在Replica數據集的子集,包含18個高真的室內三維場景的圖像幀,隨機選取的20張圖像,每張圖像以10°為旋轉單位、在-30°至30°范圍內選取6個新視角,即子集共含20張輸入圖像和120張groundtruth圖像。所有實驗均在NVIDIA Tesla V100 GPU上完成。
??Baseline。PixelSynth [2021CVF] 單目場景補全模型,通過訓練生成對抗網絡(GAN)[9]來生成像素內容,補全輸入圖像之外的內容,作為對比基準。該研究未利用場景的三維表征。
??旋轉角度。如圖4首行,展示了從多視角渲染原始圖像的過程,其中黑色mak區域表示擴散模型需要修復的區域。通過組合不同角度的修復圖像,我們構建出最終的三維場景,這使得旋轉角度增量的選擇對模型性能至關重要。本研究探討了5°和10°兩種旋轉增量對擴散模型生成質量的影響,角度范圍設定在-30°至30°之間,如圖4中間行與底行所示。結果表明:較小的增量雖然能提供更精細的調整,但會導致跨視角的邊緣重疊,從而引入更多可能影響修復質量的偽影。
??擴散模型比較。Stable Diffusion-v2能實現更具攝影質感的生成效果。這種品質優勢對于需要多視角真實感的應用場景尤為重要。相反,Stable Diffusion-xl雖然在生成多樣化藝術視覺風格方面更具靈活性,但可能會引入與源圖像風格偏離的元素。Stable Diffusion-xl增強的藝術表現力對創意應用大有裨益,但在需要風格統一性的場景中,可能導致生成結果與原始圖像存在風格不一致的問題。
??提示詞對比。視覺語言模型(VLMs)能夠描述場景特征[34]:(i)擴散模型可輸入的token長度有限;(ii)好的描述提示詞未必能生成高質量場景。為此在Stable Diffusionv2[22]上開展實驗,采用兩種擴散提示詞——綠色框標注的"短提示詞"與"長提示詞"。長提示詞詳細描述房間內的具體物品、相對位置及附加場景元素,為模型提供更豐富的上下文信息;而短提示詞則簡要概述場景中的物品。
??定量結果:表1比較了PixelSynth與本方法FlashDreamer在不同旋轉角度下的弗雷謝特起始距離(FID)和CLIP分數。 FID指標用于評估生成圖像質量,數值越低代表圖像保真度越高;CLIP分數則衡量文本提示對齊程度,數值越高越好。隨著旋轉角度絕對值減小,兩種方法的FID分數均呈現逐步下降趨勢,表明圖像質量持續提升。同樣在較小角度下,CLIP分數呈現上升態勢,提示對齊效果更佳。總體而言,這些數據證明較小旋轉角度有助于生成更高質量的圖像。
??圖7呈現了Replica數據集的修復后房間圖像,生成的圖像展示了多樣化的視角與場景配置,涵蓋了辦公室、客廳和會議室等不同環境。圖8展示了我們的三維重建示例,這些成果通過展現結構完整性與空間縱深感,清晰地闡釋了房間的幾何特征。這些結果凸顯了在捕捉精細細節與保持跨視角紋理一致性方面所面臨的挑戰。
??
??
??
??
#pic_center =80%x80%
d\sqrt{d}d? 18\frac {1}{8}81? xˉ\bar{x}xˉ D^\hat{D}D^ I~\tilde{I}I~ ?\epsilon?
?\phi? ∏\prod∏ abc\sqrt{abc}abc? ∑abc\sum{abc}∑abc
/ $$