Netflix:用神经网络改善视频质量

news2024/11/27 4:28:31

d4ef716bb8a68195cebdc35d3dbbcd0e.gif 点击上方“LiveVideoStack”关注我们

3180c04ba93bb37692d48de2653ae7a1.jpeg▲扫描图中二维码或点击阅读原文
了解音视频技术大会更多信息

编者按

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%。由此释放出的更多资源可用于生成更多高清编码视频流,让更多用户获得更清晰、更流畅的播放体验。

基于神经网络的视频降分辨率方法

深度降分器是一种神经网络架构,旨在通过学习更高质量的视频尺度器来提高端到端的视频质量。它由两个构建模块组成,一个预处理模块和一个调整大小模块。预处理块的目的是在调整大小操作之前对视频信号进行预滤波。调整大小块产生作为编码器输入的低分辨率视频信号。我们采用了自适应网络设计,适用于各种各样的实际编码中会用到的分辨率。

9b62d5ab3c1efb946c13e71c20d618d4.png

深压缩模型的体系结构,由预处理模块和调整大小模块组成。

在训练过程中,我们的目标是生成最佳的降分表示,以使得在升分以后后均方误差被最小化。因为常规的视频编码器是不能微分的,我们在将其排除在考虑之外。在客户端的升分器是bicubic的前提下,我们集中训练一个鲁棒的深度降分器。我们的训练方法是直观的,并且产生的降分器并不和特定的编码器及其相关实现方式相关联。尽管如此,我们需要对训练结果进行彻底的评估,以证明它在Netflix编码流程里的广泛应用潜力。

利用神经网络改善Netflix视频质量

深度降分器的目标是提高Netflix端到端的视频质量。通过我们的实验,包括客观测量和主观视觉测试,我们发现深度深压缩提高了各种传统视频编解码器和编码配置的质量。

例如,对于VP9编码,并假设一个bicubic升分器,我们测量到深度降分器比传统的Lanczos降分方法平均提高了5.4%的VMAF Bjøntegaard-Delta (BD)率。我们还测量了约4.4%的VMAF-NEG BD率的增益。下面我们展示了Netflix标题中的一个例子。深度降分器(红点)在类似比特率下提供了更高的VMAF,或在更低比特率下产生类似的VMAF分数。

f20f6a4508e7f7653be8b2cf88afa421.png

 除了客观的测试以外,我们还进行了主观测试研究,以验证深度降分器的主观视觉改善。在我们的基于偏好的视觉测试中,我们发现,约77%的测试受试者在编码配方和升级算法的广泛范围内更喜欢深度降分器呈现的最终质量。受试者报告了更好的细节保存和更清晰的视觉外观。个可视化的例子如下所示。

f69892f6ec95b658fc3553f7bd964a5e.png

左:Lanczos降分器;右:深度降分器。这两个视频编码与VP9在相同的比特率和升级到全高清分辨率(1920x1080)。您可能需要放大查看视觉差异。

我们还进行了A/B测试,以了解深度降分器对流媒体播放的整体影响,并尝试检测任何设备的播放问题。通过A/B测试,我们看到了QoE的改善,并确认了深度降分器并没有对某些设备产生不利的影响。

我们如何有效地大规模部署神经网络?

鉴于我们的规模,应用神经网络可能导致编码成本的显着增加。为了有一个可行的解决方案,我们采取了几个步骤来提高成本效率。

• 深度降分器的神经网络架构的设计原则是:在避免负面的视觉质量影响的前提下提升计算效率。例如,我们发现只需几个神经网络层就足以满足我们的需求。为了进一步减少输入通道的使用,我们只对亮度通道采用神经网络,而对色度通道采用传统的Lanczos滤波器进行缩放。

• 深度降分器的实现使用了FFmpeg软件的滤波器接口。这样的好处是可以与其他视频转换(如像素格式转换)等已实现的功能一起运行。我们的过滤器可以在CPU和GPU上运行。在一个CPU上,我们利用Intel的oneDnn以进一步减少延时。

