AI Hero Club

视觉与三维场景 · 第 7 章

已自行标记完成0 / 8

仅保存在当前浏览器;完成标记不代表通过项目验收。

本章提纲 3 个小节
全课目录 8 章
完整课程计划 ↗
视觉与三维场景 / 课程计划 ↗

CHAPTER 07 / 8建议学习 120 分钟

真实训练一个可微 Gaussian 场景

像素误差怎样传回 Gaussian 的位置、颜色与半径,又有哪些场景不能靠拟合辨识?

本章要解决的 3 个问题
  • 推导屏幕核与参数梯度
  • 实施固定相机下的全参数光度拟合
  • 区分优化改进与场景可识别性
课程项目 ZIP ↓

Gaussian 光度模型与可微拟合

前面各章已经从实际 PNG 得到一般相机和未知珠子三维中心,本章加入真实可学习参数。每个珠子有三个位置、三个颜色强度和一个半径,共七个;十二珠合计八十四个全部参与训练。相机由独立标靶估计后固定,不作为可学习参数。没有预训练模型、外部权重或只训练最终输出的捷径;损失从实际训练图像像素经渲染核反传到每组参数。

位置以米直接参数化,半径用实数 rho 取指数,确保任何有限 rho 对应正值;三个颜色强度用实数向量 a 经 sigmoid,限制在零和一之间。这里颜色不是归一化描述子,后者只用于匹配,不能直接当发光幅值真值。初始化把描述子乘固定零点五五转为初始颜色,再取 logit。半径初始零点零七五米,三维中心在三角化结果上加种子十七的高斯扰动,标准差零点零三五米,作为公开的优化控制。

ri=eρi,ci=sigmoid⁡(ai),gi(p)=exp⁡ ⁣[−∥p−μi∥22si2],si=fri/Zir_i=e^{\rho_i},\quad c_i=\operatorname{sigmoid}(a_i),\quad g_i(p)=\exp\!\left[-\frac{\|p-\mu_i\|^2}{2s_i^2}\right],\quad s_i=fr_i/Z_i
p 是二维像素位置,mu_i 是三维中心经已标定相机的投影。

Gaussian 核对中心与宽度的梯度可以直接求出。先对指数内部求导,再乘核本身:对横中心的导数是核乘像素横差除宽度平方,纵向同理;对宽度的导数是核乘距离平方除宽度立方。离中心很远时核接近零,位置梯度也可能很弱,这解释了差初始化为何可能难收敛。当前位置离观测太远时不应期待“可微”自动等于“容易训练”。

∂g∂μu=gpu−μus2,∂g∂s=g∥p−μ∥2s3,∂r∂ρ=r,∂c∂a=c(1−c)\frac{\partial g}{\partial\mu_u}=g\frac{p_u-\mu_u}{s^2},\quad \frac{\partial g}{\partial s}=g\frac{\|p-\mu\|^2}{s^3},\quad \frac{\partial r}{\partial\rho}=r,\quad \frac{\partial c}{\partial a}=c(1-c)
链式法则继续连接到三维位置、对数半径和颜色logit。

三维位置的影响有两条路径:它改变投影中心,也改变深度从而改变屏幕半径。第二章的投影雅可比给第一条;半径对深度的导数为负焦距乘世界半径除深度平方,给第二条。忽略后者仍可能让中心位置朝某方向更新,却不再是所声明渲染公式的完整梯度。项目用张量运算保留两条路径,并用 float64 中心差分检查位置导数,而非只断言框架“自动算所以正确”。

算例一:宽度梯度与尺度方向

一个珠子离某像素横向两像素、纵向零,屏幕宽度也是两像素,则核值为 exp 负二分之一,约零点六零六五。对横中心的导数为核乘二除四,约零点三零三三;对屏幕宽度导数为核乘四除八,也约零点三零三三。中心朝该像素移动或稍增宽度都会增加此像素强度,但在其他像素处作用不同。单个像素无法可靠区分两种变化,整个光斑及多视角才提供更多约束。

