reduced-3dgs 1.9.4__tar.gz → 1.10.0__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.
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/PKG-INFO +1 -1
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/pruning/combinations.py +1 -1
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/pruning/trainer.py +12 -17
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/quantization/quantizer.py +5 -3
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs.egg-info/PKG-INFO +1 -1
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/setup.py +1 -1
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/LICENSE.md +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/README.md +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/__init__.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/combinations.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/importance/__init__.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/importance/combinations.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/importance/trainer.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/pruning/__init__.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/quantization/__init__.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/quantization/abc.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/quantization/exclude_zeros.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/quantization/wrapper.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/quantize.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/shculling/__init__.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/shculling/gaussian_model.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/shculling/trainer.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs/train.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs.egg-info/SOURCES.txt +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs.egg-info/dependency_links.txt +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs.egg-info/requires.txt +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/reduced_3dgs.egg-info/top_level.txt +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/setup.cfg +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/cuda_rasterizer/backward.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/cuda_rasterizer/forward.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer_impl.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/__init__.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/ext.cpp +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/rasterize_points.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/reduced_3dgs/kmeans.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/reduced_3dgs/redundancy_score.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/reduced_3dgs/sh_culling.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/reduced_3dgs.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/gaussian-importance/cuda_rasterizer/backward.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/gaussian-importance/cuda_rasterizer/forward.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/gaussian-importance/cuda_rasterizer/rasterizer_impl.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/gaussian-importance/diff_gaussian_rasterization/__init__.py +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/gaussian-importance/ext.cpp +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/gaussian-importance/rasterize_points.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/simple-knn/ext.cpp +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/simple-knn/simple_knn.cu +0 -0
- {reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/simple-knn/spatial.cu +0 -0
|
@@ -23,7 +23,7 @@ def PrunerInDensifyTrainerWrapper(
|
|
|
23
23
|
return SplitCloneDensifierTrainerWrapper(
|
|
24
24
|
lambda model, scene_extent: BasePruner(
|
|
25
25
|
noargs_base_densifier_constructor(model, scene_extent, dataset),
|
|
26
|
-
dataset,
|
|
26
|
+
scene_extent, dataset,
|
|
27
27
|
prune_from_iter=prune_from_iter,
|
|
28
28
|
prune_until_iter=prune_until_iter,
|
|
29
29
|
prune_interval=prune_interval,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import Callable, List
|
|
2
2
|
import torch
|
|
3
3
|
from gaussian_splatting import GaussianModel, Camera
|
|
4
|
-
from gaussian_splatting.trainer import AbstractDensifier,
|
|
4
|
+
from gaussian_splatting.trainer import AbstractDensifier, OpacityPruner, DensificationTrainer, NoopDensifier
|
|
5
5
|
from reduced_3dgs.diff_gaussian_rasterization._C import sphere_ellipsoid_intersection, allocate_minimum_redundancy_value, find_minimum_projected_pixel_size
|
|
6
6
|
from reduced_3dgs.simple_knn._C import distIndex2
|
|
7
7
|
|
|
@@ -79,33 +79,28 @@ def mercy_gaussians(
|
|
|
79
79
|
return mask
|
|
80
80
|
|
|
81
81
|
|
|
82
|
-
class BasePruner(
|
|
82
|
+
class BasePruner(OpacityPruner):
|
|
83
83
|
def __init__(
|
|
84
84
|
self, base_densifier: AbstractDensifier,
|
|
85
|
+
scene_extent,
|
|
85
86
|
dataset: List[Camera],
|
|
86
|
-
|
|
87
|
-
prune_until_iter=15000,
|
|
88
|
-
prune_interval: int = 100,
|
|
87
|
+
*args,
|
|
89
88
|
box_size=1.,
|
|
90
89
|
lambda_mercy=1.,
|
|
91
90
|
mercy_minimum=3,
|
|
92
|
-
mercy_type='redundancy_opacity'
|
|
93
|
-
|
|
91
|
+
mercy_type='redundancy_opacity',
|
|
92
|
+
**kwargs):
|
|
93
|
+
super().__init__(base_densifier, scene_extent, *args, **kwargs)
|
|
94
94
|
self.dataset = dataset
|
|
95
|
-
self.prune_from_iter = prune_from_iter
|
|
96
|
-
self.prune_until_iter = prune_until_iter
|
|
97
|
-
self.prune_interval = prune_interval
|
|
98
95
|
self.box_size = box_size
|
|
99
96
|
self.lambda_mercy = lambda_mercy
|
|
100
97
|
self.mercy_minimum = mercy_minimum
|
|
101
98
|
self.mercy_type = mercy_type
|
|
102
99
|
|
|
103
|
-
def
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
ret = ret._replace(remove_mask=remove_mask if ret.remove_mask is None else torch.logical_or(remove_mask, ret.remove_mask))
|
|
108
|
-
return ret
|
|
100
|
+
def prune(self) -> torch.Tensor:
|
|
101
|
+
remove_mask = mercy_gaussians(self.model, self.dataset, self.box_size, self.lambda_mercy, self.mercy_minimum, self.mercy_type)
|
|
102
|
+
prune_mask = torch.logical_or(super().prune(), remove_mask)
|
|
103
|
+
return prune_mask
|
|
109
104
|
|
|
110
105
|
|
|
111
106
|
def PruningTrainerWrapper(
|
|
@@ -126,7 +121,7 @@ def PruningTrainerWrapper(
|
|
|
126
121
|
model, scene_extent,
|
|
127
122
|
BasePruner(
|
|
128
123
|
noargs_base_densifier_constructor(model, scene_extent, dataset),
|
|
129
|
-
dataset,
|
|
124
|
+
scene_extent, dataset,
|
|
130
125
|
prune_from_iter=prune_from_iter,
|
|
131
126
|
prune_until_iter=prune_until_iter,
|
|
132
127
|
prune_interval=prune_interval,
|
|
@@ -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
|
-
|
|
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 =
|
|
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"], ...],
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/diff-gaussian-rasterization/reduced_3dgs.cu
RENAMED
|
File without changes
|
|
File without changes
|
{reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/gaussian-importance/cuda_rasterizer/forward.cu
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reduced_3dgs-1.9.4 → reduced_3dgs-1.10.0}/submodules/gaussian-importance/rasterize_points.cu
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|