Beamr:CABR(闭环内容自适应编码解决方案)

发布时间 2023-06-16 16:32:36作者: stardsd

Content Aware ABR技术

本文将简要介绍一下编码优化领域的一位新贵—Beamr的技术动态。

Beamr是内容自适应视频编码与优化解决方案的提供商,致力于为MSO(Multi-System Operator,多系统运营商)和OTT(Over The Top,流媒体服务商)提供视频技术支持,如Hollywood studios以及视频分发平台等。该公司成立于2009年,总部在以色列特拉维夫,此外在Palo Alto (帕罗奥图,美国加州)以及St. Petersburg(圣彼得堡,俄罗斯)等地也有分部。Beamr于去年收购了H.264/H.265 编码厂商Vanguard Video,并获得了1500万美元的融资。之后通过将其特色的视频优化技术集成到Vanguard Video的编码器中,能够以较低的码率达到较高的编码质量。对于内容分发商而言,在给定码率下最大化视频质量是一直追求的目标,因此这类解决方案会受到视频服务商的关注。

近期,Beamr发布了质量驱动的内容自适应HEVC商业软件编码器,Beamr 5x。其宣称他们的HEVC视频输出码率节省能多达50%。Beamr 5x最核心的是其自主研发的内容感知优化技术,让我们来一探究竟。

1 Beamr的视频质量工具

编码失真是每个视频编码专业人员重点关注的对象。对于大部分互联网用户来说,当下能获得的视频码率平均在3Mbps左右。在这个码率下,规模化压缩视频文件时需要一套有效的度量工具或算法来检测和分析编码失真。

常用的视频质量评价指标是PSNR和SSIM,两者都是全参考图像质量评价模型。PSNR数学表示简洁,便于分析,但不能很好的反映视觉上失真。SSIM一定程度上反映了视觉感知特性,将图像质量降级作为图像结构信息的一种视觉偏移,其中包括了一些重要的感知细节,例如亮度以及对比度掩盖等,如下图所示。

图 1 SSIM计算流程

SSIM基于的假定是,像素之间具有较强的依赖性,这种依赖性包含了相邻帧或场景中物体的结构信息。简单而言,SSIM就是用于计算两幅图的结构相似度,取值范围在[0, 1]之间,SSIM值越接近于1,则区域x和y之间越相似,也即图像质量越高、失真越小。SSIM的提出相对传统指标PSNR而言是一重要进展,而PSNR被证明与人眼视觉特性并不相关。但SSIM本身并不是完美的,在某些场景下仍会估计错误。如图2所示,左图是原图像,右图是压缩之后的图像,左右两幅图在视觉上非常相近,但右图的PSNR和SSIM的计算结果并不高,显示两幅图差异较大。而MOS (mean opinon score) 主观打分结果显示两幅图差异很小。

Beamr开发了一套新的全参考质量评价工具,其官方宣传具有如下技术特点:1)经过大量训练,能够有效检测和刻画视频块编码失真;2)CPU资源的占用和消耗比较低;3)考虑了了视觉显著性及时域失真;4)与主观评价相关性高(见图2例子)。

图 2 几种视频质量评估工具的效果对比

质量评估工具也可用于调控视频的编码压缩(通过QP),使得编码器在保持视觉质量不变的情况下最大限度地压缩源视频。应用于编码时基本步骤是:首先对源视频进行正常编码,然后通过反映视觉失真的全参质量评价工具检测重建质量,接下来根据目标RD效率调整量化参数(+/-QP)重新编码,如图 3所示基本框架。

图 3 Beamr质量评估工具反馈编码过程

Beamr宣传其质量评估工具集成到编码器后,能够比目前标准兼容的基于块的编码器减少额外高达50%的码率,而不会影响图像视觉质量。这个做法非常类似于Netflix,采用VMAF对不同切片进行不同{码率,质量}的大规模编码组合,遍历寻找最优的编码控制点。

不过更理想的做法是内容自适应编码优化技术,将质量评估(Distortion)和编码器做紧耦合,实现RDO和码率控制,支持Frame级和CTU级别的操作。这方面难点在于反映视觉失真的计算模型往往是非线性和全局的,而编码的控制则是局部的和上下文因果关联的。因此需要multi-pass和 alternative 反复实验才能找到最优。这方面也是包括Beamr在内各家新锐公司的竞争力所在,很多核心技术没有披露细节(抑或本身就是玩神秘,拉估值用的)

