对于下一代编解码技术H.266/VVC标准,相比前一代H.265/HEVC标准,可以在主观质量不变的情况下节省约50%的码率。H.266/VVC标准之后是否还会有新的标准,如果有,可能涌现出哪些新技术?此外,在有限的码率下,如何设计高效的视频编码压缩方案,为用户提供最佳的视频画质体验。本次LiveVideoStackCon 2021北京站我们邀请到了火山引擎资深研究员——刘明和火山引擎资深研究员——罗亚,两位老师分别为大家详细介绍视频编码标准中的新技术,以及对下一代标准的探索;火山引擎视频云在视频的自适应编码优化和画质评估方面的探索与实践,探讨如何高效地优化不同内容视频的编码,在保证画质的前提下,尽可能的节约视频码率。
文 | 刘明,罗亚
整理 | LiveVideoStack
视频编码技术现状和展望
大家好,我是来自火山引擎多媒体实验室的刘明,本次分享的题目是视频编码技术现状与展望。
所在的团队主要负责新技术的研发,包括参与H.266/VVC标准的制定,同时承担公司编解码器内核的研发。本次分享主要分为两个方面:H.266/VVC标准和传统编码方法外的探索。
1. H.266/VVC标准
第一部分主要介绍H.266标准与前一代的区别、特点;字节跳动在标准制定过程中的贡献;字节自研的编码器。
1.1 H.266/VVC标准简介
H.266编码器与前一代H.265标准相比,大家最关心以及最重要的是压缩性能的提升,在主观质量相当的情况下,可以节省50%码率,比较大地节省了带宽成本。在它基础版本中增加了多个功能:屏幕视频编码、自适应分辨率、全景视频编码。
首先是屏幕视频编码,它不是一个新的技术。在H.265中已经对屏幕视频编码进行研究,但没有放在H.265的基础档次中,解码器角度对其支持不太友好。在H.266中,直接将屏幕视频编码相关技术放在基础档中,其中最重要的是intra block copy技术。上图中举简单例子,在这个屏幕视频中PPT的内容,两部分内容完全一样,第二个块可以完全使用第一个块的内容,所以它叫block copy,类似于帧间预测。这个技术可以有效提升屏幕视频编码效率。编码端运用其他技术例如基于哈希的运动搜索,对于屏幕视频编码也有很大帮助。
其次是自适应分辨率,它比较实用。在视频通话中网络可能会不稳定。在H.265标准中遇到网络差可能会损失画质,如果不改变分辨率只能压缩的更狠,损害画质;如果想要改变分辨率往往需要插入帧内编码的帧,其本身非常耗码率,没有特别好的解决办法。H.266中,直接支持自适应分辨率,当网络状况变差时,可以直接从高分辨率切换至低分辨率;如果网络状况转好,可以切回至高分辨率,以较好地适应网络。
最后是全景视频编码,它引入独立子画面编码(Independent subpictures)。上图的例子中每个红色方格是一个独立的子图像,全景视频编码,观看者在每个时刻看的是一个视野内,无需整个视频。例如看的是中间的两个子图,这两个子图的编码不依赖其他子图,编码和解码比较独立,便于在视角切换时切换到其他子画面,比较有效的节省带宽,不用像H.265标准需要编码器限制等实现,H.266直接在基础档次中支持。
另外在编码过程中,H.266引入了Wrap around运动补偿技术,思想比较简单,如果图片左边的参考内容超出图像边界时,可以到图像右边取块。原因是它是球面图,左侧和右侧的边界相邻,0度和360度,内容连贯,如果左侧参考图像超出图像边界,很可能跑到右侧。这样做运动补偿,效率比较高。
以上是H.266支持的特性,都是面对应用的。
1.2 字节跳动贡献介绍
刚刚介绍了H.266新特性,牵扯到编码性能技术不展开。在H.266制定过程中,字节跳动从2018年下半年开始团队积极参与,贡献技术涉及很多方面。我罗列了一些。其中前两项技术是字节跳动主导提出的:一是基于历史信息的运动矢量预测技术;二是仿射变换自适应的运动矢量分辨率技术。右图是来自第三方的图,列了第三方的源,显示不同公司在H.266、H.265中的贡献,可以看出字节跳动在第三名左右,也是前五名内唯一没有参与过H.265标准制定的公司,取得成绩还可以。
1.3 字节视频编码器
所在团队除了新技术的预研,还承担公司编解码器内核研发,有多个完全自研的编码器、解码器。我们参加了去年MSU比赛,在多个指标中成绩不错,很多指标都排在第一位。关于解码器我们有H.266,8K实时解码Demo,感兴趣可以看一下。
2. 基于深度学习的环内滤波器
除了传统标准之外,介绍基于深度学习的探索。H.266标准制定后,很多人会思考,还能不能有下一代标准H.267,现在在JVET社区有预研性质的探讨。一是传统编码,在H.266框架下继续研究新技术,与H.266标准相比有超过13%码率节省。二是基于深度学习的探索,很重要的原因是视频内容非常复杂,有很多理论分析,大部分都是基于比较简单的概率分布假设去推导的,它可以给我们定性的甚至是定量的指示,但没办法给到视频压缩的上限。基于深度学习的技术能够给出可以实现的上限。虽然离实际应用较远,但还是会对传统技术研发有启发。
我们在JVET社区中提过此提案,目前在此类技术中性能最优。我列出了其压缩性能,如果看三个通道的综合压缩比,本身可以节省16%码率。如果考虑传统编码已经有13%多一点的码率节省,加在一起可以达到约25%的节省,所以对视频编码技术继续预研有指导性作用,是否能在短期内研发出下一代标准还需要大家继续探索。
上图列出了滤波器的结构,可以看到结构比较简洁,中间用了32层的ResBlocks,同时Resblock中引入了注意力机制。
另一个特点,除了模型之外,我们也引入了多个网络模型,每个slice/CTU可以决定是否使用模型,如果使用,可以在模型列表中选择决定用哪个模型。另外它还区分了高、低时域层帧,不同的时域层运用不同的可选模型列表。以上是主要技术的介绍,除了编解码方面,火山引擎在画质提升上也做了很多探索,在多链路上做画质分析。对于低质视频做质量提升、增强和修复,这些技术在多项产品中得到应用,经过海量视频检验,形成了一套智能处理的产品,如果大家感兴趣,可以来我们的展台申请试用。
以上是我的全部分享。
视频自适应编码优化和画质评估
前面刘明主要讲解了编码标准和字节在编解码器方面所做的工作,我主要分享在自适应编码优化和画质评估这两方面做的工作。
首先将从以上四个方面来介绍相关的技术。第一个部分主要介绍基于感知优化的视频处理编码系统,随后具体介绍系统中一些相关的技术。第二个部分会讨论字节的画质评估体系以及自研的画质评估相关算法。
1. 基于感知优化的视频处理编码系统
首先是第一个部分,基于感知优化的视频处理编码系统。
1.1 端到端视频传输系统
首先想分享一下我们端到端自研的传输系统。字节音视频技术包括火山引擎提供了对外的视频云服务,相关技术覆盖了从视频生产、管理到消费的整个生命周期。从生产管理到消费都有相关技术进行支持。生产端侧重在于如何帮助用户生成更多优质的内容,提供很多编辑相关工具;服务端对上传的视频进行进一步的画质增强以及高效的压缩,希望在服务端在画质上有所提升;消费侧基于推荐系统、上下文信息等等进行智能分发,显示上做一些增强。整个过程中,核心思路是希望结合视频内容以及上下文的信息进行自适应感知优化,从而使用户的视频体验达到最佳。
1.2 基于感知优化的视频处理编码系统
本次想重点介绍的是服务端的视频处理编码系统,这个系统包含了上图中几个重要模块。
第一个部分是视频分析模块,它主要对视频内容、特征进行一些理解、分类及检测,为后面流程提供信息,做定制化优化。
第二个部分是视频处理系统,主要集成了一些视频的修复、增强算法,比如常见的超分、倍帧、降噪、锐化等等,可以有效提升视频的画质。
第三个部分是视频编码模块,除了之前有介绍的自研编码器以外还实现自适应的算法,能够对视频进行高效的压缩,在保证视频画质的前提下,尽可能缩小视频的体积。
另外还有底层的异构计算平台用于支撑这些算法所需要的算力,会有CPU、GPU、FPGA、ASIC等工具。很重要的是在顶层有视频画质评估体系,可以帮助了解视频实际画质,对于在做相关算法设计时有评判标准,如何进行优化,决定算法是否可以上限。
画质评估也有很多用途,例如做一些大盘的画质信息统计以及相关单点诊断工作。
2. 字节自适应编码技术
接下来我会具体介绍系统中两个相关的自适应编码技术。
2.1 感兴趣区域(ROI)检测+编码
第一个是ROI编码,其基本原理是用户对显著性区域的视频质量比较敏感,希望通过检测+编码来提升显著性区域的画质,以提升用户体验。ROI本身已经被广泛的研究和使用,但这强调的是字节有两个核心优势。
第一是ROI的分析模块,字节拥有非常丰富的视频内容,包括PGC以及带有各种特效、滤镜的UGC内容。我们有资源创建了自研的多场景数据库用于算法训练,同时字节也有非常好的AI算法基础,叠加了自建数据库和有效AI训练。ROI检测达到了很高的准确率同时在性能成本上做了非常多的优化,在CPU上1ms每帧的处理速度,在GPU上3ms每帧处理速度,实现多场景覆盖。
另一个优势是ROI编码算法集成在自研的高效编码器上,有很好的压缩性能。这个ROI编码技术能够达到非常好的效果,全面应用于字节的视频业务,不仅取得带宽成本的收益,用户指标,包括平均观看时长等等也有显著的提升。
上图播放了检测ROI区域的信息视频。
2.2 内容自适应编码
第二个是基于内容的自适应编码技术,核心是希望根据每个视频的统计特性,选择最优的编码参数进行编码。这个技术包含两个主要模块:第一个是视频的预测模型,主要通过提取视频的内容特征以及基准线编码中获得了相关码流及画质信息,来预测每个视频在不同编码器以及编码配置下的码率和画质;第二个是再通过一套自适应的决策算法,根据视频的预测RD曲线以及上下文信息,选择合适的编码参数,生成最优的视频档位。
2.3 预测模型
上图展示的是预测模型的框架图,这个模型通过特征提取和预编码做视频RD曲线预测。优势有:一低运算复杂度,特征提取预编码是在较低的分辨率上面进行,速度很快,且可以支持多个分辨率、多种编码参数的预测,一入多出,一次提取获得全面结果;二高精度,采用了大量数据训练和多次的算法优化迭代,做了视频分类,在每个类别中单独设计模型,比较有效提升了预测模型的准确度。右侧图例就展示了某个视频的预测结果和实际编码结果。
2.4 总结
总体来说,我们的自适应编码技术已经形成了一套比较完善的体系,通过特征提取、预处理来进行码率质量预测,根据预测结果做相关决策,启动转码流程,整个过程可以有效的对视频编码进行优化。
算法的好处适用范围较广,可以与编码器升级迭代、业务上下文优化及智能播放策略等有效的叠加,产生比较好的收益。整体的码率和用户指标收益已经在字节的多个业务上获得的验证。它有一些衍生的应用,根据不同内容的视频,进行定制化优化的核心思想被应用到了很多其他场景,上文提到的是点播服务端的场景,更多的是支持抖音、西瓜转码业务,核也被用到了上传端的合成编码、图像自适应编码以及直播的推流转码优化中,取得比较好效果。
3. 字节画质评估体系
接下来介绍一下字节的画质评估体系。
图表概述了我们整个评估体系的情况。从能力上来说,我们设计了多种画质评估相关算法,可以从多个维度对视频画质进行评测,同时实现了功能比较完善的评测平台做自动化的画质评测数据输出,也建立了线下测评实验室进行各种专家测试并集成了线上统计系统,对大盘数据比较有效的统计。在应用场景上,画质评估来判定转码算法增强算法是否上线标准、算法调优也可以根据评估结果进行,对大盘进行统计、对单个视频进行诊断修复。从测试方法上来说,我们支持客观评测、线下专家评测以及用户众测,也有完善的线上AB实验系统。
3.1 字节画质评估算法
介绍一下刚才提到的细节,我们开发多种画质评估算法,常见的有参和无参,有参的指标集成了业界广泛集成的如PSNR、VMAF等指标。无参自研的算法有VQScore、用于做画质评估。在指标上还支持多维度细指标。上图中,举了一些简单例子:对视频进行美学评估、对噪声进行评测、对色彩进行评测等。另一个比较重要模块是还有检测分析工具,不仅仅纯粹从画质角度,也希望对内容进行了解,有一些特点类型例如三明治、伪高清的视频的检测等。这是评估算法上做的工作。
3.2 字节画质评测平台
3.2.1 评测实验室/客观评测/监控
评测平台主要展示的是提到过的线下实验室做主观专家评测,同时也有线上客观评测平台做自动客观数据统计,我们有大盘统计系统,关注线上实时画质情况。
3.2.2 主观评测
另外评测平台比较重要的部分是我们有完善主观评测平台,支持了在PC端 、安卓、IOS多种平台、多种展示模式,多种打分机制如传统的MOS和对比打分方法并集成自动数据分析的能力,采集结果很快在后台有非常完善数据的统计。
4. 字节自研画质评估算法
最后介绍自研的画质评估算法。
4.1 创建主观标注数据集
画质评估算法,最大的一个痛点就是主观标注数据集,以前的主观标注依托于学校实验会去做线下评测,本身主观实验非常耗时耗力。而在这方面,我们有多方面的优势,包括丰富的视频内容包括UGC视频上覆盖特效贴纸等,从视频形态上例如上图展示的三明治视频有各种编辑工具产生的特定视频,UGC内容常会有多样化失真内容,例如暗场景失真,通过字节会有比较丰富视频内容。我们有成熟的主观评估工具以及专业的标注团队支持,创建了多个主观数据集,不仅覆盖多场景、多种应用,点播直播场景,可以做多种细指标标注。不仅仅是简单打分,还对具体噪声或是伪高清问题进行分析。我们的数据集里尽可能覆盖了各种特性的视频。
4.2 画质评估算法开发VQScore
算法训练上,使用了常见的预训练的特征网络,在公开以及内部的多个数据集上进行联合训练和调优,最后得到较好的效果。算法上也进行多次迭代,包括针对特定场景进行训练优化,开发出的模型会有通用以及用于特定场景的模型。
4.3 VQScore性能验证
这里展现了算法性能。我们的算法在公开或内部的数据集上验证过有比较稳定的表现。在同样的公开数据集上与其他算法对比,也获得了最好性能。我们参加了ICME2021的主观UGC画质评估比赛,其中无参算法画质评估,获得赛道的第一名。
以上就是本次主要分享探讨的主要技术,谢谢。