查看原文
其他

B站画质评测实践-生产端

徐慧迅 哔哩哔哩技术 2022-11-19

本期作者


徐慧迅

质量保障中心资深测试工程师


01 背景


随着短视频行业的蓬勃发展,全民UP主时代已经到来,用户需要的创作手法日新月异,对创作工具的要求越来越高。而音视频质量评估偏主观,复杂功能场景的组合爆炸,使得评测效能提升与传统的人工评测形成了巨大矛盾,因此需要与时俱进,搭建手段丰富且高效的质量评估体系。

我们的实施路径如下,通过行业交流与调研,快速确定评测方案的选型并开展落地 ,再针对本土化过程中遇到的问题,逐步探索形成现在的B站特色音视频质量评估体系。因篇幅有限,本文将着重说明画质在B站的评测实践,主要以生产端为例。

方案选型

随着音视频技术的不断发展,业务的发展不再仅仅依靠技术上的提高,而更强调的是以用户为中心。传统音视频质量的评估指标是基于服务质量(QoS 见图1),它受限于一些客观参数,并不能全面有效地反映用户真实的需求和体验,并不能准确地表现用户对音视频业务质量的满意程度。而体验质量(QoE)则是从用户主观感知出发的评估指标,它能够直接有效反映用户对音视频业务的满意程度。因此QoE成为改善用户音视频质量,提升用户满意度的主要依据。

目前主流的音视频评估方法主要有三种:主观评估、客观评估以及主客观结合评估的方法

主观评估是用户对视频质量直接做出评价,它很直观,一般可以作为其他评估指标的参考,最常见的主观评估指标是MOS(MeanOpinion Score)。但是主观评估的实时性差、花费较大,因此不宜被普遍使用。而客观评估是通过分析研究客观指标的变化对视频的影响,从而建立与主观评价一致的评价模型,它易于对视频进行实时测量和评估,但准确性有待提高。客观评估主要通过对视频量化输出序列与原始序列的差异,来评估用户的视频质量,主要包含三种方法:全参考方法、部分参考方法和无参考方法,下文会有详细说明。而主客观评估方法是客观评估结合了主观评估的方法。它一般是建立客观指标与主观之间的映射关系来建立给定业务的体验质量评估方法。这种方法结合了主观和客观方法的优点:简洁方便,实时性强,与用户感知的一致性较高。

因此我们希望通过以提升用户体验(QoE)为目的,通过主客观评估的方法,搭建B站音视频质量通用方案。

图1 QoS与QoE


 1.1 主观评估


主观评估,顾名思义就是人参与的人工评估,视频主观质量评价就是选择一批非专家类型的受测者,让他们参加一些培训,阅读一些评估规范和标准比如说ITU-R BT.500等,然后在一个特定的受控环境中, 连续观看一系列的测试序列然后采用不同方法让他们对视频序列的质量进行评分,最后求得平均意见分(MeanOpinion Score,MOS),并对所得数据进行分析。测试环境中的受控因素包括:观看距离、观测环境、测试序列的选择、序列的显示时间间隔等;完整的主观实验流程一般是如下步骤:


  1. 选取特定需求的源视频 

  2. 按照ITU标准设计主观实验

  3. 招募志愿者观看视频并打分

  4. 收集主观打分并剔除无效数据

  5. 数据分析并给出实验结论


ITU有标准来指导如何做主观实验,如ITU-T P910 [2],ITU-R BT.2020 [3]等,由于视频主观评估方法的实现成本高,实时性也较差,所以,目前评估方法的研究重点在于客观评估方法或主客观结合评估方法,而主观评估的作用主要在于获得主观评估分数来作为其他评估方法的参考,本文不展开说明。


 1.2 客观评估


