論文筆記:DepthLab: From Partial to Complete

是一篇很精煉的論文,不知道咋總結了,就差全文翻譯了,不過在這里我主要關注3D部分,因為他的pipeline是基于SD的,框圖也比較清晰易懂,非常細節的內容可以回頭看論文,哈哈哈,給作者大佬們點贊

1.abstract

????????由于數據采集不完整和視角改變等多種原因,缺失值仍然是深度數據在廣泛應用中的常見挑戰。 這項工作通過 DepthLab 彌補了這一差距,DepthLab 是一種由圖像擴散先驗支持的基礎深度修復模型我們的模型具有兩個顯著的優勢:(1)它表現出對深度不足區域的彈性,為連續區域和孤立點提供可靠的補全,(2)在填充缺失值時,它忠實地保持了與條件已知深度的尺度一致性。 憑借這些優勢,我們的方法在各種下游任務中證明了其價值,包括 3D 場景修復、文本到 3D 場景生成、使用 DUST3R 的稀疏視圖重建以及 LiDAR 深度補全,在數值性能和性能方面都超過了當前的解決方案

2.Introduction

????????深度修復是重建圖像中丟失或遮擋的深度信息的任務,在許多領域都至關重要,包括 3D 視覺 [25, 34, 91]、機器人 [1, 32] 和AR [53, 61]。 如圖 1 所示,強大的深度修復模型可以實現高質量的 3D 場景完成、編輯、重建和生成。 先前的深度修復研究可分為兩種主要方法。 第一種方法 [12,26,48,65,71,89] 側重于將全局稀疏 LiDAR 深度 [16] 數據完成為密集深度,通常在固定數據集上進行訓練和測試。 然而,這些模型缺乏通用性,并且在不同下游任務中的適用性有限。 第二種方法[15,31,72,75,77]采用單目深度估計器來推斷單個圖像的深度,將修復區域與已知深度對齊。 由于估計深度與現有幾何形狀之間的不對準,這些方法經常會出現嚴重的幾何不一致,特別是沿邊緣最近的研究 [41] 將 RGB 圖像合并到 UNet 輸入中,作為訓練深度修復模型的指導,但在復雜場景和修復大的缺失區域時,其性能仍然不理想。

????????為此,我們提出了 DepthLab,一種 RGB 圖像條件深度修復的基礎模型,它引入了雙分支深度修復擴散框架。 具體來說,該框架通過參考 U-Net 處理單個參考圖像,提取 RGB 特征作為條件輸入同時,已知深度和需要修復的掩模指示區域被輸入深度估計 U-Net提取的 RGB 特征逐漸逐層集成到深度估計 U-Net 中,以指導修復過程。在訓練過程中,我們對已知深度應用隨機尺度歸一化,以減輕已知區域中非全局極值引起的正則化溢出。 與 Marigold [31] 類似,我們的模型僅需要合成 RGBD 數據即可在幾天的 GPU 內進行訓練。 受益于擴散模型強大的先驗,DepthLab在不同場景下展現出強大的泛化能力。

????????如圖1所示,得益于精確的深度修復,DepthLab支持多種下游應用。 (1) 3D場景修復[41]:在3D場景中,我們首先從擺好的參考視圖中修復圖像修復區域的深度,然后將點投影到3D空間中以實現最佳初始化,這顯著提高了質量和速度 3D場景修復 (2) 文本到場景生成[83]:我們的方法通過消除對齊的需要,極大地改進了從單個圖像生成 3D 場景的過程。這一改進有效地緩解了邊緣分離的問題 之前由于修復和已知深度之間的幾何不一致而產生的問題,從而顯著增強了生成場景的連貫性和質量。(3)基于DUST3R的稀疏視圖重建:InstantSplat[14]利用DUST3R[68]中的點云作為無SfM重建和新視圖合成的初始化。通過將噪聲作為潛在輸入添加到DUST3R深度圖中,我們的方法對缺乏交叉視點對應的區域的深度進行細化,從而產生更精確、幾何一致的深度圖。這些精細化的深度貼圖進一步增強了InstantSplat的初始點云(4)激光雷達深度完成:傳感器深度完成[89]是與深度估計相關的一項重要任務。與在單個數據集上訓練和測試的現有方法(如NYUv2[46])不同,我們的方法在零鏡頭設置下可以獲得類似的結果,并且可以通過最小的微調提供更好的結果。為了進行更全面的評估,我們通過對需要修復的區域應用不同類型的隨機遮罩來評估其在深度估計基準上的有效性。