将神经网络集成到我们的下一代编码平台中

Netflix 的编码技术团队和媒体云工程团队共同创新开发了名为Cosmos 的下一代编码平台。通过深度降分器在其上面的实现,我们很好地展示了Cosmos能够如何推动Netflix未来的媒体创新。下图显示了深度降分器是如何被集成到Cosmos的编码微服务中来的。

0cad9ca725592f8b65f32f31407d0b0a.png

将神经网络集成到我们的下一代编码平台中

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


▼识别二维码或猛戳下图订阅课程

24bcbc625de093edb750bff6c5ccccca.jpeg

喜欢我们的内容就点个“在看”吧!7614f23ffb7f20f9492b7000403750b6.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C罗轮播图(HTML+CSS+JS)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:前端案例分…

RFM 模型

RFM 模型顾客价值分析顾客价值分析 由于激烈的市场竞争,各个公司相继推出了多样灵活的优惠方式来吸引更多的客户。 对一个没有购买力的顾客,你打电话推销优惠活动毫无作用,可一个高价值顾客,会说有优惠活动怎么不通知我呢&#…

交叉梯度函数的MATLAB实现及代码分享02

交叉梯度函数的MATLAB实现及代码分享02 交叉梯度函数可用于反演成像中。作为一个连接不同物性参数的桥梁,交叉梯度函数可以实现不同物性参数的联合反演成像。 本文是对上一个博文的补充,详见交叉梯度函数的MATLAB实现及代码分享01,上一篇博…

人工智能导论课堂笔记

