LoginSignup
3
1

TripoSR で1枚のカラー画像から3Dメッシュモデルを作成して表示するところまで

Last updated at Posted at 2024-03-17

TripoSRとは

TripoSR

この記事は

  • github の readme に記載されている通りに実行すればうまくいくと思っていたが、自分の環境ではいろいろとエラーが出てしまったのでdocker を使うなどの脇道に入ったので、それを記録します

実行環境

  • docker + nvidia container
  • GPU RTX 3060 / 6GB

環境準備

  • docker build 時にモデルをダウンロードして保存して置きたいと思い、build時にも nvidia のコンテナが動作するように設定を変更する。以下の記事を参考にして /etc/docker/daemon.json を修正する

docker fileを作成する

  • pytorch の環境と cuda と python が動作するdocker image をベースとする
  • 以下の内容を Dockerfileで保存する
FROM nvcr.io/nvidia/pytorch:24.02-py3

RUN apt-get update && apt-get install -y \
    git \
    build-essential

RUN python -m pip install pip setuptools --upgrade
WORKDIR /workspace

RUN git clone https://github.com/VAST-AI-Research/TripoSR
RUN pip install -r TripoSR/requirements.txt
RUN pip install opencv-fixer==0.2.5
RUN python -c "from opencv_fixer import AutoFix; AutoFix()"

WORKDIR /workspace/TripoSR
RUN mkdir output
RUN python run.py examples/chair.png --output-dir output/

docker のイメージを作成する

docker build -t triposr:latest .

動作確認

  • docker を起動して中身を確認
docker run -it --rm --gpus=all triposr:latest /bin/bash

bash が起動する。/workspace/TripoSR のフォルダにある output/0/mesh.obj があるかどうかを確認する。

スクリプトで作成できるようにする

GPUメモリが8GB以上搭載されている場合には、readme.mdに記載されているように以下の gradio というWebUIをdockerを起動しているスクリプトから立ち上げれば良い

python gradio_app.py

しかし、GPUが6GBの場合にはメモリが足りなくてエラーがでることがわかった。CLIのモードでは動作していたので、WebUIをあきらめてCLIで動作するようにする。

以下のコマンドは、PNGファイル形式の画像を入力として、3次元メッシュフォーマットのgltf のバイナリ形式である glb 形式で出力するようにしたもの。出力先は、output/X/mesh.glb (Xは番号)になる。

#! /bin/bash

if [ $# != 1 ]; then
    echo "input <png file>"
    exit 1
fi

if [ ! -e data ]; then mkdir data ; fi
if [ ! -e data/input ]; then mkdir data/input ; fi
if [ ! -e data/output ]; then mkdir data/output ; fi

cp $1 data/input/input.png

docker run -it --rm --gpus=all --net=host -v `pwd`/data:/workspace/data triposr:latest python run.py /workspace/data/input/input.png --output-dir /workspace/data/output --model-save-format glb

3Dメッシュの確認

glb 形式にしたのは、googleが開発したgltf,glbをWebで見ることができるページがあるため。
以下のページを開く

このページに、先程作成した mesh.glb をドラッグ&ドロップする。

さらに、[Mobile View]のところで、[Default AR Mode to Scene Viewer]のチェックボックスをONにして、[Deploy Mobile]のボタンを押すと、QRコードが表示される。

このQRコードは、今表示しているモデルをスマホで見るためのURLが記載されている。
googleが開発しているARCore というカメラ画像をトラッキングして、そこに3DモデルをMixedReaity(MR)表示するオプションがあるので、それで今作成したモデルを表示することができる。

test.png

3
1
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
3
1