axinc-ai/ailia-models

ADD LGM

Opened this issue · 6 comments

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

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

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

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

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

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

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

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

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

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

しかし、torchは必要そう

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::