本記事では、機械学習手法MergeNetを用いて一枚の画像から深度推定を行う方法をご紹介します。
MergeNet
概要
MergeNetは、既存の単眼デプス推定手法を使用し、低解像度の推定結果と高解像度の推定結果をマージすることで、ゼロショットで精細な単眼デプス推定を実現する手法です。
出典: compphoto/BoostingMonocularDepth |
従来、低解像度の画像をネットワークに入力した場合、高周波成分が欠落し画像の細かい部分の深度推定精度が低いという課題がありました。
反対に、高解像度の画像の場合、全体的な構造の一貫性が下がり本来フラットであるはずの壁などの推定結果にムラができるという課題がありました。
このように構造の一貫性と、高周波成分にはトレードオフが存在していることが知られています。
MergeNetでは、トレードオフ解消のため、低解像度・高解像度の2つの画像の推定結果をマージするための変換ネットワークを構築し、精度の向上を実現しています。
詳細はこちらの論文をご参照ください。
本記事では上記手法を用いて、任意の画像で単眼デプス推定を行います。
デモ(Colaboratory)
それでは、実際に動かしながら単眼デプス推定を行っていきます。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo
また、下記から直接Google Colaboratoryで開くこともできます。
また、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
環境セットアップ
それではセットアップしていきます。 Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。
初めにGithubからソースコードを取得します。
次ににライブラリをインポートします。
以上で環境セットアップは完了です。
学習済みモデルのセットアップ
Mergeのため学習済みモデルと既存単眼デプス推定手法Midas, LeResの学習済みモデルをダウンロードします。
テスト画像のセットアップ
モデルに入力するテスト画像をダウンロードします。
本記事では、こちらの画像を使用させていただきます。
単眼デプス推定
用意が整ったので、単眼デプス推定を行っていきます。
初めに、MiDasを使用します。この手法は、逆深度を予測します。
予測結果は以下の通りです。
続いてLeResをベースとした推定を行います。
出力結果は以下の通りです。
LeResの方が、建物全体の奥行がうまく表現されています。
まとめ
本記事では、MergeNetを用いた単眼デプス推定の方法をご紹介しました。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
参考文献
1. 論文 - Boosting Monocular Depth Estimation with Lightweight 3D Point Fusion
0 件のコメント :
コメントを投稿