TEXTurePaperによる3Dモデル テクスチャの自動生成

TEXTurePaperによる3Dモデル テクスチャの自動生成 機械学習

「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.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年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の動作確認を説明しました。

タイトルとURLをコピーしました