100:ReconFusion: 3D Reconstruction with Diffusion Priors

簡介

官網
在這里插入圖片描述
少樣本重建必然導致nerf失敗,論文提出使用diffusion模型來解決這一問題。從上圖不難看出,論文一步步提升視角數量,逐步與Zip-NeRF對比。

實現流程

在這里插入圖片描述

Diffusion Model for Novel View Synthesis

給定一組輸入圖像 x o b s = { x i } i = 1 N x^{obs}=\{x_i\}^N_{i=1} xobs={xi?}i=1N?以及對應的相機位姿 π o b s = { π i } i = 1 N \pi^{obs}=\{\pi_i\}^N_{i=1} πobs={πi?}i=1N?,希望在目標相機位姿 π \pi π下,圖片 x 在 新試圖的分布 p ( x ∣ x o b s , π o b s , π ) p(x|x^{obs},\pi^{obs},\pi) p(xxobs,πobs,π)

這里采用的擴散模型是 LDM(High-Resolution Image Synthesis with Latent Diffusion Models)

LDM能夠有效地模擬高分辨率圖像。LDM使用預訓練的變分自編碼器(VAE) ? \epsilon ? 將輸入圖像編碼為潛在表示。在這些潛在上進行擴散,其中去噪的U-Net ? θ \epsilon_\theta ?θ?將有噪聲的潛在映射回干凈的潛在。在推理過程中,使用該U-Net對純高斯噪聲進行迭代降噪,得到一個干凈的潛在噪聲。潛在表示通過VAE解碼器D恢復為圖像。

實現過程類似于Zero-1-to-3,將輸入圖像和相機位姿作為一個預訓練文本到圖像生成的LDM的附加條件。

文本到圖像模型轉換為位姿圖像到圖像模型需要使用附加的條件反射路徑來增強U-Net體系結構。

為了修改預訓練的架構,以便從多個姿態圖像中合成新的視圖,向U-Net注入了兩個新的條件反射信號。

  • 對于輸入的高級語義信息,使用CLIP嵌入每個輸入圖像(表示為 e o b s e^{obs} eobs),并通過交叉注意將該特征向量序列饋送到U-Net中。
  • 對于相對相機姿態和幾何信息,使用PixelNeRF模型的 R ? R_\phi R??來渲染具有與目標視點 π \pi π相同空間分辨率的特征圖 f

f = R ? ( x o b s , π o b s , π ) f = R_\phi(x^{obs},\pi^{obs},\pi) f=R??(xobs,πobs,π)

特征圖 f 是一個空間對齊的條件信號,它隱式地編碼了相對相機變換。

沿信道維度將 f噪聲潛值 連接起來,并將其送入去噪UNet ? θ \epsilon_\theta ?θ?

這種特征映射調節策略類似于GeNVSSparseFusion中使用的策略,與直接嵌入相機外部和內部特征本身相比,可以更好地提供新的相機姿勢的準確表示。

training

凍結預訓練的編碼器和解碼器的權值,根據預訓練的權值初始化U-Net參數θ,并利用簡化的擴散損失對改進的視圖合成結構進行了優化
在這里插入圖片描述
t∈{1,…, T}為擴散時間步長,ε ~ N (0, I), z t = α t ε ( x ) + σ t ? z_t = α_t \varepsilon(x) + σ_t \epsilon zt?=αt?ε(x)+σt??為該時間步長的噪聲潛函數, e o b s e^{obs} eobs 為輸入圖像 x o b s x^{obs} xobs 的CLIP圖像嵌入,f 為PixelNeRF R φ R_φ Rφ? 渲染的特征映射。

優化具有光度損耗的PixelNeRF參數φ:
在這里插入圖片描述

其中 c 是PixelNeRF模型的輸出(與特征映射 f 具有相同的分辨率),x↓ 是下采樣到 z t z_t zt? 和 f 的空間分辨率的目標圖像。這種損失鼓勵 PixelNeRF重建RGB目標圖像,這有助于避免擴散模型無法利用 PixelNeRF 輸入的糟糕的局部最小值。

