GTA5是一款经典的3D冒险游戏,它的画风是这样的:画面接近现实,但缺少一些质感。.....近日,英特尔的研究人员为侠盗猎车手制作了一个图像质量增强补丁。先来看看效果:左边是GTA中的3D效果图,右边是Intel新机型的效果图。效果非常好,下图的画质提升效果更加明显。模型处理后的图像就像是相机实拍:在3D渲染领域,实时性和真实感是两个关键要素。虽然逼真渲染引擎可能需要几分钟甚至几小时来处理单个帧,但英特尔的新系统可以以相对较高的帧速率处理图像。研究人员表示,他们将进一步优化深度学习模型以更快地工作。那么英特尔是如何实现这个图像增强补丁的呢?让我们来看看具体的技术细节。论文地址:https://arxiv.org/abs/2105.04619项目地址:https://github.com/intel-isl/PhotorealismEnhancement方法和架构如下图所示,该系统由几个相互连接的神经网络组成。G缓冲编码器将不同的渲染转换为一组数字特征。多个G缓冲区分别用作表面法线信息、深度、反照率、光泽度、大气和对象分割的渲染图。系统中的神经网络使用卷积层处理此信息并输出128个特征的向量,以提高图像增强网络的性能并避免像其他类似技术一样的伪影。G缓冲区可以直接从游戏引擎获得。图像增强网络将游戏的渲染帧和来自G缓冲区编码器的特征作为输入,以生成逼真的图像版本。在训练期间使用鉴别器和LPIPS损失函数和其他组件。研究人员通过评估生成图像与原始游戏渲染帧的一致性并将生成图像与真实图像的逼真质量进行比较,对增强网络的输出进行评级。图像增强的推断成本如果该技术可用,游戏玩家是否能够在他们的计算机上运行它?探索这个问题首先需要计算推理成本,或者计算运行训练模型所需的内存量和计算能力。计算推理成本只需要G-buffer编码器和图像增强网络,鉴别器网络可以省略。研究人员在论文中介绍,增强网络是基于HRNetV2的神经网络,HRNetV2是一种用于处理高分辨率图像的深度学习架构。与下采样图像的模型相比,高分辨率神经网络产生的视觉伪影更少。HRNet通过以不同分辨率运行的多个分支来处理图像。更重要的是,有一个特征流保持相对较高的分辨率(输入分辨率的1/4)以保留精细的图像结构。这意味着如果游戏以全高清(1920×1080)运行,顶行层将以480×270像素处理输入。对于每个后续的下行,分辨率减半。研究人员改变了这个神经网络中每个块的结构,以计算来自G缓冲区编码器(RAD层)的输入。G-buffer的输入包括材质信息的单热编码,法线、深度和颜色的密集连续值,以及光晕和天空缓冲区的稀疏连续信息。此外,该模型在G-buffer的一个子集上仍然表现良好。那么,这个模型需要多少内存呢?研究论文没有说明内存大小,但根据HRNetV2论文,对于1024×2048的输入,完整网络需要1.79GB的内存。Intel使用的图像增强网络输入尺寸较小,但也需要考虑RAD层和G-buffer编码器引入的额外参数。因此,假设您需要至少1GB的显存才能为全高清游戏运行基于深度学习的图像增强,如果您想要4K分辨率,则可能需要超过2GB的显存。游戏计算机通常配备带有4-8GBVRAM的显卡,因此1GB的内存并不多。而像GeForceRTX系列这样的高端显卡可以拥有高达24GB的VRAM。但同样值得注意的是,3D游戏会消耗大量显卡资源。游戏在视频内存中存储尽可能多的数据以加快渲染速度并避免在RAM和VRAM之间交换,这会导致巨大的速度损失。据估计,《侠盗猎车手 5》在全高清分辨率下最多消耗3.5GB的VRAM。像赛博朋克2077这样的新兴游戏,拥有更大的3D世界和更详细的屏幕对象,可以轻松占用多达7-8GB的VRAM,如果您想以更高的分辨率玩游戏,则可能会更多。所以基本上,目前的中高端显卡让用户在低分辨率高写实和高分辨率合成图形之间做出选择。然而,内存使用并不是基于深度学习的图像增强面临的唯一问题。非线性处理造成的延迟一个更大的问题是深度学习操作的连续和非线性性质。为了理解这个问题,我们首先使用深度学习推理来进行3D图比较。三维图形依赖于大量的矩阵乘法。3D图形的渲染帧从一组顶点开始,每个顶点由一组数字表示,代表3D物体上点的属性,包括坐标、颜色、材质、法线方向等。渲染前每一帧,顶点必须经过一系列矩阵乘法,以将顶点的局部坐标映射到世界坐标、相机空间坐标和图像帧坐标。索引缓冲区将顶点捆绑成三元组以形成三角形。这些三角形被光栅化-或转换为像素-然后每个像素通过其自己的一组矩阵进行操作,以根据材料颜色、纹理、反射和折射图、透明度级别等确定其颜色。3D渲染管道,图片来源:LearnEveryone这听起来好像有很多事情要做,尤其是现在3D游戏由数百万个多边形组成。在计算机上玩游戏时获得非常高的帧率实际上有两个原因。首先,显卡是为并行矩阵乘法设计的。与CPU最多只有几十个计算核心不同,GPU有数千个核心,每个核心都可以独立进行矩阵乘法运算。其次,图变换大多是线性的,多个线性变换可以绑定在一起。例如,将世界、视图和投影变换的3个矩阵相乘以创建执行所有这三种操作的单个矩阵可将操作量减少三分之二。同样,深度学习也依赖于矩阵乘法,每个神经网络都是由逐层矩阵计算组成的,这也是显卡在深度学习界越来越受欢迎的原因。但与3D图形不同,深度学习操作无法组合。神经网络中的层依赖于非线性激活函数来执行复杂的任务。基本上,这意味着您不能将多层的转换操作压缩为单个操作。例如,考虑一个深度神经网络,它以100×100像素图像(10,000个特征)作为输入并用七层处理图像。此时数千核的显卡或许可以并行处理所有像素,但仍需要顺序执行七层神经网络的运算,难以提供实时图像处理,尤其是在低-端显卡。因此,必须考虑的瓶颈是必要的顺序操作的数量。该模型的英特尔图像增强网络的顶层有16个顺序链接的残差块。在每个残差块中有两个卷积层,一个RAD块和一个ReLU操作顺序连接。这相当于96层顺序运算。在G-buffer编码器输出其特征编码之前,图像增强网络无法开始其操作。因此至少必须添加两个处理第一组高分辨率特征的残差块,向序列中添加另外8层,这使得图像增强操作至少有108层。英特尔的图像增强网络用于此模型。这意味着除了内存之外,你还需要一个高频处理器来运行这些操作。在英特尔的论文中,我们看到了这个有趣的陈述:“使用我们的方法进行推理期间未优化的应用程序数据在GeForceRTX3090GPU上需要半秒钟。”RTX3090拥有24GB的显存,这意味着缓慢的2FPS渲染速率并不是由于内存限制,而是由于顺序处理图像增强器网络的所有层所需的时间。这不是增加内存或CUDA核心就能解决的问题,只能寄希望于处理器的频率快点。论文中写道“用于输入的G-buffer是在GPU本地生成的,如果我们的方法与游戏引擎深度结合,可以提高效率,也可能带来更高的真实感。”图像增强将服务器网络集成到游戏引擎中可能会提供巨大的速度提升,但目前似乎仍未提供可玩的帧率。相比之下,我们在HRNet论文中看到,研究人员使用了NvidiaV100,这是一款昂贵的专业级GPU,专为深度学习推理和训练而设计。在没有内存限制和其他游戏内容计算阻碍的情况下,V100的推理时间为每次输入150毫秒,约为7fps,不足以带来流畅的游戏画面(电影24帧,PS4标准30帧版本)。开发和训练神经网络的另一个复杂问题是开发和训练用于图像增强的神经网络的成本。想要引入深度学习技术的游戏企业将面临三座大山的考验:数据、计算资源和机器学习人才。构建数据集是一个大问题,但幸运的是英特尔已经想出了解决问题的方法。他们在训练模型时引入了Cityscapes数据集,收集了德国50个城市的标注街景图像,精细标注的图像数量达到5000张。根据数据集的论文,每张带注释的图像平均需要一个半小时的人工来精确指定图像中包含的对象,以及它们的边界和类型。这些细粒度的注释使图像增强器能够将正确的逼真纹理映射到游戏图形上。Cityscapes是政府拨款、商业公司和学术机构大力支持的结果,如果将其应用到其他城市环境的游戏中,它也可能会运作良好。Cityscapes数据集中人物和街景对象的精细分割。实验结果研究人员对比了该方法与其他几种图像转换模型的生成效果,结果如下表所示:G-bufferEffects等,实验结果如下表所示:另外,与其他机型相比,Intel新机型在视觉效果上有明显的优势,比如CUT生成的图片存在一些伪影model,而Intel的新模型有更小的samplingthetiles,减少源数据集和目标数据集不匹配,避免artifacts问题:?这可能需要游戏开发者自己收集图像,然后进行标记。计算资源也构成挑战。为图像增强训练一个神经网络花费几千美元是可以接受的——对于大型游戏公司来说不是问题。但是如果你想做一些生成性的字符,比如照片级别的图像增强,训练就变得很有挑战性了。它需要人们做大量的超参数测试和调整,训练很多步骤,这会导致成本暴涨。Intel为GTA5训练了模型,其他游戏公司或许可以在不同的游戏中借鉴这种经验来降低成本。但是,对于类型差异较大的游戏,只能从头开始训练。英特尔的深度学习模型适用于城市环境,场景和人明显分开。但在森林和洞穴等自然环境中,情况可能会有所不同。大多数游戏公司都没有招聘机器学习工程师,因此他们需要招聘人才,或者将任务外包——即使他们这样做了,我们也不能100%保证“逼真的图形”会带来更好的游戏体验。英特尔的写实风格图像增强技术向我们展示了机器学习算法的一个新的应用方向,但距离计算能力、游戏公司准备好、玩家真正接受可能还需要一段时间。
