深度学习超分辨率在电影工业的应用
论文摘要
论文
Deep Learned Super Resolution for Feature Film Production
学习
最近我一直在学习三维建模渲染和制作,看到一篇关于Pixar在2020年发布的论文,主要内容是关于Pixar内部的工程师开发人员如何利用深度学习来提升渲染图像的分辨率,精细的渲染一帧4k图像可能会消耗很多资金成本,如果最终渲染2k分辨率的图像然后利用深度神经网络将其提升到4k,图像在细节上更加细腻和丰富,那么在渲染的成本上可以帮助公司降低很多成本。和以前的超图像超分辨率提升模型不一样,电影工业通常使用的图像都包含有光照的高动态范围,和对色彩的真实还原的数据,这就使得目前的主流超分辨率模型根本无法使用在电影领域。这也是我目前感兴趣的领域,因为将深度学习用于工业领域比起理论上更加具有实际意义。
摘要
伸缩技术通常用于创建那些成本高昂甚至无法制作的高分辨率图像。近年来,深度学习方法相比传统的方法而言在改善图像细节,提升图像清晰度方面有所改善。在这里我们讨论将深度学习的超分辨率技术用于皮克斯电影工业的动机和挑战,使用该技术可以降低渲染农场的支付成本,同时实现生成高分辨率的内容。
背景和相关工作
为了提高图像的分辨率,通常使用几种技术,如 nearest-neighbor, bilinear,以及bicubic interpolation。在电影业中,通过Nuke节点TVIScale,total variation inpainting技术已被证明在提高分辨率方面很有成效。近年来,深度卷积神经网络通过从大量数据中学习低分辨率(LR)到高分辨率(HR)的映射,展示了更高的重建质量。随着生成式对抗网络(GANs)和感知损失函数在开创性的SRGAN工作中的引入,伸缩器现在可以产生与真实相比无法分辨的细节和清晰度的图像。我们在皮克斯工作的目的是将GANs投入生产,用于图像的分辨率伸缩。
训练集
训练一个超分辨率模型需要成对的高分辨率和低分辨率帧图像。大多数先前的研究依赖于预先建立的数据集,这些数据集由代表HR(High Resolution)的高分辨率照片和通过采用下采样操作(通常是bicubic)获得的LR(Low Resolution)照片组成。然而,在我们的测试中,在bicubic降采样图像对上训练生成的预训练超级分辨率模型并不能推广到新的数据上(即没有新的细节被生成),因为现实世界的降级操作比Bicubic降采样要复杂得多。在皮克斯,我们有一个渲染器来合成图像对,有高质量的场景(有不同的着色器、几何和光照条件),还有一个经过微调的数据中心来进行大规模的渲染。
为了获得训练数据,我们使用RenderMan渲染了分辨率为1-2K的生产图像对,其中的镜头从《Coco》、《Incredibles 2》、《Toy Story 4》、《Onward》和《Soul》中随机抽取。由于一个给定的镜头中包含多个通道(如实体元素、体积和天空),在生产管道的最后步骤进行合成,我们收集所有的元素,不包括Deep Layer。我们对已知的与分辨率有关的参数进行修正,如微多边形长度和相机射线差倍率。尽管如此,我们仍然偶尔会注意到不相关的对,并将它们从训练集中排除。我们注意到,我们经常不能重新使用以前定稿的2K渲染图,因为即使在定稿后,由于生产的变化,镜头也经常发生变化。我们还从UHD版本中获得预先存在的4K渲染图,并将任何连贯的2K-4K对添加到数据集中(通常每个节目的一小部分是以4K渲染的,其余的是用TVIScale从2K放大的,因为大规模4K渲染的成本很高)。我们最终得到了一个包含3700对的数据集。
训练管线
我们在文献中观察到,最先进的超分辨率深度学习模型是使用具有对抗性训练的深度残差网络[Wang et al. 2018]。架构或损失函数的微小差异使这些模型与众不同。我们从一个开源的训练环境和网络架构开始,然后我们创建了一个PyTorch开发环境,并准备了一个台带有两个24GB NVIDIA Quadro P6000 GPU的Linux实例。
生产线特点
大多数超分辨率的工作没有考虑到高动态范围HDR图像,但这样做在电影行业是至关重要的。HDR数据通常用超过1的浮点数表示,并存储在OpenEXR这样的文件格式中。由于神经网络在处理输入数据时将其归一化为[-1, 1]或[0, 1]时表现最好,我们就应用以下范围压缩函数来适应HDR数据[Bakoetal.2019]:Ty =k*log(1+μy)/log(1+μ)。我们设置k=0.6和μ=5000,提供范围到亮度值接近300。然后,我们将压缩数据集转换成一个高性能的数据结构,即闪电内存映射数据库,比直接读取EXR图像的训练速度加快了约1/3。
我们试验了一种新的数据增强策略,即在(LR,HR)对中引入随机颜色移动,使网络对不同的光照条件更加精准。我们通过添加一个随机颜色(cr, cg, cb )∈ [-0.01, 0.01],给每个颜色通道添加变换:R’=R+cr, G’=G+cg, B’=B+cb。我们发现这提高了模型的泛化能力。
一个关键的挑战是解决生成的图像中不需要的颜色偏移。我们引入了一个额外的损失项,对下采样生成的图像和输入的LR图像之间的l1损失进行惩罚。有了这个额外的损失项,我们在训练的网络输出中没有发现任何颜色的偏移。我们进行了超参数调整实验,以最大限度地提高合成图像的清晰度,同时避免通常伴随着GANs的过度噪音伪影。我们最新训练的网络偶尔会在文本上产生边缘伪影(如片尾字幕),我们预计获得更多带有文本的训练数据将有助于消除这些伪影。纯PSNR网络(无GAN)不会产生边缘或噪音伪影,但会模糊一些高频细节,如胶片颗粒或小亮点。
我们的网络用纯PSNR损失项预训练了215k次,然后用GAN、色移损失和感知(特征)损失项训练了340k次。我们根据强度使用192x192的卷积核进行采样,最小批次为20。损失项的权重是{PSNR, colorShift, feature, GAN}={1, 5, 0.1, 0.0005}。我们的训练时间为:仅PSNR为108小时,GAN为208小时(总训练时间为316小时)。我们在GPU上正向推演从2K到4K图像的转换时间约为15秒,我们强调该模型可以在任何输入分辨率下提升分辨率(受GPU/CPU内存限制)。在开发的后期,我们开始在英伟达的DGX2超级计算机上进行训练,这使训练速度加快了5倍左右,并能同时运行多个实验。
结果
我们已经训练并部署了一个生产质量的超分辨率模型,在大多数情况下,特别是在TVIScale合成的细节不足和需要4K渲染的情况下,能够持续产生高质量、无伪影的高分辨率图像。即使在有景深、运动模糊和/或体积的场景中,质量也是一致的,因为这些现象在训练集中都有体现。Onward UHD光盘的元素用我们的模型进行了升级,并计划在Soul上进行更广泛的使用。我们的工作正在积极测试其他的使用情况,如宣传工作和主题公园的交付产品。此外,我们最新的训练模型显示,我们有希望建立一个可以在1K下渲染并提升为2K的工作管道,如果用于所有的中间渲染,这将为工作室节省50-75%的渲染场占用空间。
未来的工作
我们的超分辨率模型只支持RGB颜色通道的单帧升频,这使得我们的工作只在工作管道的末端有用。对于在中间渲染中的使用,需要对阿尔法通道进行伸缩,鉴于预先训练的判别网络通常只支持RGB,这就不是一件简单的事情。虽然我们目前的模型产生了时间上的一致性结果,但没有像[Bako等人,2017]那样吸收跨帧输入,这样做对我们来说仍有帮助。我们预计考虑到辅助特征缓冲区,如法线和反射率,将进一步提高合成图像的质量。此外,我们预计我们的训练时间和推理速度将随着网络量化和修剪而提高。最后,虽然我们到目前为止一直专注于2倍放大,但4倍放大在之前的工作中已经显示出巨大的前景,并可能有助于高分辨率的宣传片的渲染和为最近进入市场的8K电视提供内容。为此,在我们的测试中,运行2倍网络的多个通道已显示出潜力。
引用
Steve Bako, Mark Meyer, Tony DeRose, and Pradeep Sen. 2019. Offline Deep Importance Sampling for Monte Carlo Path Tracing. In Computer Graphics Forum, Vol. 38. Wiley Online Library, 527–542.
Steve Bako, Thijs Vogels, Brian McWilliams, Mark Meyer, Jan Novák, Alex Harvill, Pradeep Sen, Tony Derose, and Fabrice Rousselle. 2017. Kernel-predicting convolu- tional networks for denoising Monte Carlo renderings. ACM Trans. Graph. 36, 4 (2017), 97–1.
Yifan Wang, Federico Perazzi, Brian McWilliams, Alexander Sorkine-Hornung, Olga Sorkine-Hornung, and Christopher Schroers. 2018. A fully progressive approach to single-image super-resolution. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops. 864–873.