3D Reconstruction with Diffusion Priors

第一步的NeRF重建的光度損失
在這里插入圖片描述

在每次迭代中,對隨機視圖進行采樣,并從擴散模型中生成圖像以生成目標圖像。(通過從中間噪聲水平開始采樣過程來控制目標圖像與當前渲染圖像的接地程度。)
在這里插入圖片描述

具體來說,從采樣的新視點 π \pi π呈現圖像 x ( ψ , π ) x(ψ, π) x(ψπ),并將其編碼和擾動為噪聲潛碼為 t U [ t m i n , t m a x ] t ~ U [t_{min}, t_{max}] t?U[tmin?,tmax?]的噪聲潛碼 z t z_t zt?。然后,通過運行DDIM采樣,在最小噪聲潛碼和 t 之間均勻間隔 k 個中間步驟,從潛在擴散模型生成一個樣本,從而得到一個潛在樣本 z 0 z_0 z0?。這個潛信號被解碼以產生一個目標圖像 x ^ π = D ( z 0 ) \hat{x}_\pi=D(z_0) x^π?=D(z0?):
在這里插入圖片描述
其中,$L_p¥為感知距離LPIPS, w(t)為依賴于噪聲水平的加權函數。這種擴散損失最類似于SparseFusion,也類似于InstructNeRF2NeRF的迭代數據集更新策略,只不過在每次迭代時都采樣一個新的圖像。從經驗上發現,這種方法比分數蒸餾取樣更有效

當使用擴散先驗時,我們不想在物體內部或墻后放置新的視圖,視圖的放置通常取決于場景內容和捕獲類型。與RegNeRF等先前的工作一樣,希望根據已知的輸入姿勢和捕獲模式定義一個分布,該分布將包含一組合理的新相機姿勢,大致與期望觀察重建場景的位置相匹配。

通過確定場景中的基本姿勢集或路徑來實現這一點,可以隨機采樣和擾動以定義新視圖的完整姿勢分布。在LLFFDTU等前向捕獲或mip-NeRF 360等360度捕獲中,定義了一條適合訓練視圖的橢圓路徑,面向焦點(與訓練相機的焦軸平均距離最小的點)。在更多的非結構化捕獲中,如CO3DRealEstate10K,擬合b樣條來大致遵循訓練視圖的軌跡。在任何一種情況下,對于每個隨機的新視圖,統一地選擇路徑中的一個姿態,然后擾動它的位置,向上向量,并在一定范圍內查看點。

Implementation Details

基本擴散模型是對潛在擴散模型的重新實現,該模型在輸入分辨率為512×512×3的圖像-文本對的內部數據集和維度為64×64×8的潛在空間上進行了訓練。

PixelNeRF的編碼器是一個小的U-Net,它將分辨率為512×512的圖像作為輸入,并輸出分辨率為64 × 64的128通道的特征圖

聯合訓練PixelNeRF和微調去噪U-Net,批處理大小為256,學習率為 1 0 ? 4 10^{?4} 10?4,共進行250k次迭代。為了實現無分類器制導(CFG),以10%的概率將輸入圖像隨機設置為全零。

使用Zip-NeRF作為主干,并對NeRF進行了總共1000次迭代的訓練。重構損失 L r e c o n L_{recon} Lrecon? 與 Zip-NeRF一樣使用Charbonnier損失。 L s a m p l e L_{sample} Lsample?的權重在訓練過程中從1線性衰減到0.1,采樣使用的無分類器指導尺度設置為 3.0。將所有訓練步驟的 t m a x = 1.0 t_{max} = 1.0 tmax?=1.0 固定,并將 t m i n t_{min} tmin? 從1.0線性退火到0.0。無論 t 如何,總是以k = 10步對去噪圖像進行采樣。在實踐中,用于視圖合成的擴散模型可以以少量觀察到的輸入圖像和姿勢為條件。給定一個新的目標視圖,從觀察到的輸入中選擇3個最近的相機位置來調節模型。這使模型能夠在選擇對采樣的新視圖最有用的輸入時縮放到大量的輸入圖像。

在這里插入圖片描述

