“数学公式从来不是为了阻挡我们探索的脚步,而是先驱者们在暗夜中摸索后,留给后人的加密航标。”

很多刚接触 3D 视觉(如 3DGS)或 AIGC 的朋友,在翻开顶会论文的那一刻,常会被满屏的希腊字母和复杂公式劝退。但剥开这层学术外衣,你会发现:论文里的公式大多数不是为了炫技,而是在搭建一套清晰的逻辑系统。

读公式前,先在脑海里挂起这 5 个核心问题:

  1. 输入是什么? (比如图像 $x$、相机位姿 $T$、3D 点 $p$、高斯参数 $\mu, \Sigma$)
  2. 输出是什么? (比如渲染图像 $\hat{x}$、检测分数 $D(x')$、重建结果、分类概率)
  3. 要最小化什么? (这通常就是 Loss 函数)
  4. 怎么约束模型? (比如“不许改太多原图”、“高斯体积不能过大”、“几何表面要平滑”)
  5. 最后怎么评价? (比如 PSNR、SSIM、LPIPS、FID、准确率、AUC)

不要一上来就死磕“我必须把它的每一步求导都推演出来”。先问:这个公式在这个系统中扮演什么角色?


一、破除恐惧:最核心的数学模块

1. 符号读法:看透希腊字母背后的含义

不要被各种符号唬住,它们都有通俗的“人话”翻译:

符号学术意思你的直观理解
$x$输入数据一张图、一个向量、一帧视频
$\hat{x}$模型预测结果重建图、生成图、渲染图
$y$标签或真实值Ground Truth (GT)
$\theta$模型参数网络权重、高斯球参数
$\mathcal{L}$损失函数模型“做错”的程度
$\arg\min$使某个东西最小的参数寻找最优解
$\sum$求和把很多项打包加起来
$\mathbb{E}$期望平均情况
$\|\cdot\|$范数差距、长度、误差大小
$\nabla$梯度往哪里改参数能让 loss 下降

比如你在深度学习论文里最常见的句式:

$$\theta^* = \arg\min_{\theta} \mathcal{L}(\theta)$$

这句话的意思非常质朴:找出一组最好的参数 $\theta^*$,让损失函数 $\mathcal{L}$ 降到最低。

2. 向量与矩阵:数据的“骨架”

论文里经常用维度来定义数据,比如 $x \in \mathbb{R}^{H \times W \times 3}$,意思就是 $x$ 是一张 RGB 图像,高度为 $H$,宽度为 $W$,有 3 个颜色通道。

在 3DGS 和空间几何中,线性代数是绕不开的。你只需要重点关注以下几种变换:

  • 向量表示:$p = \begin{bmatrix} x \\ y \\ z \end{bmatrix}$ 表示一个三维点。
  • 空间变换:$p' = Rp + t$,对点 $p$ 先进行旋转 $R$,再平移 $t$,得到新坐标。在代码里通常就是 p_new = R @ p + t
  • 相机投影:$u = K [R|t] X$。把三维世界里的点 $X$ 通过相机外参(姿态)$[R|t]$ 和内参 $K$,拍扁投影到二维图像的像素位置 $u$ 上。

3. 范数:衡量“差距”的尺子

看到 $\|\cdot\|_1$ 或 $\|\cdot\|_2$,第一反应就应该是:它在衡量两个东西有多不一样。

  • $L_1$ Loss (绝对值误差):$\mathcal{L}_{1} = \| \hat{x} - x \|_1$。对异常值不敏感,做出来的图像边缘更锐利。在你做 AIGC 检测规避时(如 $\mathcal{L}_{rec} = \|x' - x\|_1$),它就是在约束“修改后的图尽量贴近原图”。
  • $L_2$ Loss (均方误差):$\mathcal{L}_{2} = \| \hat{x} - x \|_2^2$。大误差会被惩罚得更重,容易让结果变得更平滑(有时也会导致模糊)。

4. 损失函数与优化:驱动模型进化的马车

很多时候,总损失函数就是一个多目标的加权和:

$$\mathcal{L}_{total} = \lambda_{rec}\mathcal{L}_{rec} + \lambda_{det}\mathcal{L}_{det} + \lambda_{tv}\mathcal{L}_{tv} + \lambda_{res}\mathcal{L}_{res}$$

这就像是在拉锯战中平衡各方势力:

  • $\mathcal{L}_{rec}$(相似性):稳住基本盘,别改得太离谱。
  • $\mathcal{L}_{det}$(欺骗检测):降低检测器分数,让伪造更逼真。
  • $\mathcal{L}_{tv}$(平滑性):消除高频噪声、条纹。
  • $\mathcal{L}_{res}$(残差幅度):限制整体的修改力度。

其中的 $\lambda$ 就是不同目标的权重(话语权)。而让这一切运转起来的基础,是梯度下降:

$$\theta \leftarrow \theta - \eta \nabla_{\theta}\mathcal{L}$$

模型参数 $\theta$ 沿着让损失 $\mathcal{L}$ 下降的方向,以学习率 $\eta$ 为步伐,不断迈进。你写的 loss.backward()optimizer.step(),正是这段优美公式的代码化身。


二、3DGS 专属数学盲盒拆解

1. 高斯函数与协方差矩阵:3DGS 的灵魂

3DGS 放弃了传统的 Mesh(网格),转而用无数个“可渲染的 3D 高斯椭球”来表达世界。它的核心公式如下:

$$G(x) = \exp\left(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\right)$$
  • $\mu$ 是椭球的中心点。
  • $\exp$ 保证了离中心越远,影响力呈指数级衰减。
  • $\Sigma$ 是协方差矩阵,它决定了这个高斯是圆的、扁的、长的,还是歪的。

为了让这个形状可导且符合物理意义,通常会被拆解为旋转矩阵 $R$ 和缩放矩阵 $S$:

$$\Sigma = R S S^T R^T$$

代码中的 scaling, rotation, covariance, opacity, color,其实全都是可以被梯度更新的参数。

2. Alpha Compositing (色彩融合) 与球谐函数 (SH)

3D 空间里的高斯球,是怎么变成我们屏幕上的 2D 像素的?靠的是按深度的累加渲染:

$$C = \sum_{i=1}^{N} T_i \alpha_i c_i$$

排在前面的、不透明度高($\alpha_i$)的高斯,对最终颜色 $C$ 的贡献越大。后面的高斯光线会被前面的遮挡(透过率 $T_i$ 变小)。

而至于颜色 $c_i$,为了表现物体表面的反光和视角变化,通常采用球谐函数 (Spherical Harmonics, SH)

$$c = \sum_{l,m} k_{lm}Y_{lm}(d)$$

别被公式吓住,只需记住它的物理意义:颜色 $c$ 并不固定,而是根据你观察的方向 $d$ 动态变化的。 $Y_{lm}$ 是一组基底,而 $k_{lm}$ 是网络需要学习的系数。


三、AIGC / GAN 相关公式解读

如果你在做 AIGC 图像对抗或残差编辑,大概率会碰到这种公式:

$$x' = \operatorname{clip}(x + \epsilon \tanh(G(x)), 0, 1)$$

这其实就是在说:不去从头生成图,而是在原图 $x$ 的基础上,叠加上一个被严格限制幅度($\epsilon$)的微小扰动 $\tanh(G(x))$,最后截断保证像素合法。

为了防止生成的扰动像雪花屏一样杂乱,通常会引入 Total Variation (TV) Loss:

$$\mathcal{L}_{tv} = \sum_{i,j} |r_{i+1,j}-r_{i,j}| + |r_{i,j+1}-r_{i,j}|$$

简单来说,它要求相邻像素(横向和纵向)之间的变化尽量平滑,别有太剧烈的跳跃,从而有效压制摩尔纹和高频伪影。


四、实验评估:该看哪个指标?

一图胜千言,在看论文的表格时,牢记这些指标的评判标准:

指标全称 / 侧重点好坏判断
PSNR峰值信噪比。侧重像素级绝对误差。越大越好
SSIM结构相似性。关注亮度、对比度和结构。越大越好(越接近 1 越好)
LPIPS学习感知图像块相似度。更符合人眼直观感受。越小越好
FID弗雷歇特起始距离。评估生成图像的真实度与多样性。越小越好

极客提示: PSNR 极高并不代表图像一定好看,有时候平滑模糊的图像 PSNR 反而高于有真实噪点的高清图。结合 LPIPS 看往往更具说服力。


写在最后:读公式的“三步走”框架

下次再面对满屏的推导,不妨深吸一口气,按这个框架去拆解:

  1. 找变量: 搞清楚哪些是给定的(GT图、相机参数),哪些是求出来的(预测图)。
  2. 找优化对象: 看看 $\min$ 下面跟着的是什么?是在优化网络权重 $\theta$,还是在直接优化高斯属性 $\mu, \Sigma$?
  3. 找各项博弈: 拆解 Loss 的加权和,问自己一句:“这几项力量,分别在把模型往哪个方向拉扯?”

理解了方向和设计哲理,推导只是顺水推舟的体力活。真理往往藏在最克制的表达之中,这就是数学的魅力所在。