reduced-3dgs 1.9.5__tar.gz → 1.10.1__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 (47) hide show
  1. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/PKG-INFO +1 -1
  2. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/quantization/quantizer.py +5 -3
  3. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/train.py +20 -15
  4. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs.egg-info/PKG-INFO +1 -1
  5. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/setup.py +1 -1
  6. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/LICENSE.md +0 -0
  7. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/README.md +0 -0
  8. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/__init__.py +0 -0
  9. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/combinations.py +0 -0
  10. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/importance/__init__.py +0 -0
  11. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/importance/combinations.py +0 -0
  12. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/importance/trainer.py +0 -0
  13. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/pruning/__init__.py +0 -0
  14. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/pruning/combinations.py +0 -0
  15. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/pruning/trainer.py +0 -0
  16. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/quantization/__init__.py +0 -0
  17. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/quantization/abc.py +0 -0
  18. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/quantization/exclude_zeros.py +0 -0
  19. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/quantization/wrapper.py +0 -0
  20. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/quantize.py +0 -0
  21. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/shculling/__init__.py +0 -0
  22. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/shculling/gaussian_model.py +0 -0
  23. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs/shculling/trainer.py +0 -0
  24. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs.egg-info/SOURCES.txt +0 -0
  25. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs.egg-info/dependency_links.txt +0 -0
  26. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs.egg-info/requires.txt +0 -0
  27. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/reduced_3dgs.egg-info/top_level.txt +0 -0
  28. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/setup.cfg +0 -0
  29. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/cuda_rasterizer/backward.cu +0 -0
  30. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/cuda_rasterizer/forward.cu +0 -0
  31. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer_impl.cu +0 -0
  32. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/__init__.py +0 -0
  33. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/ext.cpp +0 -0
  34. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/rasterize_points.cu +0 -0
  35. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/reduced_3dgs/kmeans.cu +0 -0
  36. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/reduced_3dgs/redundancy_score.cu +0 -0
  37. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/reduced_3dgs/sh_culling.cu +0 -0
  38. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/diff-gaussian-rasterization/reduced_3dgs.cu +0 -0
  39. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/gaussian-importance/cuda_rasterizer/backward.cu +0 -0
  40. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/gaussian-importance/cuda_rasterizer/forward.cu +0 -0
  41. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/gaussian-importance/cuda_rasterizer/rasterizer_impl.cu +0 -0
  42. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/gaussian-importance/diff_gaussian_rasterization/__init__.py +0 -0
  43. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/gaussian-importance/ext.cpp +0 -0
  44. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/gaussian-importance/rasterize_points.cu +0 -0
  45. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/simple-knn/ext.cpp +0 -0
  46. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/submodules/simple-knn/simple_knn.cu +0 -0
  47. {reduced_3dgs-1.9.5 → reduced_3dgs-1.10.1}/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.9.5
3
+ Version: 1.10.1
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
@@ -119,10 +119,12 @@ class VectorQuantizer(AbstractQuantizer):
119
119
  return self.one_nearst(model._opacity.detach(), codebook)
120
120
 
121
121
  def produce_clusters_scaling(self, model: GaussianModel, *args, **kwargs):
122
- return self.generate_codebook(model.get_scaling.detach(), self.num_clusters_scaling, *args, **kwargs)
122
+ centers, ids = self.generate_codebook(model.get_scaling.detach(), self.num_clusters_scaling, *args, **kwargs)
123
+ centers_log = model.scaling_inverse_activation(centers)
124
+ return centers_log, ids
123
125
 
124
126
  def find_nearest_cluster_id_scaling(self, model: GaussianModel, codebook: torch.Tensor):
125
- return self.one_nearst(model.get_scaling.detach(), codebook)
127
+ return self.one_nearst(model.get_scaling.detach(), model.scaling_activation(codebook))
126
128
 
127
129
  def produce_clusters(self, model: GaussianModel, init_codebook_dict={}):
128
130
  codebook_dict: Dict[str, torch.Tensor] = {}
@@ -163,7 +165,7 @@ class VectorQuantizer(AbstractQuantizer):
163
165
 
164
166
  def dequantize(self, model: GaussianModel, ids_dict: Dict[str, torch.Tensor], codebook_dict: Dict[str, torch.Tensor], xyz: torch.Tensor = None, replace=False) -> GaussianModel:
165
167
  opacity = codebook_dict["opacity"][ids_dict["opacity"], ...]
166
- scaling = model.scaling_inverse_activation(codebook_dict["scaling"][ids_dict["scaling"], ...])
168
+ scaling = codebook_dict["scaling"][ids_dict["scaling"], ...]
167
169
 
