「3Dモデルのテクスチャを作るのが面倒だ・・・」
「テクスチャをAIで自動的に生成・編集したい」
このような場合には、TEXTurePaperがオススメです。
この記事では、TEXTurePaperについて解説しています。
本記事の内容
- TEXTurePaperとは?
- TEXTurePaperのシステム要件
- TEXTurePaperのインストール
- TEXTurePaperの動作確認
それでは、上記に沿って解説していきます。
TEXTurePaperとは?
TEXTurePaperは、TEXTureの公式実装です。
TEXTureとは、テキストからテクスチャを生成するAI技術になります。
勘違いしやすところですが、TEXTureは決して3Dモデルを生成する技術ではありません。
あくまで、テクスチャに関する技術になります。
そのため、3Dモデル(objファイル)は事前に用意しておく必要があります。
このことを画像で表現すると、次のようになります。
TEXTurePaperには、それ以外にも機能が用意されています。
- Texture Transfer from Meshes
- Texture Transfer from Image
- Texture Refinement
- Texture Editing
ただ、これらの機能に関するドキュメントはまだ用意されていません。
興味がある方は、GitHub上の公式ページを定期的に見ることをオススメします。
TEXTurePaper/TEXTurePaper
https://github.com/TEXTurePaper/TEXTurePaper
技術的に詳しく知りたい場合は、以下が参考になるでしょう。
https://texturepaper.github.io/TEXTurePaper/static/paper.pdf
上記資料では、入力するテキストについて参考となる記載もあります。
以上、TEXTurePaperについて説明しました。
次は、TEXTurePaperのシステム要件を説明します。
TEXTurePaperのシステム要件
TEXTurePaperは、バージョンを確認できません。
今後、更新を重ねればバージョンが明記されるかもしれません。
TEXTurePaperのシステム要件は、以下がポイントになります。
- OS
- Pythonバージョン
- PyTorch
- Kaolin
- FFmpeg
- imageio関連ライブラリ
それぞれを以下で説明します。
OS
OSについては、以下がサポート対象だと思われます。
- Windows
- Linux
macOSが対象外となるのは、後述するKaolinが対象にしていないからです。
Pythonバージョン
Python 3.10以降では、現バージョンは動きません。
また、現時点でのPython公式開発サイクルは以下。
バージョン | リリース日 | サポート期限 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
3.11 | 2022年10月25日 | 2027年10月 |
このPython公式開発サイクルを考慮すると、Python 3.9が最もオススメです。
Python 3.10以降がサポート外であるのは、後述するKaolinが原因となります。
PyTorch
PyTorchは、古すぎなければOKです。
しかし、後述するKaolinが次のバージョンにしか対応していません。
- 1.12系
- 1.13系
また、GPU版が必須となっています。
3Dを扱う以上は、CPU版のPyTorchではまともに動かないのでしょう。
GPU版PyTorchについては、次の記事で解説しています。
したがって、インストールするのは最新版(Stabale)であるGPU版にしておきましょう。
現時点なら、PyTorch 1.13.1となります。
Kaolin
先ほどから、何度か出てきているKaolinです。
現時点では、以下のバージョンのKaolinがサポートされています。
そして、Kaolinは以下のURLで公開されています。
https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-{TORCH_VERSION}_cu{CUDA_VERSION}.html
PyTorch 1.13.1であれば、次のページが有効なURLです。
https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-1.13.1_cu116.html https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-1.13.1_cu117.html
ページには、LinuxとWindows向けのファイルしか用意されていません。
Kaolinのインストールには、以下のコマンドを用います。
pip install kaolin==0.13.0 -f https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-1.13.1_cu116.html
FFmpeg
mp4が成果物の確認用として出力されます。
そのため、FFmpegが必要となります。
FFmpegのインストールには、以下の記事で説明しています。
imageio関連ライブラリ
imageioは、Pythonの画像処理を行うライブラリです。
TEXTurePaperでは、imageioを用いて動画の作成・編集も行っています。
その際に必要となるのが、以下のライブラリです。
- imageio-ffmpeg
- PyAV
これらのライブラリがないとmp4生成時に次のエラーが発生します。
ValueError: Could not find a backend to open `experiments\napoleon\results\step_00010_rgb.mp4`` with iomode `wI`. Based on the extension, the following plugins might add capable backends: FFMPEG: pip install imageio[ffmpeg] pyav: pip install imageio[pyav]
imageio-ffmpegは、imageioからFFmpegを処理するためのライブラリです。
そして、PyAVはFFmpegのライブラリをimageioから扱うために必要となります。
インストールは、上記のコマンドを実行すればOKです。
以上、TEXTurePaperのシステム要件を説明しました。
次は、TEXTurePaperのインストールを説明します。
TEXTurePaperのインストール
TEXTurePaperのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。
検証は、次のバージョンのPythonで行います。
> python -V Python 3.9.13
そして、システム要件である以下をインストール済という状況です。
- PyTorch(GPU版)
- Kaolin
- FFmpeg
- imageio関連ライブラリ
このような状況において、次の手順でTEXTurePaperのインストールを進めます。
- TEXTurePaperの取得(GitHubから)
- requirements.txtを使った一括インストール
それぞれを下記で説明します。
TEXTurePaperの取得(GitHubから)
次のコマンドでGitHUbからリポジトリを取得します。
git clone https://github.com/TEXTurePaper/TEXTurePaper.git
リポジトリルートへ移動しておきます。
cd TEXTurePaper
基本的には、ここで処理を行います。
requirements.txtを使った一括インストール
リポジトリルートには、コピーしたrequirements.txtが存在しています。
requirements.txt
torch==1.12.1 torchvision==0.13.1 transformers diffusers accelerate huggingface-hub ninja xatlas imageio matplotlib pyrallis loguru tqdm einops opencv-python
事前にPyTorchはインストール済みです。
そのため、PyTorch関連はコメントにします。
#torch==1.12.1 #torchvision==0.13.1
ファイルを変更できたら、次のコマンドで一気にインストールしましょう。
pip install -r requirements.txt
以上、TEXTurePaperのインストールを説明しました。
次は、TEXTurePaperの動作確認を説明します。
TEXTurePaperの動作確認
TEXTurePaperの動作確認を行います。
推論が行えるように、3Dモデルと設定ファイルは初めから揃っています。
設定ファイル(configs/text_guided/napoleon.yaml)
log: exp_name: napoleon guide: text: "A photo of Napoleon Bonaparte, {} view" append_direction: True shape_path: shapes/napoleon.obj optim: seed: 3
3Dモデル(shapes/napoleon.obj)は、ナポレオンの銅像になります。
objファイルは、次のページから取得したらしいです。
https://threedscans.com/nouveau-musee-national-de-monaco/napoleon-ler/
設定ファイルには、次の記述があります。
"A photo of Napoleon Bonaparte, {} view"
このプロンプトであれば、「ナポレオン・ボナパルトの写真」をテクスチャとして生成します。
ただ、このままだと何も面白くありません。
そこで、次のようにプロンプトを変更します。
"A photo of Keanu Reeves, {} view"
そして、リポジトリルートにおいて次のコマンドを実行します。
python -m scripts.run_texture --config_path=configs/text_guided/napoleon.yaml
しかし、このままでは次のようなエラーが出てしまいます。
OSError: Can't load the model for 'stabilityai/stable-diffusion-2-depth'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'stabilityai/stable-diffusion-2-depth' is the correct path to a directory containing a file named diffusion_pytorch_model.bin
このエラーは、「use_auth_token」に値がないために発生しています。
最も簡単なエラー解決方法は、リポジトリルートに「TOKEN」ファイルを設置することです。
「TOKEN」の内容は、以下でOK。
TOKEN
a
上記のように「a」でも「b」でもなんでも構いません。
以前は、モデルダウンロードにはHugging Faceへのログインが必須でした。
しかし、今ではもうログインは不要です。
不要ですが、その名残がコードにたくさん残っています。
だから、値が何かしら入るように対応しています。
その対応は、「TOKEN」ファイルを用意することになります。
「TOKEN」ファイルを用意できたら、コードを実行しましょう。
マシンスペックによりますが、私の環境(GeForce RTX 3090)では3分程度の時間がかかっています。
生成されるモノは、「experiments」ディレクトリ以下で確認できます。
mp4で手っ取り早く生成されたテクスチャの貼られた3Dモデルを確認できます。
キアヌ・リーヴスのテクスチャが、見事に貼り付けられています。
以上、TEXTurePaperの動作確認を説明しました。