【論文筆記】VGGT-從2D感知3D:pose估計+稠密重建+點跟蹤

VGG組聯合Meta改進了dust3r,輸入圖片,輸出對應的一系列3D屬性,被CVPR2025收錄!

1.abstract

我們提出了VGGT,一種前饋神經網絡,能夠直接從場景的一個、幾個或數百個視角推斷出所有關鍵的3D屬性,包括相機參數、點云圖、深度圖和3D點軌跡。VGGT不僅簡單高效,能在不到一秒的時間內重建圖像,而且在無需視覺幾何優化技術后處理的情況下,仍然優于其他替代方案。該網絡在多個3D任務中實現了最先進的成果,包括相機參數估計、多視角深度估計、密集點云重建和3D點跟蹤。我們還展示了使用預訓練的VGGT作為特征骨干網絡,能顯著提升下游任務的性能,如非剛性點跟蹤和前饋式新視角合成。

2.introduction

DUSt3R [129]及其改進版MASt3R通過神經網絡直接解決3D重建任務,幾乎完全避免了幾何后處理。但這些網絡一次只能處理兩張圖像,并依賴后處理來重建更多圖像,融合成對重建。

本文進一步推進了減少后處理中對3D幾何優化的需求。我們提出了視覺幾何基礎Transformer(VGGT),這是一種前饋神經網絡,能夠從一個、幾個甚至數百個場景輸入視圖中進行3D重建。VGGT預測包括相機參數、深度圖、點云圖和3D點軌跡在內的完整3D屬性集,并在幾秒鐘內完成一次前向傳遞。

我們還表明,無需為3D重建設計特殊網絡。VGGT基于一個相當標準的大型Transformer [119],沒有特定的3D或其他歸納偏差(除了在幀間和全局注意力之間交替),但在大量帶有3D注釋的公開數據集上訓練。因此,VGGT與自然語言處理和計算機視覺中的大型模型(如GPTs [1, 29, 148]、CLIP [86]、DINO [10, 78]和Stable Diffusion [34])構建方式相同。這些模型已成為多功能骨干,可以微調以解決新的特定任務。同樣,我們展示了VGGT計算的特征可以顯著增強下游任務,如動態視頻中的點跟蹤和新視角合成。

最近有幾個大型3D神經網絡的例子,包括DepthAnything [142]、MoGe [128]和LRM [49]。然而,這些模型只專注于單一的3D任務,如單目深度估計或新視角合成。而VGGT使用共享骨干網絡預測所有感興趣的3D量。我們證明了學習預測這些相互關聯的3D屬性可以提高整體準確性,盡管可能存在冗余。同時,我們展示了在推理過程中,可以從單獨預測的深度和相機參數中導出點圖。

3. Method

3.1問題設定

輸入是N個RGB圖片序列,VGGT的transformer是一個從圖片序列到對應的一組3D屬性的函數,對于每一張輸入圖片,輸出相機內參和外參,深度圖,點圖,C點追蹤維特征網格

1)相機參數

和SfM的框架一致,相機參數表示為,其中q為四元數,t為平移向量,f為視場角。

2)深度圖

圖像???的域定義為:

深度圖定義為,是每一個像素對應的深度值,其中是像素位置。

3)點圖

與dust3r一樣,每一個像素對應一個3D點:,?3D 點 定義在第一個相機?g1??的坐標系中,將其作為世界參考系。

4)關鍵點跟蹤

對于關鍵點跟蹤,采用類似 Track-Any-Point [25, 57] 的方法。給定查詢圖像???中的一個固定查詢點??,網絡輸出一個軌跡:

Transformer 并不直接輸出軌跡,而是輸出特征?。跟蹤任務由一個單獨的模塊完成,該模塊實現函數:

兩個網絡?f?和?T?是端到端聯合訓練的。

輸入圖像序列的順序是任意的,但第一張圖像被選為參考幀,

3.2. Feature Backbone

最近的研究表明,3D 深度學習可以通過減少對模型的先驗假設(歸納偏置),讓模型從大量 3D 標注數據中學習到更好的表示。因此,我們的模型?f?是一個基于 Transformer 的大型網絡。

輸入圖像首先通過 DINO被變成一組 token ,所有幀的 token 被組合起來,輸入主網絡結構進行處理,交替使用幀內自注意力層和全局自注意力層。

標準 Transformer 使用全局自注意力,本文引入了交替注意力機制(Alternating-Attention)

幀內自注意力(frame-wise self-attention)分別關注每幀內的 token??,而全局自注意力(global self-attention)則聯合關注所有幀的 token?,這種設計在整合不同圖像信息和歸一化每幀內 token 激活之間取得了平衡。這樣,我們的架構沒有使用任何交叉注意力層,僅使用自注意力層

3.3. Prediction heads

