老的DLSS1.0就是一个利用Tensor Core来进行每秒几十次的upscaling的算法。可以说是AI超分辨率的一个变种,比如利用单张1080P分辨率的画面,靠AI“猜”出剩余四分之三的像素,来补完成单张4K分辨率的画面。将这种操作每秒重复进行60次,就得到了60帧的动态画面。
注意DLSS1.0的“AI补完”只是针对单帧画面的,也就是说DLSS1.0技术在对连续画面和单张图片进行进行的upscaling是完全一样的,而目前也已经有不少这种AI提升分辨率的应用,比如使动漫风格的图片变得更清晰的wifu2x。wifu2x只能针对动漫风格的图片进行超采样,而对照片等图片进行超采样时效果十分不好,就是因为静态图片超采样十分依赖神经网络的学习,需要庞大的样本库来训练神经网络。就像wifu2x针对动漫图片进行学习所以只能够对动漫图片进行超采样一样,DLSS1.0十分依赖对每个游戏的分别训练,因此实用性较差。
而DLSS2.0则完全转换了思路。
相比完全没有利用时间信息的DLSS1.0,DLSS2.0不再专注于对单帧画面进行upscaling,而是引入了一个“运动向量”的概念。
“运动向量”这个概念可以理解为描述每个像素随时间运动的情况的一个数值。引入这个数值后,Tensor Core上运行的神经网络所做的工作就不再是像DLSS1.0那样,依靠在超算上完成的对每个游戏的“训练”来“猜”单帧画面的像素的工作,而是使用每个像素的运动向量来预测低分辨率下没有渲染出的每个像素在高分辨率下应该存在的位置,继而完成upscaling。引入了时间信息之后,AI在预测低分辨率下没有渲染出来的像素的真实性就提高了一大截,从而能够大大提高画面的保真度。同时新的DLSS2.0仅新引入了实时的时间信息作为计算的要素,也不再依赖超算对每个游戏单独的训练,使得易用性上也提升了非常多。
有的朋友可能还有一些疑问,比如如果我在游戏中保持画面几乎静止,那这种运动向量预测要如何发挥作用呢?画面根本就没有变化,那岂不是没有运动向量这个信息了?
——虽然我并没有详细了解过NVIDIA的DLSS2.0算法细节,但我觉得这个问题的解决办法还是十分好想到的。比如1080P到4K的upscaling,是每一个像素都要再凭空生出三个像素来。我们可以想象一个“田”字,1080P下只渲染“田”字的其中一个格子,而4K需要将“田”字的四个格子填满。那我们大可以让显卡在第一帧时渲染“田”字左上角的格子,第二帧时渲染“田”字右上角的格子,第三帧渲染“田”字左下角的格子……以此类推,这样看下来使用4帧1080P画面的渲染来补完4K的画面,最终收获的图像应该是跟真4K的Ground truth几乎完全一致的。
而这也是我个人对未来DLSS技术的一个展望,也就是由AI介入渲染管线,由AI来告诉传统的Cuda单元和RT单元,接下来你们需要渲染哪个位置的像素,而哪些位置的像素依靠AI就可以较好地“猜测”出来,不用渲染,继而节省许多计算资源;当然这听起来像是可变速率渲染VBR的一个升级版。
可能有的朋友又犯嘀咕了,这岂不是GPU在“偷懒”了吗?呵呵,其实并不是这样的。
其一,是GPU这样聪明地调度宝贵的计算资源的本领是否能够被定义成“偷懒”呢?
其二,是其实渲染技术中一直都存在所谓的“偷懒”,或者说很多技术就是“偷懒”的技术。
比如法线贴图,就是高模转低模以满足帧率,而又尽量不损失视觉上的几何细节的一种“偷懒”技术。
比如曲面细分,就是在法线贴图已经无法不损失视觉几何细节时,额外补出原本的模型上并不存在的多边形的“偷懒”技术。
第五代主机(PS2,XBOX)处于法线贴图还没有被大规模使用的时期,所以那个时候多边形数量跟画面的精细程度完全相关,游戏主机和GPU也十分重视对于每秒渲染多边形数量的宣传。而当法线贴图成为一种主流采用的技术后,我们发现如今的游戏主机和GPU已经不再强调渲染多边形的能力了,而是将宣传性能的重心放在了通用的性能上,比如浮点运算能力。
渲染技术刚刚诞生时,行业也是逐渐才摸索出了最高效的渲染技术——光栅化,而后设计出专门为光栅化算法所设计和优化的芯片——图形加速卡(GPU);而现在的RT Core和Tensor Core,也是针对未来渲染技术的发展方向所设计出来的新的硬件加速单元,RT Core是为求交计算设计,Tensor Core是为矩阵乘加计算(深度学习和神经网络所常用的一种基本算法)设计。这两种新的硬件单元并不是NVIDIA的噱头,就算是AMD的光线追踪单元,也是硬件加速的求交计算单元。
而设计出新的渲染方法、新的硬件单元始终是为了画面美感的提高,绝不是为了让GPU“偷懒”。就像当年法线贴图等技术成熟后,人们将提升游戏画面的工作重心放在了调教、烘焙更加精细和真实的材质,而不再仅仅专注于提升模型多边形数量的提升一样,如今我们也很可能已经走到了光栅化的效率和成果的瓶颈,需要将重心转移到更新的渲染技术上了;也就是光线追踪所带来的全局光照。而在实时高精度光线追踪所需的巨量算力在短时间内不太可能步入终端的情况下,利用AI来“偷懒”,在我看来是一个十分聪明的路线。正因如此,我认为NVIDIA的布局十分精巧,只可惜RTX的宣发就是一坨狗屎,导致NVIDIA的首席CEO也只能在发布会上对着一堆镜面反射哇声连天,完全没能给大多数消费者讲述清楚NVIDIA设计RTX布局时的考虑和未来的方向,使得到今天还有为数不少的消费者认为RTX技术更多的是一项“噱头”。
我不是计算机图形学专业的,只是对这个技术十分感兴趣,稍微了解了一些,希望我的理解能抛砖引玉,让真正的懂哥介绍的更清楚一点,感谢
注意DLSS1.0的“AI补完”只是针对单帧画面的,也就是说DLSS1.0技术在对连续画面和单张图片进行进行的upscaling是完全一样的,而目前也已经有不少这种AI提升分辨率的应用,比如使动漫风格的图片变得更清晰的wifu2x。wifu2x只能针对动漫风格的图片进行超采样,而对照片等图片进行超采样时效果十分不好,就是因为静态图片超采样十分依赖神经网络的学习,需要庞大的样本库来训练神经网络。就像wifu2x针对动漫图片进行学习所以只能够对动漫图片进行超采样一样,DLSS1.0十分依赖对每个游戏的分别训练,因此实用性较差。
而DLSS2.0则完全转换了思路。
相比完全没有利用时间信息的DLSS1.0,DLSS2.0不再专注于对单帧画面进行upscaling,而是引入了一个“运动向量”的概念。
“运动向量”这个概念可以理解为描述每个像素随时间运动的情况的一个数值。引入这个数值后,Tensor Core上运行的神经网络所做的工作就不再是像DLSS1.0那样,依靠在超算上完成的对每个游戏的“训练”来“猜”单帧画面的像素的工作,而是使用每个像素的运动向量来预测低分辨率下没有渲染出的每个像素在高分辨率下应该存在的位置,继而完成upscaling。引入了时间信息之后,AI在预测低分辨率下没有渲染出来的像素的真实性就提高了一大截,从而能够大大提高画面的保真度。同时新的DLSS2.0仅新引入了实时的时间信息作为计算的要素,也不再依赖超算对每个游戏单独的训练,使得易用性上也提升了非常多。
有的朋友可能还有一些疑问,比如如果我在游戏中保持画面几乎静止,那这种运动向量预测要如何发挥作用呢?画面根本就没有变化,那岂不是没有运动向量这个信息了?
——虽然我并没有详细了解过NVIDIA的DLSS2.0算法细节,但我觉得这个问题的解决办法还是十分好想到的。比如1080P到4K的upscaling,是每一个像素都要再凭空生出三个像素来。我们可以想象一个“田”字,1080P下只渲染“田”字的其中一个格子,而4K需要将“田”字的四个格子填满。那我们大可以让显卡在第一帧时渲染“田”字左上角的格子,第二帧时渲染“田”字右上角的格子,第三帧渲染“田”字左下角的格子……以此类推,这样看下来使用4帧1080P画面的渲染来补完4K的画面,最终收获的图像应该是跟真4K的Ground truth几乎完全一致的。
而这也是我个人对未来DLSS技术的一个展望,也就是由AI介入渲染管线,由AI来告诉传统的Cuda单元和RT单元,接下来你们需要渲染哪个位置的像素,而哪些位置的像素依靠AI就可以较好地“猜测”出来,不用渲染,继而节省许多计算资源;当然这听起来像是可变速率渲染VBR的一个升级版。
可能有的朋友又犯嘀咕了,这岂不是GPU在“偷懒”了吗?呵呵,其实并不是这样的。
其一,是GPU这样聪明地调度宝贵的计算资源的本领是否能够被定义成“偷懒”呢?
其二,是其实渲染技术中一直都存在所谓的“偷懒”,或者说很多技术就是“偷懒”的技术。
比如法线贴图,就是高模转低模以满足帧率,而又尽量不损失视觉上的几何细节的一种“偷懒”技术。
比如曲面细分,就是在法线贴图已经无法不损失视觉几何细节时,额外补出原本的模型上并不存在的多边形的“偷懒”技术。
第五代主机(PS2,XBOX)处于法线贴图还没有被大规模使用的时期,所以那个时候多边形数量跟画面的精细程度完全相关,游戏主机和GPU也十分重视对于每秒渲染多边形数量的宣传。而当法线贴图成为一种主流采用的技术后,我们发现如今的游戏主机和GPU已经不再强调渲染多边形的能力了,而是将宣传性能的重心放在了通用的性能上,比如浮点运算能力。
渲染技术刚刚诞生时,行业也是逐渐才摸索出了最高效的渲染技术——光栅化,而后设计出专门为光栅化算法所设计和优化的芯片——图形加速卡(GPU);而现在的RT Core和Tensor Core,也是针对未来渲染技术的发展方向所设计出来的新的硬件加速单元,RT Core是为求交计算设计,Tensor Core是为矩阵乘加计算(深度学习和神经网络所常用的一种基本算法)设计。这两种新的硬件单元并不是NVIDIA的噱头,就算是AMD的光线追踪单元,也是硬件加速的求交计算单元。
而设计出新的渲染方法、新的硬件单元始终是为了画面美感的提高,绝不是为了让GPU“偷懒”。就像当年法线贴图等技术成熟后,人们将提升游戏画面的工作重心放在了调教、烘焙更加精细和真实的材质,而不再仅仅专注于提升模型多边形数量的提升一样,如今我们也很可能已经走到了光栅化的效率和成果的瓶颈,需要将重心转移到更新的渲染技术上了;也就是光线追踪所带来的全局光照。而在实时高精度光线追踪所需的巨量算力在短时间内不太可能步入终端的情况下,利用AI来“偷懒”,在我看来是一个十分聪明的路线。正因如此,我认为NVIDIA的布局十分精巧,只可惜RTX的宣发就是一坨狗屎,导致NVIDIA的首席CEO也只能在发布会上对着一堆镜面反射哇声连天,完全没能给大多数消费者讲述清楚NVIDIA设计RTX布局时的考虑和未来的方向,使得到今天还有为数不少的消费者认为RTX技术更多的是一项“噱头”。
我不是计算机图形学专业的,只是对这个技术十分感兴趣,稍微了解了一些,希望我的理解能抛砖引玉,让真正的懂哥介绍的更清楚一点,感谢