客观评估通过一些评估标准来量化视频质量,其实就是对每一帧视频的量化。为什么说是视频帧评估呢, 因为视频的评估的发展源于图像质量的评估,每一帧视频其实就是一张图片;主要也分为三类:全参考、部分参考以及无参考(见图2)。


  1. 全参考评估方法

    这种方法需要逐帧比较原始视频(参考视频)和受损视频,涉及到每个帧中每个像素的计算。目前典型的方法有峰值信噪比方法和均方差。全参考方法在像素层上进行计算,其对时空域上的失真非常敏感,其特点在于准确度很高,但是由于这种方法需要获取到参考视频,传输参考视频需要占用一定的带宽,成本较大,所以其可用性较低,并且全参考指标的计算复杂度相对较高实时性较差,目前仅仅在实验室环境下研究时使用。

  2. 部分参考评估方法

    这种方法需要比较原始视频(参考视频)和受损视频的部分参数信息来进行的评估,这种方法较全参考指标更轻量级,能节约传输带宽(只需要传输部分数据信息,而不是整个参考视频,而且计算复杂度相对较低,实时性高,很适用于实时视频传输网络。

  3. 无参考评估方法

    这种方法仅仅从受损视频中提取参数来评估视频序列的无需获取原始视频的任何信息,只需要分析受损视频即可。无参考指标具有非常高的实用性,它的计算复杂度是三种指标中最低的,实时性好,但是其准确度是三种方法中最低的,并且这种方法无法定位视频损伤问题的来源。

图2 全参/部分参考/无参考


 1.2.1 PSNR


基础客观评价指标—PSNR


PSNR,即PeakSignal-to-NoiseRatio,峰值信噪比,指的是信号的最大可能功率与噪声功率之比。PSNR公式如(1)所示,单位是 dB:

其中MAX=2n -1,n为图像的位深度。MSE为均方误差,即原始图像与压缩图像每个像素误差的平方和的平均值。

PSNR是用来评估有损压缩质量的最常用的指标之一。一般情况下,PSNR的值越高,压缩画面的质量越好。如果对8bit位深的图像进行压缩,PSNR的值一般在30dB至50dB之间;如果是无损压缩,那么MSE为0,PSNR的值为无限大。

PSNR的局限性在于只考虑了每个像素之间的绝对差别,但人眼并不是逐个像素去观看画面的,因此并不符合人眼的视觉感知特点,这意味着即使是相同PSNR的两段压缩视频,也有可能呈现出不同的主观质量。


1.2.2 SSIM


考虑人类视觉特点的客观评价指标—SSIM


SSIM,结构相似性指数。它由德州奥斯汀大学的 ZhouWang等人于2004年开发。SSIM 指标设计的初衷是提升对图像主观质量预测的准确度。

SSIM主要评价人类可感知到的图像差别。给定图像 x和图像y,SSIM 的公式如下:


SSIM的值在0和1之间,一般情况下,其值越高,压缩画面的质量越好。由于考虑到了画面中亮度、对比度和结构特征,SSIM在一定程度上更符合人类的主观感知。


 1.2.3 VMAF


基于机器学习的客观评价指标—VMAF


VMAF,视频多方法评估融合,是由Netflix公司开发的一种基于机器学习的视频客观评价指标。Netflix为了解决海量流媒体的质量控制问题,开发了VMAF指标,其预测视频主观质量的准确度高于PSNR和SSIM等传统指标。

VMAF的原理是提取视频的空域和时域特征,特征提取过程中会考虑到人类视觉特点如对比度掩蔽效应和亮度掩蔽效应。然后召集测试者在特定测试环境下对视频质量进行主观评价得到MOS分。

最后通过支持向量机(SVM)将这些特征值和MOS分数拟合得到VMAF模型。分值范围在0到100之间,分值越高,代表压缩画面的质量越好,一般来说,75分以上有较好的观感。VMAF依然存在局限性。对于不同观看媒介上的同一段视频,比如手机和电视,其主观感受是不同的,所以针对不同的观看媒介需要训练不同的VMAF模型,比较繁琐。另外,VMAF和PSNR、SSIM一样,是一种完全参考评价指标(Full-refer-ence),VMAF分数是相对于原始参考视频而言的,不代表绝对质量,即VMAF分数只适用于对比同一视频源所产生的压缩视频的质量,而不适用于横向对比不同视频源所产生的压缩视频的质量。


 1.2.4 NIQE


自然统计特性无参考指标—NIQE


之前的一些标准主要依靠PSNR,SSIM等指标,但是超分或者其他低层视觉任务图像评价来说,这些指标并不符合我们人眼感官,所以NIQE(NaturalImageQualityEvaluator)应运而生。

NIQE指标是一个客观的评价指标,提取自然景观中的特征来对测试图像进行测试,这些特征是拟合成一个多元的高斯模型。这个模型实际上是衡量一张待测图像在多元分布上的差异,这个分布是有一系列的正常的自然图像中提取的这些特征所构建的。

一般来说,NIQE分数是越低越好。


02 实践


 2.1 步骤


主客观结合的评估方法融合了视频体验质量的主观评估和客观评估两种方法的优点。该方法,既可以准确地评估视频业务的用户主观体验质量,又可以达到实时性、轻量级等要求。图3展示了主客观结合评估方法的基本步骤。这里先以生产端为场景进行开展评测工作。


 2.1.1 确定场景


1. 先明确测试内容,产品特性为手机拍摄录制视频。根据常见的拍摄内容中,从非业务的角度上,分析相关影响因素。首先,从产品业务层面上分析。用户所在的场地、周边环境、光线明暗强度、被摄体的运动情况、不同配置的拍摄机器等,从这些方面得到专业的拍摄影响因素。

2. 得到影响拍摄的因素:从物理环境上看,包括单一场景(即室内)/复杂场景(即室外)、光源(自然光、强光、弱光)、光圈(顺光、逆光)、运动状态(静止、剧烈运动)、声音(安静、嘈杂);从设备环境上看,包括采集设备(摄像头(前置、后置)、麦克风(耳机、手柄、内置))、设备性能(机型、系统、内存)(见图3)。

图3 拍摄影响因素


3. 再分析视频拍摄生成的全过程:设备采集音视频数据,经过图像前处理,再进行编码生成视频文件。

4. 最后,根据拍摄影响因素和生产过程来建立场景,将这些多元化的因素组合,生成待比对的视频文件。


 2.1.2 视频主观质量评估


测试步骤:

a)如图4(ITU-R BT.1788 建议书)所示,逐个场景地进行测试。

