写真→3D変換手法の比較検証 2025
概要
1枚の写真から3Dモデルを生成する技術が急速に進化している。 今回は5つの異なるアプローチを実際に試して比較した。
- Apple SHARP - 3D Gaussian Splatting (Point Cloud)
- Depth Anything V2 - Vision Transformer深度推定
- Depth Anything 3 - 深度光線表現、Any-view対応 NEW
- Nano Banana (Gemini 2.5) - 画像生成AIで深度マップ
- TripoSR - LRMベースの3Dメッシュ生成 360°回転可能
検証環境
- GPU: NVIDIA RTX 2060 (CUDA sm_75)
- PyTorch 2.5.1+cu121 / 2.9.1 (DA3)
- テスト画像: 6枚(石碑、Tumblr写真4枚、人物写真)
各手法の詳細
TripoSR NEW
Stability AI と Tripo AI が共同開発したLRMベースの3Dメッシュ生成モデル。 見えていない部分も補完して、360度回転可能な完全な3Dメッシュを生成する。
技術的特徴
- 出力: OBJ形式 (3Dメッシュ)
- 処理時間: 1-1.5秒
- VRAM: 約6GB
- 背景自動除去(rembg)
- 頂点カラー付きメッシュ
セットアップ
git clone https://github.com/VAST-AI-Research/TripoSR.git
cd TripoSR
python -m venv .venv
.venv/bin/pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
.venv/bin/pip install omegaconf einops transformers trimesh rembg huggingface-hub scikit-image onnxruntime xatlas moderngl
注意: torchmcubes問題の回避
CUDAヘッダーがない環境ではtorchmcubesのビルドに失敗する。
scikit-imageのmarching_cubesで代替可能:
# tsr/models/isosurface.py を修正
from skimage import measure
def skimage_marching_cubes(level, iso_value):
verts, faces, _, _ = measure.marching_cubes(level.cpu().numpy(), level=iso_value)
return torch.from_numpy(verts), torch.from_numpy(faces)
使い方
.venv/bin/python run.py input.jpg --output-dir output/
メリット
- 見えない部分を補完
- 360度回転可能
- 完全な3Dメッシュ出力
- 高速(1-1.5秒)
- MITライセンス
デメリット
- VRAM 6GB必要
- 被写体のみ(背景は除去)
- テクスチャなし(頂点カラー)
Apple SHARP
Apple ML Researchが2024年12月に発表した1秒以内で3D Gaussian Splattingを生成する手法。 入力画像から直接Point Cloudを生成する。
技術的特徴
- 出力: PLY形式 (Point Cloud)
- 色表現: Spherical Harmonics (DC係数)
- ポイント数: 約15万点/画像
- 処理時間: 1秒以内
使い方
cd ~/ml-sharp
uv run sharp predict -i input.jpg -o output/
Three.js表示のための後処理
SHARPの出力はSpherical Harmonics形式なので、RGB変換が必要:
RGB = 0.5 + 0.282 * f_dc
メリット
- 高精度なPoint Cloud
- 高速処理(1秒以内)
- メトリックスケール対応
デメリット
- 見えている部分のみ(補完なし)
- 最新GPUが必要(sm_70+)
- PLY後処理が必要
Depth Anything V2
DINOv2ベースのVision Transformerで深度推定を行う。 相対深度マップを生成し、ディスプレースメントマッピングで3D表示。
技術的特徴
- 出力: 深度マップ (PNG)
- モデル: vits, vitb, vitl, vitg
- 処理時間: 数秒
メリット
- ローカル実行可能
- 高精度な深度推定
- エッジがシャープ
デメリット
- 相対深度のみ
- GPU要件あり
Depth Anything 3 NEW
ByteDance Seedが2025年11月に発表した最新の深度推定モデル。 「深度光線表現」により複雑なマルチタスク学習が不要になり、 Any-view対応(複数視点から一貫した深度推定)を実現。
V2からの進化
- Any-view対応: 複数画像で空間的に一貫した深度
- シンプル設計: 標準DINOエンコーダーのみ
- 深度光線表現: マルチタスク学習不要
- 公開学術データセットのみで学習
モデルバリエーション
- DA3-Small (80M) / Base (120M) / Large (350M) / Giant (1.15B)
- DA3MONO-LARGE: 高品質単眼深度推定(今回使用)
- DA3METRIC-LARGE: メートル単位の絶対深度
セットアップ
git clone https://github.com/ByteDance-Seed/Depth-Anything-3.git
cd Depth-Anything-3
uv venv && uv pip install torch torchvision xformers
uv pip install -e .
使い方
from depth_anything_3.api import DepthAnything3
model = DepthAnything3.from_pretrained("depth-anything/DA3MONO-LARGE")
prediction = model.inference(["input.jpg"])
depth = prediction.depth[0] # [H, W] float32
メリット
- V2を上回る精度
- Any-view対応(複数視点)
- 高速(0.3秒/枚)
- Apache-2.0ライセンス
デメリット
- GPU要件あり
- 相対深度(Metric版除く)
Nano Banana (Gemini 2.5 Flash Image)
Gemini APIの画像生成機能を使って深度マップを生成する。 朋義さんのアイデアで実装された革新的なアプローチ。
使い方
uv run tools/generate_depth_nanobana.py input.jpg depth.png
メリット
- GPU不要(API経由)
- セットアップ簡単
- 無料枠500画像/日
- 創造的な補完が可能
デメリット
- オンライン必須
- 結果にばらつき
比較表
| 項目 | SHARP | DA V2 | DA3 | Nano Banana | TripoSR |
|---|---|---|---|---|---|
| 出力形式 | Point Cloud (PLY) | 深度マップ | 深度マップ | 深度マップ | 3Dメッシュ (OBJ) |
| 処理速度 | 1秒以内 | 数秒 | 0.3秒 | 5-10秒 | 1-1.5秒 |
| GPU要件 | sm_70+ | sm_70+ | sm_70+ | 不要 | sm_70+ (6GB) |
| 見えない部分 | 生成しない | 推定のみ | 推定のみ | 創造的補完 | 補完する |
| Any-view | 不可 | 不可 | 対応 | 不可 | 不可 |
| 360度回転 | 不可 | 不可 | 不可 | 不可 | 可能 |
| セットアップ | 中 | 中 | 中 | 簡単 | 中 |
結論
用途別のおすすめ
- 被写体を360度回転させたい: TripoSR
- 高精度な深度推定: Depth Anything 3 (V2の後継、最速)
- 複数視点で一貫した深度: Depth Anything 3 (Any-view対応)
- 高精度Point Cloudが欲しい: SHARP
- 手軽に試したい(GPU不要): Nano Banana
TripoSRの優位性
「見えていない部分の補完」という点で、TripoSRが唯一の選択肢。 SHARP、Depth Anything、Nano Bananaは見えている面しか扱えないが、 TripoSRは背面も含めた完全な3Dメッシュを生成する。
今後の展望
さらに高品質な結果が期待できる手法:
- InstantMesh: Zero123++ + LRMの統合、HFデモ復旧待ち
- World Labs (Marble): VR空間生成、Webデモあり
- Video→3D: Runway Gen-4でOrbit動画を生成し、4DGSで3D再構成