2 Beamr Content Adaptive优化的一些公开信息

Beamr帧级别内容自适应编码优化技术,对打包封装前的H.264/H.265压缩码流进行二次编码,据称在不引入可察觉质量降级的情况下,能够平均节省25%的码率,并能够保持帧间图像质量平稳。图 4为一个范例,视觉质量保持相同,码率节省21%。

图 4 经过Beamr Video优化的视频流码率节省示例

如前文简述,Beamr Video的编码优化过程是一个迭代的闭环系统,它关注的是每一个编码后的帧与输入的帧在视觉感知下是否一致。在这个过程中,被压缩过的视频帧首先进行解码,然后使用更为有效的编码参数重新对其编码,从而得到一个比原来压缩程度更高的码流。具体而言,输入的帧先被解压缩,然后使用质量评估工具以源视频帧作为参考进行分析(如图 5所示)。这个分析过程还考虑了视频序列间的时域关系,使得相邻帧的视觉质量具有一致性。最后经过评估工具综合考量后得出一个分数,如果这个分数在一个预定的质量范围内,就通过这一帧,继而转向下一个输入帧。如果这个分数超过了上限阈值,意味着这一帧可以去除掉更多的比特,因此就会对这一帧进行深入压缩,然后重复上述评估过程,直到这个得分在目标范围内。相反,如果这个分数低于下限阈值,意味着这一帧不再和源视频帧具有相同的视觉质量,优化工具就会以轻度压缩的编码参数重新编码,直到该帧达到这个质量阈值。

图 5 Beamr Video视频分析过程示意图

Beamr Video目前以文件流的方式进行处理,但兼容和满足一些应用场景下的低延迟编码需求,而且提供直播流的优化支持。

总结起来,Beamr Video有以下几个特点值得关注:

1. 评估分析编码后的视频文件以选择合适的编码参数进行再次编码,整个过程自动化进行,不需要人为参与,满足大规模视频编码及分发传输应用需求。

2. 许多方案需要分析整个视频切片才能得到VBR或CBR的码率,不能以更小的粒度如根据场景或帧来做分析评估。该方案能到帧级别进行分析并选择合适的编码参数,可以为每一帧分配合适的比特数。

3. CRF(Constant Rate Factor)虽然在ABR中比较有效,但使用的信息有限,没有深入分析帧级别的内容特性,因而无法达到最佳的编码质量。此外,许多方案直接使用CRF作为VBR或CBR指导因子进行编码,没有后处理编码的质量验证过程。而如果没有这个闭环的话,最后编解码得到的视频可能会产生一定的视觉失真,而且质量会有波动,或者编码的码率超过了实际所需。

原文链接:https://cloud.tencent.com/developer/article/1051487


预分析(Pre-analysis)

在确定编码帧的质量之前,质量衡量组件对源编码帧和初始编码帧执行一些预分析,用以提取质量衡量计算中需要的一些数据,同时收集用于配置质量衡量的信息。 预分析分为两个部分,第一个部分在源编码帧上执行,第二部分在初始编码帧上执行。

 


Figure.A blockdiagram of the video quality measure used in Beamr’s CABR engine

预分析的第一部分的目的是表征给定帧内的内容、框架和感兴趣的区域。 在这个阶段,我们可以确定在帧里是否有皮肤和面部区域、3D动画典型的丰富色度信息或者在单元动画内容中找到的具有动态背景的高度局部移动。 所使用的算法旨在降低CPU的负担。 例如,我们的面部检测算法在场景变化的时候采用了完整的监测机制,而在其他帧中则采用了独特的低复杂度自适应跟踪机制。 对于皮肤检测,我们使用了AdaBoost分类器,该分类器在我们创建的标记数据集上进行了训练。 AdaBoost分类器使用YUV像素值和4×4亮度方差值输入。 在此阶段,我们还计算了我们在下面描述的Edge-Loss-Factor分数组件中使用的edge map。

