TEXTurePaper GUIツールのインストール

TEXTurePaper GUIツールのインストール ツール

「TEXTurePaperのGUIツールが欲しい」
「TEXTurePaperをブラウザから気軽に利用したい」

このような場合には、この記事の内容が参考になります。
この記事では、TEXTurePaperのGUIツールについて解説しています。

本記事の内容

  • TEXTurePaperのGUIツール
  • TEXTurePaperのGUIツールのシステム要件
  • TEXTurePaperのGUIツールのインストール
  • TEXTurePaperのGUIツールの動作確認

それでは、上記に沿って解説していきます。

TEXTurePaperのGUIツール

TEXTurePaperのGUIツールは、次のページで公開されています。

TEXTure – a Hugging Face Space by TEXTurePaper
https://huggingface.co/spaces/TEXTurePaper/TEXTure

しかし、まともに動いているのを見たことがありません。
100%エラーで終わっています。

そもそも、TEXTurePaperは共有サーバで動かすような処理ではありません。
だからこそ、次のボタンが用意されています。

「Duplicate Space」を用いれば、GPUを専用で使うことが可能になります。
もちろん、その場合は有償です。

もう一つの方法としては、ローカルマシンにインストールする方法になります。
個人的には、こちらの方法をオススメします。

そのためにも、まずはローカル環境へTEXTurePaperをインストールする必要があります。
TEXTurePaperのインストールについては、次の記事で説明しています。

正直、インストールは少々大変です。
だからこそ、上記の記事で詳しく解説しています。

以上、TEXTurePaperのGUIツールについて説明しました。
次は、TEXTurePaperのGUIツールのシステム要件を説明します。

TEXTurePaperのGUIツールのシステム要件

TEXTurePaperのGUIツールのシステム要件を説明します。
システム要件は、以下の2点です。

  • TEXTurePaper
  • Gradio

とりあえず、TEXTurePaperが動く環境を用意しましょう。

そして、GUIツールとして機能するためにGradioが必要です。
Gradioについては、次の記事で説明しています。

まとめると、TEXTurePaperが動くようにします。
そして、Gradioをインストールしておきます。

以上、TEXTurePaperのGUIツールのシステム要件を説明しました。
次は、TEXTurePaperのGUIツールのインストールを説明します。

TEXTurePaperのGUIツールのインストール

TEXTurePaperのGUIツールのインストールは、次の手順で実施します。

  • ファイル一式の取得(Hugging Faceから)
  • ファイルの修正

それぞれを以下で説明します。

ファイル一式の取得(Hugging Faceから)

TEXTurePaper/TEXTure at main
https://huggingface.co/spaces/TEXTurePaper/TEXTure/tree/main

上記ページから、必要なファイルをダウンロードします。

一旦、huggingface_hubを使ってローカルに全部ダウンロードしましょう。

huggingface_hubを利用すると、自動的にファイルをダウンロードしてくれます。
huggingface_hubをインストールできたら、次のコードを実行します。

from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="TEXTurePaper/TEXTure",
    repo_type="space",
    revision="main",
    cache_dir="./")

上記コードを実行すると、ダウンロード処理が開始されます。
ダウンロードは、すぐに終わります。

処理が完了すると、ディレクトリ上に「spaces–TEXTurePaper–TEXTure」を確認できます。
そして、「snapshots」以下にあるファイル・ディレクトリをコピーします。

「c99c9158d526ec7bd86d79192dffe6081ec93dcc」は、リポジトリのバージョンです。
バージョンが更新されれば、この値も変わってきます。

この長たらしいディレクトリより下のモノをコピーしましょう。
ただし、必要なモノは以下だけです。

  • app.py
  • model.py
  • style.css
  • shapes(ディレクトリごと)

これらをコピーして、TEXTurePaperのリポジトリルートに上書きコピーします。
次のような構成になれば、OK。

ファイルの修正

  • model.py
  • src/models/textured_mesh.py

各ファイル毎に説明します。

model.py

「sys.path.append」は無効にしましょう。
コメントにするだけで構いません。

トラブルメーカーとして扱われています。
これがあるために、パス関係で不思議な現象に出くわします。

次は、パスを変更しましょう。

以下のように変更します。