b)对当前场景,可能以任何次序来播放任何片段,并为其打分。每个片段都可以多次播放和打分。

c)从一个场景到另一个场景,对片段的访问是随机的,防止观测者试图根据已排好的次序、以完全相同的方式来做出判定。实际上,在一个测试中,算法的次序仍保持相同,以便简化对结果的分析和陈述。只有来自相同按钮的相应访问是随机的。

d)对第一次观测,当前的片段必须在打分之前全部播放过;否则,可能立即打分和停止。

e)为测试下一个场景,必须为当前场景的所有片段打分。

f)为完成测试,必须为所有场景的所有片段打分。

图4


 2.1.3 视频客观质量评估


根据确定的场景来确定质量标准。采用主观评测以及客观质量评估算法辅助得到一个综合的结果。

QoE质量指标:从观感、听感和整体体验三个方面来确定。主要通过客观质量评估算法实现,包括根据样本数量采用全参考或无参考质量评估算法。

QoS质量指标:从视频、音频和性能三个方面来确定。主要使用音视频分析工具和性能监测工具。

根据不同的场景,选择不同的算法,生成不同的结果,并进行分析(见图5)。

图5 整体流程


其中模块说明:

  1. 参数模块:根据比对场景,系统给出推荐参数选项,用户可自行调整参数和相应阈值。

  2. 算法模块:包括预置算法和算法推荐。

    预置算法包括开源的业内通用算法(如:全参考图像质量评价(VMAF、PSNR等);无参考图像质量评价(NIQE、NISQA等);QoE(黑白屏、静音、卡顿等))和公司自研算法(音画同步、编码算法、视频检测算法)。

    算法推荐则是事先内设的比对算法规则。根据预置算法所针对的音视频特性检测,结合场景参数去关联相关算法。

  3. 显示模块:根据竞品数量,自动轮询播放所有场景样本。用户可选自动轮询或手动切换模式。可以更直观且方便的进行主观评价,或其他用途。

  4. 处理模块:采用多线程的方式,并发处理各个算法提高运行速度,并将结果存储。


 2.2 B站实际落地过程中问题及思考


