![]()
長視頻 3D 重建最怕的,其實不是 "看不清"。
前面幾十幀拍得再好,序列一拉長,軌跡就開始慢慢歪。模型在短片段上表現還行,但讓它一口氣吃掉幾百上千幀,誤差會一段接一段往后累。到了公里級大場景,這個問題被放得非常大。
浙江大學、地平線機器人和之江實驗室最近的新工作Scal3R,要解決的就是這件事。
以往做長序列重建,大家主要在 "怎么切塊、怎么拼回去" 上做文章。
Scal3R 則更進一步關注問題本質:推理時要處理超長序列,訓練時也應該讓模型見過超長序列。作者借助 test-time training 技術,設計了一個全局上下文模塊和同步機制,將長序列訓練、推理以及跨 chunk 的信息更新放進同一個流程里,大幅提升了長序列重建的穩定性和精度。
Scal3R 能夠處理超萬幀幾千米的超大規模場景三維重建,輸出精確的相機位姿和點云,下面是真實拍攝浙大紫金港校區的重建效果:
![]()
視頻鏈接:https://mp.weixin.qq.com/s/Yi8AMQ3BxcTCLUDlzvLlcg
和 Depth Anything 3(Streaming 模式)的可視化對比:
![]()
視頻鏈接:https://mp.weixin.qq.com/s/Yi8AMQ3BxcTCLUDlzvLlcg
論文 Scal3R: Scalable Test-Time Training for Large-Scale 3D Reconstruction 已上線 arXiv,代碼和模型權重分別發布在 GitHub 和 Hugging Face 平臺:
![]()
- 論文鏈接:https://arxiv.org/abs/2604.08542
- 論文主頁:https://zju3dv.github.io/scal3r/
- 代碼倉庫:https://github.com/zju3dv/Scal3R
- 模型地址:https://huggingface.co/xbillowy/Scal3R
超大規模場景重建問題在哪
這兩年 VGGT 這類前饋式 3D foundation model 已經能直接從 RGB 估計相機參數、深度和點云,精度相當不錯。
但場景一變大、序列一拉長,麻煩就來了。
一方面,Transformer 的長序列建模本身就貴,計算和顯存都會飛漲。
另一方面,很多方法訓練和測試時面對的序列形態根本對不上。訓練通常喂短序列或局部窗口,測試卻要求模型吞幾百幀甚至上千幀,這種錯位會把長程漂移放大。
目前應對長序列大致有兩條路。
一條是壓縮 token,把更長序列硬塞進模型。確實能省一些計算,但細節和長程依賴也容易跟著被壓掉。
另一條是 chunk-based 路線:先切成多個重疊片段各自重建,再做跨塊對齊。這條路比較實用,擴展性也好,只是前提是每一塊的局部幾何預測要夠準,否則塊間誤差會繼續被放大。
所以問題的重點并不是 "怎么處理長序列",而是怎么讓模型訓練時就學會處理長序列,再用同一套機制在測試時穩住局部幾何和全局一致性。
Scal3R 是怎么做的
Scal3R 是在 VGGT 的視覺幾何能力上往前走的。局部幾何依然重要,Scal3R 沒打算繞開它,只是希望這份能力在長序列訓練和長序列推理里以一致方式被使用。
作者的想法很直接:要讓模型測試時穩住長視頻,就不能只拿短片段訓練然后指望它自然泛化到長序列。所以 Scal3R 借助 test-time training 相關機制,把長序列訓練、長序列推理以及跨 chunk 的信息更新放進同一個流程里
![]()
Scal3R 的整體框架。輸入長序列首先被切成多個重疊 chunk 并行處理,訓練和推理都圍繞長序列展開,并通過測試時更新與跨 chunk 同步提升大規模場景重建的一致性。
圍繞這個思路,論文給出了兩個核心模塊。
一個是全局上下文記憶模塊(Global Context Memory,GCM)。
它由若干自適應存儲單元(Adaptive Memory Units)組成,可以當成一組輕量的、可更新的上下文模塊。每處理完一個 chunk,模型會通過自監督目標更新這些單元。GCM 在這里起兩個作用:一是跨 chunk 累積并保留上下文信息;二是讓訓練和測試階段用同一套逐 chunk 更新方式,模型從訓練第一步起就在適應長序列。
另一個是全局上下文同步機制(Global Context Synchronization,GCS)。
GCM 管逐 chunk 更新和上下文累積,GCS 負責把這些更新在不同 chunk 之間同步起來,使用 PyTorch DDP 的 all-reduce 機制,在不同的 chunk 之間同步自適應存儲單元的自監督梯度。
Scal3R 處理長序列時會把它切成多個重疊 chunk,分配到不同 GPU 上并行跑。GCS 讓這些 chunk 的更新彼此同步,不管訓練還是推理,整個長序列機制都是一致的,不會出現訓練時學局部、測試時臨時拼一下的情況。
關鍵的點是,作者并沒有把 test-time training 當成測試階段的臨時補丁,而是把它變成支撐長序列訓練和長序列推理對齊的一種方式;GCM/GCS 則在這種長序列機制里做更新、保留和同步。
為什么 Scal3R 的做法可以穩住長序列
長序列重建里最棘手的情形,經常不是 "看不見",而是局部都能看懂、時間跨度一長就不一定穩得住。
大尺度室外場景里的重復紋理、長距離視角變化、稀疏采樣、長走廊、回環閉合 —— 每一項都在考驗局部幾何預測的魯棒性。局部塊必須先算得準,跨塊同步和長程約束才有意義;否則局部誤差會順著整條序列一路被放大。
Scal3R 的價值就在這里。
它沒有把長視頻簡單切開再拼回去,而是讓模型在訓練階段就反復經歷 "長序列 + 逐 chunk 更新 + 跨 chunk 同步" 的完整過程。等到測試時,模型遇到的行為模式和訓練時是一樣的。
這時 memory 的角色就清楚了:GCM 不替代局部幾何預測,只是在逐 chunk 訓練和推理里提供一份可更新的上下文狀態,把前后 chunk 的信息接起來 —— 前提依然是局部幾何得可靠。
所以 Scal3R 重要的地方不在削弱局部幾何,而在把局部幾何、可更新上下文、長序列訓練、測試時同步這四件事放到同一個框架里。
一,長序列被拆成 chunk 來算。這把原本隨序列長度平方增長的計算壓力攤平了。按論文里的視角,全序列注意力的復雜度會隨長度快速上升,chunk-wise 處理則把問題改寫成更可控的局部計算,再通過融合擴展到整段序列。
二,不是簡單分塊,而是逐 chunk 更新、再做同步。很多分塊方法塊和塊之間是割裂的,算完就算完了。Scal3R 會在每個 chunk 上算可更新模塊的變化,再由 GCS 把這些更新在 chunk 之間同步起來。網絡雖然按塊處理,但訓練和測試時都在學習怎么把局部結果放回長序列里。
三,訓練時就直接面向長序列。論文里講得比較清楚:訓練階段會直接采樣連續長序列,再用不同 GPU 分組去覆蓋不同的有效序列長度。TTT 在這里更像是一種手段 —— 讓長序列訓練可行,也讓測試行為和訓練行為保持一致。
這三條合起來就能解釋為什么 Scal3R 不止是 "能跑長序列",而是在長序列上把局部幾何質量、效率和整體一致性都穩住了。
在基準測試上的效果
論文從相機位姿和三維重建兩部分做了比較完整的評估,覆蓋室內外和不同尺度的場景,結果顯示提升很扎實。
![]()
論文主表中的位姿與資源對比,覆蓋 VKITTI2、KITTI Odometry 和 Oxford Spires。
相機位姿估計:表里 baseline 大致可以分成三類。SLAM / SfM 方法在條件合適時很準,比如 COLMAP 在 Oxford Spires 上很強,DPVO++ 在 VKITTI2 上誤差也低;但它們要么需要內參,要么速度慢,在資源統計中,COLMAP 平均一次推理要 6614.73 秒。前饋和 streaming 方法更快,但長序列漂移壓不住,FastVGGT 還會遇到顯存問題。最接近的對照是 VGGT-Long:它比不少 streaming baseline 穩,但 KITTI 上 ATE / RTE / RRE 仍是 25.94 / 9.67 / 1.71,而 Scal3R 是 14.55 / 4.61 / 0.97;Oxford Spires 上也從 15.46 m 降到 4.45 m。
![]()
大規模多場景軌跡對比。藍線是預測軌跡,紅色虛線是真值軌跡。
軌跡圖更直觀:KITTI 00 上 Scal3R 的 ATE 是 4.298,VGGT-Long 是 8.637;Oxford Keble 04 和 Oxford Quarter 01 上 ATE 分別是 2.448 和 1.624。藍線基本能貼住真值軌跡,其他方法更容易漂成局部團塊。
再看三維重建精度
![]()
三維重建點云評測,指標為 Chamfer Distance(越低越好)和 F1(越高越好)
這張表更直接。Scal3R 在 ETH3D、Oxford Spires、VKITTI2 三個數據集上六個指標都是最優:ETH3D 是 0.11 / 0.91,Oxford Spires 是 0.96 / 0.96,VKITTI2 是 0.40 / 0.91。對比最強的 VGGT-Long,ETH3D 從 0.24 / 0.84 提到 0.11 / 0.91;Oxford Spires 從 3.41 / 0.80 提到 0.96 / 0.96;VKITTI2 則從 1.78 / 0.70 提到 0.40 / 0.91。這里的差距不只是局部幾何更準,也和前面的位姿穩定性有關:軌跡一旦漂了,后面拼出來的點云通常也會散。
![]()
重建對比圖,展示 Oxford Keble 04 和 ETH3D Terrains 等場景。
定性圖也對得上表格。像 Oxford Keble 04 這種大尺度校園場景,Scal3R 的建筑輪廓和庭院結構更完整;ETH3D Terrains 紅框里的墻面和門框邊界也更規整。FastVGGT、VGGT-Long、TTT3R 在不同場景里會出現局部破碎、漂散或者結構發糊,原因往往不是某一幀深度錯了,而是長序列位姿和局部幾何沒有一起穩住。
精度之外再看下資源和擴展性。Scal3R 可以在單張 RTX 4090 上完成推理,它不是吞吐最快的方案,但在精度、長序列穩定性和可擴展性之間做了一個比較實用的取舍。補充材料里還分析了隨序列變長的趨勢:從 150 幀漲到 990 幀,整體運行時間基本呈線性增長,相對位姿誤差則穩在 0.07 到 0.08 m,說明它不是只適配某個固定長度。
結語
Scal3R 最值得留意的地方,不只是又做出來一個更強的長序列 3D 重建方法,而是它把問題的重點重新擺過一遍。
它沒有把 "大規模 3D 重建" 簡單理解成更大的 backbone、更多 token 或者更激進的壓縮,而是問了一個更靠前的問題:模型要想在測試時吞下長序列,訓練時是不是也得先真正學過長序列?
順著這個視角往下看,Scal3R 提出的其實不只是一個記憶模塊,更像是一種把局部幾何、可更新上下文、長序列訓練和測試時同步串起來的思路。對 3D 重建如此,搬到更廣泛的長視頻場景理解任務上,可能也差不多。
如果你正在關心這幾件事 —— 長視頻怎么做高質量 3D 重建;foundation model 怎么擴展到公里級場景;test-time training 除了語言和分類任務,還能怎么真正落到 3D 視覺里 —— Scal3R 值得花點時間細讀。
![]()
視頻鏈接:https://mp.weixin.qq.com/s/Yi8AMQ3BxcTCLUDlzvLlcg
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.