人工智能导论时间:2022年10月19日下午 班级:2022级人工智能应用技术1班 作业问题: Python安装注意事项 1.下载Python3.X的版本,如:3.10, 3.9, 3.8,不推荐下载2.7版本(已经不使用&…

【Mysql】慢sql分析优化案例汇总

【Mysql】慢sql分析优化案例汇总(一)案例一:阿里云慢sql挑战赛实战(一)案例一:阿里云慢sql挑战赛实战 190毫秒干到2毫秒 【1】表结构 【2】待优化sql 【3】第一次explain分析 【4】选取驱动表 优先选择…

java项目_第174期ssm高校信息资源共享平台_ssm毕业设计

java项目_第174期ssm高校信息资源共享平台_ssm毕业设计 【源码请到下载专栏下载】 今天分享的项目是《ssm高校信息资源共享平台》 该项目分为3个角色,管理员、学生、教师角色。 学生可以浏览前台,包含功能有: 首页、课程信息、教学资源、新闻资讯。 教师…

Linux Kernel 6.0 CXL Core pci.c 详解

文章目录前言相关链接Ref正文前言 CXL 是一个比较新的技术,所以我研究的内核源码是选了当前比较新的内核版本 linux 6.0。打算将内核关于 CXL 的驱动进行解析一遍,一步一步慢慢来。 在阅读之前,希望读者能有一定的 PCIe 基础知识&#xff0…

java计算机毕业设计ssm智能线上教育mo0l5(附源码、数据库)

java计算机毕业设计ssm智能线上教育mo0l5(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。…

性能测试知识之三大模型

今天的这篇文章我会聊聊在实际工作中开展性能测试,前期最核心的工作。即业务模型、流量模型和数据模型这三大模型,该如何评估和建立。在性能测试工作中,业务模型、流量模型和数据模型是至关重要且必须在项目中构建的,否则很可能导…

【算法分析与设计】【期中(末)复习题】【2022秋】

文章目录一. 单选题二. 填空题三. 判断题四. 多选题一. 单选题 1.按照渐近阶从低到高的顺序排列下列表达式&#xff1a; 30n&#xff0c;2logn&#xff0c;4&#xff0c;n! A. 4<30n<2logn<n! B. 30n<4<2logn<n! C. n!<4<2logn<30n D. 4<2logn&…

YOLO算法改进之结合GradCAM可视化热力图(附详细教程)

🎄🎄YOLOv5/v7改进之结合GradCAM可视化热力图(附详细教程)🎄🎄 🚀🚀🚀NEW!!!魔改YOLOv5/v7目标检测算法来啦 ~ 🐱‍🏍 计算机视觉 —— 致力于目标检测领域科研Tricks改进与推荐 | 主要包括主干网络改进、轻量化网络、注意力机制、检测头部改进、空间金…

主数据管理(MDM),数据中台,国内有哪些知名供应商呢?

当企业的信息化、数据化发展到一定阶段的时候&#xff0c;大部分企业都会对主数据管理产生需求。为帮助企业加速数字化建设步伐&#xff0c;亿信华辰凭借多年在行业领域内积累的丰富经验并结合相关大数据技术成功打造了一款主数据管理产品&#xff0c;覆盖主数据标准、主数据质…

019 | 探究布衣上的刺绣图腾文化功能——以贵州册亨县布依族刺绣为例 | 大学生创新训练项目申请书 | 极致技术工厂

研究目的 当今我国社会的主要矛盾是人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾。但经济增长过快所带来的联动效应&#xff0c;导致人们一定程度上只注重金钱、利益&#xff0c;从而忽视了培养高尚的理想信念和增强民族精神的重要性。社会要保持平衡性&#xff…

基于低代码平台设计的订单管理系统,助力家具行业信息化建设

编者按&#xff1a;随着信息化的高速发展&#xff0c;传统的人工订单管理模式已经不适合现在企业发展的需求&#xff0c;一个成熟的订单管理系统可以帮助企业解决订单管理混乱的问题。本文介绍了低代码平台在订单管理系统实现方面的优势&#xff0c;并展示了相关案例。 关键词…

PE文件详解

字节存放顺序是小尾存储&#xff0c;高位保存高字节、低位保存低字节&#xff0c;因此是两位两位倒着读 1、DOS头&#xff1a;包括MZ头和DOS存根&#xff0c;指向DOS可执行程序部分 &#xff08;1&#xff09;MZ头&#xff1a;长度 40H&#xff0c;即4行乘16位&#xff0c; e_…

mmap

文章目录使用示例函数原型mmapmunmap传统读写文件mmap 原理eager实现lazy实现缺点使用示例 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <sys/mman.h>int main(i…

高并发编程之阻塞队列

9 阻塞队列 9.1 BlockingQueue 简介 Concurrent 包中&#xff0c;BlockingQueue 很好的解决了多线程中&#xff0c;如何高效安全 “传输”数据的问题。通过这些高效并且线程安全的队列类&#xff0c;为我们快速搭建 高质量的多线程程序带来极大的便利。本文详细介绍了 Bloc…

十四、JavaScript——类型转化_数值

一、定义 将其他的数据类型转化为数值 使用Number()函数来将其他类型转化为数值&#xff0c;适用于任何类型使用parseInt() -- 将一个字符串转化为一个整数 -解析时&#xff0c;会自作向右读取一个字符串&#xff0c;直到读取到所有的整数位 parseFloat()…

想学设计模式、想搞架构设计,先学学 UML 系统建模吧

UML 系统建模 1 概述 1.1 课程概述 汇集 UML 及其相关的一些话题回顾 UML 相关的符号与概念以电商订单相关业务为例&#xff0c;借助 UML 完成系统建模将 UML 变成提升建模效率&#xff0c;表达架构思想的工具 1.2 什么是 UML ​ Unified Modeling Language 统一建模语言&a…

MEMS运动传感器:三轴数字输出陀螺仪——L3GD20

一、框图和引脚说明 二、机械和电气规格 三、应用 四、数字框图 4.1 框图 4.2 FIFO L3GD20为三个输出通道(偏航、俯仰和滚转)分别嵌入了32个16位数据FIFO槽。 五种模式&#xff1a;Bypass mode、FIFO mode、Stream mode、Bypass-to-Stream mode and Stream-to-FIFO mode。 …