dcharatan / pixelsplat

[CVPR 2024 Oral, Best Paper Runner-Up] Code for "pixelSplat: 3D Gaussian Splats from Image Pairs for Scalable Generalizable 3D Reconstruction" by David Charatan, Sizhe Lester Li, Andrea Tagliasacchi, and Vincent Sitzmann
http://davidcharatan.com/pixelsplat/
MIT License
830 stars 56 forks source link

Question regarding Activation of Scales property of Gaussian #67

Closed mohammadasim98 closed 4 months ago

mohammadasim98 commented 4 months ago

Hi,

Great work! I was confused about this particular section gaussian_adapter.py.

The activation function used for scaling is different in your code.

scale_min = self.cfg.gaussian_scale_min scale_max = self.cfg.gaussian_scale_max scales = scale_min + (scale_max - scale_min) * scales.sigmoid()

Whereas in the original formulation of Gaussian Splatting, the authors use the exponential function as the activation function.

Can you shed some light onto why you chose this specific function for the scale property of Gaussian. Thank you.

dcharatan commented 4 months ago

An exponential function would allow the Gaussians to become arbitrarily large. Since our Gaussians are meant to represent a single pixel (or the region around it), we limit their sizes using the code you highlighted. You could try an exponential activation instead, but there's a chance that doing so would create really big Gaussians that make training unstable.