爱笑的小姐姐 · 2023年10月24日

SIGGRAPH23 | 基于多分辨率融合的实时渲染超分辨率,浙大提出FuseSR

image.png

作者 | Paradox
来源 | https://zhuanlan.zhihu.com/p/660498823

NVIDIA实时渲染超分辨率产品DLSS向市场证明了实时渲染超分辨率算法对进一步”榨取“显卡性能、提升游戏内容容量的能力,各硬件厂商也都随之推出了自己的超分辨率产品,实时渲染超分辨率算法逐渐成为现代电子游戏的必要功能。本人硕士三年期间的主要研究课题就是实时渲染超分辨率算法,研究成功最终成功被ACM SIGGRAPH Asia 2023 Conference Track收录。本文将详细介绍我们的研究工作,并介绍个人对实时渲染超分辨率后续研究学术上与工程上的一些看法。

我们的工作是第一个尝试8x超分辨率的工作,即单向8倍,每64个像素只有一个像素是通过渲染得到的,即使在8x这样高倍率超分辨率任务下我们的方法依然能输出高质量的结果。

image.png

我们的工作在视觉效果、数值质量以及网络运行速度上对比过往工作都有显著的提升。

0x01 背景介绍

在正式介绍我们的工作之前先介绍一下本工作的研究背景以及现有的实时渲染超分辨率算法。

实时渲染超分辨率可以与反走样(抗锯齿,Anti-Aliasing下文简称AA)算法归约到同一个问题上:如何在采样不足的情况下尽量恢复出原有信号。渲染中走样的产生是由于对虚拟场景采样不足导致的,这点在 @文刀秋二 对DLSS2.0的介绍中有更详细的解释。

AA问题最直接的解决方式就是SSAA,既然问题是采样率不足导致的,那么只要提高采样率问题就迎刃而解了。但这样的解决方法会极大的增加渲染器的负担,这样做相当于渲染一张分辨率极高的结果再下采样到目标分辨率。于是便诞生了MSAA、TAA等算法,有的尝试减少SSAA中贡献较小的额外计算,有的在空域或时域寻找额外信息补充原始渲染的样本不足。而实时渲染超分辨率相当于一个更激进的AA算法,尝试以低于目标分辨率的采样率,恢复出AA后的结果,以达到减少渲染器负担的目的。

实际上在DLSS之前就有工作尝试通过减少采样数来为渲染加速,育碧在GDC 2016中介绍了在《彩虹六号(Rainbow Six Siege)》中使用的棋盘渲染(Checkerboard rendering)技术,这项技术可以粗糙地理解为渲染时只有一半的像素是在当前帧渲染的,剩余的一半像素由历史帧混合得到(当然此技术是在MSAA的框架下实现的,实际上是更为精细的启发式算法,而非简单的时空域插值),这在超分辨率视角看来可以看作是 的超分辨率。随后在神经网络兴起的时代,NVIDIA在TAA的框架下,将神经网络应用到了TAA中启发式的纠正算法中,以实现对历史帧信息更有效的利用。自DLSS推出以来工业界和学术界陆续涌现出了多个实时渲染超分辨率方法,其中包括AMD的FSR、Intel的XeSS以及由Facebook的Oculus团队在SIGGRAPH 2020上发表的NSRR。这些方法大都延续DLSS从历史帧中挖掘信息的思路,也有部分是对SISR方法的改进。

0x02 引入高分辨率辅助信息

在我们实验的过程中我们发觉现有方法基本已经把历史帧中的信息充分挖掘了,继续沿这个思路做只有两条出路:一是设计更精妙的网络,在不损失质量或者损失很少的情况下减少网络的运行时间;二是设计对应特定场景的方法,让这个方法在特定场景中表现得比之前的方法好,牺牲泛化性换取特殊场景下的高性能。

我认为这两个方向潜在改进的空间都太少了,同时我注意到有很多其他问题的工作中都开始利用当前帧的原分辨率G-Buffer,如插帧问题中的【Guo et al.】和降噪问题中的【Chaitanya et al.】,在现代游戏引擎中,通常情况下G-Buffer能够快速地生成,而对于超分辨率任务来说高分辨率G-Buffer中包含的信息远比历史帧中的信息有效,因此我们考虑为超分辨率添加原分辨率G-Buffer作为额外输入,更丰富的信息不仅能提高网络结果的质量,也能减轻神经网络的负担,使得在网络设计时可以使用更轻量级的网络结构。

image.png

注:此处及下文的高分辨率数据均指代目标分辨率的数据,即对于最终输出分辨率为3840x2160的4x超分辨率任务来说,高分辨率数据分辨率为3840x2160,低分辨率数据分辨率为960x540。

0x03 多分辨率信息融合