如果三维协方差是 Sigma,局部投影可由雅可比 J 给二维协方差近似 J Sigma J 转置。这是随机小扰动的线性传播:将三维偏移先乘 J,外积取期望就得到该式。各向同性三维 Sigma 为半径平方乘单位阵,仍可能因离轴投影出现二维各向异性。当前项目为可解释性采用简化标量屏幕宽度,它不是这个完整协方差投影的实现,更不是原始3DGS全部参数机制。

Σscreen≈JΣ3DJ⊤,L=1∣Vtrain∣∑v∈Vtrain13HW∑u,w,c(Ipred−Iobs)2\Sigma_{screen}\approx J\Sigma_{3D}J^\top,\qquad L=\frac1{|V_{train}|}\sum_{v\in V_{train}}\frac1{3HW}\sum_{u,w,c}(I_{pred}-I_{obs})^2
第一个是小尺度线性近似;第二个是实际训练目标的平均方式。

训练使用前三张场景图,逐视角每坐标 RGB 平方误差平均,再对视角平均。每次更新处理同一组完整小图,不随机抽像素,因此批次轨迹由固定配置完全确定。Adam 学习率零点零零六,共一百八十次更新,CPU 一个线程。每步先清梯度、渲染训练视角、形成损失、反传、更新,评价图像不进入损失图。保存优化器是记录状态,但本项目没有提供精确断点恢复 CLI。

算例二:背景稀释与真实训练记录

若八十乘九十六图像中只有三百六十个前景像素,前景大约占百分之四点七。假设前景每坐标 MSE 为零点零一,背景完全正确,则全图 MSE 约零点零零零四七,看起来很小却不代表亮斑已对齐。本次实测第一个训练视角初始全图 MSE 为零点零零零五八六三五,前景为零点零一零三五五;最终分别约一点七一九四乘十的负五次方与零点零零零三二九九三,两个口径都保存。

两张留出视角的最终全图 MSE 分别约一点七二九二与一点六七九九乘十的负五次方,对应 PSNR 四十七点六二和四十七点七五分贝。它们没有进入任何更新,但使用独立标靶提供的相机参数。该指标来自模型内生成的小幅、稀疏、透明发光场景;不能和现实照片3DGS论文的 PSNR 直接比较。图像结构、动态范围、背景比例与评价条件都不同。

几何评价也有独立意义。只比较初始被扰动位置到拟合位置的变化不能说明更接近真值;评价文件在训练结束后给出真实中心。三角化原始 RMS 约二点九零八毫米,拟合后约一点五五四毫米。这里同时保留未扰动三角化基线,避免把故意扰动的坏初值当唯一对照。拟合在本次种子改善几何与像素,但不把这个有限结果宣布为所有初始化与场景的定理。

颜色与宽度存在补偿关系。二维 Gaussian 总能量与颜色乘宽度平方成正比,较窄但更亮的核可能在低分辨率下接近较宽但较暗的核。多视角不同深度会改变屏幕大小,能够增加辨识信息,但量化、重叠与缺失仍会产生歧义。对参数施加物理范围或增加高分辨率观测是新的假设与数据,不能在验收失败后悄悄加入再沿用旧实验报告。

有限差分检验选择 float64、小而非零的参数扰动,目标用非对称像素权重避免整体积分对平移不敏感。比较加扰动和减扰动的目标差除二倍步长,与反传位置梯度核对。还分别检查颜色与半径梯度有限且非零。有限差分不应靠过小步长让舍入误差支配,也不应靠过大步长跨越强非线性;测试固定明确步长,并用相对误差而不是只看方向相同。

留出泄漏测试更直接:复制输入目录,把两张保留场景图像全部改成黑色,使用完全相同的相机、初值和训练步数,要求三个拟合参数张量逐位相同。它验证这些像素不参与更新,强于“代码注释说没有用”。本项目短测试真实执行了这项反证,也测试删除未知场景真值仍能重建。它们只保护对应信息边界,不证明相机标定无误或图像模型对真实世界充分。