预分析的第二部分用于分析初始编码之后的帧特征。 在这个阶段,我们可以确定帧里是否存在颗粒,并统计颗粒的数量,然后用他们来配置质量衡量的计算。 我们还收集有关每个块的复杂度的信息,例如,通过用于编码每个块的比特使用率和块量化级来展现这个信息。 在这个阶段,我们还计算帧的每一个块或者区域中局部纹理的密度,这个密度会用于以下所描述的纹理保留分数组件中。

质量衡量过程和组成(Quality MeasureProcess and Components)

与参考帧相比,质量衡量可以评估目标帧的质量。 在CABR的文中,参考帧是初始编码帧,目标帧是特定迭代的候选帧。 在执行了预分析的两个阶段之后,我们继续进行实际的质量衡量计算,接下来将进行详细描述。

在完成预分析的两个阶段之后,每个参考帧和目标帧都被划分成了相应的图块。 这些图块的位置和尺寸根据帧的分辨率和其他帧特征进行调整。 例如,我们会对具有高度局部运动的帧应用相对小的图块。 有时,对于某些质量衡量组件,图块也会被进一步细分成子图块。 为每个图块计算质量度量分数,并且在感知上合并这些分数来得到帧的质量分数。

每个图块的质量分数计算方式: 针对每个质量衡量的组件,计算相应的分数,然后对这些值进行加权几何平均,来得到每个图块的质量分数。 这些分量包括: 确定像素方向差异的局部相似性分量、增加的伪像边缘分量、纹理失真分量、边缘损耗因子和时间分量。 现在我们简要介绍Beamr的质量衡量标准中的这五个要素。

局部相似度(Local Similarity)

局部相似度组件评估参考图块和目标图块中相同位置的像素之间的相似度。 这个组件在某种程度上和PSNR相似,但是使用: 自适应子平铺、合并和阈值设置,用以提供比常规PSNR更具感知性的结果。 在某些情况下,例如当预分析确定该帧包含丰富的色度内容时,此分量中还包括色度平面的像素相似度计算,但是在大多数情况下,仅适用亮度。 对于每个子图块,计算常规PSNR。 为了对位于质量远远优于其上的图块中的低质量子图块赋予更大的权重,我们仅仅使用低于取决于最低子图块PSNR值的阈值的值来进行合并工作。 当仅仅在很小的区域范围(甚至只有几个像素的区域)中发生变化时,可能会发生这种情况。 然后,我们会根据比例值来调整合并值,这个因数根据图块中的亮度级别来进行调整,因为在黑暗的区域中的失真比在明亮区域中的失真更大。 最后,我们裁剪局部相似性分量得分,使其位于[0,1]的范围内,其中1表示目标图块和参考图块在感知上相同。

人工添加边缘(Added Artifactual Edges)
与参考图块相比,添加的伪像边缘得分组件评估了目标图块中引入的其他块状性。 视频编码中的块状性是众所周知的伪像,它是由于对每个块进行的独立编码引入的。 为了避免这种块状伪像,我们已经进行了许多预先的尝试,主要方法是使用解块滤波器,这些滤波器是现代视频编码器(例如AVC和HEVC)的组成部分。 但是,我们在AAE(人工添加边缘)组件中的重点是量化此伪像的程度,而不是消除这个伪像。 由于我们只对目标帧相对于参考帧的附加块状感兴趣,因此我们根据目标帧与参考帧之间的差异来评估质量衡量的这一部分。 对于差异块中的每个水平和垂直编码块边界,我们评估跨编码块边界的变化或梯度,并将其与任一侧编码块内的局部梯度进行比较。 例如,对于AVC编码,这是沿着全帧的16×16网格完成的。 我们使用自适应的阈值,根据来自预分析阶段的信息进行自适应,将软阈值应用于块度值。 例如,在被认为是皮肤的区域中,人的视觉对伪像更加的敏感,我们将会使用更精准严格的阈值,以便对轻度块状伪像的处理更加严格。 这些计算将生成一个AAE得分图,其中包含每个水平和垂直块边界点在[0,1]范围内的值。 我们对每个块边界的值进行平均,然后对这些每个块边界的平均值进行平均,以排除或赋予低权重的块边界,在此同时也不会增加任何块状性。 然后根据块状伪像的百分比来缩放该值,即阈值之前原始块状度值非常高的情况,最后将其裁剪到[0,1]的范围,其中1表示未添加任何伪造边缘。 相对于参考图块的目标图块。
纹理变形
纹理失真分数组件量化了在目标图块中保留纹理的程度。 包括AVC和HEVC在内的大多数基于块的编解码器,都使用诸如DCT之类的频率变换,并对变换系数进行量化,通常对高频分量进行更严格的量化。 这可能会导致两个不同的纹理假象。 第一个伪像是由于高频系数中的能量损失而导致的纹理细节损失或过度平滑。 第二种伪像被称为“振铃”,其特征在于边缘周围的噪声或图像中的急剧变化。 这两种伪像都会导致像素值的局部方差发生变化: 过度平滑会导致像素方差减小,而增加的振铃或其他高频噪声则会导致像素方差增加。 因此,我们在参考帧和目标帧图块的相应块中测量局部偏差,并比较它们的值。 此过程产生的纹理图块得分在[0,1]范围内,其中1表示目标图像图块中没有可见的纹理失真。