在這里,我們描述模型?f?如何預測相機參數、深度圖、點云圖和點軌跡。首先需要小補一個知識點:

ICLR2024收錄了一篇來自Meta和Inria的文章VISION TRANSFORMERS NEED REGISTERS,這篇文章主要針對ViT在處理圖像時的局限性提出了一種新的改進方法——“registers”(寄存器)

ViT的一個局限:ViT在處理圖像時,某些區域(如背景或邊緣)可能缺乏足夠的信息,導致模型在這些區域的注意力分配不夠合理。這種信息稀疏性可能影響模型的整體性能,尤其是在處理復雜場景時Registers是一種額外的可學習參數,類似于Transformer中的特殊token(如[CLS] token)。它們被添加到輸入序列中,用于捕捉圖像中未被充分利用的信息(如背景或邊緣)。提供額外的“存儲空間”,幫助模型更好地處理信息稀疏的區域。增強模型對全局和局部信息的整合能力,提升特征提取效果。

具體的做法是:在ViT的輸入序列中引入一組可學習的registers。這些registers與圖像patches一起輸入到Transformer中,參與自注意力機制的計算。Registers在訓練過程中通過反向傳播優化,逐漸學會捕捉圖像中的有用信息。它們不依賴于特定圖像內容,而是通用的輔助特征

現在我們回到主題,關注于網絡的head,先來介紹一些架構內的設置:

加入寄存器:首先,對于每張輸入圖像,為其對應的圖像 token?添加一個額外的相機 token?和四個寄存器 token,然后拼接起來送入AA中,得到輸出token?,前面也提到過,我們要把第一幀圖片的相機坐標系作為模型的世界坐標系,所以為了區別第一幀,第一幀的相機 token 和寄存器 token設置為,其他幀為,經過優化以后,每一幀的相機token和寄存器都是特定的,然后根據上述論文,結束訓練以后丟棄寄存器,使用進行預測。

對于坐標系,我們使用了第一幀圖片的相機坐標系作為模型的世界坐標系,因此第一幀的旋轉四元數與平移為,相機和寄存器token為

接下來,我們還是和3.1一樣,按照輸出來一個一個解釋:

1)相機pose

相機參數???通過輸出的相機 token???預測得到,這個camera head是四個額外的自注意力層和一個線性層。

2)深度圖與pointmap

首先通過 DPT 層 [87] 轉換為密集特征圖,然后,每個??通過一個 3×3 卷積層映射到對應的深度圖和點圖?,我們還為每個深度圖和點云圖分別預測了隨機不確定性,不確定性圖用于損失函數中,并且在訓練后與模型對預測的置信度成正比。

3)點跟蹤

同3.1中提到的,點跟蹤是另外一個網絡,但是我們先要得到特征,在2)中,DPT 頭還輸出密集特征,作為跟蹤頭的輸入,給定查詢圖像??中的一個查詢點?

跟蹤頭??預測所有圖像???中與??對應的 2D 點集,這個過程是,使用 CoTracker2 架構通過相關性計算和自注意力層預測查詢點在其他圖像中的對應點。

我們的跟蹤器不假設輸入幀的任何時間順序,因此可以應用于任何輸入圖像集,而不僅僅是視頻。

3.4. Training

我們使用多任務損失端到端訓練 VGGT:

我們發現相機損失、深度損失和點圖損失的范圍相似,因此不需要額外加權。跟蹤損失的 λ=0.05。

1)pose損失

使用Huber 損失:

2)深度與點圖loss

遵循 DUSt3R [129],通過預測的不確定性圖加權計算了各自loss,實現了基于隨機不確定性的損失:

3)點跟蹤loss

訓練配置

數據集包括:Co3Dv2 [88]、BlendMVS [146]、DL3DV [69]、MegaDepth [64]、Kubric [41]、WildRGB [135]、ScanNet [18]、HyperSim [89]、Mapillary [71]、Habitat [107]、Replica [104]、MVS-Synth [50]、PointOdyssey [159]、Virtual KITTI [7]、Aria Synthetic Environments [82]、Aria Digital Twin [82] 以及一個類似于 Objaverse [20] 的藝術家創建的合成數據集。這些數據集涵蓋了各種領域,包括室內和室外環境,并包含合成和真實場景。這些數據集的 3D 注釋來自多種來源,例如直接傳感器捕獲、合成引擎或 SfM 技術 [95]。

使用?L=24 層全局和幀內注意力。模型總共包含約 12 億個參數。輸入幀、深度圖和點云圖的最大尺寸調整為 518 像素。訓練在 64 個 A100 GPU 上運行,耗時 9 天。我們使用梯度范數裁剪,閾值為 1.0,以確保訓練穩定性。利用 bfloat16 精度和梯度檢查點來提高 GPU 內存和計算效率。

4.實驗

4.1pose估計