guide.background_img = './textures/brick_wall.png'
guide.shape_path = './shapes/spot_triangulated.obj'

最後は、Windowsの場合だけです。
zipコマンドが利用できれば、別にWindowsも修正する必要はありませんけどね。

修正しないと、次のようなエラーが発生します。

FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。

修正方法は、コマンドを利用せずPythonだけで処理できるようにコーディングします。
まず、model.pyの冒頭で以下を追加しましょう。

import shutil

エラーになる箇所は、次のように書き換えます。

src/models/textured_mesh.py

以下は、ダウンロードした「patch」ファイルに記載されています。

diff --git a/src/models/textured_mesh.py b/src/models/textured_mesh.py
index 75ffb6d..40d30e6 100644
--- a/src/models/textured_mesh.py
+++ b/src/models/textured_mesh.py
@@ -122,7 +122,7 @@ class TexturedMeshModel(nn.Module):
         self.renderer = Renderer(device=self.device, dim=(render_grid_size, render_grid_size),
                                  interpolation_mode=self.opt.texture_interpolation_mode)
-        self.env_sphere, self.mesh = self.init_meshes()
+        self.env_sphere, self.mesh = self.init_meshes(opt.shape_path)
         self.default_color = [0.8, 0.1, 0.8]
         self.background_sphere_colors, self.texture_img = self.init_paint()
         self.meta_texture_img = nn.Parameter(torch.zeros_like(self.texture_img))
diff --git a/src/stable_diffusion_depth.py b/src/stable_diffusion_depth.py
index 610d2de..e172080 100644
--- a/src/stable_diffusion_depth.py
+++ b/src/stable_diffusion_depth.py
@@ -1,3 +1,5 @@
+import os
+
 from diffusers import AutoencoderKL, UNet2DConditionModel, PNDMScheduler
 from huggingface_hub import hf_hub_download
 from transformers import CLIPTextModel, CLIPTokenizer, logging
@@ -24,9 +26,7 @@ class StableDiffusion(nn.Module):
         super().__init__()
         try:
-            with open('./TOKEN', 'r') as f:
-                self.token = f.read().replace('\n', '')  # remove the last \n!
-                logger.info(f'loaded hugging face access token from ./TOKEN!')
+            self.token = os.environ['HF_TOKEN']
         except FileNotFoundError as e:
             self.token = True
             logger.warning(

上記の内容に従って、コードを次のように修正します。

なお、もう一つの修正内容は無視します。
「TOKEN」ファイルを設置することにより、エラーが出ないように対応済みです。

以上、TEXTurePaperのGUIツールのインストールを説明しました、
次は、TEXTurePaperのGUIツールの動作確認を説明します。

TEXTurePaperのGUIツールの動作確認

TEXTurePaperのGUIツールの動作確認を行います。
リポジトリルートに配置したapp.pyを実行します。

すでにTEXTurePaperの動作確認が済んでいれば、サクッと起動するはずです。

Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

では、Chromeなどのブラウザで「http://127.0.0.1:7860」にアクセスします。
Hugging Face上のデモと同じような画面を確認できます。

3Dモデルをアップロードするか、以下から選択します。
今回は、「eagle.obj」を選択。

テキストを適当に変更します。

seedなども変更したければ、ここで変更可能です。
設定がOKなら、「Run」ボタンをクリック。

処理中の状況を確認できます。

処理が完了すると、「Output mesh file」タブでからzipファイルをダウンロードできます。

zipファイルを解凍したら、以下のファイルを確認できます。

また、mp4の動画も生成されます。
しかし、以下のように動画を確認できない場合がしばしばあります。

この場合、動画自体は生成されています。
必要な場合は、ここから直接取得しましょう。

動画が表示されない場合、次のようなエラーがコンソールに出ています。

ConnectionResetError: [WinError 10054] 既存の接続はリモート ホストに強制的に切断されました。

どうやら、ソケット接続が失敗しているようです。
「WinError」とあるように、Windowsの場合に出るエラーになります。

個人的に特に実害はないので、これ以上はこのエラーを追いかけません。
このエラーを避けたい場合は、Linxuを利用しましょう。

以上、TEXTurePaperのGUIツールの動作確認を説明しました。

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