autonomousvision / mip-splatting

[CVPR'24 Best Student Paper] Mip-Splatting: Alias-free 3D Gaussian Splatting
https://niujinshuchong.github.io/mip-splatting/
Other
1.01k stars 65 forks source link

the meaning of "3DG" and "3DGS + EWA" #16

Closed Yang-Xijie closed 7 months ago

Yang-Xijie commented 7 months ago

Thanks for your great work!

I have a question. In the part "6.1. Implementation", you mention that

"3DGS + EWA" replaces the dilation of 3DGS with the EWA filter.

I'm confused about the meaning of "the EWA filter".

In the original Gaussian-Splatting (3DGS) implementation, there is a 2D low-pass filter, which chooses s=0.3 in the equation $\mathcal{G}_k^{2D}(\mathbf{x}) = e^{-\frac{1}{2}\left(\mathbf{x}-\mathbf{p}_k\right) ^T \left(\boldsymbol{\Sigma}_k^{2D} + s\mathbf{I}\right)^{-1} \left(\mathbf{x}-\mathbf{p}_k\right)}$, and the correlated codes are shown in https://github.com/graphdeco-inria/diff-gaussian-rasterization/blob/59f5f77e3ddbac3ed9db93ec2cfe99ed6c5d121d/cuda_rasterizer/forward.cu#L73-L113.

Do you mean the low-pass filter with s=0.3? If so, it seems that the EWA Splatting algotithm / EWA filter is already included in the official implementation of 3DGS. Could you please explain the differences between row titles of "3DGS" and "3DGS + EWA" that appear multiple times in tables of your paper? Do you mean:

Or to be more simplified, my question is presented in the image below:

image
niujinshuchong commented 7 months ago

Hi, 3DGS means the official 3DGS where a dilation operation is applied (Eq. 5 in mip-splatting paper).

3DGS + EWA means we replaced the dilation with an EWA filter which is also a gaussian filter. The difference between dilation and EWA filter is the coef part in the code (difference between Eq.5 and Eq. 10 in the paper). Please also refer to Sec 5.2 for the difference between EWA filter and our mip filter.

Yang-Xijie commented 7 months ago

To tidy it up:

\mathcal{G}_k^{2D}(\mathbf{x})_{\text{2D dilation operation}} = e^{-\frac{1}{2}\left(\mathbf{x}-\mathbf{p}_k\right) ^T \left(\boldsymbol{\Sigma}_k^{2D} + s_1\mathbf{I}\right)^{-1} \left(\mathbf{x}-\mathbf{p}_k\right)}

is used in 3DGS. (from Eq. 5)

\mathcal{G}_k^{2D}(\mathbf{x})_{\text{2D Guassian filter}} = \sqrt{\frac{\left|\boldsymbol{\Sigma}_k^{2 D}\right|}{\left|\boldsymbol{\Sigma}_k^{2 D}+s_2 \mathbf{I}\right|}} e^{-\frac{1}{2}\left(\mathbf{x}-\mathbf{p}_k\right)^T\left(\boldsymbol{\Sigma}_k^{2 D}+s_2 \mathbf{I}\right)^{-1}\left(\mathbf{x}-\mathbf{p}_k\right)}

is the math form of filters used in both EWA and Mip-Splatting. (from Eq. 10)

Is this correct?


If it is correct, then my questions are related with the differences between the EWA filter and the Mip filter:

Yang-Xijie commented 7 months ago

And, in section 6.1, you mention that you choose the variance of our 2D Mip filter as 0.1. Is this a mismatch with codes where $s_2 = 0.3$?

Oh, I find that in all experiment commands, you add --kernel_size 0.1 so $s_2 = 0.1$ actually. I just pay attention to the default value of args: https://github.com/autonomousvision/mip-splatting/blob/ad7847a1c7f3f8eb47f24d58a42476d82d2df2f8/arguments/__init__.py#L57

niujinshuchong commented 7 months ago

Hi, that's correct.