使用標準指標?AUC@30,結合?RRA(相對旋轉精度)?和?RTA(相對平移精度)。VGGT 的預測結果(相機姿態、點云圖和深度圖)可以作為?捆綁調整(BA)?的良好初始化,從而進一步提升精度。結合 BA 后,VGGT 的優化時間僅需?2 秒,遠快于傳統方法(如 [125] 中的三角測量和迭代優化)。盡管 VGGT 的前饋模式已經優于所有現有方法,但后優化仍能帶來進一步的性能提升

4.2. Multi-view Depth Estimation

使用 DTU 標準指標,包括:Accuracy、Completeness、OverallVGGT 的?多圖像訓練方案?使其能夠自然地推理多視角三角測量,而不是像 DUSt3R 那樣依賴臨時的對齊操作(如平均多個成對相機三角測量結果)。這種設計使 VGGT 在多視角深度估計任務中表現出色

4.3. Point Map Estimation

在ETH3D 數據集?上進一步評估了 VGGT 在點云預測任務中的性能,并與 DUSt3R 和 MASt3R 進行了對比,如表 3 和圖 4?

4.4. Image Matching

?ScanNet 數據集?上評估了 VGGT 在?兩視圖圖像匹配任務的性能,

兩視圖圖像匹配是計算機視覺中的一個經典問題,屬于剛性點跟蹤的特例(僅限于兩個視圖)。盡管 VGGT 并非專門針對此任務設計,但它仍可作為評估跟蹤精度的基準。對每對圖像提取匹配點,并使用這些匹配點估計本質矩陣(Essential Matrix),進而完成相機標定,即SVD得到相對相機姿態。

最終指標是相對pose精度,通過?AUC?衡量。盡管 VGGT 未針對兩視圖匹配任務進行專門訓練,但其在?ScanNet 數據集?上的表現優于所有基線方法,取得了最高的精度

5. Discussions

當前模型僅適用于常規視角圖像,無法處理魚眼或全景圖像。并且當輸入圖像存在極端旋轉時,重建性能會顯著下降。然模型能夠處理輕微的非剛性運動,但在顯著非剛性變形(如大幅度的物體形變)場景中表現不佳。

改進方法

模型架構設計靈活,能夠通過微調和最小限度的修改適應新的場景或任務。通過在目標數據集上微調模型,可以解決上述局限性,而無需對架構進行大規模修改。

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

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

相關文章

idea2025.2中maven編譯中文亂碼

