深度学习降噪专题课:整体介绍降噪算法

大家好~本课程基于全连接和卷积神经网络,学习LBF等深度学习降噪算法,实现实时路径追踪渲染的降噪

本课程偏向于应用实现,主要介绍深度学习降噪算法的实现思路,演示实现的效果,给出实现的相关代码

线上课程资料:
本节课录像回放

加QQ群,获得相关资料,与群主交流讨论:106047770

本系列文章为线上课程的复盘,每上完一节课就会同步发布对应的文章

本课程系列文章可进入合集查看:
深度学习降噪专题课系列文章合集

降噪的目的

光追、路径追踪 都会产生噪点,需要降噪

实时路径追踪渲染中,降噪是重点

传统降噪方法

小波过滤

SVGF、BMFR

针对1 spp降噪

算法的基本思想:

  • 通过帧间复用,累积多帧的采样数,从而提升1 spp到X spp
  • 在Compute Shader中使用小波过滤、线性代数过滤等传统过滤方法对采样的图片降噪
  • 结合TAA,实现抗锯齿

它们属于实时降噪,其中:
SVGF耗时:4ms
BMFR耗时:1.6ms

深度学习降噪方法

这是最近的趋势,目前已经有了深度学习蒙特卡洛实时渲染降噪,如WSPK,它只耗时7ms左右

深度学习蒙特卡洛降噪和深度学习图片降噪区别

前者多出了使用辅助特征来加速收敛,辅助特征包括:normal、world position、camera space depth、albedo等

深度学习蒙特卡洛降噪介绍

深度学习蒙特卡洛降噪主要包括LBF、KPCN、WPSK等算法

  • LBF
    2015年提出,用于离线渲染降噪,属于参数预测

  • KPCN
    2017年提出,用于离线渲染降噪

  • WSPK
    2021年提出,用于实时渲染降噪,是对KPCN的改进

深度学习蒙特卡洛降噪的基本思想

主要包括下面几个部分:
输入->network->输出

其中,分为训练、推理两个阶段

在训练阶段中:
输入是包含辅助特征的多个patch数据,如对于KPCN而言,输入的tensor的shape为[64,28,128,128],它是一个batch的输入数据,batch size为64,有28个channel,大小为(128宽,128高)
输出是包含颜色(也就是辐射亮度)的patch数据,如对于KPCN而言,输出的tensor的shape为[64,3,128,128],它是一个batch的输出数据,batch size为64,有3个channel(辐射亮度的r、g、b),大小为128*128

在推理阶段中:
输入是包含辅助特征的整个场景图片,如对于KPCN而言,输入的tensor的shape为[1,28,720,1280],它是一个batch的输入数据,batch size为1,有28个channel,大小为场景大小(这里为1280宽,720高)
输出是包含颜色(也就是辐射亮度)的整个场景图片,如对于KPCN而言,输出的tensor的shape为[1,3,720,1280],它是一个batch的输出数据,batch size为1,有3个channel(辐射亮度的r、g、b),大小为场景大小(这里为1280宽,720高)

训练通常是离线的,它的dataset是预先准备好的图片。训练完成后,将模型数据保存到文件中。
推理通常是实时的,它的dataset是图片或者GPU数据(如WebGPU中的GBuffer数据,它保存了辅助特征以及color),需要先读取模型数据到network中

为了提高训练和推理速度,我们通常是优化network这部分:
如使用更快收敛的network,以及改进network的输出层(如通过核预测实现类似于softmax的输出);
另外,对于WPSK而言,由于network使用了RepVGG块,可以通过结构重参数化来使得训练和推理的network的结构不一样(训练的network是多路架构,推理的network是单路架构),从而提高network的收敛速度

深度学习蒙特卡洛降噪的实现

我们会使用pytorch框架来实现训练,使用WebNN API来实现推理

WebNN API是浏览器提供的深度学习API,底层调用了深度学习硬件来加速,同时使用WebGPU、WebGL来做polyfill

posted @ 2023-06-08 05:47  杨元超  阅读(107)  评论(0编辑  收藏  举报