通过改进视频质量评估提升编码效率

简介: Beamr的闭环内容自适应编码解决方案(CABR)的核心是一项质量衡量的专利。 与一般的视频质量衡量方法相反,传统方法旨在衡量由于误码,噪声,模糊,分辨率变化等导致的视频流之间的差异。 而Beamr的质量衡量方法是针对特定的任务而设定的。 在这篇博客文章中,Tamar Shoham为我们介绍了这种方法的组成部分。

文 /  Dror Gill  &  Tamar Shoham

翻译 / 屈健宁

image.png

Beamr的闭环内容自适应编码解决方案(CABR)的核心是一项质量衡量的专利。 这个衡量方法将每个候选编码帧的感知质量和初始编码帧的进行比较。 这种质量衡量方法确保了在比特率降低的情况下,仍然保留目标编码的感知质量。 与一般的视频质量衡量方法相反,传统方法旨在衡量由于误码,噪声,模糊,分辨率变化等导致的视频流之间的差异。 而Beamr的质量衡量方法是针对特定的任务而设定的。 Beamr的方法可以可靠、迅速地量化由于基于块的视频编码的伪像而导致的视频帧中被迫引入的感知质量损失。 在这篇博客文章中,我们介绍了这种方法的组成部分,如上图一所示。


预分析(Pre-analysis)


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

image.png

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]的图块时间分数分量。

image.png

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


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

阿里云视频云@凡科快图.png

相关文章
|
JavaScript 前端开发 数据可视化
好消息!GitHub 已原生支持基于 JavaScript 的 Mermaid 图表工具
好消息!GitHub 已原生支持基于 JavaScript 的 Mermaid 图表工具
476 0
好消息!GitHub 已原生支持基于 JavaScript 的 Mermaid 图表工具
|
编解码 编译器
x265探索与研究(一):x265下载安装与配置
<h1 style="text-align:center">x265下载安装与配置</h1> <p><br></p> <p>        研究了这么久的HEVC Test Model(HM),相信大家对x265开源代码的实现与框架早就充满了好奇,接下来的日子,我将把自己入手学习与探索“x265开源代码的实现与框架”的过程记录下来,与大家共同进步学习。<br></p> <p><br>
3469 0
|
编解码 弹性计算 人工智能
|
人工智能 并行计算 开发者
【AI系统】从 CUDA 对 AI 芯片思考
本文从技术角度探讨英伟达生态,特别是CUDA与SIMT的关系及其对AI芯片DSA架构的影响。通过分析流水编排、SIMT前端、分支预测及交互方式,指出英伟达CUDA的成功在于其硬件设计与软件易用性的结合,为未来AI芯片的设计提供了宝贵的经验和启示。
439 5
|
编解码 算法 前端开发
x265发起者陈敏:别人看我是专注,其实我只是感兴趣而已
作为DivX/Xvid、x264参与者和x265的发起人,陈敏依然专注在工程实践第一线,用他的话说:(专注在Codec领域)是受自己的经历和性格影响,是我感兴趣而已。
1172 0
x265发起者陈敏:别人看我是专注,其实我只是感兴趣而已
|
机器学习/深度学习 人工智能 TensorFlow
MobileNetV2架构解析
MobileNetV2先使用`1*1`卷积升维,在高维空间下使用`3*3`的深度卷积,在使用`1*1`卷积降维,在降维时采用线性激活函数。当步长为1时,使用残差连接输入和输出;当步长为2时,不适用残差连接,因为此时的输入特征矩阵和输出特征矩阵的shaoe不相等
1102 0
MobileNetV2架构解析
|
机器学习/深度学习 存储 人工智能
【AI系统】为什么 GPU 适用于 AI
本文探讨了GPU在AI计算中的应用,从卷积计算的基本原理入手,解析了GPU线程分级与AI计算模式的关系,以及矩阵乘法如何通过GPU编程提升算力利用率。文章还介绍了计算强度的概念,分析了不同数据结构对计算强度的影响,以及GPU中Tensor Core的作用,强调了在不同存储位置下,找到计算强度与矩阵大小的最佳平衡点对AI计算系统优化的重要性。
1129 2
|
安全 Java jenkins
metasploitable3环境安装
metasploitable3环境安装
597 0
|
前端开发 Java 应用服务中间件
Spring.Boot Web 模板引擎和首页为什么默认的是index.html页面呀《课时十》
Spring.Boot Web 模板引擎和首页为什么默认的是index.html页面呀《课时十》
765 0
|
存储 开发框架 安全
CVE-2020-0688 exchange远程代码执行漏洞
CVE-2020-0688 exchange远程代码执行漏洞
417 0

热门文章

最新文章

下一篇
开通oss服务