时间一致性
与参考视频序列中的时间流相比,时间得分组件评估目标视频序列中的时间流的保留。 这是质量衡量的唯一组成部分,它也需要利用先前的目标帧和参考帧。 在此组件中,我们测量两种变化: 目标帧中缺少在参考帧中引入的“新”信息,以及目标帧中参考帧中没有“新”信息的“新”信息。 在这种情况下,“新”信息是指当前帧中存在但前一帧中不存在的信息。 我们计算参考帧中的每个并置8×8块与前一参考帧之间的绝对差之和(SAD),以及目标帧中的每个并置8×8块与前一目标帧之间的SAD 。 从这两个SAD值之间的关系以及根据参考SAD的值得出局部(8×8)分数,这表明该块本质上是动态的还是静态的。 图2说明了参考和目标SAD值的不同组合的局部得分值。 在计算了所有本地时间分数之后,将它们合并以获取范围为[0,1]的图块时间分数分量。

Figure 2. local temporal score as a function of reference SAD andtarget SAD values


边缘损耗因子(ELF)
边缘损失因子得分组件反映了参考图像中边缘在目标图像中的保留程度。 该组件使用在预分析的第一部分中生成的输入图像边缘图。 在预分析的第二部分中,计算参考帧中每个边缘点的边缘强度,作为边缘像素值与其8个最邻近像素之间的最大绝对差。 通过将像素的参考帧边缘强度与阈值进行比较,我们可以选择丢弃被认为是虚假边缘的像素,该阈值可以调整为例如在包含胶片颗粒的帧中更高。 一旦所有边缘像素的值都已累加,最终值将按比例缩放以提供ELF切片分数分量,范围为[0,1],其中1表示完美的边缘保留。
得分组合组件
使用加权几何平均将上述五个分数成分组合为块分数,其中可以根据所使用的编解码器或根据预分析阶段来调整权重。 例如,在具有良好循环内解块滤波器的编解码器中,我们可以降低块状分量的权重,而在具有高胶片颗粒水平(由预分析阶段确定)的帧中,我们可以降低纹理失真的权重零件。

块池化
在帧质量分数计算的最后一步中,将感知分数合并图块分数,以生成单个帧分数值。 感知池使用的权重取决于重要性(取自分析前的阶段,例如,图块中存在面部或皮肤),并且取决于图块中块的复杂度(与帧的平均复杂度相比)。 权重还取决于图块得分值–我们对低得分的图块给予更大的权重,以同样的方式,即使在边缘地带出现,也会引发观众观看质量的下降。
分数配置器
分数配置器块用于配置不同情况使用的计算。 例如,在等待时间或性能受到严格限制的实现过程中,配置器可以应用快速得分计算,该计算跳过预分析的某些阶段并使用稍微降低的复杂性得分。 为了仍然保证感知上相同的结果,可以缩放或补偿在此快速模式下计算出的分数,以解决感知精度略低的问题,并且这种缩放在某些情况下可能会略微减少节省。
————————————————
版权声明:本文为CSDN博主「LiveVideoStack_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/101573108