2024年6月26日 星期三

論文簡介:Depth Anything 及 Depth Anything V2

這幾年看了這麼多利用深度學習估計圖片內物體深度的論文,今年終於出現我覺得能夠真正運用在實務上的方法了。文章的標題為 Depth Anything,發表在 CVPR 2024;作者在近期也改進了一些細節,發表了 Depth Anything V2。本文為讀這兩篇文章的筆記。

利用已標註的圖片訓練 teacher model

作者直接實作了 MiDaS (https://arxiv.org/pdf/1907.01341v3)。唯一的細節是將深度的標註轉化成 disparity 轉換至 0 到 1 的區間,再利用中位數以及與中位數的距離來 normalize;這個步驟的目的是讓不同的數據集都能有類似的標註結果。

使用未標註的大量圖片訓練 student model

作者使用的已標註圖片大概只有 1.5M,但使用的未標註圖片有 62M 張,相當驚人的數字。一開始作者使用 teacher model 來自動標註 62M 張圖片,再拿來訓練 student model;但是發現結果與一開始的 teacher model 差不多。作者認為原因是模型的架構相近,因此當資料量到一定程度後就不會再學到新東西。

於是作者想到在 student model 使用更難的 loss function。使用的方法是 CutMix (https://arxiv.org/abs/1905.04899):也就是將兩張圖片用 crop - paste 的方法組合起來。方法雖然很直觀也很容易實作,但這一步驟確實讓大量的未標註圖片貢獻更多的細節至模型裡。

利用 Semantic Segmentation 進一步提升模型效果

由於圖片物體的深度值與 semantic segmentation 有很大的正相關,作者採用的方法是另外跑一個 semantic segmentation 模型,目的是讓預測出來的 depth map 與 semantic segmentation 的 feature map 越接近越好。

以上三種方法對於結果的影響如下:

Ablation studies

Depth Anything V2 的進一步優化

本文最大的貢獻是改用合成的圖片訓練 teacher model,以克服現有標註圖片的一些限制;

  1. Noise 像是透明物體、無紋理或重複模式、以及動態物體的深度標註。
  2. 缺乏深度的細節,由於感測器的精度限制,標註的深度通常無法包含細節。

業界實作會遇到的問題

這個方法是到目前我認為最有機會讓機器學習完全取代傳統電腦視覺深度估計的方法,但仍然有一些細節問題,需要釐清後才能使用在機器人或自動駕駛的應用上:

  1. 我還沒找到這種單眼視覺深度估計與現有的雙眼視覺深度估計的結果比較
  2. 在一些特別的相機上(像是魚眼相機),這種方法是否也能一樣有效? 

參考資料

  • Depth Anything:https://arxiv.org/pdf/2401.10891
  • Depth Anything V2:https://arxiv.org/pdf/2406.09414


沒有留言:

張貼留言