高分辨率数据的加入为超分辨率任务提供了丰富的信息,但如何利用好这些高分辨率信息就成为了网络设计的关键。在2022年初我们就做了一些关于高分辨率数据在超分辨率任务中实验并投了一篇小论文【Zhong et al.】。在这篇论文中我们只是粗暴地将高分辨率数据拼接到重建网络上,以这种方式加入高分辨率数据不仅只能带来有限的质量提升,并且网络的运行时间会急剧地增加。通过这篇文章中的实验我们意识到,卷积神经网络的数据分辨率会极大地影响网络整体的运行速度。

image.png

根据这个实验中获得的经验,我们设计了H-Net:一个高效的多分辨率信息融合网络。

image.png

H-Net采用shuffling-unshuffling结构设计,这一结构的基础来源于Shi et al.中提出的Pixel Shuffling(亦称Sub-Pixel Convolutional)操作。在这篇文章之上有一些其他工作利用shuffling-unshuffling结构的设计为自己的网络提速,也有一些工作尝试将此结构用于提取一些带有特定模式(pattern)的图像特征。我们采用这一结构在对高分辨率数据unshuffling之后加入低分辨率数据,这样在所有的数据数据就会在低分辨率屏幕空间下对齐,在低分辨率屏幕空间拥有相同坐标的数据都会被放在同一像素的不同通道中。

采用这一结构之后我们的方法在质量上比起先前的工作有了巨大的提升,平均有3~6点PSNR的提升,在某些场景中甚至有高达12点PSNR的提升,这充分证明H-Net在挖掘同空间多分辨率数据之间的联系上是非常高效的方法。

0x04 反调制

image.png

image.png

image.png

0x05 网络结构设计

image.png

我们设计了两个网络,完整版网络与快速版网络。完整的网络会同时使用历史帧信息与高分辨率辅助信息共同预测结果,而快速版则去掉了历史帧信息的提取,仅使用高分辨率辅助信息,H-Net中间的Fusion Network也被替换成了更轻量级的DWSV2[Sandler et al.]。

我没有在专栏对我们论文中使用的网络结构做特别详细的介绍,因为在设计这个网络结构的时候针对的是学术论文,如果直接使用到工业应用上会有一些问题,所以我会在下一章中介绍我自己实验过程中考虑到的一些潜在的工业改进思路。

想要复现我们的工作可以阅读论文,或是关注我们项目的仓库,我们会在整理完成后公开源码:https://github.com/Isaac-Paradox/FuseSR

0x06 已知不足的讨论及改进思路

历史帧模块

我在设计网络时也尝试了一些能更好挖掘历史帧数据的结构设计,比如论文中的设计就尝试参考transformer 查询的思路,尝试用帧间信息来查询历史帧中的可靠区域。但我们的实验结果跑下来加上历史帧模块网络输出质量只有非常轻微的提高,但在网络运行时间的测试上历史帧模块会占用较多的运行时间,但是增加的这些时间换取的质量提升个人认为并不值得,实际运用时可以去掉,而在快速版中我就是这样设计的。

反调制

反调制在平均数值评比下有优秀的表现,但我个人认为并不足够鲁棒,并且整合难度较高。

使用我在论文中设计的反调制方法需要对引擎做较大的修改并且有不少缺陷,首先需要对所有材质都离线计算一张LUT纹理,在生成G-Buffer的时候也会需要重新设计G-Buffer的分配策略加入BRDF预计算值。考虑到开发成本可以直接用Albedo近似替代,但需要注意的是需要对Albedo数值进行一些处理,在实验中我们就曾遇到过Albedo某一通道为0但Specular有贡献颜色到最终输出,最后导致发生严重色偏的问题。

反调制在极少数情况会产生轻微的色偏,在这些色偏下比较数值不会降低太多,但人眼观测会迅速捕捉到这些色偏,仅把高分辨数据用于H-Net,让网络直接输出色彩空间颜色能以较小的质量损失换取更高的鲁棒性。

核心网络结构

H-Net的核心是融合不同分辨率的shuffling-unshuffling结构,中间的Fusion Network可以根据实际情况和需求替换成其它的backbone网络。我在设计网络时尝试了几种结构,发现Fusion Network的设计主要要应对的是信息的退化,所以带跳连接的设计或者有其他防止信息退化的结构是必须的。除此之外结果质量通常与网络层数正相关,因此应用到具体工业场景时可以做一系列实验,根据对应项目作出合适的trade off。

0xFF

我们设计了一个高效高质量的实时渲染超分辨率算法,算法增加了高分辨率的输入数据,并采取了H-Net和反调制的网络结构。我们希望设计一个新的能落地到工业界的实时渲染超分辨率算法,为增强电子游戏实时体验和创造更复杂的虚拟场景提供多一个选择。

我们工作的主页、paper以及视频的连接如下:

作者:Paradox
文章来源:AIWalker

推荐阅读

Waymo提出全新Fusion方法LEF | 让3D目标检测的难度再次降低!
OpenAI图像检测工具曝光,CTO:AI生成的99%都能认出
YOLOv8模型ONNX格式INT8量化轻松搞定
雨天一样强 | 3D目标检测如何解决雨雪等恶劣天气的影响?

更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
18838
内容数
1371
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息