在实际落地的途中,我们遇到了很多问题,这些问题需要随着业务需求去不断解决。主客观评测也是一个逐渐完善的过程,这里也提出一些问题及解决方式供大家参考。


 2.2.1 主观测评遇到的问题


1. 主观评测如何使结果更为准确


初次评测的时候,其主观结果数据相差较大,复盘了原因,主要是样本数据场景较为单一,且打分主要是测试同学;在此基础上,再次评测我们采取了一些优化措施。

A. 控制参与者选择

参与者选择:数量控制(4~40)

用户类型:拉齐角色,运营/产品/研发/测试一起参与

观测条件:采用ITU-RBT.1788建议书将观测条件标准化(见下图6)

图6


B. 控制样本选择

内容选择:分类尽量广

特征选择:高级特征、低级特性

样本SITI分布:尽量跨越大部分空间-时间(见下图7)

图7



2. 评测流程较为繁复,如何简化中间流程,使打分更为智能化


早期评测,一般我们采用大会议室,控制距离,屏幕亮度等,进行双盲验证。然后打印分数单,根据编号书写分数,并在后期记录,整理成报表。其过程相对较长,效率较低。基于此现状,构建了主观评测平台,可以双屏、三屏打分,且可以将分数可视化为图表。剔除重复数据和异常数据等。

A. 接入主观观测平台,可双屏/三屏比对打分,并将结果整理成相应的报表

图8 双屏对比打分


图9 三屏打分


B. 将流程接入自研平台,更为自动化

图10


3. 对于主观分数相差较大,如何客观看待


不同的观测者会给出不同的分数,且画质是一个较为主观的选择,所以接入了用户置信度计算,使得分数更具准确度。

A. 接入用户置信度计算,根据ITU-RBT.500-13中定义的程序筛选并去掉不置信的受试者,得到较为客观的数据。

图11


B. 将异常场景单独抽离,额外打分,并将打分的数据重新整理,针对某些场景,设定匿名问卷调查分析原因。


 2.2.2 客观评估遇到的问题


1. 对于拍摄场景,传统的PSNR/SSIM算法因为基于像素比对,无法很好的比对滤镜,特效等场景。


B站的音视频场景,不仅有大家熟知的播放场景,还有拍摄,剪辑等场景。播放场景可以运用全参PSNR比对输入输出视频。而在拍摄、剪辑中的部分特效滤镜等场景运用传统的PSNR等算法等是基于像素的,针对加了滤镜特效等场景准确度不是很高。基于此,我们在不同的场景引用不同的算法。比如拍摄滤镜等场景,我们会使用NIQE无参算法比对与竞品之间的画质,且会进行二次改造,只采用其关键帧。

A. 引入NIQE算法,并进行二次改造比对其关键帧,得到分数,与主观分数拟合,相似度较高,较为准确。

在LIVE和CSIQ两个视频质量数据集上对所提出算法的性能进行验证。LIVE数据库包含10个参考视频和对应每个参考视频的15个失真视频。CSIQ数据集包含12个源视频和相对应的18个失真视频。我们使用标准的PLCC和SROCC作为质量准则来比较不同算法的性能(见图,图来自Making a Completely Blind Image Quality Analyzer)。

图12


可以看待NIQE在不同的算法集上数据大幅领先其他的算法。且我们在此基础上筛选其关键帧,计算其关键帧的分数,去除最高与最低分数,得到一个较为平衡的分数;


2. 异常帧会影响整体的视频的客观数据


用户的场景,一般在不同的机型里,其输入输出帧可能帧数不一致,或者存在异常帧的场景。在无参算法里一般我们会用黑帧、花屏检测等剔除掉异常帧。但是在全参考算法里,开始算法计算时,是需要仔细的对齐这一系列的帧再能做计算的,因为全参考的计算原理是根据两张相同场景的图片数据,做比较测算。仔细想想:“帧对齐”是一件很难的事,因为人们是很难通过图像特征来区别每一帧。所以,“帧对齐”这个问题,拆解为两个问题:如何识别每一个帧+找到未对齐的帧这两个问题。根据上述分析,我们可以拿到具体的视频折损测试方案

图13


