このブログ記事では、コンピュータビジョンにおける単眼深度推定について紹介します。

これまで、単視点計測、エピポーラ幾何、SfM、ステレオシステムについて学び、画像から3Dシーンや物体を数学的に解析する能力と限界を理解してきました。 また、人間がどのように仮定と推論でそれらの限界を克服している可能性があるか、そして深層学習モデルが潜在的に同様のことを行える方法についても簡潔に議論しました。 したがって、この記事以降では、これまでに扱った、または扱っていない、画像から3D世界を人間と同様かそれ以上に理解するための深層学習技術の詳細について単眼深度推定から議論を始めます。
MiDaS & DPT
単視点計測から、水平線を使用して単一画像から3D平面の向きのみを推定でき、人間が実世界での経験から相対的な深度を推論している可能性があることがわかりました。 深層学習モデルが同じ様な高品質な推論と汎化を行うためには、深層学習シリーズを通して学んだように、データの量と質が重要ですが、それらを十分に得ることは困難です。 MiDaS(おそらくmixed datasetsの略)は、スケール・シフト不変損失とパレート最適データセット混合を使用することで、 その物体スケールへのアクセスの限界とデータの量と質に関する困難さを克服することを目指しました。
スケール・シフト不変損失は、予測値と正解値の両方を中央値でシフトし、中央値からの差でスケーリングすることで実装され、 モデルが物体の向きと相対的な深度の学習に集中できるようにし、データセット間の分布シフトを減少させます。 パレート最適データセット混合では、データセットを異なるタスクとして解釈し、他の損失を増加させることなく任意のデータセットで損失を更に減少させることができない解を求めます。 これは単純な混合よりも経験的に良い性能を示すことが観察されました。また、深度推定にはセマンティックの理解が有用であるはずであることから、 エンコーダとデコーダのトレーニングにセマンティックセグメンテーションを補助タスクとして使用しています。

