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

简介: 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

相关文章
|
7月前
|
容灾 测试技术
如何衡量软件质量好坏?
如何衡量软件质量好坏?
208 0
|
测试技术 Docker 容器
自动化质量评估维度
上篇文章讲了下关于终端自动化的一个探索《终端自动化测试探索之路》,今天来聊聊关于自动化质量评估的维度,包括UI和接口。
770 0
|
2月前
|
数据采集 机器学习/深度学习 监控
训练数据的质量
【10月更文挑战第13天】
|
5月前
|
编译器 C++ Windows
如何快速提高代码的质量
如何快速提高代码的质量
|
7月前
|
机器学习/深度学习 人工智能 算法
提升软件测试效率与质量的策略分析
在快速发展的信息技术时代,软件产品已成为日常生活和工作的核心组成部分。随着软件系统的复杂度日益增加,确保其功能性、稳定性及安全性的软件测试工作变得尤为重要。本文针对如何提升软件测试的效率与质量进行了深入探讨,分析了当前软件测试面临的挑战,并提出了一系列创新策略。这些策略包括采用自动化测试工具、实施持续集成和持续部署(CI/CD)、利用人工智能进行测试用例生成以及强化测试团队的技能培训等。通过综合运用这些策略,可以显著提高软件测试的质量和效率,减少人工成本,同时加速产品的上市时间。
164 4
|
测试技术
如何评估软件测试的质量风险?记住这5个核心关键点
如何评估软件测试的质量风险?记住这5个核心关键点
338 0
|
7月前
|
jenkins 测试技术 持续交付
提升软件测试效率与质量的策略
【4月更文挑战第11天】在快速迭代的软件开发过程中,确保代码质量和减少缺陷至关重要。本文将深入探讨如何通过自动化测试、持续集成和敏捷测试方法来提高软件测试的效率和质量。我们将分析各种测试策略的优势与局限,并讨论如何根据项目需求定制测试计划。通过案例研究和最佳实践,我们的目标是为读者提供一套实用的工具和方法,以便在不断变化的技术环境中保持软件测试活动的高效性和适应性。
369 0
|
7月前
|
传感器
内置质量是什么?
内置质量是什么?
135 0
|
机器学习/深度学习 算法
评估系统或算法质量的重要指标
准确性(Accuracy):衡量系统或算法输出结果与真实结果之间的接近程度。通常使用分类准确率、回归误差等指标来评估。 精确率(Precision)和召回率(Recall):主要用于评估分类模型的性能。精确率衡量预测为正例的样本中实际为正例的比例,召回率衡量实际为正例的样本中被正确预测为正例的比例。
318 4
|
IDE Java 程序员
如何快速地改善代码质量
如何快速地改善代码质量

热门文章

最新文章