TripoSRとは
- https://github.com/VAST-AI-Research/TripoSR
- 1枚のカラー画像を入力すると3次元メッシュモデルを作成してくれる生成AIのオープンソースなモデルの一つ
この記事は
- 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)表示するオプションがあるので、それで今作成したモデルを表示することができる。