11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CES2025で発表されたSPAR3Dを使ってみた

Last updated at Posted at 2025-01-09

はじめに

こんにちは、しゅんです。

この記事では、CES2025NVIDIAStability.aiによって発表された、次世代の3D生成ツールであるSPAR3D (Stable Point Aware 3D) を試してみた体験をご紹介します。

SPAR3Dは、単一の画像から3Dメッシュと点群データをリアルタイムで生成する機能を提供する画期的なツールです。この記事では、そのセットアップ方法や実行手順、生成された結果について解説します。

SPAR3Dとは?

公式の記事

公式のgithub

公式のHuggingface

SPAR3Dは、以下の特徴を持つ最新のAIベースの3D生成ツールです:

  1. 単一画像からの3D生成

    • 入力画像から1秒未満で3Dメッシュと点群データを生成。
  2. 完全な構造予測

    • 360度のビューを補完し、隠れた部分も正確に再現。
  3. リアルタイム編集機能

    • 点群データを削除、複製、ストレッチ、特徴追加が可能。

SPAR3Dは、NVIDIA RTX AI PCでの実行に最適化されており、ゲーム開発や製品デザインにおいて新しい基準を提供します。

環境構築

SPAR3Dを使うには以下の環境をセットアップします。

自分の環境

  • OS: Ubuntu 24.04
  • GPU: NVIDIA RTX3080

セットアップ手順

  1. 仮想環境を作成:

    python3 -m venv .venv
    source .venv/bin/activate
    
  2. 必要なライブラリをインストール:

    pip install -U setuptools==69.5.1
    pip install wheel
    git clone https://github.com/Stability-AI/stable-point-aware-3d.git
    cd stable-point-aware-3d/
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
    pip install -r requirements.txt
    pip install gpytoolbox pynanoinstantmeshes==0.0.3
    pip install trimesh
    pip install "pyglet<2"
    pip install pillow matplotlib open3d
    
  3. Hugging Faceトークンを設定:

    huggingface-cli login
    
  4. 環境変数を設定:

    export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
    

実行手順

以下の手順でSPAR3Dを使用します。

SPAR3Dを実行

単一画像から3Dメッシュを生成するには、以下のコマンドを使用します:

python run.py demo_files/examples/fish.png --output-dir output/

残念。。。自分はVRAM不足でした

VRAM不足時の対応

  • 低VRAMモード:
    python run.py demo_files/examples/fish.png --output-dir output/ --low-vram-mode
    
  • CPUモード:
    python run.py demo_files/examples/fish.png --output-dir output/ --device cpu
    

Code

生成された出力ファイルは以下の通りです:

  1. 入力画像 (input.png)

    • 背景が除去された入力画像。
  2. 3Dメッシュ (mesh.glb)

    • 3Dモデルデータとしてエクスポートされたメッシュ。
  3. 点群データ (points.ply)

    • 点群形式で出力された3Dデータ。

以下のスクリプトを使って結果を可視化できます:

import os
from PIL import Image
import matplotlib.pyplot as plt
import trimesh
import open3d as o3d

output_dir = "./output/0"
image_path = os.path.join(output_dir, "input.png")
mesh_path = os.path.join(output_dir, "mesh.glb")
ply_path = os.path.join(output_dir, "points.ply")

# 入力画像の表示
def display_image(path):
    img = Image.open(path)
    plt.imshow(img)
    plt.axis("off")
    plt.show()

# 3Dメッシュの表示
def display_mesh(path):
    mesh = trimesh.load(path)
    mesh.show()

# 点群データの表示
def display_point_cloud(path):
    point_cloud = o3d.io.read_point_cloud(path)
    o3d.visualization.draw_geometries([point_cloud])

display_image(image_path)
display_mesh(mesh_path)
display_point_cloud(ply_path)

使ってみた感想

SPAR3Dを試してみた感想を以下にまとめます:

  1. 速さ

    • 単一画像から1秒未満で結果が生成され、驚きのスピード感。
    • 昔OpenAI、openai point-eの生成より早い
  2. 高品質な生成結果

    • 隠れた部分も補完される360度構造が特に印象的。
  3. 操作の簡単さ

    • コマンドラインだけで簡単に使用でき、セットアップもスムーズ。

結果

こういう感じです

おわりに

面白いおもちゃたくさん出てきて、困ります。最後まで見てくれてありがとうございます。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?