输入源为两个视频,分别是原视频待比较视频”(折损视频),首先将视频处理为一系列的图片帧文件,然后进行帧对齐处理(将帧的分辨率处理成一致的分辨率,将丢帧补齐,将卡帧删掉并记录帧号),输出两列对齐后的视频帧序列,再合成对齐帧后的视频序列,再进行VMAFPSNR等全参考得分的分数计算。


图14


最后得到的就是相同帧才进行比对,剔除掉相应的异常帧。


主要设计的视频帧的处理主要模块代码如下:

def process_video(filename=0, func=None, output='result.mp4', verbose=0):    """处理视频    :param filename: 视频源,默认为摄像头    :param func: 处理每一帧的函数名    :param output: 保存的文件名    :param verbose: 可视化,0不可视化,1显示处理后的结果,2显示对比结果    """    cap = cv2.VideoCapture(filename)  # 打开摄像头    fourcc = cv2.VideoWriter_fourcc(*'MP4V')  # 视频编解码器    fps = cap.get(cv2.CAP_PROP_FPS)  # 帧数    width, height = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 宽高    out = cv2.VideoWriter(output, fourcc, fps, (width, height))  # 写入视频    if verbose > 0 or filename == 0:        print('英文下输入q停止')    count = cap.get(cv2.CAP_PROP_FRAME_COUNT)  # 总帧数    accum_time = 0  # 累计时间    curr_fps = 0  # 当前帧数    prev_time = timer()  # 上一段的时间    while cap.isOpened():        if count > 0:            current = int(cap.get(cv2.CAP_PROP_POS_FRAMES) + 0.5)  # 当前第几帧            curr_time = timer()  # 当前时间            exec_time = curr_time - prev_time  # 处理时间            prev_time = curr_time  # 上一段的时间设为当前时间            accum_time = accum_time + exec_time  # 累计时间            curr_fps = curr_fps + 1            if accum_time >= 1:                accum_time = accum_time - 1                print('进度:{:.2f}%\tFPS:{}'.format(current / count * 100, curr_fps))                curr_fps = 0  # 重置帧数        ret, frame = cap.read()        if ret == True:            result = func(frame, current) if func else frame            out.write(result)  # 写入帧            if verbose > 0 or filename == 0:                cv2.imshow('after', result)                if verbose == 2:                    cv2.imshow('before', frame)                if cv2.waitKey(1) & 0xFF == ord('q'):  # q退出                    break        else:            break    cap.release()    out.release()    cv2.destroyAllWindows()


OCR算法为开源算法,python直接引用即可,暂不多述说。


 2.2.3 整体遇到的问题


1. 主客观一定能代表QoE吗?


主客观不一定代表QoE,作为用户体验,体验指标有很多,主客观只是作为画质的一类,其中还包含性能部分;我们目前做了相关的画质指标优化,需要接入更多的性能指标辅助视频参数,使得结果更为多样化。


2. 主客观评测发现的画质问题,如何进行专项优化?


我们需要在视频的每个流程节点进行优化。从采集->渲染→编码各阶段着手分析,定向优化;


基于采集模块:

图15


A. 主要是在光圈和CMOS感光芯片不变的情况下,通过调整感光度(ISO)和快门时长让曝光偏移始终维持在0

B. 采集分辨率、帧率、码率等参数调整


基于渲染模块:

图16


A. 美颜(磨皮,大眼、瘦脸等参数)、滤镜调整

B. 特效贴纸分辨率调整


基于编码模块:

图17


A. 硬软编码的兼容

B. 编码格式及视频参数调整


 2.3 整体框架及投产效果


基于上面的实践,我们在主观评测中总结并丰富样本和人群特性,保留样本随机性同时提高主观打分的置信度,最终工程赋能达到自动化的双盲验证;在客观评价上,针对拍摄剪辑和播放两块功能的评测重点不同,通过对经典算法的改造和组合,来适配不同的评测场景,形成一套完整可靠且可用性高的解决方案。主客观为主,视频检测手段为辅,评测自动化赋能,能够评估各项业务,得到一个较为准确的结果。

图18


目前已经在必剪、bilibili拍摄等多个业务进行实践,例行分析辅助产品迭代。例如,新版本较于初版,我们调整了低端机的分辨率,帧率,结果是新版本的低端机画质数据综合打分整体高于初版低端机画质数据等。