????????這里只關注前三塊。

2. Related Work

2.1. Depth Completion

????????深度補全[22,39,42,43,70,74]是計算機視覺中的一項關鍵任務,特別是隨著有源深度傳感器的興起。它的目標是從傳感器提供的稀疏GT測量中估計準確的深度圖。然而,現有的方法[12,26,48,65,70,89,90]往往是在固定的數據集上訓練和評估的,這限制了它們的泛化能力,并且許多方法依賴于繁瑣的處理流水線。

2.2. Monocular Depth Estimation

????????單目深度估計是計算機視覺中的一項關鍵任務,主要通過判別和生成方法來實現。 判別方法通常將深度預測為絕對深度 [2, 3, 29, 36, 44, 86] 或相對深度 [13, 51, 52, 76, 77, 80, 81, 87]。 最近,生成模型 [4,23,88],特別是擴散模型,在深度估計中得到了普及。 DDP [27]、DepthGen [57]、Marigold [31] 和 GeoWizard [15] 等方法利用擴散過程來生成高質量的深度圖,他們通常以緩慢采樣為代價。 基于流匹配的模型 [18] 的出現是為了緩解這些限制,提供更快的采樣。 盡管單目深度估計取得了進步,但將估計深度與已知數據對齊通常會導致幾何不一致。 我們的工作通過為各種任務引入強大的基礎深度修復模型來解決這個問題。

2.3. Downstream Tasks with Known Partial Depth

????????除了傳統的深度完成任務外,許多 3D 視覺任務還涉及部分已知的深度信息:(1)3D 場景修復側重于填充 3D 空間的缺失部分,例如移除對象并為修復區域生成合理的幾何形狀和紋理。 早期的作品主要解決幾何補全[10,11,19,30,49,62,69],而最近的方法側重于聯合修復紋理和幾何[6,24,33,40,45,79]。 可以渲染此類 3D 場景以獲得深度,其中未更改的區域用作已知的部分深度信息。 (2) 3D 場景生成涉及利用強大的生成先驗和深度估計,根據單個圖像或文本提示等輸入創建 3D 內容。 最近的方法[8,20,35,47,83,84,92]改變相機視點,對扭曲的圖像執行RGB修復,然后估計深度,將其與扭曲的深度對齊。 相反,我們的方法將扭曲深度視為已知,將現有的兩步過程表述為以已知比例為條件的深度修復。 (3) DUST3R [68] 提出了一種新穎的 3D 重建管道,該管道在稀疏視圖上運行,無需任何相機校準或姿勢的先驗知識。 最近,一些作品 [38,60,64] 利用 COLMAP [58] 或 DUST3R 中的初始點云進行后續任務,例如 3D 場景重建 [14]、新穎的視圖合成 [85] 和 4D 場景生成 [7]。 然而,DUST3R 很難在沒有視點重疊的區域中進行準確的重建。 我們的方法利用來自具有像素對應關系的區域的深度數據來增強缺乏匹配的區域的深度

3. Method

????????給定原始(不完整或失真)深度圖,指示修復目標區域的二值掩碼,以及條件RGB圖像,我們的目標是使用RGB圖像來預測完整的深度圖。這就要在保持未掩蔽區域中的深度值的同時準確地估計掩蔽區域中的深度。這一過程自然地將估計深度與現有幾何體對齊,消除了已知修復區域和目標修復區域之間的不一致

