社群計算機視覺課程文件

新視角合成

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

新視角合成

我們已經在 NeRF 章中看到,給定一組大量的影像,我們可以生成一個物件的三維表示。但有時我們只有少量甚至一張影像。新視角合成 (NVS) 是一系列方法,用於生成與一組影像合理一致的新相機角度的檢視。一旦我們擁有大量一致的影像,我們就可以使用 NeRF 或類似的演算法來構建 3D 表示。

最近為此任務開發了許多方法。然而,它們可以分為兩大類——那些生成中間三維表示,然後從新的視角方向渲染,以及那些直接生成新影像的方法。

一個關鍵的難點是這項任務幾乎總是欠定的。例如,對於一個招牌背面的影像,正面可能有許多不同的東西。類似地,物件可能存在被遮擋的部分,其中一個部分位於另一個部分的前面。如果模型被訓練直接預測(迴歸)未見部分,並對重建保留檢視中的誤差進行懲罰,那麼當不清楚應該有什麼時,模型必然會預測一個模糊的灰色區域,如 NerfDiff 中所述。這激發了人們對使用生成式、基於擴散的模型來取樣的興趣,這些模型能夠從未見區域的多種合理可能性中進行取樣。

在這裡,我們將簡要討論兩種代表這兩類的方法。PixelNeRF 直接從輸入影像預測場景的 NeRF。Zero123 調整 Stable Diffusion 潛在擴散模型,直接生成新檢視而無需中間 3D 表示。

PixelNeRF

PixelNeRF 是一種直接從一張或多張影像生成 NeRF 引數的方法。換句話說,它以輸入影像為條件來生成 NeRF。與原始 NeRF 訓練一個將空間點對映到密度和顏色的 MLP 不同,PixelNeRF 使用從輸入影像生成的空間特徵。

PixelNeRF diagram

圖片來源:PixelNeRF

該方法首先將輸入影像透過一個卷積神經網路 (ResNet34),將來自多個層的特徵雙線性上取樣到與輸入影像相同的解析度。
與標準 NeRF 一樣,新檢視是透過體渲染生成的。然而,NeRF 本身具有略微不尋常的結構。在渲染體積中的每個查詢點x x 處,會找到輸入影像中的對應點(透過使用輸入影像相機變換π \pi 進行投影)。然後透過雙線性插值找到該點的輸入影像特徵,W(πx) W(\pi x) 與原始 NeRF 類似,查詢點x x 進行位置編碼,並與視角方向d d拼接。NeRF 網路由一組 ResNet 塊組成;輸入影像特徵W(π(x)) W(\pi(x)) 透過一個線性層,並被新增到前三個殘差塊開始處的特徵中。然後還有兩個殘差塊進一步處理這些特徵,之後一個輸出層將通道數減少到四個(RGB+密度)。當提供多個輸入檢視時,這些檢視在前三個殘差塊中獨立處理,然後在最後兩個塊之前對特徵進行平均。

原始的 PixelNeRF 模型是在來自 ShapeNet 資料集相對較小的一組渲染影像上訓練的。該模型使用一張或兩張輸入影像進行訓練,並嘗試從新的相機角度預測單個新檢視。損失是渲染檢視和預期新檢視之間的均方誤差。每個物件類別(例如飛機、長椅、汽車)都分別訓練了一個模型。

結果(來自 PixelNeRF 網站)

Input image of a chair
Rotating gif animation of rendered novel views

圖片來源:PixelNeRF

PixelNeRF 程式碼可以在 GitHub 上找到。

相關方法

ObjaverseXL 論文中,PixelNeRF 在一個*大得多的*資料集 allenai/objaverse-xl 上進行了訓練。

另請參閱 - 生成查詢網路 (Generative Query Networks), 場景表示網路 (Scene Representation Networks), LRM

Zero123 (或 Zero-1-to-3)

Zero123 採用不同的方法,它是一個擴散模型。它不試圖生成三維表示,而是直接從新檢視預測影像。該模型接受單個輸入影像,以及輸入和新檢視方向之間的相對視點變換。它試圖從新檢視方向生成一個合理、3D 一致的影像。

Zero123 基於 Stable Diffusion 架構構建,並透過微調現有權重進行訓練。
然而,它添加了一些新的功能。該模型實際上從 Stable Diffusion Image Variations 的權重開始,後者使用輸入影像的 CLIP 影像嵌入(最終隱藏狀態)來調節擴散 U-Net,而不是文字提示。然而,在這裡,這些 CLIP 影像嵌入與輸入和新檢視之間的相對視點變換(以球面極座標表示)進行拼接。

其餘架構與 Stable Diffusion 相同。然而,輸入影像的潛在表示與噪聲潛在表示在通道維度上進行拼接,然後輸入到去噪 U-Net。

要進一步探索此模型,請參閱 即時演示

相關方法

3DiM - X-UNet 架構,輸入幀和噪聲幀之間存在交叉注意力。

Zero123-XL - 在更大的 objaverseXL 資料集上進行訓練。另請參閱 Stable Zero 123

Zero123++ - 生成 6 個新的固定檢視,這些檢視相對於輸入檢視處於固定的相對位置,並且在輸入影像和生成影像之間具有參考注意力。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.