168
170
  rotation = torch.cat((
169
171
  codebook_dict["rotation_re"][ids_dict["rotation_re"], ...],
@@ -4,13 +4,13 @@ import shutil
4
4
  from typing import List, Tuple
5
5
  import torch
6
6
  from tqdm import tqdm
7
- from argparse import Namespace
8
7
  from gaussian_splatting import GaussianModel
9
- from gaussian_splatting.dataset import CameraDataset, JSONCameraDataset, TrainableCameraDataset
8
+ from gaussian_splatting.dataset import CameraDataset
10
9
  from gaussian_splatting.utils import psnr
11
- from gaussian_splatting.dataset.colmap import ColmapCameraDataset, ColmapTrainableCameraDataset, colmap_init
10
+ from gaussian_splatting.dataset.colmap import colmap_init
12
11
  from gaussian_splatting.trainer import AbstractTrainer
13
12
  from gaussian_splatting.trainer.extensions import ScaleRegularizeTrainerWrapper
13
+ from gaussian_splatting.train import prepare_dataset, save_cfg_args
14
14
  from reduced_3dgs.quantization import AbstractQuantizer, VectorQuantizeTrainerWrapper
15
15
  from reduced_3dgs.shculling import VariableSHGaussianModel, SHCullingTrainer
16
16
  from reduced_3dgs.pruning import PruningTrainer
@@ -81,17 +81,20 @@ def prepare_quantizer(
81
81
  return trainer, trainer.quantizer
82
82
 
83
83
 
84
- def prepare_training(sh_degree: int, source: str, device: str, mode: str, load_ply: str = None, load_camera: str = None, load_depth=False, with_scale_reg=False, quantize: bool = False, load_quantized: str = None, configs={}) -> Tuple[CameraDataset, GaussianModel, AbstractTrainer]:
85
- quantizer = None
86
- if mode in basemodes:
84
+ def prepare_gaussians(sh_degree: int, source: str, device: str, trainable_camera: bool = False, load_ply: str = None) -> Tuple[CameraDataset, GaussianModel, AbstractTrainer]:
85
+ if trainable_camera:
86
+ gaussians = CameraTrainableVariableSHGaussianModel(sh_degree).to(device)
87
+ gaussians.load_ply(load_ply) if load_ply else colmap_init(gaussians, source)
88
+ else:
87
89
  gaussians = VariableSHGaussianModel(sh_degree).to(device)
88
90
  gaussians.load_ply(load_ply) if load_ply else colmap_init(gaussians, source)
89
- dataset = (JSONCameraDataset(load_camera, load_depth=load_depth) if load_camera else ColmapCameraDataset(source, load_depth=load_depth)).to(device)
91
+ return gaussians
92
+
93
+
94
+ def prepare_trainer(gaussians: GaussianModel, dataset: CameraDataset, mode: str, with_scale_reg=False, quantize: bool = False, load_quantized: str = None, configs={}) -> AbstractTrainer:
95
+ if mode in basemodes:
90
96
  modes = basemodes
91
97
  elif mode in cameramodes:
92
- gaussians = CameraTrainableVariableSHGaussianModel(sh_degree).to(device)
93
- gaussians.load_ply(load_ply) if load_ply else colmap_init(gaussians, source)
94
- dataset = (TrainableCameraDataset.from_json(load_camera, load_depth=load_depth) if load_camera else ColmapTrainableCameraDataset(source, load_depth=load_depth)).to(device)
95
98
  modes = cameramodes
96
99
  else:
97
100
  raise ValueError(f"Unknown mode: {mode}")
@@ -114,13 +117,15 @@ def prepare_training(sh_degree: int, source: str, device: str, mode: str, load_p
114
117
  dataset=dataset,
115
118
  **configs
116
119
  )
117
- return dataset, gaussians, trainer, quantizer
120
+ quantizer = None
121
+ return trainer, quantizer
118
122
 
119
123
 
120
- def save_cfg_args(destination: str, sh_degree: int, source: str):
121
- os.makedirs(destination, exist_ok=True)
122
- with open(os.path.join(destination, "cfg_args"), 'w') as cfg_log_f:
123
- cfg_log_f.write(str(Namespace(sh_degree=sh_degree, source_path=source)))
124
+ def prepare_training(sh_degree: int, source: str, device: str, mode: str, load_ply: str = None, load_camera: str = None, load_depth=False, with_scale_reg=False, quantize: bool = False, load_quantized: str = None, configs={}) -> Tuple[CameraDataset, GaussianModel, AbstractTrainer]:
125
+ dataset = prepare_dataset(source=source, device=device, trainable_camera=mode in cameramodes, load_camera=load_camera, load_depth=load_depth)
126
+ gaussians = prepare_gaussians(sh_degree=sh_degree, source=source, device=device, trainable_camera=mode in cameramodes, load_ply=load_ply)
127
+ trainer, quantizer = prepare_trainer(gaussians=gaussians, dataset=dataset, mode=mode, with_scale_reg=with_scale_reg, quantize=quantize, load_quantized=load_quantized, configs=configs)
128
+ return dataset, gaussians, trainer, quantizer
124
129
 
125
130
 
126
131
  def training(dataset: CameraDataset, gaussians: GaussianModel, trainer: AbstractTrainer, quantizer: AbstractQuantizer, destination: str, iteration: int, save_iterations: List[int], device: str, empty_cache_every_step=False):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reduced_3dgs
3
- Version: 1.9.5
3
+ Version: 1.10.1
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.9.5',
63
+ version='1.10.1',
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