gaussian-splatting 1.18.1__cp312-cp312-win_amd64.whl → 1.19.1__cp312-cp312-win_amd64.whl

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 gaussian-splatting might be problematic. Click here for more details.

@@ -8,9 +8,17 @@ from .trainer.extensions import ScaleRegularizeTrainerWrapper
8
8
 
9
9
  def prepare_dataset(source: str, device: str, trainable_camera: bool = False, load_camera: str = None, load_mask=True, load_depth=True) -> CameraDataset:
10
10
  if trainable_camera:
11
- dataset = (TrainableCameraDataset.from_json(load_camera, load_mask=load_mask, load_depth=load_depth) if load_camera else ColmapTrainableCameraDataset(source, load_mask=load_mask, load_depth=load_depth)).to(device)
11
+ dataset = (
12
+ TrainableCameraDataset.from_json(load_camera, load_mask=load_mask, load_depth=load_depth)
13
+ if load_camera else
14
+ ColmapTrainableCameraDataset(source, load_mask=load_mask, load_depth=load_depth)
15
+ ).to(device)
12
16
  else:
13
- dataset = (FixedTrainableCameraDataset(load_camera, load_mask=load_mask, load_depth=load_depth) if load_camera else ColmapCameraDataset(source, load_mask=load_mask, load_depth=load_depth)).to(device)
17
+ dataset = (
18
+ FixedTrainableCameraDataset(load_camera, load_mask=load_mask, load_depth=load_depth)
19
+ if load_camera else
20
+ ColmapCameraDataset(source, load_mask=load_mask, load_depth=load_depth)
21
+ ).to(device)
14
22
  return dataset
15
23
 
16
24
 
@@ -33,6 +33,10 @@ class AbstractTrainer(ABC):
33
33
  def schedulers(self) -> Dict[str, Callable[[int], float]]:
34
34
  raise ValueError("Schedulers is not set")
35
35
 
36
+ @abstractmethod
37
+ def preprocess(self, camera: Camera) -> Camera:
38
+ pass
39
+
36
40
  @abstractmethod
37
41
  def loss(self, out: dict, camera: Camera) -> torch.Tensor:
38
42
  pass
@@ -49,6 +53,7 @@ class AbstractTrainer(ABC):
49
53
 
50
54
  def step(self, camera: Camera):
51
55
  self.update_learning_rate()
56
+ camera = self.preprocess(camera)
52
57
  out = self.model(camera)
53
58
  loss = self.loss(out, camera)
54
59
  loss.backward()
@@ -100,6 +105,9 @@ class TrainerWrapper(AbstractTrainer):
100
105
  def schedulers(self) -> Dict[str, Callable[[int], float]]:
101
106
  return self.base_trainer.schedulers
102
107
 
108
+ def preprocess(self, camera: Camera) -> Camera:
109
+ return self.base_trainer.preprocess(camera)
110
+
103
111
  def loss(self, out: dict, camera: Camera) -> torch.Tensor:
104
112
  return self.base_trainer.loss(out, camera)
105
113
 
@@ -22,12 +22,23 @@ class BaseTrainer(AbstractTrainer):
22
22
  opacity_lr=0.025,
23
23
  scaling_lr=0.005,
24
24
  rotation_lr=0.001,
25
- mask_mode="none", # "ignore", "random", "bg_color"
25
+ mask_mode="none",
26
+ # "none"=do not use mask
27
+ # "ignore"=loss of the masked area will be set to 0
28
+ # "bg_color"=fill the masked area of ground truth with the bg_color for rendering
29
+ bg_color=None,
30
+ # None=do not change bg_color
31
+ # "random"=set bg_color to random color
32
+ # tuple(float, float, float)=set bg_color to the given color
26
33
  ):
27
34
  super().__init__()
28
35
  self.lambda_dssim = lambda_dssim
29
- assert mask_mode in ["none", "ignore", "random", "bg_color"], f"Unknown mask policy: {mask_mode}"
36
+ assert mask_mode in ["none", "ignore", "bg_color"], f"Unknown mask policy: {mask_mode}"
37
+ assert bg_color is None or bg_color == "random" or (
38
+ isinstance(bg_color, tuple) and len(bg_color) == 3 and all(isinstance(c, float) for c in bg_color)
39
+ ), f"bg_color must be 'random' or a RGB value tuple(float, float, float), got {bg_color}"
30
40
  self.mask_mode = mask_mode
