图4:BILIVQA 时域采样策略
2.1.2 模型框架
模型训练框架如图 5 所示,我们先将输入视频切分为 N 个切片,每个切片抽取 1 帧作为空域帧组成帧序列(Frame Sequence),按照短边缩放至 510 的比例进行缩放;抽取 32 帧作为时域帧组成切片序列(Clips Sequence),缩放至 160×160。空域特征(Temporal Features)提取模型采用在大规模图像分类数据集 ImageNet 上预训练的 MobileNet V2,时域特征(Spatial Features)提取模型采用在大规模动作识别数据集 Kinetics-400 上预训练的 X3D Net,然后将时空域特征拼接在一起,送入预测网络,经过特征池化层和回归器,对每个切片预测出一个分数(Score #1 ~ #N),最后对所有切片的分数取平均,输出最后的分数(VQA Score)。
图5:BILIVQA 模型框架
2.1.3 训练数据
视频质量评价领域有很多公共数据集,如 LIVE-VQC(LIVE Video Quality Challenge Database)、KoNViD-1k(KoNViD-1k VQA Database)、LWCVQ(LIVE Wild Compressed Video Quality Database),这些数据集涵盖自然失真视频和编码失真视频,数据量都在千级以内。2021 年 LIVE(Laboratory for Image & Video Engineering)实验室发布了 LSVQ 数据集,包括 39076 个自然场景下的视频及 MOS 数据,是目前最大规模的主观自然失真视频数据集。基于 LSVQ 数据集训练的 VQA 模型已经具备较为优秀的视频特征提取能力,但由于 LSVQ 和 B 站视频在视频种类和失真类型上存在差异,以及 LSVQ 数据集多数为 PGC 视频,而 B 站 UGC 视频的占比更大,我们经过实验,结果表明,只在 LSVQ 上训练的模型直接用于评价 B 站视频将会表现出弱泛化性。
因此,为了在 B 站视频上得到强泛化且客观的 BILIVQA 模型,我们必须构建一个 B 站自己的视频数据集,其中数据样本的选取必须囊括不同类型的视频,且符合用户观看习惯,最大程度还原线上用户实际观看中会遇到的不同情况。具体地,我们按照关注的指标维度(如视频分区、视频时长、播放量、视频清晰度、编码版本等)对 B 站大盘视频进行分层抽样,以确保每个分维度都有一部分样本。完成抽样后,组织了一批热心用户,参照 ITU-R BT.500 电视画面质量的主观评价方法进行 MOS 分标注,最后经过数据清洗,筛除一些异常标注样本,最终得到包含约 5000 条视频的中等规模数据集,画质 VQA 分数区间为 0-5 分,基本符合均值为 3.3-3.5,整体在 [2, 4.5] 区间内的正态分布。
2.1.4 训练方法
有了 BILIVQA 模型框架和 B 站数据集,就正式进入了 BILIVQA 模型的训练环节。前文已经提到 LSVQ 是目前最大规模的主观自然失真视频数据集,该数据集可以帮助模型学到强大的视频基本特征提取能力,但由于数据分布的差异性,在 LSVQ 上训练的模型不可直接迁移用于评价 B 站视频,直观的解决方案是在训练过程中加入 B 站视频。
因此,我们采用一种多回归头的交替式混合数据集训练方案,以 LSVQ BILIBILI 混合数据集训练为例,每个 batch 按照 LSVQ:BILIBILI=1:1 的比例采样,如每个 batch 采 8 个视频来自 LSVQ,8 个视频来自 BILIBILI,两个数据集的视频共用模型的特征提取模块,但对应各自的分数回归头,最后业务使用的是 BILIBILI 数据集的回归头。实验结果表明,相较于直接在 LSVQ 上训练,混合数据集训练方式进一步提升了模型的视频特征提取能力,从而使得 BILIVQA 模型在 BILIBILI 测试集上的性能表现更优。
2.1.5 模型准确率
皮尔逊线性相关系数(Pearson Linear Correlation Coefficient,PLCC)和斯皮尔曼等级相关系数(Spearman Rank-Order Correlation Coefficient,SROCC)是两个最常用的 VQA 模型性能评价指标。PLCC 用于评价模型预测分数与人眼主观分数之间的相关性,PLCC 的取值范围为 -1~1,值越接近0,表示视频的模型预测分数和人眼主观分数相关性越弱,值越接近 1 或 -1,表明视频的模型预测分数和人眼主观分数相关性越强;
SROCC 用于评价模型预测分数与人眼主观分数之间的排序相关性,取值范围为 0~1,SROCC 值越接近 1,表明模型越能对一组视频的质量高低进行正确排序。例如:人眼主观对 5 个视频的质量排序为“1,2,3,4,5”,数值越大代表质量越好,若模型预测的质量排序也为“1,2,3,4,5”,则 SROCC 值为 1,模型对视频质量排序完全正确;若模型预测的质量排序为“1,3,2,5,4”,则 SROCC 值为 0.799,模型对视频质量排序的准确性降低。
图6:BILIVQA 在公共数据集和 B 站自建数据集上的性能表现
如图 6,我们在 2 个公开数据集和 B 站自建数据集上分别测试了 BILIVQA 模型的性能表现,结果表明 BILIVQA 不仅在 B 站自建数据集上的准确率较高,且在其余公开数据集上也具有较强泛化性。
2.2 BILIVQA 工程实现
BILIVQA 模型的推理过程可以简化为如下几个模块:视频解码、抽帧、帧缩放(前处理)、3D & 2D 特征提取、模型推理,其中视频解码、抽帧及前处理步骤在整体耗时中占较大比重,GPU 推理模块长期处于等待状态,在整体耗时中只占极小比重,从而造成线上调用分配的 GPU 资源在整个流程中使用频率低,造成了资源的浪费。因此为了提升 GPU 资源利用率和模型训练速度,我们实现了一套基于 GPU 的纯硬件工程化方案。
具体流程如图 7,输入的视频文件经过 GPU 硬件解码,对每个切片抽取空域关键帧和时域切片帧后,采用 CUDA 进行图片缩放,然后送入 BILIVQA 的 TensorRT 模型进行特征提取及模型推理,最终输出模型的预测分数。
图7:BILIVQA 纯硬件方案工程化流程
三、BILIVQA 落地应用
经过实验室数据验证,BILIVQA 模型已经具备业务落地所需的精度和速度,其中一个重要的落地方向是监控大盘视频画质。用 BILIVQA 模型批量自动化地对视频计算 VQA 分数,作为当天大盘的视频画质测量值,在监控面板上可视化,对用户体验进行监测。
在这个过程中,首先有两点需要明确:1)监控面板上的画质均分反映的是每天大盘视频质量,假设 B 站大盘画质保持基本稳定,则天与天之间的画质均分不应发生跳变。但如果直接使用 VQA 模型输出的绝对分数,监控面板上的数据就无法稳定且准确地表征大盘画质,原因是伴随 VQA 模型迭代,模型输出的绝对分数会不可避免地改变(后文会详细解释),因此我们需要一种映射机制,使得不同版本的 VQA 模型对同一视频的评价分数映射值始终保持稳定;2)监控面板上的分数与画质的对应关系,即如何定义具体分数对应的视频质量?我们将这两点定义为 “BILIBILIVQA 画质量纲”。
3.1 映射机制设计流程
3.1.1 映射机制设计流程
上文提到 VQA 模型迭代后,模型输出的绝对分数会不可避免地改变,其根本原因在于 VQA 模型直接输出的绝对分数是没有明确含义的,它表征的只是一个相对质量。具体地,有三个原因:1)不同数据集的标注标准不同,人眼主观评分金标准从五分制到百分制不等,用不同分制的数据集训练出来的模型,输出的绝对分数可能介于 0-5 分之间,也可能介于 0-100 分之间,显然这种情况下,模型直出的分数无法在模型版本迭代间保持数值稳定;2)即使数据集标注分制相同,例如都是 5 分制,但视频数据集失真类型复杂,通常来说 VQA 模型的训练数据集是手动收集或制作的,和实际业务场景的数据分布并不一致。
比如图 8 所示是两个常用的 5 分制视频数据集,可以看出二者 MOS 分数分布差别很明显,进而基于二者分别训练得到的 VQA 模型,对同一批数据进行打分之后,其均值必然会有显著差异;3)训练 VQA 模型使用的损失函数通常为 plcc-loss 和 rank-loss,这就决定了模型训练的目标为:预测值与真实值之间的相关性和排序准确性,而非模型的预测值与真实值之间的绝对分数一致性。因此 PLCC 与 SROCC 性能完全一致的两个模型,直接输出的绝对分数也可能不同。