reduced-3dgs 1.10.3__tar.gz → 1.10.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of reduced-3dgs might be problematic. Click here for more details.

Files changed (48) hide show
  1. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/PKG-INFO +1 -1
  2. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/combinations.py +8 -2
  3. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/importance/combinations.py +8 -2
  4. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/pruning/combinations.py +8 -2
  5. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/quantization/quantizer.py +19 -9
  6. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs.egg-info/PKG-INFO +1 -1
  7. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/setup.py +1 -1
  8. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/LICENSE.md +0 -0
  9. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/README.md +0 -0
  10. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/__init__.py +0 -0
  11. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/importance/__init__.py +0 -0
  12. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/importance/trainer.py +0 -0
  13. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/prepare.py +0 -0
  14. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/pruning/__init__.py +0 -0
  15. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/pruning/trainer.py +0 -0
  16. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/quantization/__init__.py +0 -0
  17. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/quantization/abc.py +0 -0
  18. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/quantization/exclude_zeros.py +0 -0
  19. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/quantization/wrapper.py +0 -0
  20. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/quantize.py +0 -0
  21. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/shculling/__init__.py +0 -0
  22. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/shculling/gaussian_model.py +0 -0
  23. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/shculling/trainer.py +0 -0
  24. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs/train.py +0 -0
  25. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs.egg-info/SOURCES.txt +0 -0
  26. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs.egg-info/dependency_links.txt +0 -0
  27. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs.egg-info/requires.txt +0 -0
  28. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/reduced_3dgs.egg-info/top_level.txt +0 -0
  29. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/setup.cfg +0 -0
  30. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/cuda_rasterizer/backward.cu +0 -0
  31. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/cuda_rasterizer/forward.cu +0 -0
  32. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer_impl.cu +0 -0
  33. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/__init__.py +0 -0
  34. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/ext.cpp +0 -0
  35. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/rasterize_points.cu +0 -0
  36. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/reduced_3dgs/kmeans.cu +0 -0
  37. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/reduced_3dgs/redundancy_score.cu +0 -0
  38. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/reduced_3dgs/sh_culling.cu +0 -0
  39. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/diff-gaussian-rasterization/reduced_3dgs.cu +0 -0
  40. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/gaussian-importance/cuda_rasterizer/backward.cu +0 -0
  41. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/gaussian-importance/cuda_rasterizer/forward.cu +0 -0
  42. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/gaussian-importance/cuda_rasterizer/rasterizer_impl.cu +0 -0
  43. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/gaussian-importance/diff_gaussian_rasterization/__init__.py +0 -0
  44. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/gaussian-importance/ext.cpp +0 -0
  45. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/gaussian-importance/rasterize_points.cu +0 -0
  46. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/simple-knn/ext.cpp +0 -0
  47. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/simple-knn/simple_knn.cu +0 -0
  48. {reduced_3dgs-1.10.3 → reduced_3dgs-1.10.5}/submodules/simple-knn/spatial.cu +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reduced_3dgs
3
- Version: 1.10.3
3
+ Version: 1.10.5
4
4
  Summary: Refactored code for the paper "Reducing the Memory Footprint of 3D Gaussian Splatting"
5
5
  Home-page: https://github.com/yindaheng98/reduced-3dgs
6
6
  Author: yindaheng98
