(论文)[2024-SIGA-C] A Statistical Approach to Monte Carlo Denoising
A Statistical Approach to MC Denoising
- 项目主页
- 作者
- HIROYUKI SAKAI、CHRISTIAN FREUDE、THOMAS AUZINGER、DAVID
HAHN、MICHAEL WIMMER
- 3:Institute of Science and Technology Austria, Austria
- 其他:Technische Universität Wien (TU Wien), Austria
- HIROYUKI SAKAI、CHRISTIAN FREUDE、THOMAS AUZINGER、DAVID
HAHN、MICHAEL WIMMER
摘要
- 统计学方法,认为每一个像素是一个随机变量,预测其分布
- 构建 filter 的时候,快速 pair-wise 测试,去除不合适的周围像素
- 另外可以用在 RR、MIS
- teaser 用的 256 spp
Introduction
- MC denoising:bias–variance tradeoff
- traditional image filters
- 引入 bias(excessive blurring or color bleeding)
- neural networks
- traditional image filters
- 论文
- we establish a theoretical connection between minimizing MSE for pair-wise symmetric weights and Welch’s t-test for normally distributed samples
- 另外,应用 Box-Cox transformation 可以减小对于分布的假设
- 在 joint bilateral filter 上实现
- 我们可以有效避免一些模糊(例如 GBuffer 中不存在的阴影、焦散等)
- 速度:GPU,~30 ms,720p(商用硬件)
- 可以应用到 RR、MIS
- 不需要训练、在线收集数据
Related Work
- 降噪:adaptive sampling or filtering
- Classical approaches:权衡 noise reduction、introduced
bias【引入过度 blur】
- image-filtering kernels
- Gaussian、(joint) bilateral、non-local means(NLM)、wavelet、non-local Bayes
- diffusion、higher-order regression
- 和我们最接近的:带有辅助输入的交叉双边滤波
- image-filtering kernels
- statistics-based approach
- 【2012】random parameter filtering (RPF)
- 使用特征之间的互信息调整交叉双边滤波的权重【高样本时计算开销大】
- 【2013】稀疏计算的互信息,然后插值;试图降低计算开销,但是有限【低 spp,秒~分级别】
- 【2014】【2017】:使用直方图表示分布;需要额外内存开销
- 多个 filter 中挑选
- 【2012】SURE 提高 RPF 质量
- 【2021】
- 【2022】Firmino,只在有利于收敛时,引入降噪
- 我们:开销与样本数无关、ms 级别;占用内存小;不需要计算多个 denoiser
- 【2012】random parameter filtering (RPF)
- real-time approach
- 【2017】需要特殊处理 DI、GI;我们更直观
- confidence intervals
- 之前的很复杂
- Neural-network-based approaches
- 需要大量训练
- 如果特征不出现在 GBuffer 中,效果就不好(阴影、焦散)
- 没有收敛性保证
- 我们:不需要训练;收敛性保证;常数参数
- 未来:automatic parameter tuning,可能提高质量
Background and Notation
- 没一个像素的样本作为随机变量,像素 \(i\) 的 estimator 如下【GT \(\theta_i\) 未知,就是像素真值】
- \(\hat{\theta}_i(X_1,\cdots,X_{n_i})\)
- 假设无偏:\(\mathbb{E}[\hat{\theta}_i]=\theta_i\)
- 称 GT 为 estimands
- statistical tests:使用 mean(\(\mu\))、中心矩(\(M_l,l\in[2,3,4]\))或其变种
- variance(\(\sigma^2=M_2\))、skewness(\(M_3/M_2^{3/2}\))、kurtosis(\(M_4/M_2^2\))
- 都可以在线计算
\[ M_l=\dfrac{1}{n_i}\sum_k(X_k-\bar{X})^l \]
Denoising Estimators
- convex 组合得到 denoised estimator
- 权重非负、和为1
\[ \tilde{\theta}_j=\sum_iw_{ij}\hat{\theta}_i \]
- 我们将 \(w_{ij}\) 分为两个部分
- base filter
- membership function \(m_{ij}\)
\[ w_{ij}=\dfrac{\rho_{ij}m_{ij}}{\sum_{i} \rho_{ij}m_{ij}},\quad (10) \]
- MSE=Var+Bias^2
- Bias 是使用周围像素的时候引入的
\[ \text{MSE}(\tilde{\theta}_{j},\theta_{j})=\mathbb{E}[(\tilde{\theta}_{j}-\theta_{j})^{2}]=\text{Var}(\tilde{\theta}_{j})+\text{Bias}(\tilde{\theta}_{j},\theta_{j})^{2} \]
- 拆解
\[ \begin{array}{c} \text{Var}(\tilde{\theta}_{j})=\sum_{i}w_{i j}^{2}\text{Var}(\hat{\theta}_{i}(n_{i}))\\ \mathrm{Bias}(\tilde{\theta}_{j},\theta_{j})=\sum_{i}w_{i j}\text{Bias}(\hat{\theta}_{i}(n_{i}),\theta_{j}) \end{array} \]
- target
\[ \{w_{i j}^{*}\}=\operatorname*{\arg\min}_{\{w_{ij}\}}\sum_{j}\text{MSE}(\tilde{\theta}_{j},\theta_{j}),\quad(8) \]
Statistical Filtering Framework
- 引入 membership function(\(m\)),如何组合 estimators
Problem Statement
- 判定什么如何组合能够提高图片质量,需求如下
- Pair-wise evaluation
- 根据统计量评估
- \(m_{ij}=m(\mathcal{S}(\hat{\theta}_i),\mathcal{S}(\hat{\theta}_j))\)
- Online statistics
- 在线更新
- Symmetry
- \(m_{ij}=m_{ji}\)(energy preservation)
- Convergence
- \(\text{Var}(\hat{\theta}_{i})\longrightarrow0\Longrightarrow m_{i j}=0\text{ if }||\theta_{i}-\theta_{j}||>0\)
- var 为 0 时,拒绝有 bias 的估计
- Identity
- \(m_{ii}=1\)
- 自身不引入 bias
Our Approach
\[ \boxed{w_{ij}=\dfrac{\rho_{ij}m_{ij}}{\sum_{i} \rho_{ij}m_{ij}}}\quad (10) \]
- base filter \(\rho_i\)(现有的就行)
- 限制 filter 大小,提高效率
- 可以与现有技术结合
- 可以使用 GBuffer 等信息
- 实现上,我们使用 joint bilateral filter
- 目前技术在降低方差方面效果很好,\(m_{ij}\) 的作用主要是用于限制 bias
- 解决 MSE 最小化问题
最小化 MSE
- 考虑一对 \(\hat{\theta}_i,\hat{\theta}_j\)
- 降噪可以认为是一个混合
\[ \begin{array}{c} \tilde{\theta}_i=w\hat{\theta}_i+(1-w)\hat{\theta}_j\\ \tilde{\theta}_j=w\hat{\theta}_j+(1-w)\hat{\theta}_i \end{array} \]
- 为什么是这个形式,因为我们要求对称性
- \(w_{ij}=w_{ji}=1-w\)
- 从下面推导上面
\[ \begin{array}{c} \tilde{\theta}_i=(1-w_{ji})\hat{\theta}_i+w_{ji}\hat{\theta}_j\\ \tilde{\theta}_j=(1-w_{ij})\hat{\theta}_j+w_{ij}\hat{\theta}_i \end{array} \]
- Bias 如下展开
\[ \text{Bias}(\tilde{\theta}_{i},\theta_{i}) =\mathbb{E}[\tilde{\theta}_{i}-\theta_{i}] =(w-1)\theta_i+(1-w)\theta_j \]
- 最小化 MSE(\(i,j\) 的和)
\[ \begin{array}{rl} w^{\ast}&=\arg\min_{w}\Big(\\ &w^2\text{Var}(\hat{\theta}_i)+(1-w)^2\text{Var}(\hat{\theta}_j)+((w-1)\theta_i+(1-w)\theta_j)^2\\ +&w^2\text{Var}(\hat{\theta}_j)+(1-w)^2\text{Var}(\hat{\theta}_i)+((w-1)\theta_j+(1-w)\theta_i)^2\\ &\Big) \end{array}\qquad(11) \]
- 求偏导等于 0,算出最优的 \(w^{\ast}\)
- 假设存在不确定性,Var+Var 不为 0
\[ w^{\ast}=\frac{2(\theta_{i}-\theta_{j})^{2}+\mathrm{Var}(\hat{\theta}_{i})+\mathrm{Var}(\hat{\theta}_{j})}{2\left((\theta_{i}-\theta_{j})^{2}+\mathrm{Var}(\hat{\theta}_{i})+\mathrm{Var}(\hat{\theta}_{j})\right)}\qquad(12) \]
- 问题:我们不知道 GT 和 \(\text{Var}\)
- 直接使用带噪声的值,\(m_{ij}=1-w^{\ast},\rho_{ij}=1\),效果不好
- 我们的选择,使用 smoothing filter \(\rho_{ij}\),然后让 \(m_{ij}\) 作为一个二值函数
\[ m_{ij}=1 \text{ if }(1-w^{\ast})>\gamma,0\text{ otherwise} \]
- \(\gamma\) 作为一个阈值,控制
denoising strength
- bias 相对方差更大 => \(w^{\ast}\) 更大 => 被拒绝
- \(1/2\Rightarrow m_{ij}=0\)
- \(0\Rightarrow m_{ij}=1\):退化成 base filter
- 这个等价于 Welch’s t-test【副录】
- \(t<\gamma_w=\sqrt{1/(2\gamma)-1}\)
- 我们使用 Student’s t-distribution【Welch–Satterthwaite
equation】【不懂,还没看】
- \(\gamma_w=t_{1-\alpha/2},v\)
- \(\alpha=0.005\)
- \(v=n_i+n_j-2\)
- Welch’s t-test 和两个正态分布的均值的置信区间相关;可以使用其他检验,放宽对正态分布的假设
- 有很多种,可以使用高阶的统计量
- Curto [2023] + Boc-Cox 变换,之后效果挺好的
非对称 m
- 使用非对称的 \(m_{ij}\),式子 11 去除 \(\arg\min\) 里面的第二项
- 可能会导致 energy loss(过黑)
- 其他操作和上面一样
\[ w^{\ast}_{\text{asym}}=\frac{(\theta_{i}-\theta_{j})^{2}+\mathrm{Var}(\hat{\theta}_{j})}{(\theta_{i}-\theta_{j})^{2}+\mathrm{Var}(\hat{\theta}_{i})+\mathrm{Var}(\hat{\theta}_{j})} \]
Application to Image-Space Denoising
- 实现:pbrt-v3,cuda GPU
- 3 个步骤
- 在线计算统计量
- 选择交叉双边滤波作为 \(\rho_{ij}\)
- 实现降噪
- MCPT 中,有些样本贡献非常高,会导致结果:right-skewed(mean >
median > mode)
- 标准正态:mean = median =mode(众数)
- 使用 Box-Cox 变换
\[ x_{k}^{\prime}(\lambda)= \left\{\begin{array}{l l} \mathrm{log}(x_{k})&\text{if }\lambda=0\\ (x_{k}^{\lambda}-1)/\lambda&\text{otherwise} \end{array}\right. \]
- \(\lambda=0\) 不可行,存在很多贡献为 0 的样本
- 实验发现:\(\lambda=1/2\) 效果不错
- 亮噪点压缩,同时暗处不会趋于过小(负)
- 变换之后计算统计量
- \(\rho_{ij}\):交叉双边滤波
- \({\bf p}_i\):image space position, RGB albedo color, and surface normal【7D】
\[ \rho_{i j}=\exp(-\frac{1}{2}({\bf p}_j-{\bf p}_i)^{\text{T}}\Sigma^{-1}({\bf p}_j-{\bf p}_i)) \]
- 协方差矩阵用于控制权重
- 默认:\(\Sigma=\text{diag}\big(10,10,0.02,0.02,0.02,0.1,0.1\big)\)
- 实现上,对每一个 RGB 通道都算 \(m_{ij}\),只有当 3
个通道都通过测试之后,才将 \(w_{ij}\)
设置为非 0
- 避免 color shift 问题
Results - Image Denoising
- 测试场景输入都是高 spp 的【8192、512、256、32】
- 收敛曲线
- 网络对阴影边界处理不好(GBuffer 中没有这个信息)
- desktop PC with an AMD Ryzen 9 5950X CPU and an NVIDIA RTX 3080 Ti GPU
- filter size:20 pixels
- 720p
Results - Further Applications
- 这两个应用都太抽象了,真的会好吗?不太信
Approximate-Contribution RR
- 怎么感觉像 ADRRS 一样,那肯定会好啊
- 是简化版,只存储 2D 信息;像素 \(j\) 存储深度 \(d\) 的出射辐射度 \(L'_{j,k}\)【不是存储在世界空间中的,存储在 2D 图片中】
- 对 \(L'_{j,k}\) 降噪
- 相当于两条路径相差很大,但是他们会被平均,这样的话会非常不准,好就好在只需要保存 2D 信息
- 降噪再使用 2D 图片,感觉非常不准,不知道为啥会好
- 迭代法,每次迭代结束降噪;第一次迭代不开 RR
Selective MIS
- 当有某种策略显著优于另一种策略时,MIS 可能会带来噪声
- 我们框架:什么时候停止不好的策略?
- 要求每一种策略都是无偏的
- 那这个有问题啊,单独光源采样是有偏的啊(不能覆盖定义域)
- win rate:\(\eta_m=n_m^{\ast}/n_i\)(采样策略 \(m\))
- \(n_m^{\ast}\):non-zero sample,而且策略 \(m\) 的 pdf 最大
- 对 win rate 降噪,per pixel per bounce(和上面的 RR 一样)
- 不进行 Box-Cox transform(因为不是 radiance 了,没有 radiance 的问题)
- 迭代法,每次迭代结束降噪
- 第一次迭代不开 Selective MIS
- 之后 \(\eta_m<10^{-3}\),则停止
Discussion and Conclusion
- 不需要预训练,不会有网络乱加细节的问题
- Limitation
- 低 spp 问题
- Future
- continuous membership functions
- denoising variance estimates
- 我也在想这个问题,如何对空间进行降噪呢?
- temporal domain
副录
t-test
- Welch’s t-test,定义如下
\[ t=\frac{\left|\hat{\theta}_{i}-\hat{\theta}_{j}\right|}{\sqrt{\sigma_{i}^{2}/n_{i}+\sigma_{j}^{2}/n_{j}}}<\gamma_{w} \]
- 左边式子,可以得到
\[ \left(\sigma_{i}^{2}/n_{i}+\sigma_{j}^{2}/n_{j}\right)t^{2}=\left(\hat{\theta}_{i}-\hat{\theta}_{j}\right)^{2} \]
- 式子 12 变形,\(\text{Var}(\hat{\theta}_i)=\sigma^2_i/n_i\)
\[ s=1-w^{\ast}=1-\dfrac{t^2+1/2}{t^2+1} \]
\[ t=\sqrt{\dfrac{1}{2s}-1}=\sqrt{\dfrac{1}{2(1-w^{\ast}_{ij})}-1} \]
- 于是
\[ t<\gamma_w\Longleftrightarrow 1-w^{\ast}_{ij}>\gamma=\dfrac{1}{2(\gamma^2_w+1)} \]
加速
- 加速点对点计算:2.5x【filter size 20 pixels】
\[ \begin{array}{c} (\hat{\theta}_{i}-\hat{\theta}_{j})^{2}<y_{w}^{2}(\sigma_{i}^{2}/n_{i}+\sigma_{j}^{2}/n_{j})\\ \hat{\theta}_{i}^{2}-\gamma_{w}^{2}\sigma_{i}^{2}/n_{i}+y_{w}^{2}\sigma_{j}^{2}/n_{j}\\ \hat{\theta}_{i}^{2}-\gamma_{w}^{2}\sigma_{i}^{2}/n_{i}<2\hat{\theta}_{i}\hat{\theta}_{j}-(\hat{\theta}_{j}^{2}-{y}_{w}^{2}\sigma_{j}^{2}/n_{j}) \end{array} \]
- 好处:左边项、右边第二项可以预计算