graphdeco-inria / gaussian-splatting

Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"
https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/
Other
13.91k stars 1.8k forks source link

eval isotropic in the code #474

Open cv-lab-x opened 10 months ago

cv-lab-x commented 10 months ago

hi, thanks for your great work, how to eval Isotropic mode in the code, reproduced the Ablations results in your paper ? looking forward to your reply, thanks! @Snosixtyboo

yuedajiong commented 10 months ago

unofficial answer, maybe wrong: I tried different ablations, and some my new ideas(flat single gauss point and flat cloud gausspointS).

Isotropic  vs. Anisotropic
I initilized the components in 'scale' with fixed same value, and disable the optimized/grad, the rotation is meaningless, or dynamic same value to keep scaling, in python.
of course, we can hardcode 'disable scale/rot' in cpp/cuda.

FYI.
wzjwzj00 commented 8 months ago

unofficial answer, maybe wrong: I tried different ablations, and some my new ideas(flat single gauss point and flat cloud gausspointS).

Isotropic  vs. Anisotropic
I initilized the components in 'scale' with fixed same value, and disable the optimized/grad, the rotation is meaningless, or dynamic same value to keep scaling, in python.
of course, we can hardcode 'disable scale/rot' in cpp/cuda.

FYI.

hi,how to let each gaussian to learn same scale,instead of to fix their scale?like your "dynamic same value". I would be grateful if you could give me some advices. @yuedajiong

yuedajiong commented 8 months ago

@dhuwzj 1) i dont think same scales can get better performance. 2) if you just want to 'try', too many methods: a) modify code: scale: vector_3 to vector_1, ellipse to spheree b) simpler code: vector_3 / 3 as real_scale_1, simpler, no renderer code change. ...

kwea123 commented 8 months ago
  1. remove the .repeat(1, 3) on this line (so that self._scaling is a (N, 1) tensor) https://github.com/graphdeco-inria/gaussian-splatting/blob/2eee0e26d2d5fd00ec462df47752223952f6bf4e/scene/gaussian_model.py#L135
  2. add .repeat(1, 3) to the end of this line https://github.com/graphdeco-inria/gaussian-splatting/blob/2eee0e26d2d5fd00ec462df47752223952f6bf4e/scene/gaussian_model.py#L97

in this way the scaling is expanded to (N, 3) where the 3 scales are always the same (a repeated value of the self._scaling parameter) no matter how you optimize.

wzjwzj00 commented 8 months ago

@dhuwzj

  1. i dont think same scales can get better performance.
  2. if you just want to 'try', too many methods: a) modify code: scale: vector_3 to vector_1, ellipse to spheree b) simpler code: vector_3 / 3 as real_scale_1, simpler, no renderer code change. ...

Thanks for your reply, I'll try it!

omment

wzjwzj00 commented 8 months ago
  1. remove the .repeat(1, 3) on this line (so that self._scaling is a (N, 1) tensor) https://github.com/graphdeco-inria/gaussian-splatting/blob/2eee0e26d2d5fd00ec462df47752223952f6bf4e/scene/gaussian_model.py#L135
  2. add .repeat(1, 3) to the end of this line https://github.com/graphdeco-inria/gaussian-splatting/blob/2eee0e26d2d5fd00ec462df47752223952f6bf4e/scene/gaussian_model.py#L97

in this way the scaling is expanded to (N, 3) where the 3 scales are always the same (a repeated value of the self._scaling parameter) no matter how you optimize.

Thanks for the code suggestion, I'll try it! Also thank you for the video explaining the 3d Gaussian CUDA code! 謝謝葵大!