紀念碑谷式錯覺圖像都被「看穿」,港大、TikTok的Depth Anything火了
人類有兩只眼睛來估計視覺環境的深度信息,但機器人和 VR 頭社等設備卻往往沒有這樣的「配置」,往往只能靠單個攝像頭或單張圖像來估計深度。這個任務也被稱為單目深度估計(MDE)。
近日,一種可有效利用大規模無標注圖像的新 MDE 模型 Depth Anything 憑借強大的性能在社交網絡上引起了廣泛討論,試用者無不稱奇。
甚至有試用者發現它還能正確處理埃舍爾(M.C.Escher)那充滿錯覺的繪畫藝術(啟發了《紀念碑谷》等游戲和藝術):
從水上到水下,絲滑切換:
更好的深度模型也得到了效果更好的以深度為條件的 ControlNet,可用于圖像生成和視頻編輯。如下圖所示,生成的內容質量得到了顯著增強:
理論上說,基礎模型可用于解決單目深度估計(MDE)問題,即基于單張圖像估計深度信息。這類技術在機器人、自動駕駛、虛擬現實等領域都有廣闊的應用前景。但由于難以構建帶有數千萬深度標簽的數據集,這一問題還少有研究者探索。
此前的 MiDaS 算得上是這個方向上的一項開創性研究,其基于一個混合標注的數據集訓練了一個 MDE 模型。盡管 MiDaS 展現出了一定程度的零樣本能力,但受限于其數據覆蓋范圍,其在某些場景中的表現非常差。
來自香港大學、TikTok 等機構的研究者提出的 Depth Anything ,則是一個更為實用的解決方案。
- 論文標題:Depth Anything Unleashing the Power of Large-Scale Unlabeled Data
- 論文地址:https://arxiv.org/pdf/2401.10891.pdf
- 項目主頁:https://depth-anything.github.io/
- 演示地址:https://huggingface.co/spaces/LiheYoung/Depth-Anything
該研究的目標是構建一種能在任何情況下處理任何圖像的簡單卻又強大的基礎模型。為了做到這一點,該團隊采用了一種方法擴大數據集的規模:設計了一種數據引擎來收集和自動標注大規模無標注數據(約 6200 萬)。這能顯著擴大數據覆蓋范圍,并由此可以降低泛化錯誤。
為了保證數據擴展的質量,研究者探索了兩種簡單卻有效的策略。
第一,利用數據增強工具創建一個難度更高的優化目標。這會迫使模型主動尋找額外的視覺知識并獲取魯棒的表征。
第二,開發一種輔助監督機制,可強制模型從預訓練編碼器繼承豐富的語義先驗知識。
團隊使用 6 個公共數據集和隨機拍攝的照片評估了新方法的零樣本能力,其泛化能力非常出色。更進一步,使用來自 NYUv2 和 KITTI 的度量深度信息對模型進行微調后,新模型獲得了新的 SOTA 結果。
這篇論文的主要貢獻包括:
- 強調了大規模、低成本和多樣化無標注圖像的數據擴展對 MDE 的價值。
- 指出了在聯合訓練大規模有標注和無標注圖像方面的一個重要實踐方法:不是直接學習原始無標注圖像,而是為模型提供更困難的優化目標,讓其學會使用額外的知識。
- 提出從預訓練編碼器繼承豐富的語義先驗,從而實現更好的場景理解,而不是使用輔助性語義分割任務。
- 新模型的零樣本能力超過 MiDaS-BEiT_L-512。不僅如此,使用度量深度進行微調后,新模型的表現更是顯著超過 ZoeDepth。
Depth Anything
TikTok 的這項研究使用了有標注和無標注圖像來實現更好的單目深度估計(MDE)。用數學形式表示,可以將有標注和無標注集分別表示成:
這里的目標是根據 D^l 學習得到一個教師模型 T。然后,使用 T 給 D^u 分配偽深度標簽。最后,使用有標注集和偽標注集的組合數據集訓練一個學生模型 S。圖 2 是一個簡單圖示。
學習有標注圖像
這個過程與 MiDaS 的訓練過程類似。具體來說,深度值首先會通過 d = 1/t 被轉換到視差空間(disparity space)中,然后再把每張深度映射圖歸一化到 0~1 范圍內。為了實現多數據集聯合訓練,該團隊采用了仿射不變損失。
這樣一來就可以忽略每個樣本的未知尺度和偏移。
為了得到穩健的單目深度估計模型,他們從 6 個公共數據集收集了 150 萬張有標注圖像。表 1 列出了這些數據集的詳情。
不僅如此,為了增強從這些有標注圖像學習到的教師模型 T,他們還采用了 DINOv2 預訓練權重對編碼器進行初始化。在實踐操作中,該團隊的做法是使用一個經過預訓練的語義分割模型來檢測天空區域并將其視差值設置為 0(即最遠)。
解放無標注圖像的力量
這正是這項研究的主要目標。至于無標注圖像源,該團隊選擇了 8 個大規模公共數據集,保證了多樣性。這些數據集總共包含 6200 多萬張圖像。詳情見表 1 下半部分。
技術上講,給定之前獲得的 MDE 教師模型 T,可在無標注集 D^u 上得到預測結果,從而得到一個偽標注集:
該團隊引入了兩種形式的擾動:一種是強顏色扭變,包括顏色抖動和高斯模糊;另一種是強空間扭曲,也就是 CutMix。
盡管方法很簡單,但這兩種修改方法可讓大規模無標注圖像顯著提升使用有標注圖像訓練的基準模型。
至于 CutMix,它最早是為圖像分類提出的技術,目前還很少用于單目深度估計。該團隊的做法是先在空間上插值一對隨機的無標注圖像 u_a 和 u_b:
在處理無標注圖像時,該團隊設定使用 CutMix 的概率為 50%。輸入給 CutMix 的無標注圖像已經在顏色上經歷過強扭變,但給教師模型 T 進行偽標注的無標注圖像卻是干凈的,沒有任何扭變。
語義輔助型感知
這項研究首次嘗試了組合使用 RAM + GroundingDINO + HQ-SAM 來為無標注圖像分配語義分割標簽。經過后處理之后,這得到了一個包含 4000 個類別的類別空間。
在聯合訓練階段,該模型的任務使用一個共享的編碼器和兩個單獨的解碼器得到深度預測結果和分割預測結果。不幸的是,一番試錯之后,該團隊沒能提升原始 MDE 模型的性能。
因此,他們的目標就變成了訓練更多能提供信息的語義信號,以作為輔助監督信號助力深度估計任務。
該團隊表示:「DINOv2 模型在語義相關任務的強大表現讓我們大受震撼。」
因此,他們提出通過一個輔助特征對齊損失將其強大的語義能力遷移到新的深度模型。其特征空間是高維且連續的,因此包含的語義信息比離散掩碼更豐富。該特征對齊損失的數學形式為:
實驗及結果
研究者使用了 DINOv2 編碼器進行特征提取。所有標注的數據集都簡單地合并在一起,無需重新采樣。無標注的圖像由使用 ViT-L 編碼器的最佳教師模型標注,每批標注和無標注圖像的比例設定為 1:2。
零樣本相對深度估計
研究者在六個具有代表性的不可見數據集 KITTI、NYUv2、Sintel、DDAD、ETH3D 和 DIODE 上全面驗證了 Depth Anything 模型的零樣本深度估計能力 ,并將其與最新 MiDaS v3.1 中的最佳 DPT-BEiT_L-512 模型進行了比較,后者使用的標注圖像比前者多。
如表 2 所示,在均使用 ViT-L 編碼器的前提下,在廣泛的場景中,Depth Anything 在 AbsRel 和 δ_1 度量上都大大超過了 MiDaS 的最強模型。
面向度量深度估計的微調
研究者進一步研究了 Depth Anything 模型,將其作為下游度量深度估計的一種有潛力的權重初始化方法。
兩種有代表性的情況如下:
1) 域內度量深度估計,即在同一域內對模型進行訓練和評估。如 NYUv2 表 3 所示,Depth Anything 模型明顯優于之前的最佳方法 VPD,δ_1 (↑) 從 0.964 → 0.984,AbsRel (↓) 從 0.069 提高到 0.056。表 4 中的 KITTI 數據集也有類似的改進。
2) 零樣本度量深度估計,即模型在一個域(如 NYUv2)上進行訓練,但在不同域(如 SUN RGB-D)上進行評估。如表 5 所示,在大量未見過的室內和室外場景數據集中,Depth Anything 比基于 MiDaS 的原始 ZoeDepth 得出了更好的度量深度估計模型。
面向語義分割進行微調
在本文方法中,研究者設計了 MDE 模型,通過簡單的特征對齊約束,從預訓練編碼器中繼承豐富的語義先驗。隨后,研究者檢驗了 MDE 編碼器的語義能力。
如 Cityscapes 數據集的表 7 所示,研究者從大規模 MDE 訓練中獲得的編碼器(86.2 mIoU)優于從大規模 ImageNet-21K 預訓練中獲得的現有編碼器,例如 Swin-L (84.3) 和 ConvNeXt-XL (84.6)。表 8 中的 ADE20K 數據集也有類似的觀察結果。
消融實驗
在消融實驗中,研究者使用了 ViT-L 編碼器。表 6 展示了每個訓練集的零樣本遷移性能。
如表 9 所示,簡單地添加帶有偽標簽的無標注圖像不一定為模型帶來增益,大規模的無標注圖像能夠顯著增強模型的泛化能力。