????????為了實現這一目標,我們引入了一種基于雙分支擴散的深度修復框架包括用于 RGB 特征提取的參考 U-Net 和以原始深度和修復掩模作為輸入的估計 U-Net。 我們沒有使用常用的文本條件,而是利用 CLIP 圖像編碼器的交叉注意力來捕獲豐富的語義信息。 通過參考 U-Net 和估計 U-Net 之間的注意力進行逐層特征融合,實現更細粒度的視覺引導。這種設計使DepthLab能夠取得顯著的效果,即使是對于大的修復區域或復雜的RGB圖像,如圖2。

3.1. Network Design

????????兩個分支都使用 Marigold [31] 作為基礎模型,并根據 Stable Diffusion V2 [56] 進行了微調。 這種設計無需學習從RGB到深度的域轉移過程,提高了訓練效率。Marigold 如下,?是一個利用SD pipeline來估計深度的方法:

? ? ? ?以上是Marigold的簡單介紹

?????????深度編碼器和解碼器:?我們使用VAE編碼器 E 將 RGB 圖像及其相應的深度圖編碼到latent空間中。 編碼深度圖的方式請查看上面的Marigold ,由于編碼器 E 最初是為三通道 RGB 輸入設計的,因此單通道深度圖在三個通道之間復制以匹配 RGB 格式。 值得注意的是,由于 VAE 編碼器適用于非稀疏輸入,因此我們在編碼之前應用最近鄰插值來致密稀疏深度圖在推理過程中,使用解碼器 D 對step t = 0 處的去噪深度latent編碼 進行解碼,并將三個通道的平均值用作預測深度圖。 與 Marigold 估計相對深度并使用最小二乘優化來獲得度量深度不同,我們的深度修復旨在根據已知深度區域的值和比例直接估計度量深度圖。?

????????估計Unet用來估計的去噪Unet的輸入由三個部分組成:噪聲深度latent編碼,masked latent和encoded?mask,它們串聯在一起變成12*h*w維度。latent depth representations是具有由VAE編碼產生的4個通道,并且(h,w)是與原始輸入維度(H,W)相比向下采樣8倍的空間維度。為了更準確地保存掩碼信息,而不是像傳統的圖像修復方法[28,93]中那樣簡單地對掩碼進行下采樣,我們使用VAE編碼器E對mask進行編碼獲得,有效地保留了稀疏和細粒度的信息

????????在訓練過程中,通過將初始深度圖d編碼到latent空間,并在步驟t添加噪聲來獲得噪聲潛在深度,通過對GT深度圖進行隨機mask,然后在修復區域中進行最近鄰內插值并通過VAE進行編碼來生成masked depth latent。由于SD2的VAE[56]擅長重建密集信息,這種方法更好地保留了稀疏點和復雜邊緣邊界上的已知深度值

參考UnetInFusion [41] 將單個參考圖像輸入編碼器,隨后連接了image latent with noisy depth latent、masked depth latent、downsampled mask,總共有 13 個通道。但是這種方法可能會丟失區域深度信息或難以生成清晰的深度邊緣,特別是在修復大面積或使用復雜的參考圖像時。 最近的研究 [21, 73] 表明額外的 U-Net 可以從參考圖像中提取更細粒度的特征。 我們采用了類似的架構。 我們首先分別從Reference UNet和Estimation Denoising U-Net獲得兩個特征圖,。 然后我們沿著寬度維度連接這些特征圖,得到。然后,我們對連接的特征圖應用自注意力操作,并提取結果特征圖的前半部分作為輸出。 這樣能夠在訓練期間利用基礎模型每一層的細粒度語義特征。 此外,由于參考 U-Net 和估計去噪 U-Net 共享相同的架構和初始權重——均在 Marigold [31] 上進行預訓練——估計去噪 U-Net 可以在同一網絡中選擇性地從參考 U-Net 中學習相關特征。 特征空間

3.2 Training Protocol

????????主要關注一下mask是怎么加的

