Skip to content

MoGe (Microsoft) -- 3D形状推定とGradioインターフェース

概要

このセクションでは、MoGe がどのようなモデルで、他の深度推定モデルと何が違うのかを学びます。

MoGe は Microsoft Research が開発した単眼画像からの3Dジオメトリ推定モデルです。正式名称は「MoGe: Unlocking Accurate Monocular Geometry Estimation for Open-Domain Images with Optimal Training Supervision」(Wang et al., 2024)です。

MoGe が他モデルと決定的に異なる点

Depth Anything V2Apple Depth Pro などの一般的な深度推定モデルは、入力画像に対して深度マップ(グレースケール画像) を出力します。深度マップを3Dモデルとして活用するには、別途3D再構築のパイプラインを構築する必要があります。

一方、MoGe は1枚の画像から深度マップだけでなく、3Dポイントクラウドやメッシュ(GLB形式)を直接出力できます。つまり、推論結果をそのまま Blender などの3Dソフトウェアに読み込んで編集できます。深度マップ → 3D変換の中間工程が不要なため、ワークフローが大幅に簡略化されます。

内部的には ViT-Large(Vision Transformer)をバックボーンとして使用しており、Hugging Face 上で事前学習済みモデル(Ruicheng/moge-vitl)が公開されています。また、Gradio ベースの Web インターフェース(app.py)が同梱されているため、コマンドラインの知識がなくてもブラウザ上で画像をアップロードし、3D結果をインタラクティブに確認できます。

特徴MoGeDepth Anything V2Apple Depth Pro
出力形式深度マップ + 3Dメッシュ(GLB)深度マップ(グレースケール画像)深度マップ(グレースケール画像)
3Dモデル直接出力可能不可(別途変換が必要)不可(別途変換が必要)
深度推定タイプ幾何学的3D推定相対深度推定メトリック深度推定
Web UIGradio(同梱)なしFigure1アプリ

前提条件

このセクションでは、導入に必要な環境を確認します。

項目要件
Python3.12 推奨(3.13は非対応の場合あり)
GPUCUDA対応のNVIDIA GPU
CUDA Toolkitインストール済みであること
Gitインストール済みであること
OSWindows 10/11(本記事はWindows環境での手順)

Python・Git・CUDA の基本的なインストール方法は 環境構築の入門ページ を参照してください。

導入手順

このセクションでは、MoGe のクローンから Gradio UI の起動までをステップバイステップで学びます。松崎が試行錯誤の末にたどり着いた、動作確認済みの手順です。

推奨: 仮想環境で実行する

以下の手順ではグローバル環境に直接パッケージをインストールしていますが、他の Python プロジェクトとの依存関係の競合を防ぐため、仮想環境を使用することを強く推奨します

bash
# venvを使う場合
python -m venv moge-env
moge-env\Scripts\activate

# 以降の手順はこの仮想環境内で実行する

condaを使う場合

bash
conda create -n moge python=3.12
conda activate moge

1. MoGeのクローンとセットアップ

コマンドプロンプトで以下を実行します。

bash
git clone https://github.com/microsoft/MoGe.git
cd MoGe

依存パッケージをインストールします。

bash
pip install -r requirements.txt

2. PyTorch(CUDA対応版)のインストール

ここが最大のポイントです。 通常のpip install torchではCPU版がインストールされてしまい、GPU推論ができません。CUDA対応版を明示的に指定する必要があります。

bash
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
スクリーンショット 2024-11-21 183159.png

インストール後、以下のコマンドでCUDAが有効になっているか確認できます。

bash
python -c "import torch; print(torch.cuda.is_available())"

Trueが返れば成功です。

3. Gradioのインストール

MoGeのwebインターフェースにはGradioが必要です。

bash
pip install gradio

4. 実行

bash
python app.py

実行すると以下のようなメッセージが表示されます。

* Running on local URL:  http://127.0.0.1:7860

ブラウザで http://127.0.0.1:7860 を開くとGradioインターフェースが表示されます。

スクリーンショット 2024-11-21 184106.png

トラブルシューティング

このセクションでは、Windows 環境での MoGe 導入時に発生しやすいエラーとその原因・解決策を学びます。松崎が導入時に遭遇したエラーと解決策をまとめたものです。

ModuleNotFoundError: No module named 'torch._C'

なぜこのエラーが出るか: PyTorch は C/C++ で書かれたバックエンド(torch._C)に依存しており、Python パッケージだけでは動作しません。パスが長すぎてインストール時にファイルの展開が途中で失敗した場合や、インストールが不完全な場合にこのエラーが発生します。特に Windows ではパス長制限(260文字)が原因になりやすいです。

