Anttwo / SuGaR

[CVPR 2024] Official PyTorch implementation of SuGaR: Surface-Aligned Gaussian Splatting for Efficient 3D Mesh Reconstruction and High-Quality Mesh Rendering
https://anttwo.github.io/sugar/
Other
2.36k stars 182 forks source link

Question for the regularization_type #126

Open SYSUykLin opened 10 months ago

SYSUykLin commented 10 months ago

If I choose the density regularization,what regularization will be used in this code? I did not find this part on your paper. Thanks

Anttwo commented 10 months ago

Hello @SYSUykLin,

This is an interesting question! It's true that the density regularization is quite hidden in the paper. Please take a look at page 5, just under Equation 5, for more details.

The density regularization consists in a direct comparison between the real density function $d$ and the "ideal" density function $\bar{d}$:

$$ \cal{R}_{\text{density}} = \frac{1}{\cal{P}} \sum_p | d(p) - \bar{d}(p) | $$

The $\cal{R}_{\text{Norm}}$ term is actually the same than for SDF, as the gradient of density and SDF are colinear anyway.

SYSUykLin commented 10 months ago

Thanks for your reply. I see. Another question, How many GS points are there during the Refine stage? 6 points per triangle, that is a huge number.

Anttwo commented 10 months ago

Vanilla Gaussian Splatting generally ends up with 1M to 5M Gaussians after optimization. Similarly, during the refinement stage of SuGaR, we aim for approximately 2M Gaussians on the surface, as it is generally enough to get a good looking representation of real scenes.

Therefore, we increase the number of surface-aligned Gaussians per triangle when we decrease the number of triangles. Also, we always use a triangular number for the number of Gaussians per triangle (1, 3, 6, 10, 15...)

For example, when using 1M vertices (this corresponds to the --high_poly config), the mesh generally has approximately 2M triangles, so we use only 1 Gaussian per triangle. When using only 200k vertices (this corresponds to the --low_poly config), the mesh generally has approximately 400k triangles, so we use 6 Gaussians per triangle.

In the end, SuGaR always has a similar number of Gaussians than vanilla 3DGS.