????????為了最大限度地覆蓋大量下游任務,采用了各種掩蔽策略。最初,我們從筆劃、圓圈、正方形或這些形狀的隨機組合中隨機選擇來創建蒙版。然后,為了增強深度完成任務:從傳感器采集的稀疏深度數據中恢復完整的深度圖,我們使用隨機點mask,其中只有0.1%-2%的點被設置為已知。最后,對于改進的對象級修復,我們利用接地SAM[54]來標注訓練數據,然后根據它們的置信度分數來過濾掩碼。總體而言,多種掩蔽策略的結合應用進一步增強了該方法的穩健性。

4.Experiments

????????主要關注在下游任務中的效果

4.3 Applications

1.3D高斯修復

首先,我們使用Gaussian Grouping[78]來分割和去除部分高斯。然后將SDXL修復模型[50]應用于在參考視圖中渲染的圖像。 修復后的 RGB 圖像隨后用作完成該參考視圖的深度信息的指導。 然后將這些點反投影到三維空間中以實現最佳初始化。 如圖4所示,由于修復和原始高斯之間的幾何一致性以及像素和修復高斯之間的對齊,對修復圖像進行簡單編輯就可以在修復區域中進行紋理修改和對象插入。

????????這里是Gaussian Grouping的介紹,主要是利用SAM來做mask,然后反投影到對應部分的高斯球,再經過訓練這樣的一個pipeline

2.文本到 3D 場景生成

?????????最近的方法 [8,47,92] 首先將單視圖深度估計投影到 3D 場景上,以從給定的視點創建初始點云。 然后旋轉相機以計算扭曲圖像和扭曲深度。 在對扭曲的 RGB 圖像進行修復之后,應用單眼深度估計,并將估計的深度與之前扭曲的深度對齊。 然后,對齊的深度數據不會投影回原始點云。 隨著視角的改變,這個過程會重復進行。 然而,如圖5所示,以LucidDreamer[8]為例,這種方法存在以下問題:在不同尺度的深度對齊過程中出現幾何不一致,對 Inpainted 區域的深度精度產生不利影響。相比之下,我們的模型可以直接將 inpainted 圖像和 warped depth 作為輸入,無需對齊即可生成幾何一致的深度圖

? ? ? ? 下面這是LucidDreamer,挺好玩的一個工作

3.使用 DUST3R 重建

???????? DUST3R [68] 從稀疏視圖引入了新的 3D 重建流程,無需有關相機校準或姿勢的先驗信息。 該方法可以提供密集的像素到像素和像素到點的對應關系,使其適用于各種 3D 視覺任務,包括深度預測。 然而,我們觀察到 DUST3R 主要在具有像素對應的點上提供高質量的深度預測,同時盡力為不同視圖之間沒有對應的點生成清晰的深度邊緣

????????為了克服這個限制,我們針對對應關系較弱或不存在引入了一種改進區域深度估計的框架我們的方法開始通過為沒有任何源圖像匹配的像素生成掩模。 然后通過我們的方法對這些不匹配區域進行細化我們采用VAE將 DUST3R 的初始深度估計編碼到latent空間中,添加噪聲以產生noisy latents。 匹配點處的深度被編碼為masked depth latents。 把這些輸入到我們的模型中,以生成具有增強的準確性和空間一致性的精細深度圖。 我們在 InstanSplat [14] 上評估我們的方法,InstanSplat 是一種稀疏視圖、SfM-free的GS方法,該方法使用 DUST3R 的預測點云進行新穎的視圖合成。 通過將增強的深度圖投影到 3D 空間中,我們用這個框架refined的數據(想知道這里是怎么根據補充后的深度圖得到DUST3R 稠密點云的?需要看看release的代碼)替換 DUST3R 的原始點云作為 InstanSplat 的輸入。 如圖 6 所示,我們的方法有效地銳化了 DUST3R 的初始深度,顯著提高了GS渲染質量。 我們還在補充材料中提供定量比較。

5.Conclusion

