wanmeihuali / taichi_3d_gaussian_splatting

An unofficial implementation of paper 3D Gaussian Splatting for Real-Time Radiance Field Rendering by taichi lang.
Apache License 2.0
659 stars 62 forks source link

一些问题想要咨询 #120

Closed Bin-ze closed 1 year ago

Bin-ze commented 1 year ago

感谢您出色的工作,我对您基于taichi实现的3d gaussion十分感兴趣,因此想向您咨询一些相关的问题

  1. 我想要在官方的实现上添加相机姿态优化,但是我不清楚梯度怎样由3d高斯的协方差矩阵传递到视角上,关于这部分的数学推理,您能否提供一些帮助?如果可以的话,那么我将不胜感激
  2. 关于溅射方法的相机的姿态估计,与基于光线方法的不同之处?
  3. 我尝试了您的实现,但是训练速度不足官方实现的1/10,大量的时间浪费在测试环节,我使用单张16gb的v100进行实验,请问您知道问题出在哪里嘛
  4. 我尝试基于3d高斯的官方实现完成场景的编辑,但是我发现当我旋转选中的子场景(像您demo中的鞋子一样),会导致一些不一致的情况存在,我有理由怀疑SH拟合的颜色是视角相关的,当在视角不变的情况下旋转点云,会导致SH基函数的不同,从而导致结果的不正常,但是我注意到您的demo中似乎不存在这样的问题,请问有什么建议可以解决该问题吗?

我是神经渲染领域的新手,非常期待您的回复,感恩的心,感谢有您!

wanmeihuali commented 1 year ago

question 1: Please take a look at https://github.com/wanmeihuali/taichi_3d_gaussian_splatting/pull/83, I'm still working on it. You can also use sympy for math formula, see: https://github.com/wanmeihuali/taichi_3d_gaussian_splatting/blob/ee644c9dcc8d915b50fe717efc5124bd915de984/scratch/playground.py#L58-L95

question 2: I don't see any major difference. Actually, I'm still doing experiments on it.

question 3: You can disable the test in the config. Anyway, the taichi implementation itself is 2-3 times slower than CUDA one, and it's highly likely due to limitations of taichi, e.g. missing float4 type or worse compiler.

question 4: You can read my code, Actually in my implementation, I never rotate/move pointclouds for inference. Because all rotation/movement of the objects is equivalent to the rotation/movement of the camera, my solution is to allow multiple cameras and assign each Gaussian point to one of the cameras.

Feel free to message me if you want further collaborations. wechat: wanmeihualixiaoxixi

hi-zhangjie commented 1 year ago

@Bin-ze 请问大佬相机姿态优化这块您搞明白了吗,我自己用cuda实现的梯度回传,训练loss不收敛,能否具体向你请教一下

Bin-ze commented 1 year ago

@Bin-ze 请问大佬相机姿态优化这块您搞明白了吗,我自己用cuda实现的梯度回传,训练loss不收敛,能否具体向你请教一下

  1. 你可以检查一下反向传播的公式是否正确,按理说你需要计算从损失函数到视角的偏导
  2. 你的优化方案?直接优化c2w矩阵还是单独使用一个张量来表示矩阵的偏差delta,然后优化delta
  3. 更多的测试?从简单的扰动开始,来评估姿态优化是否起作用 以上是我的一些不成熟的建议,希望可以帮到你
hi-zhangjie commented 1 year ago

@Bin-ze 请问大佬相机姿态优化这块您搞明白了吗,我自己用cuda实现的梯度回传,训练loss不收敛,能否具体向你请教一下

  1. 你可以检查一下反向传播的公式是否正确,按理说你需要计算从损失函数到视角的偏导
  2. 你的优化方案?直接优化c2w矩阵还是单独使用一个张量来表示矩阵的偏差delta,然后优化delta
  3. 更多的测试?从简单的扰动开始,来评估姿态优化是否起作用 以上是我的一些不成熟的建议,希望可以帮到你 @Bin-ze
  4. 我在computeCov2DCUDA中添加了dL_dview_matrix,通过检查返回的梯度,发现只有前几个iter是有梯度的 2.单独设计了一个delta,并初始化为0 请问可以告知邮件吗,我将具体的实现发给您
Bin-ze commented 1 year ago

@Bin-ze 请问大佬相机姿态优化这块您搞明白了吗,我自己用cuda实现的梯度回传,训练loss不收敛,能否具体向你请教一下

  1. 你可以检查一下反向传播的公式是否正确,按理说你需要计算从损失函数到视角的偏导
  2. 你的优化方案?直接优化c2w矩阵还是单独使用一个张量来表示矩阵的偏差delta,然后优化delta
  3. 更多的测试?从简单的扰动开始,来评估姿态优化是否起作用 以上是我的一些不成熟的建议,希望可以帮到你 @Bin-ze
  1. 我在computeCov2DCUDA中添加了dL_dview_matrix,通过检查返回的梯度,发现只有前几个iter是有梯度的 2.单独设计了一个delta,并初始化为0 请问可以告知邮件吗,我将具体的实现发给您

我的github主页有有邮箱,您是在官方的光栅器上开发的吗?

hi-zhangjie commented 1 year ago

@Bin-ze 请问大佬相机姿态优化这块您搞明白了吗,我自己用cuda实现的梯度回传,训练loss不收敛,能否具体向你请教一下

  1. 你可以检查一下反向传播的公式是否正确,按理说你需要计算从损失函数到视角的偏导
  2. 你的优化方案?直接优化c2w矩阵还是单独使用一个张量来表示矩阵的偏差delta,然后优化delta
  3. 更多的测试?从简单的扰动开始,来评估姿态优化是否起作用 以上是我的一些不成熟的建议,希望可以帮到你 @Bin-ze
  1. 我在computeCov2DCUDA中添加了dL_dview_matrix,通过检查返回的梯度,发现只有前几个iter是有梯度的 2.单独设计了一个delta,并初始化为0 请问可以告知邮件吗,我将具体的实现发给您

我的github主页有有邮箱,您是在官方的光栅器上开发的吗?

是的,我尝试cuda实现,但是有一些问题没理清(仔细看了您的主页,没发现邮箱呢)

Bin-ze commented 1 year ago

@Bin-ze 请问大佬相机姿态优化这块您搞明白了吗,我自己用cuda实现的梯度回传,训练loss不收敛,能否具体向你请教一下

  1. 你可以检查一下反向传播的公式是否正确,按理说你需要计算从损失函数到视角的偏导
  2. 你的优化方案?直接优化c2w矩阵还是单独使用一个张量来表示矩阵的偏差delta,然后优化delta
  3. 更多的测试?从简单的扰动开始,来评估姿态优化是否起作用 以上是我的一些不成熟的建议,希望可以帮到你 @Bin-ze
  1. 我在computeCov2DCUDA中添加了dL_dview_matrix,通过检查返回的梯度,发现只有前几个iter是有梯度的 2.单独设计了一个delta,并初始化为0 请问可以告知邮件吗,我将具体的实现发给您

我的github主页有有邮箱,您是在官方的光栅器上开发的吗?

是的,我尝试cuda实现,但是有一些问题没理清(仔细看了您的主页,没发现邮箱呢)

微信:bin1978108038 邮箱:binze.zero@gmail.com