Spaces:
Running on Zero
Running on Zero
multimodalart HF Staff
Learn2Splat ZeroGPU demo: app, vendored optgs, prebuilt sm_120 wheels
9196862 verified Download optgs/model/decoder/__init__.py from hugging-apps/learn2splat: direct link, hf CLI and curl.
- Browser
- Download file 2.74 kB
-
https://huggingface.co/spaces/hugging-apps/learn2splat/resolve/main/optgs/model/decoder/__init__.py
- Command line
-
hf download hf://spaces/hugging-apps/learn2splat/optgs/model/decoder/__init__.py
-
curl -L -o __init__.py https://huggingface.co/spaces/hugging-apps/learn2splat/resolve/main/optgs/model/decoder/__init__.py
2.74 kB
| from ...dataset import DatasetCfg | |
| from .decoder import Decoder | |
| from .gsplat_decoder_splatting_cuda import GSplatDecoderSplattingCUDACfg, GSplatDecoderSplattingCUDA | |
| DECODERS = { | |
| "gsplat": GSplatDecoderSplattingCUDA, | |
| } | |
| # name -> Cfg dataclass, for resolving the discriminated union by `name` at the | |
| # top level: dacite's from_dict can't take the `DecoderCfg` union directly (a | |
| # union isn't a class), so callers parsing a raw config look the arm up here. | |
| DECODER_CFGS = { | |
| "gsplat": GSplatDecoderSplattingCUDACfg, | |
| } | |
| DecoderCfg = GSplatDecoderSplattingCUDACfg | |
| # The inria and fastgs decoders are optional (each needs its own CUDA | |
| # rasterizer backend). Importing this package must NOT require either — gsplat | |
| # is the default. If one is requested while its backend is missing, raise a | |
| # clear, chained ImportError (mirrors the RoMa handling in | |
| # optgs/experimental/edgs/init.py) instead of silently degrading. | |
| try: | |
| from .decoder_splatting_cuda import InriaDecoderSplattingCUDACfg, InriaDecoderSplattingCUDA | |
| DECODERS["inria"] = InriaDecoderSplattingCUDA | |
| DECODER_CFGS["inria"] = InriaDecoderSplattingCUDACfg | |
| DecoderCfg = DecoderCfg | InriaDecoderSplattingCUDACfg | |
| except ImportError as _e: | |
| # `except ... as _e` is auto-deleted at block end; keep a stable ref so the | |
| # closure below can chain from the original error. | |
| _INRIA_IMPORT_ERROR = _e | |
| def _inria_decoder_unavailable(*_args, **_kwargs): | |
| raise ImportError( | |
| "The inria decoder requires diff_gaussian_rasterization, which is " | |
| "not installed. Install it with: " | |
| "pip install git+https://github.com/graphdeco-inria/diff-gaussian-rasterization.git" | |
| ) from _INRIA_IMPORT_ERROR | |
| DECODERS["inria"] = _inria_decoder_unavailable | |
| try: | |
| from .fastgs_decoder_splatting_cuda import FastGSDecoderSplattingCUDACfg, FastGSDecoderSplattingCUDA | |
| DECODERS["fastgs"] = FastGSDecoderSplattingCUDA | |
| DECODER_CFGS["fastgs"] = FastGSDecoderSplattingCUDACfg | |
| DecoderCfg = DecoderCfg | FastGSDecoderSplattingCUDACfg | |
| except ImportError as _e: | |
| _FASTGS_IMPORT_ERROR = _e | |
| def _fastgs_decoder_unavailable(*_args, **_kwargs): | |
| raise ImportError( | |
| "The fastgs decoder requires diff_gaussian_rasterization_fastgs, " | |
| "which is not installed. Install it with: pip install " | |
| "--no-build-isolation " | |
| "submodules/FastGS/submodules/diff-gaussian-rasterization_fastgs" | |
| ) from _FASTGS_IMPORT_ERROR | |
| DECODERS["fastgs"] = _fastgs_decoder_unavailable | |
| def get_decoder(decoder_cfg: DecoderCfg, dataset_cfg: DatasetCfg) -> Decoder: | |
| print(f"Using decoder: {decoder_cfg.name}") | |
| return DECODERS[decoder_cfg.name](decoder_cfg, dataset_cfg) | |