????????在這項工作中,我們引入了 DepthLab,這是一個強大的深度修復框架,旨在通過利用 RGB 圖像和已知深度作為條件輸入來處理復雜的場景。 我們的方法保持幾何一致性,確保估計的深度與現有結構無縫對齊。 通過利用預訓練擴散模型中的先驗知識,DepthLab 展示了跨各種深度修復任務的顯著泛化能力。 其在多個基準測試和應用程序中的卓越性能證明了這一點,包括 3D 場景生成、高斯修復、LiDAR 深度補全和稀疏視圖重建。 我們的實驗展示了我們方法的穩健性,強調了其提高深度精度和下游 3D 場景質量的能力。 我們設想 DepthLab 成為更廣泛任務的基礎模型。

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

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

相關文章

LeetCode--排序算法(堆排序、歸并排序、快速排序)

排序算法 歸并排序算法思路代碼時間復雜度 堆排序什么是堆?如何維護堆?如何建堆?堆排序時間復雜度 快速排序算法思想代碼時間復雜度 歸并排序 算法思路 歸并排序算法有兩個基本的操作,一個是分,也就是把原數組劃分成…

ShardingSphere-Proxy分表場景:go測試案例

接續上篇文章《ShardingSphere-Proxy分表場景測試案例》 go測試用例: package mainimport ("fmt""math/rand""time""github.com/bwmarrin/snowflake""gorm.io/driver/mysql""gorm.io/gorm""gor…

主流在售AI電子寵物產品

市面上已經有許多類型的AI電子寵物產品,它們各具特色,旨在提供情感陪伴、教育娛樂以及智能互動等功能。以下是幾款在市場上較為知名的AI電子寵物玩具,涵蓋了不同的形態和技術特點: 1. Moflin 制造商:日本消費電子公司…

Debian-linux運維-docker安裝和配置

騰訊云搭建docker官方文檔:https://cloud.tencent.com/document/product/213/46000 阿里云安裝Docker官方文檔:https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker-on-a-linux-ecs-instance 天翼云常見docker源配置指導:htt…

【機器學習 | 數據挖掘】時間序列算法

時間序列是按時間順序排列的、隨時間變化且相互關聯的數據序列。分析時間序列的方法構成數據分析的一個重要領域,即時間序列分析。以下是對時間序列算法的詳細介紹: 一、時間序列的分類 時間序列根據所研究的依據不同,可有不同的分類&#…

Qt6.8.1 Mingw13.1 編譯opencv4.10時cannot convert ‘char*‘ to ‘LPWSTR

當選擇build_world時出錯 G:\ForOpencv4.10\opencv-4.10.0\modules\core\src\utils\filesystem.cpp: In function cv::String cv::utils::fs::getCacheDirectory(const char*, const char*): G:\ForOpencv4.10\opencv-4.10.0\modules\core\src\utils\filesystem.cpp:442:43: e…

MIT S081 Lab 2 System Calls

Lab鏈接 一 實現trace功能 1 題目要求 In this assignment you will add a system call tracing feature that may help you when debugging later labs. You’ll create a new trace system call that will control tracing. It should take one argument, an integer “ma…

[Linux] 服務器CPU信息

(1)查看CPU信息(型號) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c輸出:可以看到有128個虛擬CPU核心,型號是后面一串 128 Intel(R) Xeon(R) Platinum 8336C CPU 2.30GHz(2&…

通過無障礙服務(AccessibilityService)實現Android設備全局水印顯示

一、無障礙功能簡介 首先我們先來了解下無障礙功能的官方介紹: 無障礙服務僅應用于幫助殘障用戶使用 Android 設備和應用。它們在后臺運行,并在觸發 AccessibilityEvents 時接收系統的回調。此類事件表示用戶界面中的某些狀態轉換,例如焦點已…

java中多線程的一些常見操作

Java 中的多線程是通過并發編程來提高應用程序的效率和響應速度。Java 提供了多個機制和類來支持多線程編程,包括繼承 Thread 類、實現 Runnable 接口、使用線程池等。以下是 Java 中一些常見的多線程操作和應用場景。 1. 創建線程 1.1 通過繼承 Thread 類創建線程…

使用 Docker 搭建 Hadoop 集群

1.1. 啟用 WSL 與虛擬機平臺 1.1.1. 啟用功能 啟用 WSL并使用 Moba 連接-CSDN博客 1.2 安裝 Docker Desktop 最新版本鏈接:Docker Desktop: The #1 Containerization Tool for Developers | Docker 指定版本鏈接:Docker Desktop release notes | Do…

【每日學點鴻蒙知識】廣告ID、NFC手機充值、CSS支持語法、PC與模擬器交互、SO熱更新等

1、HamonyOS 樣機獲取成功返回Oaid為00000000-0000-0000-0000-000000000000? 請求授權時需要觸發動態授權彈窗,看一下是不是沒有觸發授權彈窗。 可以參考以下代碼以及文檔: // ets import identifier from ohos.identifier.oaid; import hilog from oh…

【YOLO 項目實戰】(12)紅外/可見光多模態目標檢測

歡迎關注『youcans動手學模型』系列 本專欄內容和資源同步到 GitHub/youcans 【YOLO 項目實戰】(10)YOLO8 環境配置與推理檢測 【YOLO 項目實戰】(11)YOLO8 數據集與模型訓練 【YOLO 項目實戰】(12)紅外/可…

logback日志框架源碼分析

目錄 (一)入口:slf4j選擇日志框架 (二)日志框架初始化 (1)logback的3種配置方式 a、BasicConfigurator默認配置 b、SPI方式配置的Configurator實現類 c、通過配置文件初始化 (2)xml配置文件初始化 (三)Logger的創建 (四)打印日志 本文源碼基于:logback版…

國產數據庫OceanBase從入門到放棄教程

1. 介紹 是由螞蟻集團(Ant Group,原螞蟻金服)自主研發的分布式關系型數據庫。它旨在解決海量數據存儲和高并發訪問的問題,特別適合金融級應用場景,如支付寶等對數據一致性、可靠性和性能有極高要求的服務。以下是關于…

連接Milvus

連接到Milvus 驗證Milvus服務器正在偵聽哪個本地端口。將容器名稱替換為您自己的名稱。 docker port milvus-standalone 19530/tcp docker port milvus-standalone 2379/tcp docker port milvus-standalone 192.168.1.242:9091/api/v1/health 使用瀏覽器訪問連接地址htt…

機器學習中的欠擬合

當模型不能夠準確地表達輸入與輸出的關系時,就是欠擬合。它在訓練集和未見過的數據都會產生高誤差率。過度擬合則在訓練集表現出低誤差率,只有對未見過的數據表現出高誤差率。 當模型太過于簡單時,它需要更多的訓練時間、更多的輸入特征、更…

安卓入門二 Kotlin基礎

Kotlin Kotlin的歷史 Kotlin由Jet Brains公司開發設計,2011年公布第一版,2012年開源。 2016年發布1.0正式版,并且Jet Brains在IDEA加入對Kotlin的支持,安卓自此又有新的選擇。 2019年谷歌宣布Kotlin成為安卓第一開發語言&#x…

淺談Cocos2djs逆向

前言 簡單聊一下cocos2djs手遊的逆向,有任何相關想法歡迎和我討論^^ 一些概念 列出一些個人認為比較有用的概念: Cocos遊戲的兩大開發工具分別是CocosCreator和CocosStudio,區別是前者是cocos2djs專用的開發工具,後者則是coco…

STM32驅動NRF24L01

一、NRF24L01的相關介紹 1.2 引腳的介紹 關于SPI的引腳就不再說了,這里介紹其余的兩個引腳: CE 模塊控制引腳:芯片開啟信號,激活RX或TX模式 IRQ 模塊中斷信號輸出引腳:其低電平有效,也就是中斷時變為低電平…