ailia-models icon indicating copy to clipboard operation
ailia-models copied to clipboard

ADD LGM

Open kyakuno opened this issue 1 year ago • 6 comments

3D生成モデル。 https://github.com/3DTopia/LGM

kyakuno avatar Oct 13 '24 12:10 kyakuno

ONNXへのエクスポート時、モデル内部のMemory-efficient attentionでエラーが起きる。通常のAttentionに書き換えることでエクスポート自体は可能。 次回の勤務でエラーの解決or代替案を考える。

また、前処理でrembgが使われている。ailiaのrembgを使えるか検証する。

Koichi73 avatar Dec 03 '24 12:12 Koichi73

本モデルは多視点拡散モデル + 3d Gaussian Splattingの構造。 3d Gaussian SplattingのforwardでC言語が使われているため、直接的なエクスポートは難しい。 https://github.com/ashawkey/diff-gaussian-rasterization/blob/main/diff_gaussian_rasterization/init.py#L85-L86

他のエクスポート方法を検討する。

Koichi73 avatar Dec 16 '24 05:12 Koichi73

3d Gaussian SplattingをPytorchだけで実装したリポジトリ https://github.com/hbb1/torch-splatting

Koichi73 avatar Dec 16 '24 10:12 Koichi73

現状、LGMモデルのONNX化が難しいと考えられます。 LGMモデルの構成要素である3d Gaussian Splattingのレンダリング部分にて、C++の拡張モジュールが使われているためです。

回避策として、3d Gaussian SplattingをPytorchのみで実装するリポジトリを見つけました。しかし、

  • レンダリング部分のONNX化を試みたところ、'aten::linalg_inv'のUnsupportedOperatorErrorが発生した。参考
  • LGM内部の3d Gaussian Splattingと入力方法が異なるため、実装が難しい。

の理由から、解決には至りませんでした。

Koichi73 avatar Dec 18 '24 05:12 Koichi73

レンダリング部分のC++は許容してサンプル作成を進める。 その際、公式のC++はCUDAが必須だが、以下のリポジトリを使うことでCPU上で動かすことができる。 https://github.com/MrSecant/diff-gaussian-rasterization

しかし、torchは必要そう

Koichi73 avatar Dec 18 '24 11:12 Koichi73

https://github.com/axinc-ai/ailia-models/tree/lgm/neural_rendering/lgm

サンプルは一通りできたが、一部のprototxtが破損している模様

ailia.core.AiliaBrokenDataException: code: -4 (The specified file was broken.)
+ error detail : Prototxt has unexpected format:\000\000\000\000\000\000\000
at line169
ailia.core.AiliaBrokenDataException: code: -4 (The specified file was broken.)
+ error detail : unexpected escape sequence::

Koichi73 avatar Dec 23 '24 08:12 Koichi73