問題描述:使用idea2025.2編譯器中maven編譯java文件后中文出現亂碼情況解決方案:添加指令: JAVA_TOOL_OPTIONS-Dfile.encodingUTF-8 在下圖位置注意:再次編譯時,可以在原本文件中小范圍修改一點內容(打個…

【適度精簡】Windows 7 旗艦版-emmy精簡系統

Windows 7旗艦版曾是非常受歡迎的操作系統,但隨著時間推移和技術發展,其在一些場景下暴露出了諸多問題,適度精簡的Windows 7旗艦版正是為解決這些問題而出現,以下是從用戶軟件痛點角度對其背景和作用的分析。 添加圖片注釋&#x…

數據分析編程第七步:分析與預測

7.1 銷售趨勢分析利用歷史銷售數據統計月銷售額,計算季節化因子,獲取去季節化銷售數據,然后進行線性擬合,最后預測接下來的某個月的銷售額。第一步:讀數,統計月銷售額A1file(“sales.csv”).importtc(order…

【web3】十分鐘了解web3是什么?

十分鐘了解web3是什么?Web3的核心概念區塊鏈與去中心化智能合約加密貨幣與代幣去中心化應用(DApps)錢包與身份驗證DAO(去中心化自治組織)Web3 國內產品Web3 國際產品Web3 基礎設施Web3 應用場景技術實現特點挑戰與未來Web3的核心…

聯合體和枚舉——嵌入式學習筆記

目錄 前言 一、聯合體(共用體) 1、基本概念 2、初始化和引用 (1)初始化 (2)引用 二、枚舉 前言 在C語言的編程世界中,我們早已熟悉了結構體struct這種能將不同數據類型捆綁在一起的“打包…

SRE命令行兵器譜之思想篇:像SRE一樣思考——命令行不只是工具,更是你的戰友

SRE命令行兵器譜之思想篇:像SRE一樣思考——命令行不只是工具,更是你的戰友 歡迎來到《SRE命令行兵器譜》系列。在深入研究 grep, lsof, tcpdump 這些強大“兵器”的細節之前,我們必須先回答一個更重要的問題: 一個SRE(網站可靠性工程師)在黑色的終端窗口前,腦子里想的…

STL庫——list(類模擬實現)

? ? ? ? ? づ?ど 🎉 歡迎點贊支持🎉 個人主頁:勵志不掉頭發的內向程序員; 專欄主頁:C語言; 文章目錄 前言 一、基本框架 二、構造函數 三、析構函數 四、賦值重載 五、增刪查改 5.1、push_front/pus…

在PowerPoint和WPS演示讓蝴蝶一直跳8字舞

如何讓PPT中插入的對象按指定的軌跡運動并且一直“停不下來”?簡單三步:①插入對象、②設置路徑動畫、③設置動畫重復。本文以蝴蝶圖片一直跳8字舞為例進行實際操作講解,PowerPoint和WPS演示都一樣操作,本文以WPS演示進行講解。第…

并發編程——06 JUC并發同步工具類的應用實戰

0 常用并發同步工具類的真實應用場景JDK 提供了比synchronized更加高級的各種同步工具,包括ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等,可以實現更加豐富的多線程操作;1 ReentrantLock(可重入的占用鎖&#xff0…

Apple登錄接入記錄

Apple文檔——通過 Apple 登錄 使用入門 - 通過 Apple 登錄 - Apple Developer Apple文檔——設計要求——登錄通過 Apple 登錄 | Apple Developer Documentation 插件github版——apple-signin-unity(README 中為接入步驟) GitHub - lupidan/apple-…

【小程序-慕尚花坊04】網絡請求并發與loading

網絡請求并發與loading一,網絡請求并發與loading1,并發處理1.1,異步實現方式2.2,Promise.all異步方式封裝2,loading加載2.1,loading的基本使用2.2,loading與并發結合案例2.3,loading…

CentOS 7 升級 OpenSSH 10.0p2 完整教程(含 Telnet 備份)

🔹 CentOS 7 升級 OpenSSH 10.0p2 完整教程(含 Telnet 備份) 注意:為了避免升級 SSH 時無法遠程登錄,建議先啟用 Telnet 服務 作為備用連接方式。 CentOS 7 默認 OpenSSH 版本是 7.x,升級到 10.0p2 需要 源…

aragfw9.dll aqnky-ef.dll aqua dock.dll apscon~1.dll apropdll.dll app_web_yqnqasrp.dll app_web_

在使用電腦系統時經常會出現丟失找不到某些文件的情況,由于很多常用軟件都是采用 Microsoft Visual Studio 編寫的,所以這類軟件的運行需要依賴微軟Visual C運行庫,比如像 QQ、迅雷、Adobe 軟件等等,如果沒有安裝VC運行庫或者安裝…

rabbitMQ延時隊列實現,怎么保證消息的冪等

一、RabbitMQ 延時隊列實現方式 基于 TTL(Time-To-Live) 死信隊列(Dead Letter Queue) 這是最常用的實現方式,核心思路是: (1)消息設置過期時間(TTL) (2)消息過期后進入綁定的死信隊…

前沿技術觀察:從AI 時代到量子計算的下一站

前沿技術觀察:從AI 時代到量子計算的下一站🚀 技術的浪潮一波接一波,從 人工智能 到 區塊鏈,再到 邊緣計算、元宇宙、量子計算,這些前沿技術正在深刻影響我們的生活與產業格局。 對于開發者和技術愛好者來說&#xff0…

通過Kubernetes安裝mysql5服務

以下是清晰、結構化的操作流程優化說明,按步驟梳理從部署到配置持久化、暴露服務的完整過程:一、基礎部署:快速驗證 MySQL 可用性創建有狀態工作負載進入 KubeSphere 項目 → 工作負載 → 有狀態副本集 → 創建,選擇 通過鏡像創建…

【mysql】SQL 中 IS 與 = 的區別:一個 NULL 值引發的思考

SQL 中 IS 與 的區別:一個 NULL 值引發的思考為什么查詢結果總是少一條數據?可能是 NULL 在搗鬼在 SQL 查詢中,很多開發者都曾遇到過這樣的困惑:明明看起來正確的查詢語句,返回的結果卻總是與預期不符。這往往是因為沒…

openGauss筆記

1、安裝 直接用docker安裝 2、國產化 符合國產化要求 3、客戶端 3.1 dbeaver 社區版本(25.1.4)即可,驅動建議用離線版本,在官網下載最新的,然后在驅動管理里面進行添加本地的jar 3.1.1 驅動配置3.1.2 依賴 需要java版本…

SQL語言增刪改查之C與R

本節通關要求1、掌握 SQL 語句對數據庫進行的創建 Create 和讀取 Retireve 操作的指令;2、多練習🎮說明:操作對象是數據表中的數據行,也就是表中的記錄。請明確操作對象,不要誤傷友軍。背景:create table i…

棧溢出問題

brpc 的 bthread 默認協程棧大小是 128KB(非 pthread 模式)。如果在一個bthread中,它執行的函數內定義了一個局部變量map,有很多個元素,map的大小超過了128KB,協程會自動申請新的棧空間嗎?這里要…