点击上方“LiveVideoStack”关注我们
▲扫描图中二维码或点击阅读原文▲
了解音视频技术大会更多信息
编者按
Editor's note
眼看用户视频的增长将超过服务器的算力上限,既没有额外的服务器来支持,也不能对用户体验造成大的冲击,Instagram的工程师找到了两种编码过程中重复计算的部分,并将他们合二为一,如此便可节省可观的算力。他们是如何做到的呢?
作者:Christos G. Bampis,Li-Heng Chen and Zhi Li
译者:李翔
审校:Zhi Li
当你在狂热地观看最新一季的 《怪奇物语》或《黑钱胜地》时,我们努力为你提供最好的视频质量。为此,我们不断突破流媒体视频质量的界限,并利用最好的视频技术。例如,我们投资于下一代、免版税的编解码器和复杂的视频编码优化。最近,我们为平台添加了另一个强大的工具:用于视频降分辨率的神经网络。在这篇技术博客中,我们描述了我们是如何利用神经网络改善Netflix视频质量的,我们面临的挑战以及未来的发展。
我们如何在Netflix视频编码流程中使用神经网络?粗略地说,在我们的编码视频流程中有两个步骤:
1. 视频预处理,它包括编码前应用于高质量源视频的任何转换。视频降分辨率是这里最相关的例子,它根据不同设备的屏幕分辨率定制我们的编码,并在不同的网络条件下优化图像质量。通过视频降分辨率,一个源视频能产生多个分辨率的视频。例如,一个4K源视频将被缩小到1080p、720p、540p等。这通常是通过传统的滤波器来完成的,比如Lanczos算法.
2. 视频编码,使用传统的视频编解码器,就像AV1。编码通过利用视频中存在的空间和时间冗余,大大减少了需要通过流传输到设备的视频数据量。
我们认为,我们可以利用神经网络来提高Netflix的视频质量,方法是用神经网络代替传统的滤波器来进行视频降分辨率。这种被我们称为“深度降分器”的方法有几个关键的优点:
• 一种基于学习的方法可以提高视频质量,并针对Netflix内容进行定制。
• 它可以看做是一个直接替代方案,也就是说,我们不需要在Netflix编码端或客户端设备端进行任何其他更改。数以百万计的支持Netflix流媒体的设备自动受益于此解决方案。
• 一个基于神经网络的视频处理模块可以被独立开发,可以在视频降分辨率之外使用,并且可以与不同的编解码器相结合。
当然,我们相信神经网络在整个视频应用中的革命性潜力,不仅仅是视频降分辨率。虽然传统的视频编解码器仍然流行,基于神经网络的视频编码工具蓬勃发展,并缩小了压缩效率方面的性能差距。深度降分器是我们用神经网络改善视频质量的实际方法。
Instagram会为用户上传的视频创建多种编码版本,不同版本间各有特性。而只要利用一种类型的视频编码辅助生成另一种类型,即可将观看次数较少的视频所占用的编码计算资源减少94%。由此释放出的更多资源可用于生成更多高清编码视频流,让更多用户获得更清晰、更流畅的播放体验。
基于神经网络的视频降分辨率方法
深度降分器是一种神经网络架构,旨在通过学习更高质量的视频尺度器来提高端到端的视频质量。它由两个构建模块组成,一个预处理模块和一个调整大小模块。预处理块的目的是在调整大小操作之前对视频信号进行预滤波。调整大小块产生作为编码器输入的低分辨率视频信号。我们采用了自适应网络设计,适用于各种各样的实际编码中会用到的分辨率。
深压缩模型的体系结构,由预处理模块和调整大小模块组成。
在训练过程中,我们的目标是生成最佳的降分表示,以使得在升分以后后均方误差被最小化。因为常规的视频编码器是不能微分的,我们在将其排除在考虑之外。在客户端的升分器是bicubic的前提下,我们集中训练一个鲁棒的深度降分器。我们的训练方法是直观的,并且产生的降分器并不和特定的编码器及其相关实现方式相关联。尽管如此,我们需要对训练结果进行彻底的评估,以证明它在Netflix编码流程里的广泛应用潜力。
利用神经网络改善Netflix视频质量
深度降分器的目标是提高Netflix端到端的视频质量。通过我们的实验,包括客观测量和主观视觉测试,我们发现深度深压缩提高了各种传统视频编解码器和编码配置的质量。
例如,对于VP9编码,并假设一个bicubic升分器,我们测量到深度降分器比传统的Lanczos降分方法平均提高了5.4%的VMAF Bjøntegaard-Delta (BD)率。我们还测量了约4.4%的VMAF-NEG BD率的增益。下面我们展示了Netflix标题中的一个例子。深度降分器(红点)在类似比特率下提供了更高的VMAF,或在更低比特率下产生类似的VMAF分数。
除了客观的测试以外,我们还进行了主观测试研究,以验证深度降分器的主观视觉改善。在我们的基于偏好的视觉测试中,我们发现,约77%的测试受试者在编码配方和升级算法的广泛范围内更喜欢深度降分器呈现的最终质量。受试者报告了更好的细节保存和更清晰的视觉外观。个可视化的例子如下所示。
左:Lanczos降分器;右:深度降分器。这两个视频编码与VP9在相同的比特率和升级到全高清分辨率(1920x1080)。您可能需要放大查看视觉差异。
我们还进行了A/B测试,以了解深度降分器对流媒体播放的整体影响,并尝试检测任何设备的播放问题。通过A/B测试,我们看到了QoE的改善,并确认了深度降分器并没有对某些设备产生不利的影响。
我们如何有效地大规模部署神经网络?
鉴于我们的规模,应用神经网络可能导致编码成本的显着增加。为了有一个可行的解决方案,我们采取了几个步骤来提高成本效率。
• 深度降分器的神经网络架构的设计原则是:在避免负面的视觉质量影响的前提下提升计算效率。例如,我们发现只需几个神经网络层就足以满足我们的需求。为了进一步减少输入通道的使用,我们只对亮度通道采用神经网络,而对色度通道采用传统的Lanczos滤波器进行缩放。
• 深度降分器的实现使用了FFmpeg软件的滤波器接口。这样的好处是可以与其他视频转换(如像素格式转换)等已实现的功能一起运行。我们的过滤器可以在CPU和GPU上运行。在一个CPU上,我们利用Intel的oneDnn以进一步减少延时。
将神经网络集成到我们的下一代编码平台中
Netflix 的编码技术团队和媒体云工程团队共同创新开发了名为Cosmos 的下一代编码平台。通过深度降分器在其上面的实现,我们很好地展示了Cosmos能够如何推动Netflix未来的媒体创新。下图显示了深度降分器是如何被集成到Cosmos的编码微服务中来的。
将神经网络集成到我们的下一代编码平台中
Cosmos编码微服务可以应用于多个编码工作流程。例如,可以调用其服务来分析视频的复杂度,或者生成用于实际Netflix流媒体的编码。其底层函数是一个无服务器层,专门用于运行无状态和密集型计算。在底层函数调用中,我们的深度降分器是在编码之前应用的。在Cosmos的推动下,我们可以利用Titus基础设施并在我们所有的多CPU/GPU环境中大规模运行深度降分器。
下一步
深度降分器为在Netflix视频编码中的更多地使用神经网络应用铺平了道路。我们的创新尝试才刚刚开始。例如,我们正在研究一些其他的案例,比如视频去噪。我们也在寻找更有效的大规模部署神经网络的方案。我们也在研究如何在下一代编码器中应用基于神经网络的工具。归根结底,我们热衷于使用新技术来提高Netflix的视频质量,只为你的观感!
我们想感谢以下人对“深度降分器”项目的帮助:
Lishan Zhu, Liwei Guo, Aditya Mavlankar, Kyle Swanson and Anush Moorthy (Video Image and Encoding team), Mariana Afonso and Lukas Krasula (Video Codecs and Quality team), Ameya Vasani (Media Cloud Engineering team), Prudhvi Kumar Chaganti (Streaming Encoding Pipeline team), Chris Pham and Andy Rhines (Data Science and Engineering team), Amer Ather (Netflix performance team), the Netflix Metaflow team and Prof. Alan Bovik (University of Texas at Austin).
原文链接:https://netflixtechblog.com/for-your-eyes-only-improving-netflix-video-quality-with-neural-networks-5b8d032da09c
▼识别二维码或猛戳下图订阅课程▼
喜欢我们的内容就点个“在看”吧!