张靖仪
(四川大学计算机学院,成都610065)
随着深度学习技术的发展,研究人员已提出诸多基于深度学习的反走样算法,用于提升图形渲染的质量,然而现有的深度学习反走样算法并未有效利用图形渲染的优势。针对上述问题,将图形绘制过程中涉及到的G-Buffer信息、时序反走样的理念及循环神经网络相结合,提出一种基于G-Buffer的深度学习反走样算法。实验结果表明,该算法可有效解决几何边缘等高频区域的走样现象,并取得和超采样反走样算法类似的效果。
图形绘制离散化过程中,若采样率不满足奈奎斯特采样定理,便会引起渲染失真等图形走样现象。这种走样现象在图形绘制方面通常表现为几何走样和着色走样,这些走样将对图形绘制结果产生不利影响。
为了消除走样现象,提升图形绘制质量,研究人员提出了大量基于图形的反走样算法。比较典型的图形反走样算法有超采样反走样算法[1]、多重采样反走样算法[2]和时序反走样算法[3]等。其中超采样反走样算法是图形绘制领域比较常用的一种反走样算法,该算法通过增加着色样本数量的方式,有效改善了几何走样和着色走样等图形绘制失真现象,然而该算法需要额外的着色计算,这显著增加了着色带宽。多重采样反走样算法则是一种利用几何掩码来降低几何反走样计算开销的反走样算法,然而该算法并不能起到着色反走样的目的。时序反走样算法是另一种图形反走样算法,该算法通过时间平摊超采样的方式也能取得较好的反走样效果,但是该算法会带入额外的鬼影、模糊等问题。
为了解决图形反走样算法的缺陷,受数据驱动的启发,研究人员已提出大量基于深度学习的反走样算法。如Nalbach[4]提出过一种基于U-shaped的深度学习反走样算法,该算法通过数据驱动的方式来解决超采样反走样算法着色代价过高、多重采样反走样算法着色走样等问题;NVIDIA[5]提出过一种深度学习反走样算法,该算法利用深度学习推理加速技术有效解决了深度学习反走样算法的效率问题,并通过采集大规模图形绘制场景的方式,显著提升了反走样网络的泛化能力。
虽然已有的深度学习反走样算法能有效规避图形反走样算法的缺陷,但是这些反走样算法并未有效利用图形渲染的优势。针对上述问题,本文将G-Buffer信息、时序反走样理念等图形渲染技术和循环神经网络相结合,提出了一种新的深度学习反走样算法。并通过实验验证本文算法的有效性。
图形绘制过程中需要对时序信号进行离散化处理,然而对于时序信号频率变化较高的区域,若时序信号的采样率不能满足奈奎斯特采样定理,便会出现时序走样现象。这种走样现象在时序上主要表现为闪烁、车轮效应等图形时序信号失真现象。
时序反走样算法是解决时序走样现象的常用算法。该算法最早由Yang[3]提出,其基本思想是通过重投影等方式将一个像素空间域上的多个采样点平摊到历史帧中,并通过混合历史样本的方式来达到时序反走样的目的。通过这种时间平摊超采样的方式,时序反走样算法不仅能取得超采样反走样算法类似的优势,还能有效节省反走样算法的时间开销。
然而该算法会带入额外的鬼影、模糊等问题。其中鬼影具体表现为当前帧中残留了过时的历史数据,模糊具体表现为画质退化现象。研究人员通常使用启发式算法来规避上述问题。常用的启发式算法有邻域裁剪[6]、基于指数的混合系数计算方式[7]等。
循环神经网络是深度学习领域常用的一种处理时序信息的网络结构。其核心思想是:通过复用上一时刻隐藏数据的方式来提高网络处理时序信息的能力。由于循环神经网络具有良好的处理时序数据的能力,因此该网络也被广泛应用于视频处理、语音识别等图像处理领域。
近年来,随着深度学习技术的兴起,循环神经网络也被应用于图形绘制领域。例如,Schied[8]将循环神经网络和图形降噪技术相结合,提出了一种能高效解决蒙特卡洛降噪问题的神经网络。基于该网络的降噪算法不单能提高图形降噪的质量,还能显著改进连续帧画面的时序稳定性。
G-Buffer中存储了大量有助于提升图形绘制质量的有效信息,如法线、深度等。近年来的研究成果也表明基于G-Buffer的深度学习图形绘制技术往往能帮助神经网络取得更好的图形泛化能力。如Nalbach[5]提出过一种基于G-Buffer和U-shaped结构的神经网络,该网络在图像反走样、景深、运动模糊等领域都能取得不错的泛化效果。Schied[9]将G-Buffer和深度学习技术将结合,取得了比原始深度学习图形降噪算法更好的图形降噪效果及网络泛化能力。
已有的图形反走样算法虽然能取得较好地反走样效果,但这些反走样算法并不能完全解决图形走样现象。例如超采样反走样算法并不能解决图形绘制过程中的闪烁现象;多重采样反走样算法并不能起到着色反走样的作用;时序反走样算法会带入潜在的模糊、重影等问题。
为了规避图形反走样算法的缺陷,研究人员通常使用启发式的方法来解决上述问题。例如超采样反走样算法通过边缘超采样或改进采样模式的方式来缓解图形绘制过程中的闪烁问题,多重采样反走样算法通过改进高光滤波模式的方式可以在一定程度上缓解着色走样现象;时序反走样算法通过运动滤波、邻域裁剪等方式来规避潜在的重影问题。
然而这种基于启发式的方法通常是基于某种预定的假设而产生的某种暂时可行的处理方法,并不具有较强的普适性。相对而言,基于数据驱动的深度学习反走样算法虽然能有效规避图形反走样算法的缺陷,但已有的深度学习反走样算法并没有充分利用图形渲染的优势。
针对上述问题,本文将图形绘制过程中涉及到的G-Buffer信息、时序反走样理念及循环神经网络相结合,提出了一种基于G-Buffer的深度学习反走样算法。该算法通过融合已有时序反走样算法和循环神经网络的方式来实现时间平摊超采样的目的,并利用GBuffer数据来训练反走样网络的模型参数。
具体的算法流程框架如图1所示,首先利用重采样时域数据模块来实现时序反走样的目的,再将重采样时域数据模块的输出结果和当前时刻的G-Buffer数据作为神经网络的输入,然后经神经网络训练得到最终反走样结果。其中重采样时域数据模块的目的是复现时域反走样算法中时域样本采集的功能;而循环神经网络则是为了提升神经网络的时域融合效果;GBuffer信息作为神经网络输入参数的目的是为了改进反走样网络的泛化能力。
图1 本文算法的处理流程
神经网络的具体结构如图2所示。其中网络的输入是重采样得到的时域数据和T时刻的法线、深度等G-Buffer信息,网络的输出是T时刻的反走样结果。网络前半部分由3×3×32大小的卷积核及ReLU结构堆砌而成,网络后半部分采用一个3×3×3大小的卷积核。最后网络的输出结果不仅作为当前时刻的反走样输出结果,还作为下一时刻重采样时域数据模块的输入数据,经重采样时域数据模块处理后作为循环神经网络的隐藏状态,并和下一时刻的G-Buffer信息一同作为下一时刻网络的输入数据。
图2 本文算法的网络结构图
实验部分使用的数据集是NVIDIA提供的Amazon Lumberyard Bistro[9]场景经裁剪旋转等数据增强技术处理后得到的1900段包含G-Buffer信息及超采样反走样结果的图像序列数据集。其中每段图像序列由7组连续的帧画面组成。并按3:1:1的方式随机分成训练集、验证集及测试集。且训练过程中迭代次数设置为300,批处理数量设置为8。
为了验证本文算法的有效性,本文通过对比时序反走样算法、超采样反走样算法的反走样绘制结果及性能指标来衡量本文算法的有效性。其中图3是一个典型的反走样效果对比图,且从左到右分别为未反走样的图像、经时序反走样算法处理后的图像、经本文算法处理后的图像及经超采样反走样算法处理后的图像。对比图3中的四幅图像,可以明显看出,本文算法具有较好的反走样效果,且这种反走样效果优于时序反走样算法,又近似于超采样反走样算法取得的效果。表1则是本文算法与时序反走样算法的在测试集上统计得到的平均性能对比结果,其中SSIM指标越大,则说明该算法的反走样效果越接近于超采样反走样算法。从表1中明显可以看到,本文算法的SSIM指标远大于时序反走样算法的SSIM指标,即本文算法优于时序反走样算法。
表1 反走样性能对比结果
图3 反走样效果对比图
本文提出了一种基于G-Buffer的深度学习反走样算法,该算法通过重采样时域数据、循环神经网络等方式实现了时域反走样的目的,并利用G-Buffer数据来训练反走样网络的模型参数。实验结果证明,本文算法可有效解决几何边缘等高频区域的走样现象,并取得和超采样反走样算法类似的效果。且这种反走样效果优于典型的时序反走样算法。后续的研究中,将考虑使用网络剪枝、深度学习推理加速等技术来提升本文算法的反走样效率。