我们将每次报告进行主客观数据拟合,发现主观数据与客观数据基本一致。并在每个迭代版本都会建立流程机制。通过数据复盘分析,辅助产研判断定向优化目标。投产收效主要在画质的提升和编码速度的优化,见下图。

图19


03 更高标准HDR如何评测


 3.1 什么是HDR


HDR一般指高动态光照渲染。高动态范围图像(High-DynamicRange,简称HDR),相比普通的图像,可以提供更多的动态范围和图像细节。现实真正存在的亮度差,即最亮的物体亮度,和最暗的物体亮度之比,是一亿种不同的亮度,而人类的眼睛所能看到的范围是十万种不同的亮度。可见拍摄的亮度区域和真实空间差距较大,HDR就是为了解决这一问题而出现的(见图20、图21)。

图20 HDR释义


图21 左为HDR/右为SDR


 3.2 HDR评测方式

 3.2.1 HDR参数


先说颜色转换函数,分别是PQ(smpte2084)和HLG(arib-std-b67)

ffmpeg压缩参数中,HDR10的transfer=smpte2084,HLG的transfer=arib-std-b67

BT.2100标准提供两条伽玛曲线作为不同类型生产工作的标准:

1. 对于互联网流媒体和电影:PQ(感知量化)

2. 对于广播电视:HLG(混合对数伽玛)

PQ伽玛曲线基于人类视觉感知的特征,并且最适合于在互联网上制作电影或串流视频的内容,其中再现准确性是关键。

另一方面,HLG伽玛曲线旨在允许在现有的SDR电视上显示而不会看不到位置,并且最适合于广播电视和直播视频馈送。

HDR视频我们一般支持的是HDR10&HLG&&HLG加上杜比,参数如下图所示:

图22


 3.2.2 HDR主客观评测


  评测方式主要见下:



 3.3 HDR评测结果


主观:

主观观测(需配合支持HDR视频的屏幕使用)

  • 相比于SDR视频,大多数HDR视频对比度更高,色彩更明亮,画质更好

  • 针对于某些类型(原视频对比度很高情况),HDR视频高亮处有些刺眼

  • SDR转HDR视频后,相比于原HDR视频,画质表现略差


客观:

比对客观参数,加上VMAF及NIQE跑分,有个综合的结果,与主观评测对齐;知道哪方面存在缺点,及时改进。

图23


04 总结及展望


本文简要回顾了目前视频质量评估的通用方案。考虑到业务特性,我们倾向于使用主客观评估方法,结合QoS数据(这里指音视频参数、性能数据等)进行音视频质量评估。但是这样做也不能完好的体现QoE,也算是性能与画质参数的折中体现。我们提出了一些解决方案去解决实践过程中的问题,并根据提出的缺陷去专项优化画质。相比于传统的算法(PSNR/SSIM),我们引进了VMAF、NIQE等算法,进行了一些改造,并解决了帧差问题。针对于新标准HDR,也有相应的测试方式。当然,这一切才刚刚开始,还有很多工作需要补充。我们还需要:

1. 在建立完整的视频体验质量方法的基础之上,结合视频传输网络的相关特点,将评估方法应用到真实网络中去(直播场景)。

2. 建立多样化测试场景,扩充多维度的质量指标,得到较为全面的报告,对齐业界竞品。


以上是今天的分享内容,如果你有什么想法或疑问,欢迎大家在留言区告诉我们哦,如果喜欢本期内容的话,请给我们点个赞吧!


参考附件:

[1]《面向用户体验的视频流业务质量评测方法》 刘继春

[2]《新一代视频编码主客观评价结果一致性探究》 孟昭旭  朱宏宣

[3] https://mp.weixin.qq.com/s/FGGK6fBeK--spA7gSwzBeg

[4] https://mp.weixin.qq.com/s/4bsoI6lYYG1BgwG4-lez6w

[5] NIQE(无参考图像)https://github.com/huping96/niqe-C-MATLAB-code.git

[6] VAMF(ffmpeg集成、直接引用即可)(有参视频)

[7] ITU-RBT.1788建议书

[8] ITU-RBT.500-13



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存