深度学习降噪专题课:整体介绍降噪算法
大家好~本课程基于全连接和卷积神经网络,学习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等算法
深度学习蒙特卡洛降噪的基本思想
主要包括下面几个部分:
输入->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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2022-06-08 3D编程模式:介绍设计原则
2022-06-08 3D编程模式:开篇
2013-06-08 Javascript OOP框架YOOP重构实践(下)
2013-06-08 Javascript OOP框架YOOP重构实践(上)