一种基于视频分类的码率自适应算法
2021-12-20陈梓晗肖庆宇
陈梓晗,叶 进,肖庆宇
(广西大学计算机与电子信息学院,南宁 530004)
0 概述
随着互联网技术的不断发展,视频流媒体已成为当前网络传输流量的主要组成部分,在网络应用中占据核心地位。根据第44 次中国互联网统计报告显示[1],目前中国视频类流量占因特网流量的80%,视频类APP 应用产生了近30%的移动应用流量。思科公司的报告指出[2]:全世界网络流量的67%是视频流量,预计到2021 年将达到80%。视频流媒体的码率自适应(Adaptive Bitrate,ABR)算法的目标是让客户端所播放的视频块码率尽可能匹配当前网络带宽,从而最大化带宽的利用率,提升用户体验质量(Quality of Experience,QoE)。
依据工作原理的不同,码率自适应算法可以分为三类:第一类是基于吞吐量[3-4]带宽预测[5-6]的方法,依据网络吞吐量预测带宽;使得请求视频块的码率接近可用网络带宽;第二类是基于缓存[7-9]的方法,将缓存分为若干区间,并对每个缓存区间采用不同的码率选择策略[9-10];第三类方法是综合利用带宽预测[11-13]以及缓存信息[14-15]。而且随着人工智能技术的发展,此类策略应用机器学习[16-17]方法实现更精确化的码率控制和QoE 提升。下文具体分析各类方法的工作原理和特性。
基于吞吐量预测的方法核心是根据预测的网络吞吐率来选择码率。其中,客户端依据近段时间内的网络吞吐率来预测网络带宽,以此选择最佳码率,但受链路状态[3]、带宽波动[4]、网络环境异构性[5]等因素的影响,选择最佳码率变得较困难,如在时变无线信道上吞吐量预测常常是不准确的,难以选择最优的码率。
不同于依据预测未来吞吐率来选择码率,文献[7]依据观察客户端视频缓冲区变化来确定最优码率,在视频块缓冲区长度较大时选择高码率,以提升视频质量;否则,选择低码率以避免视频卡顿。文献[8]提出的ABR 算法在视频开始播放阶段基于历史吞吐率选择码率,在网络带宽平稳后根据当前的缓冲区占用情况选择视频码率。但总体而言,基于缓冲区占用的ABR 算法由于客户端缓冲区的阈值界定难以选择,存在实际部署的问题。而基于带宽和缓存混合控制方法[11-12]能充分利用网络带宽和缓冲区的状态[13-14]选择码率。文献[15]将码率的选择建模为一个模型预测控制问题,依据吞吐量和缓冲区占用信息通过控制理论模型进行判断推理。然而,该方法的性能过度依赖于系统模型,对吞吐量预测误差和优化周期长度非常敏感。
随着人工智能技术飞速发展和不断应用,文献[16-17]提出基于强化学习框架的码率自适应方法。其中Pensieve[16]借助于强化学习算法训练模型,不依赖于环境的假设,而是根据客户端采集数据为视频块选择码率,通过观察过去决策的结果来学习码率的选择策略。
现有研究的主流方法是构建统一的QoE 模型,并设计启发式的码率自适应算法,考虑不同类型视频的特点。实际上,短视频、长视频和直播视频各自侧重不同的传输特性,具有不用的QoE 需求。如果对不同类型视频采用统一的QoE 优化函数,则难以适应各种类型的个性化需求。例如,在网络带宽波动较大时,基于吞吐率的ABR 算法也会频繁切换码率,虽然对长视频的影响不大,但会严重影响直播视频的观看体验。在Pensieve 方案[16]中,使用用户体验质量的相关指标作为激励(reward)函数反馈给码率决策系统,虽然兼顾了各个方面的性能需求,提高了网络适应性,但也并没有根据视频类型去制定更有针对性的reward 函数,难以为各类视频提供满意的用户体验质量。
本文将视频分为长视频、短视频与直播视频三类,针对不同视频类型,通过强化学习方法得到更好的用户体验质量。使用不同类型视频的数据集训练强化学习模型,得到不同视频类型对应的reward函数参数,基于Asynchronous Advatage Actor-Critic(A3C)[18]强化学习模型实现视频类型区分的码率自适应算法C-ABR。
1 算法设计
流媒体码率自适应算法的目标是提高用户体验质量。不同类型视频由于各自的特点和传输需求,对用户体验质量产生不同的影响。为解决该问题,本文提出视频类型敏感的C-ABR 算法。
1.1 总体设计
C-ABR 算法是基于DASH 视频流框架的码率自适应算法。整体上包含网络参数处理模块、模型训练模块和码率选择模块3 个部分。C-ABR 算法的部署如图1 所示。首先网络参数处理模块采集网络状态和视频类型参数,提交给A3C 模型训练模块,然后训练模块通过训练输出ABR 码率选择的映射表,最终客户端依据映射表和当前网络参数选择码率。
图1 C-ABR 算法部署过程Fig.1 Deployment process of C-ABR algorithm
在系统部署的过程中,本文选择A3C 算法作为强化学习模型。与DQN[19]等其他强化学习算法相比,A3C算法不需要使用经验池来存储历史样本,节约了存储空间。同时,A3C 算法采用异步训练的模式,提升了训练速度。
1.2 激励函数
定义激励(reward)函数综合考虑码率、码率切换和卡顿时间对用户体验质量的影响。在强化学习过程中,reward 函数是影响决策的重要因素,强化学习的每一步行动都会计算当前步数的reward 函数值,reward 函数值越大就表明当前步数对整个过程的贡献越大。具体计算公式如式(1)所示:
其中:Rk是第k个视频块码率;q(Rk)是指第k个视频块reward 函数中的码率得分,码率代表视频块的播放清晰度,码率越高,表示播放的视频块越清晰,进而reward 得分越高为码率切换惩罚,是指在播放中对清晰度切换事件,在播放过程中,码率切换越多,惩罚越大;γ×Tn为卡顿惩罚,Tn是指在播放过程出现卡顿事件的时长,卡顿时间越长,reward 函数值越低。
本文为不同视频类型设计相应的reward 函数。首先将码率、码率切换与卡顿时间3 项指标全部归一化。每个视频块的码率转化为其中Rmax是指视频最高码率,视频切换转化为是视频最低码率。另外根据统计,通常视频块遭遇卡顿不会超过2 s,所以卡顿归一化为最终得到归一化reward 函数如式(2)所示:
然后将λ1、λ2、λ3全设定为1,使用Pensieve 算法测试在3 类视频中各项指标(码率、码率切换、卡顿时间)的影响程度。测试数据集包含各类视频500 组样本,得到不同类视频各项指标项的平均值。计算各项指标平均值的绝对值,得到各项指标对3 项指标绝对值之和的比值,如图2 所示。
图2 不同视频类型下各指标的影响Fig.2 Influence of each index under different video types
最后将长视频类型下α、β、γ参数分别设置为5、1、1。同时,依据图2 所示指标项的影响程度,按各指标项之间的比例关系分别设置短视频和直播视频的α、β、γ参数,如表1 所示。
表1 视频类型与α、β、γ 的映射关系Table 1 Mappin relation between video types and α,β,γ
1.3 A3C 强化学习模型
本文使用A3C 强化学习模型来选择码率。如图3所示,将不同视频类型的数据集分别输入A3C 训练模型。输入数据为{Xt,Tt,Nt,et,v,bt},其中:Xt为上个视频块的下载吞吐率;Tt为上个视频块下载的时间;Nt为下个视频块的大小;et为上个视频块的重传时间;v为上个视频的视频类型;bt为当前的缓冲池大小。
图3 A3C 强化学习模型Fig.3 Reinforcement learning model of A3C
A3C 强化模型框架包含2 个部分:Actor 行动模块和Critic 评判模块。其中,Actor 行动模块是执行机构,输入外部的状态S‘t,然后输出动作a,在模型中表现为下个视频块的选择码率。而Critic 评判模块则根据历史信息及反馈reward 函数值进行自我调整,然后影响整个Actor 行动模块。A3C 模型在Actor-Critic 框架中还引入了异步训练的模式,可以同时启用多个训练环境进行训练,提升模型训练速度,并使样本分布更加均匀。
2 实验结果与分析
2.1 实验环境与数据集
实验配置:CPU 为Intel i7 7700HQ,RAM 为8 GB,GPU 为Nvidia GTX 1060,GPU加速库为CUDA 10,实验系统为Ubuntu 16.04,开发环境为Pytorch,开发工具为Pycharm,开发语言为Python。
为便于对本文的码率自适应算法进行比较,本文使用L3VTP 仿真器从真实环境中获取视频吞吐量数据来进行算法测试。仿真器的输入包含视频数据集和网络数据集,用来仿真模拟真实环境中网络的动态变化。本文视频数据集来自于真实环境采集,分别从真实环境中获取了短视频、长视频和直播视频进行仿真测试。其中各类视频的样本数量约为2 000,模型训练过程中迭代次数设置为20 000,表2所示为视频样本范围。
表2 视频样本参数范围Table 2 Video sample parameter range
2.2 结果分析
首先使用不同的强化学习模型来比较训练结果。从短视频、长视频、直播视频数据集各取10 组数据分别进行测试,并取其平均结果。分别用DQN、DDQN[20]、A3C 3种不同的强化学习模型训练,并统计不同模型的QoE 得分,测试结果如表3所示。
表3 不同强化学习模型的QoE 得分Table 3 QoE score of different reinforcement learning models
从测试结果可以看出,A3C 模型在测试中的QoE 得分总体高于DQN、DDQN 模型。其中,对于长视频,3 种强化学习方法模型最后的得分是比较接近;在直播视频得分对比中可以看出,A3C 模型效果明显优于DQN 与DDQN 模型;而在短视频中,A3C模型的优势最为明显。
然后测试本文C-ABR 算法的性能。对比测试C-ABR、Pensieve 与MPC 3 种算法的性能,结果如图4所示
图4 不同算法在3 类视频中的结果Fig.4 Results of different algorithms in three kinds of videos
3 种算法的码率得分情况如图4(a)所示,Pensieve和C-ABR 算法相比MPC 算法优势明显,原因在于:这2 种算法都是基于强化学习的方法,能够在有限的带宽资源下,主动选择高码率来提升用户体验质量,使得码率得分提升。MPC 缺乏准确的网络动态模型,它依赖于简单的和次优的启发式方法,导致保守的码率选择。而在C-ABR 与Pensieve 的对比中可以看出,短视频与直播视频C-ABR 算法的得分更高。
切换惩罚与卡顿惩罚得分如图4(b)和图4(c)所示。由于C-ABR 在训练过程中对视频进行了分类,在短视频中C-ABR 将卡顿惩罚系数提高,因此在短视频的卡顿惩罚对比中,C-ABR 的卡顿惩罚是最低的。而在直播视频中,C-ABR 将切换频次惩罚系数提高,使得直播的切换频次惩罚明显低于其他算法。
QoE 整体得分如图4(d)所示:在长视频中,C-ABR与Pensieve 得分相差无几,在短视频的对比中,C-ABR比MPC 提升了50.4%,比Pensieve 提升了17.2%;在直播视频的对比中,C-ABR 比MPC 和Pensieve 分别提升了42.1%和22.7%。
3 结束语
本文提出一种区分视频类型特征的码率选择算法C-ABR。该算法为不同类型视频设计了QoE优化函数,并使用A3C 深度强化学习算法选择视频码率。C-ABR可广泛部署在视频传输框架中,不需要改动现有硬件,有效提升用户体验质量。实验结果表明,与Pensive 算法相比,C-ABR 算法提高了14.7%的用户体验质量分数。下一步将考虑使用用户对不同视频源的主观观看体验作为选取码率的依据,制作精准的用户画像,并通过设置优先级调节网络带宽分配来提升用户体验。