失败处理是训练器的一部分。若深度变为非正,渲染器拒绝;若初始核远离观测、核过窄或颜色 sigmoid 饱和,梯度可能不足,需要报告不收敛而不是删除该次结果。当前演示选择几何初始化加小扰动,不是随机从空白世界发现所有物体。无密度控制和新珠子生成,缺失珠子无法自动补出;若想扩展为完整训练器,必须设计出生、分裂、剪枝及遮挡机制并重新测试。

训练误差含量化与标定偏差,最终非零损失并不自动表示优化器错误。生成器精确相机先渲染并量化,拟合使用像素检测后估出的相机,所以二者并非完全相同的连续函数实例。若要测纯优化能力,可增加精确相机的正向控制,但必须与主实验分开命名。主报告保留估计相机链,使观察到的残差如实包含从文件到观测再到几何的实际影响。

独立运行手算核导数,框架梯度另由独立float64测试检查。
import math
g=math.exp(-.5)
d_center=g*2/4
d_width=g*4/8
assert abs(d_center-d_width)<1e-15
print(g,d_center,d_width)

TRY IT YOURSELF

练习一:参数账本

每珠三维中心、RGB强度和一个半径,十二珠多少训练参数?若加入每珠一个独立opacity而其他不变,会增加多少,为什么还需新可见性公式?

提示 1
先按每珠中心、RGB、半径逐项计数,再加新参数。
提示 2
opacity若只乘颜色可能带来冗余;要实现遮挡还须定义深度顺序、alpha与透射链,参数多一项不自动补齐。
对照参考解答
当前每珠三加三加一等于七,十二珠八十四。增加每珠一个opacity变成九十六,多十二个。仅新增参数并不自动实现不透明层顺序;必须规定alpha如何由opacity与核形成、如何按深度累积透射以及梯度怎样通过,否则它只可能与颜色强度相乘形成冗余。参数数量与渲染机制需一起声明。

TRY IT YOURSELF

练习二:半径链式导数

已知半径r=exp(rho)、屏幕半径s=fr/Z。求s对rho及Z的导数,在焦距一百、r零点零六、深度四时求数值。

提示 1
半径依赖rho,而屏幕宽度又依赖半径与深度,先画两条求导路径。
提示 2
分别用ds/dr×dr/drho与直接对Z求导,再代数值并检查像素/米等单位。
对照参考解答
对rho用链式法则,ds/dr等于f/Z,dr/drho等于r,所以ds/drho等于fr/Z即s。对深度为负fr/Z平方。代数值,s为一点五像素,第一导数一点五,第二为负零点三七五像素每米。位置优化若改变深度,这条宽度路径必须保留;只对中心像素求导是不完整梯度。

TRY IT YOURSELF

练习三:评价泄漏

若把留出两图改成黑色后,使用相同种子训练仍得不同参数,应先审查哪些数据流?测试通过又不能推出什么?

提示 1
留出像素可能经loss之外的哪些选择或预处理流入训练?
提示 2
逐项检查mask、阈值、早停、超参选择与随机调用;参数不变只支持该数据流反证,不证明未知姿态泛化。
对照参考解答
先查损失是否遍历全部视角、是否用留出图做mask或自适应阈值、是否根据留出分数提前停止或选超参数,以及数据读取是否改变随机调用顺序。参数相同只证明这一修改没有影响当前训练路径,不证明整体模型无偏或相机条件独立;独立标靶仍提供了留出姿态。当前报告必须保留这种已标定新视角条件。

CHECK YOUR UNDERSTANDING

检验理解

先作答,再决定是否展开解析。选择题用于发现理解缺口;独立实现与迁移任务仍需另行检验。

1. 当前可学习参数总数多少?

查看解析十二珠乘每珠七个,三维位置、RGB强度、一个半径。
2. 位置影响Gaussian像素的哪两条路径?

查看解析透视位置同时改变中心和屏幕尺度。
3. 故意扰动初值后训练改善能否替代原三角化基线?

查看解析保留未扰动几何基线,避免选择一个人为变差的唯一对照。
4. 留出图像改黑后参数逐位不变验证什么?

查看解析数据流反证有具体范围,不提供普适泛化结论。

自行标记用于记录学习进度,不代表通过项目验收。