Limitation

重量級擴散模型成本高,并且顯著減慢了重建速度;研究結果表明,與圖像模型在2D中產生的幻覺相比,3D繪制能力有限;調整重構和樣本損失的平衡是繁瑣的等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213748.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213748.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213748.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jmeter beanshell編程實例

1、引言 BeanShell是一種小型的,免費的,可嵌入的符合Java語法規范的源代碼解釋器,具有對象腳本語言特性。 在Jmeter實踐中,由于BeanShell組件較高的自由度,通常被用來處理較為復雜,其它組件難以處理的問題…

c語言:文件操作(1)

前言:為什么要使用文件 使用文件可以讓程序在不同運行之間保存和讀取數據。這樣可以實現持久化存儲,即使程序關閉后數據也不會丟失。文件也可以用于數據交換,允許不同程序之間共享信息。在 C 語言中,文件還可以用于讀取配置信息&…

系統架構設計師教程(三)信息系統基礎知識

信息系統基礎知識 3.1 信息系統概述3.1.1 信息系統的定義3.1.2 信息系統的發展3.1.3 信息系統的分類3.1.4 信息系統的生命周期3.1.5 信息系統建設原則3.1.6 信息系統開發方法 3.2 業務處理系統 (TPS)3.2.1 業務處理系統的概念3.2.2 業務處理系統的功能3.2.3 業務處理系統的特點…

Python:核心知識點整理大全13-筆記

目錄 6.4.3 在字典中存儲字典 6.5 小結 第7章 用戶輸入和while循環 7.1 函數 input()的工作原理 7.1.1 編寫清晰的程序 7.1.2 使用 int()來獲取數值輸入 7.1.3 求模運算符 7.1.4 在 Python 2.7 中獲取輸入 7.2 while 循環簡介 7.2.1 使用 while 循環 往期快速傳送門…

基于jsonrpc4j實現JSON-RPC over HTTP(客戶端多種調用方式)

1.說明 前文基于jsonrpc4j實現JSON-RPC over HTTP(服務端集成Spring Boot), 介紹了JSON-RPC over HTTP服務端的實現方法, 并且通過Postman工具調用服務端對外提供的方法, 下面介紹兩種基于Java代碼調用客戶端的方法: 非Spring框…

什么是https 加密協議?

什么是https 加密協議? 加密通信的作用加密原理數字證書SSL/TLS 協議部署和使用重要性 HTTPS(Hyper Text Transfer Protocol Secure)是一種網絡傳輸協議,它是基于HTTP協議的擴展,通過加密通信內容來保障數據傳輸的安全…

SPI 通信-stm32入門

本節我們將繼續學習下一個通信協議 SPI,SPI 通信和我們剛學完的 I2C 通信差不多。兩個協議的設計目的都一樣,都是實現主控芯片和各種外掛芯片之間的數據交流,有了數據交流的能力,我們主控芯片就可以掛載并操縱各式各樣的外部芯片&…

gpu版本的GNN的demo

1、當涉及到在GPU上運行圖神經網絡(GNN)時,通常使用深度學習框架,如PyTorch或TensorFlow。在這里,我將為您提供一個使用PyTorch Geometric庫實現GNN的簡單示例。 首先,確保您已經安裝了PyTorch和PyTorch G…

第 375 場 LeetCode 周賽題解

A 統計已測試設備 模擬&#xff1a;記錄當前已測試設備數量 class Solution { public:int countTestedDevices(vector<int> &batteryPercentages) {int res 0;int s 0;for (auto x: batteryPercentages) {if (x - s > 0) {res;s;}}return res;} };B 雙模冪運算 …

【無線網絡技術】——無線城域網(學習筆記)

&#x1f4d6; 前言&#xff1a;無線城域網&#xff08;WMAN&#xff09;是指在地域上覆蓋城市及其郊區范圍的分布節點之間傳輸信息的本地分配無線網絡。能實現語音、數據、圖像、多媒體、IP等多業務的接入服務。其覆蓋范圍的典型值為3~5km&#xff0c;點到點鏈路的覆蓋可以高達…