@@ -97,11 +97,17 @@ def BaseFullPrunerInDensifyTrainer(
97
97
 
98
98
 
99
99
  def DepthFullPruningTrainer(model: GaussianModel, scene_extent: float, dataset: TrainableCameraDataset, *args, **kwargs):
100
- return DepthTrainerWrapper(BaseFullPruningTrainer, model, scene_extent, *args, dataset=dataset, **kwargs)
100
+ return DepthTrainerWrapper(
101
+ BaseFullPruningTrainer,
102
+ model, scene_extent, dataset,
103
+ *args, **kwargs)
101
104
 
102
105
 
103
106
  def DepthFullPrunerInDensifyTrainer(model: GaussianModel, scene_extent: float, dataset: TrainableCameraDataset, *args, **kwargs):
104
- return DepthTrainerWrapper(BaseFullPrunerInDensifyTrainer, model, scene_extent, *args, dataset=dataset, **kwargs)
107
+ return DepthTrainerWrapper(
108
+ BaseFullPrunerInDensifyTrainer,
109
+ model, scene_extent, dataset,
110
+ *args, **kwargs)
105
111
 
106
112
 
107
113
  def OpacityResetPruningTrainer(
@@ -52,11 +52,17 @@ def BaseImportancePrunerInDensifyTrainer(
52
52
 
53
53
 
54
54
  def DepthImportancePruningTrainer(model: GaussianModel, scene_extent: float, dataset: TrainableCameraDataset, *args, **kwargs):
55
- return DepthTrainerWrapper(BaseImportancePruningTrainer, model, scene_extent, *args, dataset=dataset, **kwargs)
55
+ return DepthTrainerWrapper(
56
+ BaseImportancePruningTrainer,
57
+ model, scene_extent, dataset,
58
+ *args, **kwargs)
56
59
 
57
60
 
58
61
  def DepthImportancePrunerInDensifyTrainer(model: GaussianModel, scene_extent: float, dataset: TrainableCameraDataset, *args, **kwargs):
59
- return DepthTrainerWrapper(BaseImportancePrunerInDensifyTrainer, model, scene_extent, *args, dataset=dataset, **kwargs)
62
+ return DepthTrainerWrapper(
63
+ BaseImportancePrunerInDensifyTrainer,
64
+ model, scene_extent, dataset,
65
+ *args, **kwargs)
60
66
 
61
67
 
62
68
  ImportancePruningTrainer = DepthImportancePruningTrainer
@@ -54,11 +54,17 @@ def BasePrunerInDensifyTrainer(
54
54
 
55
55
 
56
56
  def DepthPruningTrainer(model: GaussianModel, scene_extent: float, dataset: TrainableCameraDataset, *args, **kwargs):
57
- return DepthTrainerWrapper(BasePruningTrainer, model, scene_extent, *args, dataset=dataset, **kwargs)
57
+ return DepthTrainerWrapper(
58
+ BasePruningTrainer,
59
+ model, scene_extent, dataset,
60
+ *args, **kwargs)
58
61
 
59
62
 
60
63
  def DepthPrunerInDensifyTrainer(model: GaussianModel, scene_extent: float, dataset: TrainableCameraDataset, *args, **kwargs):
61
- return DepthTrainerWrapper(BasePrunerInDensifyTrainer, model, scene_extent, *args, dataset=dataset, **kwargs)
64
+ return DepthTrainerWrapper(
65
+ BasePrunerInDensifyTrainer,
66
+ model, scene_extent, dataset,
67
+ *args, **kwargs)
62
68
 
63
69
 
64
70
  PruningTrainer = DepthPruningTrainer
@@ -262,36 +262,46 @@ class VectorQuantizer(AbstractQuantizer):
262
262
 
263
263
  PlyData([el, *cb]).write(ply_path)
264
264
 
265
- def load_quantized(self, model: GaussianModel, ply_path: str) -> GaussianModel:
266
- plydata = PlyData.read(ply_path)
267
-
265
+ def parse_ids(self, plydata: PlyData, max_sh_degree: int, device: torch.device) -> Dict[str, torch.Tensor]:
268
266
  ids_dict = {}
269
267
  elements = plydata['vertex']
270
- kwargs = dict(dtype=torch.long, device=model._xyz.device)
268
+ kwargs = dict(dtype=torch.long, device=device)
271
269
  ids_dict["rotation_re"] = torch.tensor(elements["rot_re"].copy(), **kwargs)
272
270
  ids_dict["rotation_im"] = torch.tensor(elements["rot_im"].copy(), **kwargs)
273
271
  ids_dict["opacity"] = torch.tensor(elements["opacity"].copy(), **kwargs)
274
272
  ids_dict["scaling"] = torch.tensor(elements["scale"].copy(), **kwargs)
275
273
  ids_dict["features_dc"] = torch.tensor(elements["f_dc"].copy(), **kwargs).unsqueeze(-1)
276
- for sh_degree in range(model.max_sh_degree):
274
+ for sh_degree in range(max_sh_degree):
277
275
  ids_dict[f'features_rest_{sh_degree}'] = torch.tensor(np.stack([elements[f'f_rest_{sh_degree}_{ch}'] for ch in range(3)], axis=1), **kwargs)
276
+ return ids_dict
278
277
 
278
+ def parse_codebook(self, plydata: PlyData, max_sh_degree: int, device: torch.device) -> Dict[str, torch.Tensor]:
279
279
  codebook_dict = {}
280
- kwargs = dict(dtype=torch.float32, device=model._xyz.device)
280
+ kwargs = dict(dtype=torch.float32, device=device)
281
281
  codebook_dict["rotation_re"] = torch.tensor(plydata["codebook_rot_re"]["rot_re"], **kwargs).unsqueeze(-1)
282
282
  codebook_dict["rotation_im"] = torch.tensor(np.stack([plydata["codebook_rot_im"][f'rot_im_{ch}'] for ch in range(3)], axis=1), **kwargs)
283
283
  codebook_dict["opacity"] = torch.tensor(plydata["codebook_opacity"]["opacity"], **kwargs).unsqueeze(-1)
284
284
  codebook_dict["scaling"] = torch.tensor(np.stack([plydata["codebook_scaling"][f'scaling_{ch}'] for ch in range(3)], axis=1), **kwargs)
285
285
  codebook_dict["features_dc"] = torch.tensor(np.stack([plydata["codebook_f_dc"][f'f_dc_{ch}'] for ch in range(3)], axis=1), **kwargs)
286
- for sh_degree in range(model.max_sh_degree):
286
+ for sh_degree in range(max_sh_degree):
287
287
  n_channels = (sh_degree + 2) ** 2 - (sh_degree + 1) ** 2
288
288
  codebook_dict[f'features_rest_{sh_degree}'] = torch.tensor(np.stack([plydata[f"codebook_f_rest_{sh_degree}"][f'f_rest_{sh_degree}_{ch}'] for ch in range(n_channels)], axis=1), **kwargs)
289
+ return codebook_dict
289
290
 
290
- self._codebook_dict = codebook_dict
291
-
291
+ def parse_xyz(self, plydata: PlyData, device: torch.device) -> torch.Tensor:
292
+ elements = plydata['vertex']
293
+ kwargs = dict(dtype=torch.float32, device=device)
292
294
  xyz = torch.stack([
293
295
  torch.tensor(elements["x"].copy(), **kwargs),
294
296
  torch.tensor(elements["y"].copy(), **kwargs),
295
297
  torch.tensor(elements["z"].copy(), **kwargs),
296
298
  ], dim=1)
299
+ return xyz
300
+
301
+ def load_quantized(self, model: GaussianModel, ply_path: str) -> GaussianModel:
302
+ plydata = PlyData.read(ply_path)
303
+ ids_dict = self.parse_ids(plydata, model.max_sh_degree, model._xyz.device)
304
+ codebook_dict = self.parse_codebook(plydata, model.max_sh_degree, model._xyz.device)
305
+ xyz = self.parse_xyz(plydata, model._xyz.device)
306
+ self._codebook_dict = codebook_dict
297
307
  return self.dequantize(model, ids_dict, codebook_dict, xyz=xyz, replace=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reduced_3dgs
3
- Version: 1.10.3
3
+ Version: 1.10.5
4
4
  Summary: Refactored code for the paper "Reducing the Memory Footprint of 3D Gaussian Splatting"
5
5
  Home-page: https://github.com/yindaheng98/reduced-3dgs
6
6
  Author: yindaheng98
@@ -60,7 +60,7 @@ if os.name == 'nt':
60
60
 
61
61
  setup(
62
62
  name="reduced_3dgs",
63
- version='1.10.3',
63
+ version='1.10.5',
64
64
  author='yindaheng98',
65
65
  author_email='yindaheng98@gmail.com',
66
66
  url='https://github.com/yindaheng98/reduced-3dgs',
File without changes
File without changes
File without changes