| import torch |
|
|
| from mapgs.model import MapGS |
| from mapgs.ttt import token_tuning, map_guided_densify |
| from mapgs.ttt.densify import anchors_along_trajectory |
| from .conftest import requires_cuda |
|
|
|
|
| @requires_cuda |
| def test_token_tuning_runs(cfg, dataset): |
| model = MapGS(cfg).cuda() |
| g = token_tuning(model, dataset[0], cfg, steps=3) |
| M = (cfg.model.tokens.n_map + cfg.model.tokens.n_free) * cfg.model.tokens.gaussians_per_token |
| assert g.means.shape == (1, M, 3) |
| |
| before = {n: p.clone() for n, p in model.named_parameters()} |
| token_tuning(model, dataset[0], cfg, steps=2) |
| for n, p in model.named_parameters(): |
| assert torch.allclose(before[n], p) |
|
|
|
|
| @requires_cuda |
| def test_densify_increases_gaussians(cfg, dataset): |
| model = MapGS(cfg).cuda() |
| s = dataset[0] |
| traj = torch.stack([torch.zeros(15, device="cuda"), torch.linspace(2, 25, 15, device="cuda")], -1) |
| npos, ntyp, nnrm = anchors_along_trajectory(s.ground.to("cuda"), traj, spacing=1.0) |
| n_new = min(64, npos.shape[0]) |
| g = map_guided_densify(model, s, npos[:n_new], ntyp[:n_new], nnrm[:n_new], cfg) |
| base = (cfg.model.tokens.n_map + cfg.model.tokens.n_free) * cfg.model.tokens.gaussians_per_token |
| assert g.means.shape[1] == base + n_new * cfg.model.tokens.gaussians_per_token |
|
|