Download model.py from Yosun/idol: direct link, hf CLI and curl.
- Browser
- Download file 1.32 kB
-
https://huggingface.co/spaces/Yosun/idol/resolve/main/model.py
- Command line
-
hf download hf://spaces/Yosun/idol/model.py
-
curl -L -o model.py https://huggingface.co/spaces/Yosun/idol/resolve/main/model.py
1.32 kB
| """The model behind the demo. | |
| Contract used by app.py: | |
| MODES {label: mode} shown in the input-type selector | |
| GAUSSIANS {label: count} shown in the Gaussian-count dropdown | |
| DEFAULTS default settings | |
| generate(...) -> (path of the .ply, the image the model saw), called on the GPU worker | |
| """ | |
| import os | |
| import tempfile | |
| import uuid | |
| from idol import IdolPipeline | |
| MODES = {'Synthetic': 'synthetic', 'Real photo': 'real'} | |
| GAUSSIANS = {'65,536': 65536, '131,072': 131072, '262,144': 262144, '524,288': 524288, '1,048,576': 1048576} | |
| DEFAULTS = {'steps': 50, 'cfg': 3.0, 'rescale_t': 3.0, 'gaussians': '262,144', 'seed': 42} | |
| # Weights load once at import; on ZeroGPU the CUDA placement is deferred to the GPU worker. | |
| pipeline = IdolPipeline.from_pretrained(os.environ.get('IDOL_WEIGHTS', 'speridlabs/idol'), device='cuda') | |
| OUTPUT_DIR = tempfile.mkdtemp(prefix='idol-') | |
| def generate(image, mode, steps, cfg_strength, rescale_t, seed, num_gaussians): | |
| output = pipeline(image, mode=mode, seed=seed, steps=steps, cfg_strength=cfg_strength, rescale_t=rescale_t, | |
| num_gaussians=num_gaussians) | |
| path = os.path.join(OUTPUT_DIR, f'idol-seed{seed}-{num_gaussians}-{uuid.uuid4().hex[:8]}.ply') | |
| output.gaussian.save_ply(path) | |
| return path, output.preprocessed_image | |