少兒編程考級:激發孩子邏輯思維能力的關鍵

在當今信息化時代&#xff0c;少兒編程已經成為孩子們不可或缺的一項技能。而少兒編程考級&#xff0c;則是檢驗孩子們在這一技能上所取得的成就的重要途徑。少兒編程考級不僅能夠激發孩子們的邏輯思維能力&#xff0c;還能夠提高他們的動手能力和創造力。6547網將詳細介紹少兒…

電源模塊測試系統測試LED電源項目的優勢

LED電源測試是電源在設計、生產過程中的關鍵環節&#xff0c;也是確保LED照明產品可靠性和穩定性的重要步驟。LED電源測試一般包括電壓、電流、效率、穩定性等。電源模塊測試系統測試LED電源&#xff0c;實現自動化測試&#xff0c;保證測試結果的可靠性。 LED電源測試項目及方…

實現加鹽加密方法以及MappedByteBuffer,RandomAccess

目錄 自己實現 Spring Security MappedByteBuffer RandomAccess 加鹽加密的實現 自己實現 傳統MD5可通過彩虹表暴力破解&#xff0c; 加鹽加密算法是一種常用的密碼保護方法&#xff0c;它將一個隨機字符串&#xff08;鹽&#xff09;添加到原始密碼中&#xff0c;然后再進…

力扣17. 電話號碼的字母組合(java 回溯法)

Problem: 17. 電話號碼的字母組合 文章目錄 題目描述思路解題方法復雜度Code 題目描述 思路 題目給定一串數字&#xff0c;要求我們找出所有可能的字母組合&#xff0c;即我們可以窮舉出所有可能的結果&#xff0c;而涉及到窮舉我們自然可以想到利用回溯來解決問題&#xff0c…

xv6 中的一些系統調用(下)

〇、前言 本文將會結合源代碼談論 sleep、wakeup 這兩個系統調用。 一、sleep()系統調用 以下是sleep()函數源碼&#xff1a; // Atomically release lock and sleep on chan. // Reacquires lock when awakened. void sleep(void *chan, struct spinlock *lk) {struct pro…

無線且列窄圖片如何轉excel?

寫此文原因&#xff1a;圖片要轉excel&#xff0c;這放以前&#xff0c;是不能實現的功能&#xff0c;但隨著人工智能的蓬勃發展&#xff0c;人們已克服了這一難題&#xff0c;但是&#xff0c;我們知道&#xff0c;要將圖片識別成excel&#xff0c;識別程序首先要先識別圖片中…

如何在小米路由器4A千兆版刷入OpenWRT并通過內網穿透工具實現公網遠程訪問

文章目錄 前言1. 安裝Python和需要的庫2. 使用 OpenWRTInvasion 破解路由器3. 備份當前分區并刷入新的Breed4. 安裝cpolar內網穿透4.1 注冊賬號4.2 下載cpolar客戶端4.3 登錄cpolar web ui管理界面4.4 創建公網地址 5. 固定公網地址訪問 前言 OpenWRT是一個高度模塊化、高度自…

交易歷史記錄20231206 記錄

昨日回顧&#xff1a; select top 10000 * from dbo.CODEINFO A left join dbo.全部&#xff21;股20231206010101 B ON A.CODE B.代碼 left join dbo.全部&#xff21;股20231206CONF D on A.CODED.代碼left join dbo.全部&#xff21;股20231206 G on A.CODEG.代碼 left…

解決前端跨域問題,后端解決方法

Spring CloudVue前后端分離項目報錯&#xff1a;Network Error&#xff1b;net::ERR_FAILED&#xff08;請求跨越&#xff09;-CSDN博客記錄自用

Kafka-快速實戰

Kafka介紹 ChatGPT對于Apache Kafka的介紹&#xff1a; Apache Kafka是一個分布式流處理平臺&#xff0c;最初由LinkedIn開發并于2011年開源。它主要用于解決大規模數據的實時流式處理和數據管道問題。 Kafka是一個分布式的發布-訂閱消息系統&#xff0c;可以快速地處理高吞吐…