3D Gaussian Splatting中梯度反传求偏导的推导

1、需要求解的参数

在3DGS中,需要求解的参数包括:

#下面的参数都是针对一个三维高斯球的

1) 三维高斯球的中心点位置

2)协方差矩阵的参数,在3DGS中,用的是4元数+3个尺度

3)不透明度

4)颜色球谐系数

2、反传过程
2.1 forward和backward函数简单介绍

在3DGS前向函数forward中,输出的是rendered_image(渲染影像)、radii(半径)、depth_image(逆深度图),其中radii未参与优化,因此可以不管radii的梯度。

@staticmethod

def forward( ctx, means3D, means2D, sh, colors_precomp, opacities, scales, rotations, cov3Ds_precomp, raster_settings,):

return color, radii, invdepths

#这个是forward函数,输出的就是渲染影像、半径、深度图

在前向结束后,3DGS采用的是颜色loss和深度loss(在没有参考深度时,该loss直接是设置为0,相当于没用)。颜色loss采用的是L1 loss和SSIM loss,深度loss采用的也是L1 loss。

在回传优化时,loss函数会对渲染的影像和深度求梯度,这个都不用管,Pytorch会自动求。求出来的梯度,就是3DGS反向函数backward的输入。

def backward(ctx, grad_out_color, _, grad_out_depth):

#在backward函数输入中,grad_out_color 对应着loss对渲染颜色的梯度;radii不参与优化,所以不考虑它的梯度;grad_out_depth 对应着loss对深度的梯度。

2.2 对透明度求偏导

3DGS中,渲染的前向过程和NeRF一模一样,公式如下:

现在,我们有loss对每个像素的C的偏导数,现在需要求C对影响该像素颜色的高斯球的透明度的偏导。在前向的过程中,我们是按深度值,从近往远进行叠加,得到最后的颜色。将上面的公式展开如下:

假设当前要求偏导的高斯球序号为k,那么的偏导求解过程如下:

1)在k之前的高斯球的颜色项,不包含,所以就直接为0;

2)第k个高斯球的导数为:,且

3)第k个高斯球之后的所有高斯球(不包括背景颜色),都包含有,所以也需要求导。以第i个高斯球为例,颜色项为:,对求偏导,偏导数为,由于,所以偏导数有可以写为:

4)背景颜色项,也包含了,和3)里面的第i个高斯球推导是类似的,偏导数为:。因为是背景,所以背景是没有透明度的,相比较于3)中,少了透明度。

综上,对于第k个高斯球,完整的的导数为:

从上式中,可以看到,为了求对第k个的梯度,需要求它后面所有高斯球的颜色,计算量较大。

为了避免这个问题,在3DGS中,采用了一个非常巧妙的等价设计。懒得敲了,直接复制AI的。

后续有空,再记录进一步的推导。

相关推荐
云飞云共享云桌面13 小时前
自动化设备厂 10 人研发团队,如何共用一台服务器做 SolidWorks 建模?
运维·服务器·网络·3d·自动化·制造
普密斯科技14 小时前
在线图像测量仪HM-1120如何实现电机轴承从抽检到全检的跨越
计算机视觉·3d·集成测试·测量
2501_906565121 天前
3D曲面与普通平面的转换
3d
kolyle2 天前
Hi3D V3.0 2048³精度+48小时免费体验:3D生成模型的工程拐点与企业落地
3d·3d生成·企业ai·多模态ai·多模型路由·hi3d v3.0·极智词元
杀生丸学AI3 天前
【三维重建】QuerySplat:在 3DGS 预测中解耦几何与外观表征
人工智能·3d·三维重建·扩散模型·高斯泼溅·空间智能·室内重建
Rachel_Lu__3 天前
2026免费AI 3D工具哪家强?按角色动画、静态模型和精修流程来选
人工智能·3d·ai3d·ai角色·免费ai3d·ai3d工具
杀生丸学AI3 天前
【世界模型】Lyra 2.0:可探索的生成式3D世界(NVIDIA)
人工智能·深度学习·3d·数据挖掘·transformer·世界模型·高斯泼溅
毕安格 - BimAngle4 天前
国家电网 GIM 格式模型一键输出 3D Tiles (for Cesium) 和 glTF/glb 更新时间:2026-08-18
3d·gis·cesium·gltf·glb·3d tiles·gim
LateFrames5 天前
3D Slicer 5.13 能力边界清单(87项)
3d·3d slicer
电子云与长程纠缠5 天前
UE5 Lyra PocketWorld进行3D内容UI预览 - 上
开发语言·学习·3d·ue5·游戏引擎