41
+ self.bg_color = bg_color
31
42
  params = [
32
43
  {'params': [model._xyz], 'lr': position_lr_init * scene_extent, "name": "xyz"},
33
44
  {'params': [model._features_dc], 'lr': feature_lr, "name": "f_dc"},
@@ -70,6 +81,17 @@ class BaseTrainer(AbstractTrainer):
70
81
  def schedulers(self) -> Dict[str, Callable[[int], float]]:
71
82
  return self._schedulers
72
83
 
84
+ def preprocess(self, camera: Camera) -> Camera:
85
+ if self.bg_color == "random":
86
+ camera = camera._replace(bg_color=torch.rand_like(camera.bg_color))
87
+ elif isinstance(self.bg_color, tuple):
88
+ camera = camera._replace(bg_color=torch.tensor(self.bg_color, device=camera.bg_color.device, dtype=camera.bg_color.dtype))
89
+ elif self.bg_color is None:
90
+ pass
91
+ else:
92
+ raise ValueError(f"bg_color must be 'random' or a tuple(int, int, int), got {self.bg_color}")
93
+ return camera
94
+
73
95
  def loss(self, out: dict, camera: Camera) -> torch.Tensor:
74
96
  render = out["render"]
75
97
  gt = camera.ground_truth_image
@@ -81,12 +103,11 @@ class BaseTrainer(AbstractTrainer):
81
103
  assert mask is not None, "Mask is required for 'ignore' mask policy"
82
104
  render = render * mask.unsqueeze(0)
83
105
  gt = gt * mask.unsqueeze(0)
84
- case "random":
85
- assert mask is not None, "Mask is required for 'random' mask policy"
86
- gt = gt * mask.unsqueeze(0) + (1 - mask.unsqueeze(0)) * torch.rand_like(gt)
87
106
  case "bg_color":
88
107
  assert mask is not None, "Mask is required for 'bg_color' mask policy"
89
- gt = gt * mask.unsqueeze(0) + (1 - mask.unsqueeze(0)) * camera.bg_color.unsqueeze(-1).unsqueeze(-1)
108
+ # bg_color after postprocess
109
+ bg_color = camera.postprocess(camera, camera.bg_color.unsqueeze(-1).unsqueeze(-1)).clamp(0.0, 1.0)
110
+ gt = gt * mask.unsqueeze(0) + (1 - mask.unsqueeze(0)) * bg_color
90
111
  case _:
91
112
  raise ValueError(f"Unknown mask policy: {self.mask_mode}")
92
113
  Ll1 = l1_loss(render, gt)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gaussian_splatting
3
- Version: 1.18.1
3
+ Version: 1.19.1
4
4
  Summary: Refactored python training and inference code for 3D Gaussian Splatting
5
5
  Home-page: https://github.com/yindaheng98/gaussian-splatting
6
6
  Author: yindaheng98
@@ -2,7 +2,7 @@ gaussian_splatting/__init__.py,sha256=CiOZMcyPTAaKtEuMZUhEda_Ad4_RUhmIstB-A3iuOJ
2
2
  gaussian_splatting/camera.py,sha256=vo7mu6lyFpIhDqOAgNiJuPan8t_nDJn5cJkAYygLFcA,9243
3
3
  gaussian_splatting/camera_trainable.py,sha256=nI6hFFRV2ev7VwLlKUbzEdN9zUmngYZAANGLr1p1yBA,3841
4
4
  gaussian_splatting/gaussian_model.py,sha256=_Dy_dDa2prALhVgg428a-O8-8PODg3c_JPkOJJ8X4o8,13275
5
- gaussian_splatting/prepare.py,sha256=GWPRpufg5larcKGNwlRtN22xVs9fp3ptMu11rQeySX8,3141
5
+ gaussian_splatting/prepare.py,sha256=rgwdDhPU-sS57ZgTLKwzognbS1hfR2JtjZqlC4FqPbI,3241
6
6
  gaussian_splatting/render.py,sha256=MSvJiOpyIr5IgJeaB6xj2GDcK4Jb6mcj7CWVXb-ajIk,5988
7
7
  gaussian_splatting/train.py,sha256=a3vHZf5sX5eVsxv394pmwTSon1mPevQVPGAWwYHqaY8,5386
8
8
  gaussian_splatting/dataset/__init__.py,sha256=-runuT-61P0YVpfV_WXqwUZM1oY0N012YH13Bt3rzSU,138
@@ -12,12 +12,12 @@ gaussian_splatting/dataset/colmap/__init__.py,sha256=YEYT2k2WJSqrkkZq4KAJYS9UMgq
12
12
  gaussian_splatting/dataset/colmap/dataset.py,sha256=0UBQ6ynOqElHZSphJ-MSbYQqCwwYZaAXl1y9AY5YKuY,4720
13
13
  gaussian_splatting/dataset/colmap/params_init.py,sha256=6_6gZ0Wl4aZrps2PJ_U234sxW5D-vOTfwioVa1FWC-E,1802
14
14
  gaussian_splatting/dataset/colmap/read_write_model.py,sha256=TenI7ai5UV7Ksg2vAXvJWnYFwOOo1tlS_633RfCLuQU,23137
15
- gaussian_splatting/diff_gaussian_rasterization/_C.cp312-win_amd64.pyd,sha256=aj88_ALoC0xx2JFvlS2mQIrEETMZOJY31u-oDn7o6MY,1300992
15
+ gaussian_splatting/diff_gaussian_rasterization/_C.cp312-win_amd64.pyd,sha256=pfC4F0RO4kLxzGvBxIN67JDrk_nUs-I_oMlf-iLpOa8,1300992
16
16
  gaussian_splatting/diff_gaussian_rasterization/__init__.py,sha256=a9D0IZiPx-Mk1795hSq54T-NYT4MtEN_MZrxeMhw0Eo,6705
17
- gaussian_splatting/simple_knn/_C.cp312-win_amd64.pyd,sha256=KoC2pG2Ie1pm9XaIeRH1UD3gWnC1gk3GrLOvbidg_4Y,1168896
17
+ gaussian_splatting/simple_knn/_C.cp312-win_amd64.pyd,sha256=I1jbI1-fs3z6PvzBI_DPu-i3fUxIWd1J3VGp98Q5c00,1168896
18
18
  gaussian_splatting/trainer/__init__.py,sha256=962fEY8A0spSQn5de_d_LkPOjA1PYKrLbuAkxwZo7mI,940
19
- gaussian_splatting/trainer/abc.py,sha256=kpYnJjLOhsyhE-V2J79EC9nih6MYBcXkmK9cHUA-3ao,4022
20
- gaussian_splatting/trainer/base.py,sha256=A2nQDgFbGod4orVbLwKqbCm_FBE-HNjtfQjCc9z3xGk,3713
19
+ gaussian_splatting/trainer/abc.py,sha256=_gcqmEobhSOdZnMyNb2oKS6cZJ-Mg3oYL4xJ5Y3_oic,4262
20
+ gaussian_splatting/trainer/base.py,sha256=fngLruQ9hMSNLFbc_5woG7jm6cidpoZ0dzk_zImRaE4,4851
21
21
  gaussian_splatting/trainer/camera_trainable.py,sha256=TBQXn2f578qeizPz6tgqFm-GRvttv9duuB1xx7_J9TQ,4567
22
22
  gaussian_splatting/trainer/combinations.py,sha256=7NX4fXdDOx8ri1_mgAaWNx-YVdo5XsqMlr9qy-Ll2MM,5329
23
23
  gaussian_splatting/trainer/depth.py,sha256=PxWBSNxzoQcRfCFI_yJnJMS6s8qFWn81CXK6O6ffXL0,7059
@@ -45,8 +45,8 @@ gaussian_splatting/utils/lpipsPyTorch/modules/__init__.py,sha256=47DEQpj8HBSa-_T
45
45
  gaussian_splatting/utils/lpipsPyTorch/modules/lpips.py,sha256=YScu0oXIEstCCjJVRItS_R_csUw70sBMFuP8Syl2UdI,1187
46
46
  gaussian_splatting/utils/lpipsPyTorch/modules/networks.py,sha256=kqIebq7dAhHypTXweFVEf_RDbN7_Zv7O3MlD-CfRvpg,2788
47
47
  gaussian_splatting/utils/lpipsPyTorch/modules/utils.py,sha256=TDcem3E3HqDNN2MT8qlOL_BKVHeO4HRE77JxF-kOWk8,915
48
- gaussian_splatting-1.18.1.dist-info/licenses/LICENSE.md,sha256=bMuRQKn0u485mx8JBBTJ5Simc-aWHaQsxmoB6jsg5oE,4752
49
- gaussian_splatting-1.18.1.dist-info/METADATA,sha256=IJjDkFlUcJxSIdQKjjW6KhZZHmRKgHHdLRFCTuVI_OQ,17183
50
- gaussian_splatting-1.18.1.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
51
- gaussian_splatting-1.18.1.dist-info/top_level.txt,sha256=uaYrPYXRHhpybgCnsoazTcdhpzZGnLT_vd5eoRzBWWI,19
52
- gaussian_splatting-1.18.1.dist-info/RECORD,,
48
+ gaussian_splatting-1.19.1.dist-info/licenses/LICENSE.md,sha256=bMuRQKn0u485mx8JBBTJ5Simc-aWHaQsxmoB6jsg5oE,4752
49
+ gaussian_splatting-1.19.1.dist-info/METADATA,sha256=UDNOnxvs-3k2zfDht3UiojA_pjcTsAvB8j-LW0ROObQ,17183
50
+ gaussian_splatting-1.19.1.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
51
+ gaussian_splatting-1.19.1.dist-info/top_level.txt,sha256=uaYrPYXRHhpybgCnsoazTcdhpzZGnLT_vd5eoRzBWWI,19
52
+ gaussian_splatting-1.19.1.dist-info/RECORD,,