ADD LGM
Opened this issue · 6 comments
3D生成モデル。
https://github.com/3DTopia/LGM
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::