3Dモデル生成AIであるTrellisをColabで実行したComfyUIで使ってみました。
ComfyUI-IF_Trellisノードを使用したのですが、linuxでは動作検証していないみたいでいろんなエラーがでたので、その対処方法などを紹介します。
Trellisとは
清華大学・中国科学技術大学・Microsoft Researchの共同研究チームが発表した3D生成AIモデルです。
生成される3Dモデルのファイル形式であるglbファイルは3Dモデルのファイルフォーマットのひとつで、ポリゴンモデルだけでなくテクスチャやマテリアルの情報を含むことができます。Blenderでは標準機能で出力できます。
ComfyUIでの実行
ComfyUIはGoogle Colaboratoryで実行しました。
Trellisを使うためにComfyUI-IF_Trellisノードをしようしたのですが、ComfyUI Managerからインストールしたら、エラーになってしまいました。
Githubからダウンロードしたものを指定のフォルダへ入れました。
このとき、Colabだとlinuxなので、元のrequirements.txtではなくlinux_requirements.txtをファイル名を変更してrequirements.txtにして使用する必要があります。
また以下の部分では、cp310と書かれているのでPythonのバージョンが3.10用のものになります。
https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.0.post2/flash_attn-2.7.0.post2+cu12torch2.4cxx11abiFALSE-cp310-cp310-linux_x86_64.whl https://huggingface.co/spaces/JeffreyXiang/TRELLIS/resolve/main/wheels/diff_gaussian_rasterization-0.0.0-cp310-cp310-linux_x86_64.whl?download=true https://huggingface.co/spaces/JeffreyXiang/TRELLIS/resolve/main/wheels/nvdiffrast-0.3.3-cp310-cp310-linux_x86_64.whl?download=true |
現在、ColabのデフォルトのPythonは3.11なので、3.11用のものに変更する必要があります。
それぞれ以下のように変更しました。flash-attnは普通に入れて問題ありませんでした。
flash-attn https://huggingface.co/spaces/Mightypeacock/wheels-for-colab/resolve/33819deb6ea53cdb789f5cabe434ae3d72cb6a21/diff_gaussian_rasterization-0.0.0-cp311-cp311-linux_x86_64.whl https://huggingface.co/MonsterMMORPG/SECourses_Premium_Flash_Attention/resolve/main/nvdiffrast-0.3.3-py3-none-any.whl |
こんな感じでrequirements.txtを修正してバージョンの不整合等を解消できたらやっと実行できます。
しかし、今度は別のエラーが発生しました。

“FlashAttention only supports Ampere GPUs or never.”
FlashAttentionはAmpere GPUsしかサポートしていないということのようです。
ColabでT4 GPUで実行してこのエラーがでたので、L4 GPUに変えてみたらこのエラーは出なくなりました。
今度は以下のエラーがでました。

“GaussianRasterizationSettings.__new__() missing 1 required positional argument: ‘confidence'”
importしたdiff_gaussian_rasterizationのGaussianRasterizationSettings関数にconfidenceという引数が足りないみたいです。
diff_gaussian_rasterizationをインストールしたとき、Python3.10用からPython3.11用に変更したため、変わっていたようです。
どういう引数かよくわからなかったので、とりあえず適当に”confidence=False”を引数に追加してみました。
これで解消したのですが、さらに以下のエラーが発生しました。

“too many values to unpack (expected 2)”
importしたdiff_gaussian_rasterizationのGaussianRasterizer関数を実行した戻り値の関数のrasterizerの戻り値mportしたdiff_gaussian_rasterizationのGaussianRasterizer関数を実行した戻り値の関数のrasterizerの戻り値の数が合わないということみたいです。
これも前のエラーと同様、diff_gaussian_rasterizationをPython3.11用に変更したことで変わっていたみたいです。
試行錯誤した結果、戻り値は4つみたいだったので、とりあえず以下のようにしてみました。
1 2 3 4 5 6 7 8 9 10 |
rendered_image, radii, _, _ = rasterizer( means3D = means3D, means2D = means2D, shs = shs, colors_precomp = colors_precomp, opacities = opacity, scales = scales, rotations = rotations, cov3D_precomp = cov3D_precomp ) |
後そういえば、cudaのバージョンやPytorchのバージョンを変更したり、cummやspconvをgithubからダウンロードして開発用ビルドしたりしたような気がします。
ここまでやって、やっと以下のように画像から3Dモデルを生成することができました。

ComfyUIで生成したときに、以下のような動画も作られていました。
3Dモデルのデータとしてはglbファイルとplyファイルが作られていました。
他にはテクスチャとワイヤーフレームの画像がありました。
まとめ
linux環境だと大変でしたが何とか実行することができました。
windows環境だともしかしたらもっと簡単だったのかもしれません。
コメント