MiDaSがResNetバックボーンを持つ深層畳み込みネットワークとしてかなり高品質な深度マップを達成した数ヶ月後、 vision transformerの論文が発表され、画像分類の文脈でtransformerのより制限の少ない受容野と高い性能を実証しました。 より大きな受容野と同じ入力・出力次元が特徴量の損失を防ぎ、密な予測に適しているのではないかと考え、 DPT(dense prediction transformer)は、ViTまたはResNetバックボーンからの埋め込みを処理し、 出力埋め込みを畳み込みブロックに渡すMiDaSのデコーダにtransformer層を導入しました。 畳み込みブロックはtransformer層からの入力を受け取り、追加のreadトークンを処理し、異なるレベルで結果の埋め込みを連結、 リサンプル、融合してヘッドが最終出力を生成します。バックボーンとデコーダの変更により、 DPTはMiDaS(および他のセマンティックセグメンテーションモデル)よりも良いパフォーマンスを達成し、 より良いグローバルな一貫性を持ちながらより細かい深度マップを得ることに成功しました。
Depth Anything
MiDaSやDPTは単眼深度推定において一定の成功を収めたものの、それでもモデルのポテンシャルをを完全に発揮するのに十分な高品質データが不足していました。 これは、データ収集にステレオカメラや手動アノテーションが必要だったため、またそれらの視覚システムが使用できる環境にシーンが限定されていたからです。 画像セグメンテーションタスクも同様のデータ収集の課題に直面していましたが、Segment Anything Model(SAM)はゼロショット、 プロンプト可能なセグメンテーションモデルをトレーニングすることで驚くべき結果を達成しました。具体的には、SAMはモデルをループに組み込んだデータエンジンを作成し、 事前訓練された画像エンコーダーとプロンプトエンコーダーを活用しました(SAMに馴染みがない場合は、 記事MLエンジニアへの道 #58 - Segment Anythingをチェックすることをお勧めします)。
SAMにインスパイアされてか、Depth Anythingは大規模な教師モデルをラベル付きデータセットでトレーニングし、 それを使用してSA-1Bのような膨大な未ラベルデータセットにアノテーションを付けることで、疑似ラベル付きデータセットを作成しました。 この疑似ラベル付きデータは、データ摂動(色彩飽和度とCutMix)とともに、ラベル付きデータセットと一緒により小さな学生モデルに供給されました。 この知識蒸留におけるデータ摂動は、学生が単純に教師を模倣して教師のエラーを再現することを防ぐことを意図していました。 教師のエンコーダーはセマンティックの理解のために事前訓練された重みで初期化されたDINOv2エンコーダーであり、 教師と学生のエンコードの出力の違いを測定するためにコサイン類似度損失が導入され、 学生にセマンティックの理解を促しました(完全な模倣を避けるため、特定の閾値で損失を切り捨てる)。
教師と学生の両方のモデルは、ViTバックボーンを持つDPTデコーダーと、MiDaSからのスケール・シフト不変損失を使用しました。 こうしてトレーニングされたDepth Anythingはゼロショット単眼深度推定で驚くべき結果を達成し、 ファインチューニング後にメトリック深度推定(相対深度ではなく絶対深度の測定を目的とする)において適度な能力を実証しました。 こうしたより高い性能は、データセットのサイズを拡大した未ラベルデータセット(疑似ラベル付きデータセット)の使用と、 DINOv2によるセマンティックに関するより深い理解に起因していると考えられ、これはMiDaS、DPT、SAMで得られた観察と一致しています。
Depth Anything V2
実際のラベル付き画像は、Depth Anything V1(V1)が未見の実画像に対してある程度の汎化性を達成するのに役立ちましたが、 実際のラベル付き画像は必然的に測定エラーやステレオマッチング(対応)の問題に直面し、粗くなる傾向があり、理想的ではありません。 一方、合成ラベル付き画像は、本質的にこれらの問題がなく、倫理的・プライバシーの懸念も回避できるため、より理想的なトレーニングデータセットとなります。 しかし、Depth Anything V2の論文で「色彩が綺麗すぎ、レイアウトが整然としすぎている」と記述されているように「完璧すぎる」などの独自の問題もあり、 シーンの多様性が限られる傾向もあります(リビングルームや街路)。この合成画像に見られる分布シフト、すなわちsim-to-realギャップは、 実画像に適用した際に汎化問題を引き起こす可能性があります。
合成画像の精度と量を享受しながらこのギャップに対処するため、Depth Anything V2(V2)は最高の汎化能力を持つ最大のDINOv2であるDINOv2-Gを、 合成画像でトレーニングされた教師として活用し、学生教師学習のために未ラベル画像から疑似ラベル付き実画像を生成しました。 これにより、分布シフトを最小限に抑えた高精度で多様なデータセットが作成されました。 V2はまた、SAMを組み込んだ手動投票システムを使用してさまざまな画像内のオブジェクトの相対深度を得ることでDA-2Kデータセットを作成し、 従来のメトリクスでは通常測定できない細粒度予測、複雑なシーンでの堅牢な予測、透明オブジェクト、 その他の関連する側面での性能測定を行いました。結果、V1と同じモデルアーキテクチャを従うV2は、従来のベンチマークでV1と同様の結果を達成しましたが、 DA-2Kではより優れた性能を示しました。
結論
この記事では、シリーズでこれまで議論してきた(そしていくつかまだ議論していなかった)様々な深層学習技術を活用して推論を行い、 人間が行うのと同様に単視点計測の限界を克服するMiDaS、DPT、Depth Anythingモデルを取り上げました。 単眼深度推定は、厳しいハードウェア制限がある状況や、今後の記事で議論する他の複雑なコンピュータビジョンタスクにも役立ちます。 これらの技術とその定性的評価の詳細については、以下に引用した論文をチェックすることをお勧めします。
リソース
- Ranftl, R. et al. 2020. Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer. ArXiv.
- Ranftl, R. et al. 2021. Vision Transformers for Dense Prediction. ArXiv.
- Yang, L. et al. 2024. Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data. ArXiv.
- Yang, L. et al. 2024. Depth Anything V2. ArXiv.