首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【视频编码】 Content Aware ABR技术(十二)

在本系列前面的帖子中,我们连续梳理了Netflix、YouTube、Beamr、EuclidIQ、Bitmovin、Harmonic、V-Nova、Cisco、MediaMelon、AWS Elemental及Mux在CAE (Content Aware Encoding) for ABR领域的一些进展,本文将简要介绍一下编码优化领域的另一位成员 — ZPEG在这方面的技术动态。

近年来,随着互联网和智能终端设备的普及和发展,视频流数据传输已占到互联网带宽的大约80%。而视频服务提供商每年都需要花费巨额成本用以传输和存储视频流。虽然当前新一代的视频压缩标准能够有效提升编码性能,但在实际使用时需要大规模部署新的硬件软件Codec。目前,比较可行的方法是在不改变现已部署的编码器或解码器的情况下利用新的编码优化技术来降低视频编码所消耗的码率。

ZPEG提出了一种新的视频编码预处理技术Pre-Processor,可以在将源视频送到编码器之前尽可能地消除视觉冗余,从而减小压缩后码流文件的大小。ZPEG宣称这项技术为MPEG-2,AVC,HEVC,VP9等编码器增加了近20%的压缩增益。该项技术的主要特点是对输入的视频信号通过3D变换进行去相关,然后将先进的HVS模型作用于变换域信号上(即去相关后的基矢量,decorrelated basis vectors)。在编码中所产生的视觉失真还可以被精确地根据观看距离和帧速率进行优化调整。此外,该技术还结合新的多分辨率熵去除算法(multiresolution entropy removal algorithm),在从服务器推送视频流时,可以即时适应不断变化的信道条件。

ZPEG推出的Pre-Processor预处理技术可以进一步增加视频压缩率,从而降低存储和传输成本,同时保持与原来相同的视觉体验。预处理技术自然不需要对编码器或解码器做出修改,可以与兼容不同编码标准,因此可以将Pre-Processor作为一个预处理模块无缝添加到现有处理框架中,如下图所示。ZPEG Pre-Processor是基于HVS模型实现的,该模型支持per-asset optimization编码优化,压缩性能更高,并且不会带来新的可察觉的失真(如块效应、重像等)。同时,ZPEG Pre-Processor在消除时间冗余方面的效果要比编码标准中的算法更好。ZPEG声称可以找到并消除基于运动估计编码器(H.264,H.265,VP9等)本身无法解决的冗余问题。主要原因在于这些Codec提取时间冗余的方式,即找到运动补偿向量,然后记录像素块之间差异或误差项。然而,目前没有较好的理论来量化两个视频宏块之间的差异,这也是效率达到极限的原因所在。

ZPEG官网(www. zpeg. com)提供了一个demo页面,允许访问者将视频文件上传到后端并进行测试。处理完成后,可以下载并比较视频内容的原始版本和预处理版本的编码质量。

具体地,达到这一效果的方式如下:

1. 将源测试视频压缩到一个目标码率,如6Mbps

2. 确定压缩视频与源视频的均方误差

3. 使用ZPEG技术对源文件进行预处理

4. 压缩经过预处理的文件,直到达到相同的均方误差

5. 测量并比较最终编码的码率

与只用标准编码器压缩的码流版本相比,当达到相同均方误差时ZPEG测量了码率节省,其期望是在达到视觉等效的质量时使用的码率更低一些。由于HVS模型是非线性的,要比简单的误差度量复杂得多。ZPEG最初使用equal-QP方式来开发带宽节省模型,但是经过技术演进已经可以适用于实际的视频流传输应用。ZPEG将原始的和预处理后的YUV文件压缩到固定的“目标”带宽,并提取“平均QP”作为MSE的度量。然后,再将预处理内容重新压缩到与基准相同的平均QP水平。以下部分举例说明了平均QP以及期望的码率节省值的计算。

A.未经过预处理的YUV由x264编码后输出的编码日志:

x264 [info]: frame I:16 Avg QP:18.20 size:1511247

x264 [info]: frame P:1303 Avg QP:21.44 size:137573

x264 [info]: frame B:2668 Avg QP:24.94 size: 10435

原始文件平均QP计算如下:

((16 * 18.20)+(1303 * 21.44)+(2668 * 24.95))/(16 + 1303 + 2668)= 23.78

B.经过预处理的YUV由x264编码后输出的编码日志:

x264 [info]: frame I:16 Avg QP:17.44 size:1170226

x264 [info]: frame P:1307 Avg QP:20.61 size:142855

x264 [info]: frame B:2664 Avg QP:25.08 size: 11117

预处理文件平均QP计算如下:

((16 * 17.44)+(1307 * 20.61)+(2664 * 25.08)/(16 + 1307 + 2664)= 23.58

则预期的码率节省可以计算为:

1 - 2 ^((23.58 - 23.78)/ 6)= 2.3%

因此,前述码率节省的测试步骤可变为:

1. 将源视频压缩到某一预定码率,取平均QP。

2. 预处理源视频,并压缩经过预处理的视频到同一码率,取平均QP。

3. 以这个“平均QP”为测度,可以从以下两个方面来考量:

(1)根据“平均QP”的差异,估计码率的增益;

(2)反复调节参数,使得“平均QP”相同,再来看码率的大小。

ZPEG是如何工作的?

ZPEG预处理技术声称实现了与视觉系统的物理过程(包括调制阈值、神经传导速度、神经系统噪声等)在数学模型上的等价,这在MPEG压缩标准中基本没有被仔细考虑。这些不同技术的互补结合可以产生更加有效的压缩效果。ZPEG Pre-Processor是一种将HVS模型应用在去相关变换域(decorrelated transform domain)的技术。去相关的变换域在理论上可以支持去除难以察觉的视觉冗余信息。ZPEG的HVS模型要比常规模型要更精细,可以将模型校准到一个指定的观看距离,从而在实现所期望视觉质量的同时从视频流中去除所有不可察觉的信息。

经过预处理过程后,已经去除了不可察觉信息的视频内容被送到传统的标准编码器进行编码处理并输出编码后的比特流。因此,最后得到的视频内容更加“简洁”,每个帧所消耗的比特数更少,因而比特率更低。

与此同时,根据ZPEG的介绍,ZPEG Video Codec视频编解码器采用与预处理器相同的HVS模型,可以提取所有视觉冗余信息。其中,ZPEG熵去除技术(entropy removal technique)根据视频源的统计信息预测熵上下文,以减少编码视频文件的大小,因此单个编码视频流可在任何所需带宽或VR视角下提供最佳观看体验。作为纯变换域编解码器,ZPEG Video Codec可以提供no-zero-buffering延迟。对于广播技术而言,格式转换过程需要对视频内容进行插值来预测丢失的数据。由于ZPEG在变换域中所产生的视频信号在统计上比较理想,所以ZPEG技术对缺失数据的预测在统计上也是相对最优的,使得ZPEG格式转换技术能够实现较好的视频质量。此外,ZPEG技术还可以实现全参考主观质量监测(full reference subjective quality monitor)。

相关测试结果

虽然出于带宽节省的目的总是期望视频数据比特率更低一些,但一般更低的比特率意味着会出现可见的编码失真。ZPEG Engine作为ZPEG预处理技术的完整模块,可以用来改善MPEG-2、H.264、HEVC、VP9等编码器的编码质量。基于HVS模型的预处理技术可以针对每种输入视频做出优化,有效去除视觉冗余信息。目前,ZPEG Engine模块可以实现对x264等编解码器的优化升级。

下面给出的测试及其结果主要关注ZPEG Engine作为x264的附加技术模块进行优化的实际效果(本次测试以x264为例,其他Codec也适用),即确定ZPEG技术能否在不引入视觉失真的情况下有效节省测试序列的编码比特率。该测试主要由x264 LLC 合作者CoreCodec与Streaming Learning Center(SLC)合作完成。

ZPEG为SLC提供了带有ZPEG Engine的x264版本,其中ZPEG Engine预处理模块通过命令“- - ZPEG”与“- -no-zpeg”进行打开或关闭。同时,SLC选取了不带有ZPEG Engine的x264公开版本作为对标的Codec。

为了测试ZPEG Engine模块的效果,SLC选取了15个1080p源视频片段作为测试序列,其中包含Movie类型,Business类型,动画类型等,可以测试ZPEG Engine在不同类型视频上的性能表现。SLC分别使用带和不带ZPEG Engine的x264编码器进行编码,并默认使用constant rate factor(CRF)模式,“- - CRF 23”。CRF简单来说是一种per-title编码,会使得编码码流达到确定的质量级(target quality level)而不是确定的比特率。根据经验,CRF取23时可以产生与iTunes上的Hollywood电影和TV show近似的编码质量。最后,SLC对编码结果进行了总结,并使用一些工具进行了主观质量比较。

SLC使用的编码机器是HP ZBook Studio G3 notebook,配置为2.81GHz Intel Xeon E3-1505M CPU,32 GB RAM。经过测试发现,ZPEG Engine是一个相对CPU密集型的程序,例如对于时长五分钟左右的Zoolander片段,其处理时间如下如所示,可以看出,ZPEG的处理时间增加了近一倍。

根据ZPEG Engine模块在所有测试序列上的编码结果,可以发现ZPEG Engine能够有效降低比特率带宽,而几乎没有出现可察觉到的块效应失真。

下表给出了在上述不同类型视频片段上的详细测试结果,可以看出平均码率节省的幅度是比较可观的,达21%。例如,对于电影剪辑类型的视频片段,平均码率节省达27.5%,其中Hunted片段的节省高达33%。对于Business类型的视频片段,平均码率节省达24.6%。对于动画类型的视频片段,效果不如前种类型,平均只有11.5%。例如,对于Tears of Steel,由于是CG(计算机绘图)和现实世界内容的混合,ZPEG产生的效果一般(10.4%),而对于纯动画类型的Ironman则只有3.2%的码率节省。

另外,对于一个Talking Head视频,比特率降低了38.36%,VMAF降低2.68,PSNR降低1.58dB。通过实时播放和frame-by-frame查看时,没有发现比较明显的视觉差异。

下图给出了Talking Head的Quality Map view (SSIM Plus Quality of Experience Monitor, SQM) 图,两者差异也非常小。在ZPEG的结果中,脸部和头部附近的噪声要少一些。

下图展示了PSNR波动图,其中绿色线表示无ZPEG的编码结果,红色线表示含ZPEG的编码结果。可以看到两者有一些差异,经过ZPEG处理后的码流客观质量有一定的降低,但比特率的节省幅度更大一些。

另外,对于Elektra电影片段,比特率节省高达30%,从side-by-side对比中可以看出色彩和曝光几乎是相同的,除了脸部的斑点变少以及皮肤更加平滑外没有发现其他太过明显的视觉失真,实时播放时不会轻易察觉到这些不同。

参考文献

http://www.zpeg.com/visual-preprocessor/

https://streaminglearningcenter.com/blogs/zpeg-engine-x264-cuts-data-rate-21-without-artifacts.html

https://streaminglearningcenter.com/wp-content/uploads/2018/04/ZPEG-Technology-Report_final.pdf

https://forum.videohelp.com/threads/380675-Announcing-ZPEG-Demonstration-Site-Works-with-h264-h265%21

下一篇
举报
领券