はじめに
たった1枚のRGB画像から、画素ごとの奥行きを推定する「単眼深度推定」. 本記事では,その高精度モデルの一つであるDepth Anything V2の概要を解説する.Depth Anything V2は,従来苦手だった複雑なテクスチャや透明な物体に対しても,極めて高精度な推定が可能である. 記事の後半では,実際にDepth Anything V2のコードを動かし,手持ちの画像で深度推定を行う.
Depth Anything V2の何がすごいのか
Depth Anything V2(以下DA V2)は,Depth Anything V1や従来のモデル(MiDaSなど)と比較して,特に 「透明な部分」「反射する物体」「複雑な細部」 の推定精度が劇的に向上している.この進化の鍵は,モデルの構造(アーキテクチャ)ではなく,学習データの質の向上にある.
1.実データ学習の限界
従来のアプローチでは,実写画像とセンサー(LiDARやKinect等)で取得した深度情報をペアにして学習を行う.しかし,センサーには実環境による致命的な弱点がある.
- 透明なもの(ガラス等):センサーが透過してしまい,正しく測定できない
- 反射するもの(鏡等):センサーの光が乱射し,ノイズがのる
この結果,誤った正解ラベル(ノイズが含んだラベル)で学習することになり,透明・反射物体などの領域において,深度情報が欠落または誤計測された状態で学習が進んでしまう課題がある.
2.合成データの活用(DA V2の解決策)
DA V2はこの問題を解決するために 合成データ(CG画像) を学習の主軸として採用している.CG空間であれば,透明な物体であってもピクセル単位で正確な深度情報を確実に得ることができる.
- Teacherモデルの作成:高品質な合成データのみを使って,物理的に正しい深度を理解できる「先生」モデルを作成.
- 大規模データのラベリング:その「先生」を使って,大量の実写画像に疑似的な正解ラベル(Pseudo-labels)を付与する.
- Studentモデルの学習:最終的なモデルを,先生が付けたラベルを使って学習を行う.
このプロセスにより,DA V2は「実写への対応力」と「ガラスや細部の正確な認識」の両立に成功した.
実行デモ
実際にDA V2を動かし深度推定を行なってみる.
GitHubに公開されている以下のリポジトリをクローンしで実行する.
https://github.com/DepthAnything/Depth-Anything-V2
設定
モデルサイズ:vitl
入力サイズ:518
画像:ImageNet由来のもの
実行結果
まとめ
Depth Anything V2を使用することで,たった1枚の画像から驚くほど高精細な深度情報を抽出することができました.特に,従来モデルではノイズが乗りやすかった細部や複雑な形状に対しても,破綻することなく滑らかな深度マップが生成されています.公式リポジトリから簡単に試すことができるため,興味のある方はぜひ手持ちの画像で体験してみてください.
参考文献
論文
Yang, L., Zhao, Z., Kang, B., Huang, Z., Xu, X., Feng, J., & Zhao, H. (2024). Depth Anything V2. Advances in Neural Information Processing Systems
https://openreview.net/pdf?id=cFTi3gLJ1X
Project Page
https://depth-anything-v2.github.io/


