reduced-3dgs 1.9.0__tar.gz → 1.9.2__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.0 → reduced_3dgs-1.9.2}/PKG-INFO +1 -1
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/importance/combinations.py +19 -3
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/importance/trainer.py +71 -11
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs.egg-info/PKG-INFO +1 -1
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/setup.py +1 -1
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/LICENSE.md +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/README.md +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/__init__.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/combinations.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/importance/__init__.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/pruning/__init__.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/pruning/combinations.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/pruning/trainer.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/quantization/__init__.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/quantization/abc.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/quantization/exclude_zeros.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/quantization/quantizer.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/quantization/wrapper.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/quantize.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/shculling/__init__.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/shculling/gaussian_model.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/shculling/trainer.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs/train.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs.egg-info/SOURCES.txt +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs.egg-info/dependency_links.txt +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs.egg-info/requires.txt +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/reduced_3dgs.egg-info/top_level.txt +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/setup.cfg +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/cuda_rasterizer/backward.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/cuda_rasterizer/forward.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer_impl.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/__init__.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/ext.cpp +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/rasterize_points.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/reduced_3dgs/kmeans.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/reduced_3dgs/redundancy_score.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/reduced_3dgs/sh_culling.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/reduced_3dgs.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/gaussian-importance/cuda_rasterizer/backward.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/gaussian-importance/cuda_rasterizer/forward.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/gaussian-importance/cuda_rasterizer/rasterizer_impl.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/gaussian-importance/diff_gaussian_rasterization/__init__.py +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/gaussian-importance/ext.cpp +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/gaussian-importance/rasterize_points.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/simple-knn/ext.cpp +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/simple-knn/simple_knn.cu +0 -0
- {reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/simple-knn/spatial.cu +0 -0
|
@@ -10,9 +10,17 @@ def BaseImportancePrunerInDensifyTrainer(
|
|
|
10
10
|
scene_extent: float,
|
|
11
11
|
dataset: List[Camera],
|
|
12
12
|
*args,
|
|
13
|
-
importance_prune_from_iter=
|
|
14
|
-
importance_prune_until_iter=
|
|
15
|
-
importance_prune_interval=
|
|
13
|
+
importance_prune_from_iter=15000,
|
|
14
|
+
importance_prune_until_iter=20000,
|
|
15
|
+
importance_prune_interval: int = 1000,
|
|
16
|
+
importance_prune_type="comprehensive",
|
|
17
|
+
importance_prune_percent=0.1,
|
|
18
|
+
importance_prune_thr_important_score=None,
|
|
19
|
+
importance_prune_thr_v_important_score=3.0,
|
|
20
|
+
importance_prune_thr_max_v_important_score=None,
|
|
21
|
+
importance_prune_thr_count=1,
|
|
22
|
+
importance_prune_thr_T_alpha=0.1,
|
|
23
|
+
importance_v_pow=0.1,
|
|
16
24
|
**kwargs):
|
|
17
25
|
return DensificationTrainerWrapper(
|
|
18
26
|
lambda model, scene_extent: ImportancePruner(
|
|
@@ -21,6 +29,14 @@ def BaseImportancePrunerInDensifyTrainer(
|
|
|
21
29
|
importance_prune_from_iter=importance_prune_from_iter,
|
|
22
30
|
importance_prune_until_iter=importance_prune_until_iter,
|
|
23
31
|
importance_prune_interval=importance_prune_interval,
|
|
32
|
+
importance_prune_type=importance_prune_type,
|
|
33
|
+
importance_prune_percent=importance_prune_percent,
|
|
34
|
+
importance_prune_thr_important_score=importance_prune_thr_important_score,
|
|
35
|
+
importance_prune_thr_v_important_score=importance_prune_thr_v_important_score,
|
|
36
|
+
importance_prune_thr_max_v_important_score=importance_prune_thr_max_v_important_score,
|
|
37
|
+
importance_prune_thr_count=importance_prune_thr_count,
|
|
38
|
+
importance_prune_thr_T_alpha=importance_prune_thr_T_alpha,
|
|
39
|
+
importance_v_pow=importance_v_pow,
|
|
24
40
|
),
|
|
25
41
|
model,
|
|
26
42
|
scene_extent,
|
|
@@ -116,22 +116,45 @@ def score2mask(percent, import_score: list, threshold=None):
|
|
|
116
116
|
return prune_mask
|
|
117
117
|
|
|
118
118
|
|
|
119
|
-
def prune_gaussians(
|
|
119
|
+
def prune_gaussians(
|
|
120
|
+
gaussians: GaussianModel, dataset: CameraDataset,
|
|
121
|
+
prune_type="comprehensive",
|
|
122
|
+
prune_percent=0.1,
|
|
123
|
+
prune_thr_important_score=None,
|
|
124
|
+
prune_thr_v_important_score=None,
|
|
125
|
+
prune_thr_max_v_important_score=None,
|
|
126
|
+
prune_thr_count=None,
|
|
127
|
+
prune_thr_T_alpha=None,
|
|
128
|
+
v_pow=0.1):
|
|
120
129
|
gaussian_list, opacity_imp_list, T_alpha_imp_list = prune_list(gaussians, dataset)
|
|
121
130
|
match prune_type:
|
|
122
131
|
case "important_score":
|
|
123
|
-
mask = score2mask(prune_percent, opacity_imp_list,
|
|
132
|
+
mask = score2mask(prune_percent, opacity_imp_list, prune_thr_important_score)
|
|
124
133
|
case "v_important_score":
|
|
125
134
|
v_list = calculate_v_imp_score(gaussians, opacity_imp_list, v_pow)
|
|
126
|
-
mask = score2mask(prune_percent, v_list,
|
|
135
|
+
mask = score2mask(prune_percent, v_list, prune_thr_v_important_score)
|
|
127
136
|
case "max_v_important_score":
|
|
128
137
|
v_list = opacity_imp_list * torch.max(gaussians.get_scaling, dim=1)[0]
|
|
129
|
-
mask = score2mask(prune_percent, v_list,
|
|
138
|
+
mask = score2mask(prune_percent, v_list, prune_thr_max_v_important_score)
|
|
130
139
|
case "count":
|
|
131
|
-
mask = score2mask(prune_percent, gaussian_list,
|
|
140
|
+
mask = score2mask(prune_percent, gaussian_list, prune_thr_count)
|
|
132
141
|
case "T_alpha":
|
|
133
142
|
# new importance score defined by doji
|
|
134
|
-
mask = score2mask(prune_percent, T_alpha_imp_list,
|
|
143
|
+
mask = score2mask(prune_percent, T_alpha_imp_list, prune_thr_T_alpha)
|
|
144
|
+
case "comprehensive":
|
|
145
|
+
mask = torch.zeros_like(gaussian_list, dtype=torch.bool)
|
|
146
|
+
if prune_thr_important_score is not None:
|
|
147
|
+
mask |= score2mask(prune_percent, opacity_imp_list, prune_thr_important_score)
|
|
148
|
+
if prune_thr_v_important_score is not None:
|
|
149
|
+
v_list = calculate_v_imp_score(gaussians, opacity_imp_list, v_pow)
|
|
150
|
+
mask |= score2mask(prune_percent, v_list, prune_thr_v_important_score)
|
|
151
|
+
if prune_thr_max_v_important_score is not None:
|
|
152
|
+
v_list = opacity_imp_list * torch.max(gaussians.get_scaling, dim=1)[0]
|
|
153
|
+
mask |= score2mask(prune_percent, v_list, prune_thr_max_v_important_score)
|
|
154
|
+
if prune_thr_count is not None:
|
|
155
|
+
mask |= score2mask(prune_percent, gaussian_list, prune_thr_count)
|
|
156
|
+
if prune_thr_T_alpha is not None:
|
|
157
|
+
mask |= score2mask(prune_percent, T_alpha_imp_list, prune_thr_T_alpha)
|
|
135
158
|
case _:
|
|
136
159
|
raise Exception("Unsupportive prunning method")
|
|
137
160
|
return mask
|
|
@@ -144,17 +167,38 @@ class ImportancePruner(DensifierWrapper):
|
|
|
144
167
|
importance_prune_from_iter=15000,
|
|
145
168
|
importance_prune_until_iter=20000,
|
|
146
169
|
importance_prune_interval: int = 1000,
|
|
147
|
-
|
|
170
|
+
importance_prune_type="comprehensive",
|
|
171
|
+
importance_prune_percent=0.1,
|
|
172
|
+
importance_prune_thr_important_score=None,
|
|
173
|
+
importance_prune_thr_v_important_score=3.0,
|
|
174
|
+
importance_prune_thr_max_v_important_score=None,
|
|
175
|
+
importance_prune_thr_count=1,
|
|
176
|
+
importance_prune_thr_T_alpha=0.1,
|
|
177
|
+
importance_v_pow=0.1):
|
|
148
178
|
super().__init__(base_densifier)
|
|
149
179
|
self.dataset = dataset
|
|
150
180
|
self.importance_prune_from_iter = importance_prune_from_iter
|
|
151
181
|
self.importance_prune_until_iter = importance_prune_until_iter
|
|
152
182
|
self.importance_prune_interval = importance_prune_interval
|
|
183
|
+
self.prune_percent = importance_prune_percent
|
|
184
|
+
self.prune_thr_important_score = importance_prune_thr_important_score
|
|
185
|
+
self.prune_thr_v_important_score = importance_prune_thr_v_important_score
|
|
186
|
+
self.prune_thr_max_v_important_score = importance_prune_thr_max_v_important_score
|
|
187
|
+
self.prune_thr_count = importance_prune_thr_count
|
|
188
|
+
self.prune_thr_T_alpha = importance_prune_thr_T_alpha
|
|
189
|
+
self.v_pow = importance_v_pow
|
|
190
|
+
self.prune_type = importance_prune_type
|
|
153
191
|
|
|
154
192
|
def densify_and_prune(self, loss, out, camera, step: int):
|
|
155
193
|
ret = super().densify_and_prune(loss, out, camera, step)
|
|
156
194
|
if self.importance_prune_from_iter <= step <= self.importance_prune_until_iter and step % self.importance_prune_interval == 0:
|
|
157
|
-
remove_mask = prune_gaussians(
|
|
195
|
+
remove_mask = prune_gaussians(
|
|
196
|
+
self.model, self.dataset,
|
|
197
|
+
self.prune_type, self.prune_percent,
|
|
198
|
+
self.prune_thr_important_score, self.prune_thr_v_important_score,
|
|
199
|
+
self.prune_thr_max_v_important_score, self.prune_thr_count,
|
|
200
|
+
self.prune_thr_T_alpha, self.v_pow,
|
|
201
|
+
)
|
|
158
202
|
ret = ret._replace(remove_mask=remove_mask if ret.remove_mask is None else torch.logical_or(ret.remove_mask, remove_mask))
|
|
159
203
|
return ret
|
|
160
204
|
|
|
@@ -164,9 +208,17 @@ def BaseImportancePruningTrainer(
|
|
|
164
208
|
scene_extent: float,
|
|
165
209
|
dataset: List[Camera],
|
|
166
210
|
*args,
|
|
167
|
-
importance_prune_from_iter=
|
|
168
|
-
importance_prune_until_iter=
|
|
169
|
-
importance_prune_interval: int =
|
|
211
|
+
importance_prune_from_iter=15000,
|
|
212
|
+
importance_prune_until_iter=20000,
|
|
213
|
+
importance_prune_interval: int = 1000,
|
|
214
|
+
importance_prune_type="comprehensive",
|
|
215
|
+
importance_prune_percent=0.1,
|
|
216
|
+
importance_prune_thr_important_score=None,
|
|
217
|
+
importance_prune_thr_v_important_score=3.0,
|
|
218
|
+
importance_prune_thr_max_v_important_score=None,
|
|
219
|
+
importance_prune_thr_count=1,
|
|
220
|
+
importance_prune_thr_T_alpha=0.1,
|
|
221
|
+
importance_v_pow=0.1,
|
|
170
222
|
**kwargs):
|
|
171
223
|
return DensificationTrainer(
|
|
172
224
|
model, scene_extent,
|
|
@@ -176,5 +228,13 @@ def BaseImportancePruningTrainer(
|
|
|
176
228
|
importance_prune_from_iter=importance_prune_from_iter,
|
|
177
229
|
importance_prune_until_iter=importance_prune_until_iter,
|
|
178
230
|
importance_prune_interval=importance_prune_interval,
|
|
231
|
+
importance_prune_type=importance_prune_type,
|
|
232
|
+
importance_prune_percent=importance_prune_percent,
|
|
233
|
+
importance_prune_thr_important_score=importance_prune_thr_important_score,
|
|
234
|
+
importance_prune_thr_v_important_score=importance_prune_thr_v_important_score,
|
|
235
|
+
importance_prune_thr_max_v_important_score=importance_prune_thr_max_v_important_score,
|
|
236
|
+
importance_prune_thr_count=importance_prune_thr_count,
|
|
237
|
+
importance_prune_thr_T_alpha=importance_prune_thr_T_alpha,
|
|
238
|
+
importance_v_pow=importance_v_pow,
|
|
179
239
|
), *args, **kwargs
|
|
180
240
|
)
|
|
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.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/rasterize_points.cu
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/diff-gaussian-rasterization/reduced_3dgs.cu
RENAMED
|
File without changes
|
{reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/gaussian-importance/cuda_rasterizer/backward.cu
RENAMED
|
File without changes
|
{reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/gaussian-importance/cuda_rasterizer/forward.cu
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reduced_3dgs-1.9.0 → reduced_3dgs-1.9.2}/submodules/gaussian-importance/rasterize_points.cu
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|