解決策: torchをアンインストールしてから再インストールします。

bash
pip uninstall torch torchvision torchaudio
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

ModuleNotFoundError: No module named 'cv2'

なぜこのエラーが出るか: OpenCV(cv2)は Python に標準では含まれていないサードパーティライブラリです。requirements.txt に含まれていない場合や、インストールが漏れている場合にこのエラーが出ます。

解決策:

bash
pip install opencv-python-headless
スクリーンショット 2024-11-19 182046.png

AssertionError: Torch not compiled with CUDA enabled

なぜこのエラーが出るか: PyTorch には CPU 版と CUDA 版の2種類があります。pip install torch を普通に実行すると CPU 版がインストールされます。CPU 版の PyTorch は CUDA(GPU)機能を持っていないため、torch.cuda.is_available()False を返し、GPU 推論を実行しようとするとこのエラーになります。CUDA Toolkit がインストール済みであっても、PyTorch 側が CUDA 対応版でなければ意味がありません。

スクリーンショット 2024-11-21 180536.pngスクリーンショット 2024-11-21 181506.pngスクリーンショット 2024-11-21 181925.png

cudaは入っていて、CUDA Toolkitも入っているけれど、CUDA対応のtorchが入っていない状態でした。

解決策: torchをアンインストールして、CUDA対応版を明示的に再インストールします。

bash
pip uninstall torch torchvision torchaudio
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

松崎所感: 初めにtorchをインストールした時もCUDA対応のものを入れていた気がするけれど、その時はまだCUDAを入れていなかったので、それでおかしいことになっていたのかもしれない。

パスが長すぎるエラー(OSError: [Errno 2]

なぜこのエラーが出るか: Windows にはファイルパスの長さが260文字までという制限(MAX_PATH 制限)があります。PyTorch パッケージには非常に長いファイル名を持つヘッダファイルが含まれており、pip がこれらを展開する際に260文字を超えてしまいます。この制限はレガシーな Windows API に由来するもので、現在の Windows では設定変更で解除できます。

ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory:
'C:\\Users\\...\\torch\\include\\ATen\\ops\\_test_autograd_multiple_dispatch_view_copy_compositeexplicitautogradnonfunctional_dispatch.h'

解決策: Windowsのレジストリでロングパスを有効にします。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
LongPathsEnabled = 1

または、Pythonを短いパス(例: C:\Python312)にインストールし直します。

moge_infer.pyを実行しても出力されない

なぜこの問題が起きるか: moge_infer.py は推論結果を print するだけのテストスクリプトであり、ファイル出力機能がありません。MoGe で画像出力や GLB ダウンロードを行うには、Gradio ベースの app.py を使う必要があります。

解決策: app.pyを使います。app.pyはGradioベースのwebインターフェースを起動し、画像のアップロードから3D出力(GLBファイル)のダウンロードまで一貫して行えます。

bash
python app.py
スクリーンショット 2024-11-19 171823.png

出力とBlenderへの読み込み

このセクションでは、Gradio UI での操作方法と、出力した GLB ファイルを Blender で読み込む手順を学びます。

Gradio UIでの操作

python app.py実行後、ブラウザで http://127.0.0.1:7860 にアクセスすると、以下のような画面が表示されます。

スクリーンショット 2024-11-21 184106.png
  1. 左側のエリアに画像をドラッグ&ドロップまたはアップロード
  2. 推論が実行され、3Dプレビューが表示されます
  3. GLBファイルをダウンロードできます

Blenderへの読み込み

ダウンロードしたGLBファイルは、Blenderで File > Import > glTF 2.0 (.glb/.gltf) から読み込めます。

スクリーンショット 2024-11-21 184314.png

風景画像でも同様にうまく3D化できます。

スクリーンショット 2024-11-21 184802.png

まとめ: MoGe の強みと制限

MoGe の評価をまとめると以下のようになります。

強み:

  • 深度マップだけでなく GLB 形式の3Dメッシュを直接出力でき、Blender へのインポートがシームレスです
  • Gradio UI により、コマンドラインの知識がなくても直感的に操作できます
  • 屋外画像での遠近感の表現が得意です

制限:

  • 白黒の深度マップ画像を単体で出力する機能がありません(他モデルと異なる点)
  • 近景と遠景の中間部分の細かい立体感の表現がやや苦手です
  • GPU(CUDA対応)が必須のため、CPU 環境では実行できません

他モデルとの使い分け:

参考リンク


Author: 松崎 | Source: 松崎/MicroSoftの深度推定 Moge e2d9200dcbd74268b152cabc3dd34669.mdAI Enhanced: Claude -- 2026-03-05