查看原文
其他

2019 ICME论文解析:爱奇艺首创实时自适应码率算法评估系统

Yanan Wang 爱奇艺技术产品团队 2022-11-04

导读

在保障用户高清流畅观看方面,爱奇艺技术创新从未放慢脚步。由爱奇艺首创的对多种自适应码率算法实时演化系统(RESA),能够对不同的自适应码率算法进行实时的测试评估,通过该评测系统,引入AI深度强化学习方法,能提供合适各端的自适应码率服务并持续演化更好的自适应码率算法。


近日,其论文《RESA: A REAL-TIME EVALUATION SYSTEM FOR ABR》被IEEE ICME 2019收录,并在会议期间进行展览。IEEE ICME,即国际多媒体与博览会议,是由IEEE计算机学会、电路与系统学会、通信学会、信号处理学会合办,是计算机多媒体领域顶级国际会议之一。


摘要

自适应码率算法是从传输角度提高流媒体服务QoE(Quality of Experience,体验质量)的一项重要技术,可根据用户的网络状态和播放状态自动调节用户的观看码率,从而使用户能够更清晰、流畅地观看视频。目前,已经有很多自适应码率算法被提出,呈现出较好的效果,但是也存在一些问题:


1)这些算法的研究和测试都是基于开源数据集在模拟播放器上进行的,并没有这些算法在实际用户网络环境中的评测数据;

2)现有的自适应码率算法的QoE衡量标准都是基于单个用户的播放数据,且衡量标准的参数取值往往依据经验来设置;

3)现有的自适应码率算法只考虑了用户的QoE,未能考虑因此可能会带来的流媒体服务公司带宽成本的增加。


本文将针对上述问题,提出合理的解决方案,并为自适应码率算法能够在真实的线上环境中使用给出有力的数据支持。首先,设计一个可在线实时评测多种自适应码率算法的系统,该系统能够对多个自适应码率算法进行实时的A/B测试,并将测试结果进行可视化展示和比较。其次,要对自适应码率算法的QoE给出一个合理的评分模型,该模型可根据所有用户的清晰度、流畅度和平滑度数据,为算法整体QoE打分,且模型中的参数设置由用户的观看行为偏好确定,不再依赖于经验值。最后,提出一种可控制码率分布的自适应码率算法,该算法可通过调节用户的码率偏好值,从而控制整体的码率分布,在带宽成本可控的基础上实现自适应码率算法。


一、简介

QoE是流媒体体验质量的重要衡量指标,在众多提高QoE的技术上,自适应码率受到了越来越多的关注。目前已经有了很多行之有效的自适应码率算法,根据采取策略的不同,可分为基于带宽预测的自适应码率算法基于缓存大小的自适应码率算法综合使用带宽预测和缓存的自适应码率算法


在传统自适应码率算法的基础上,MAO提出了一种基于强化学习的自适应码率算法。该算法基于强化学习,无需对带宽进行预测,无需调参,同时也对buffer的长度没有要求。根据MAO的评测,相比较于传统算法,该算法能够比较明显提升整体的QoE性能。


然而,无论是传统的基于带宽或(和)缓存的算法,还是基于强化学习的算法,这些算法的研究和测试都是基于开源的网络带宽数据集,通过模拟用户的播放过程来完成的。但是模拟的过程往往和用户的实际播放过程有所差异。例如,根据MAO的评估Pensieve的QoE要比其之前的算法普遍高出13%-25%,但是在线上根据多用户多区域多节目的播放数据进行评测时发现,其QoE的提升并没有那么明显。


除此之外,在进行QoE评估时,这些算法只模拟一个用户的播放过程,使用一个用户的播放数据无法准确评估算法对整个网络中所有用户的有效性。为了能够真实地评估自适应码率算法在网络中所有用户上的有效性,需要网络中所有用户在该算法下的播放数据,并且需要一个新的QoE评估模型,以使用所有用户的播放数据进行算法的QoE评测。


为此,爱奇艺搭建一个可在线实时评估多种自适应码率算法的系统,该系统包括实现在爱奇艺客户端的ABS插件模块和实现在服务器端的算法代理模块、算法实现模块、QoE计算模块。在该系统上,为了能够排除其它因素,只评估算法对QoE的影响,我们选取了若干个区域的用户对自适应码率算法进行A/B Test,即在评估过程中,除了自适应码率算法之外,其它所有的用户端变量因素均保持一致分布。


首先选取了清晰度、流畅度和平滑度作为评测一个自适应码率算法效果的指标。但是在评测过程中发现,这三个指标是互相制约的——当一个算法的清晰度比较高时,则其流畅度往往会稍微低一些,当一个算法的清晰度和流畅度都比较高时,则其平滑度往往低一些。如果没有一个整体的评估标准,很难确定一个自适应码率算法是否优于另外一个。因此,需要制定一个相对合理的自适应码率算法评分模型,综合清晰度、流畅度和平滑度三个因素,使用网络中所有用户的播放数据对自适应码率算法进行综合评分。该评分模型中有三个可调参数,依据用户的观看行为偏好对这些参数进行设置。


在评测中还发现,无论是传统的基于带宽预测或(和)基于缓存的算法(BOLA/MPC),还是基于强化学习的算法(Pensieve),都是根据一个用户的状态参数决定该用户的合适码率,使得该用户的QoE最大化。但这些算法却往往忽略了大部分用户在网络状况较好的状态下,自适应码率大幅提高平均码率,这时带宽成本的增加会给流媒体服务公司带来的影响。在本文的第四部分将会提到,自适应码率算法带来的QoE提升绝大部分是通过码率的提升来获得的。这会使得开启自适应码率服务后,流媒体服务公司的带宽成本大幅度增长(Pensieve会使得我们的带宽增长23%)。并且因自适应码率算法只考虑了用户的状态参数,无法控制自适应码率算法的最终选择,这也导致因此而带来的带宽增长并不可控。


从提供流媒体服务的公司角度出发,一个用户QoE的最大化并不是我们追求的目标,寻求的是在公司成本可控的基础上,所有用户整体QoE的最大化,带宽成本和用户整体QoE能够有一个平衡点。为了实现这个目标,在使用自适应码率算法为用户提供服务时,除了用户的状态参数外,还需要考虑公司的带宽成本,为此提出一种可以控制码率分布的自适应码率算法。和现行的自适应码率算法所不同的是,该算法除了考虑用户的状态数据外,还可以设定用户的码率偏好值,从而在满足设定的码率分布的基础上,进行自适应码率调节,在总体带宽可控的基础上提高所有用户的整体QoE。


二、背景

QoE(Quality of Experience,体验质量)是衡量流媒体服务公司提供的流媒体体验质量的重要指标。根据相关调研,17%的用户会因体验质量问题退订流媒体服务。对流媒体服务公司来说,QoE的提高能够产生比较直接的收益。衡量QoE的主要指标有:


1.   清晰度

以一个视频的码率来衡量该视频的清晰度,一般情况下,码率越高、分辨率越高、且码率也高到与编码方法相适应的合理值,则清晰度越高。


2.   流畅度

流畅度是指用户在观看视频时的卡顿情况,这包括两方面:卡顿次数和卡顿时长。卡顿次数越少,卡顿时长越短,则流畅度越高。


3.   平滑度

平滑度是指用户观看视频时可感知到的码率切换情况,以切换次数来衡量一个视频的平滑度。切换次数越少,则平滑度越高。


提高QoE需要尽量提高用户观看视频的清晰度、流畅度和平滑度。对于流媒体服务来说,清晰度、流畅度和平滑度并不是相互独立的,而是相互制约的三个因素。


自适应码率是一种能够综合考虑清晰度、流畅度和平滑度,对QoE进行提升的方法,其所采用的码率调节算法为自适应码率算法。目前已经有很多自适应码率算法被提出,在这些算法中,比较常用的有基于缓冲区长度的BOLA算法,综合考虑缓冲区长度和带宽的MPC算法,以及最近受到广泛关注的基于强化学习的Pensieve算法。下文将基于以上三种自适应码率算法进行评测。


这些自适应码率算法在提出时,都会进行相应的评测,以检测算法的有效性。但是这些评测多是依靠开源的带宽数据进行模拟测试,未能真正的在用户的实际环境中进行评测。除此之外,每种算法也都有比较适用的场景,如何选取一个适合自己实际线上环境的算法,是流媒体服务公司在使用自适应码率之前需要考虑的问题。


A/B Test是网络分析中常用的测试方法,常用来评测一个变量在取不同值时(A or B)所产生的效果。在对自适应码率算法进行A/B Test时,需要保证除使用的自适应码率算法外,其它变量保持不变。为了能够对所选取的自适应码率算法进行A/B Test,搭建一个实时评估多种自适应码率算法的系统,对多个自适应码率算法进行实时同步评测。


在本文的第三部分将对该系统进行详细介绍。在这个评测系统上对BOLA/MPC/Pensieve进行了线上评测,结果会在本文的第四部分进行展示,从评测结果中可以看到,相比较于固定码率模式,上面三种算法对QoE都有一定的提升,但提升幅度有限。


三、自适应码率算法评测系统

目前的自适应码率算法多是基于开源的带宽数据进行模拟评测,并没有在真实网络环境中针对多个用户的进行QoE评测。基于此爱奇艺设计了一个可实时评估多种自适应码率算法的系统,该系统可以对多种自适应码率算法在真实网络环境中进行实时评测。本章将详细介绍该系统的结构和实现。


(一)自适应码率算法评测系统的结构

评估系统的结构[图1]主要包括客户端和服务器端两大部分。


1、客户端部分

客户端需要完成以下三个方面的工作:

1)   收集自适应码率算法所需的数据,并将该信息发送给服务器。

2)   接收自适应码率服务器的码率选择,并进行相应的切换码率操作。

3)   收集相应的QoE指标信息,并将搜集到的指标信息发送给QoE计算服务器。


通过一个集成在iQIYI客户端的自适应码率插件来完成这三方面的工作。


2、服务器部分

自适应码率服务器需要完成以下三个方面的工作:

1)   将用户映射到不同的算法服务,这部分工作通过一个算法代理模块来完成。

2)   实现所需评测的算法服务,并根据收集到的信息完成码率选择,这部分工作通过相应的算法实现模块来完成。

3)   对所需评测的算法完成评测数据的收集和统计,这部分工作通过一个QoE计算模块来完成。

图1  自适应码率算法评测系统架构


(二)自适应码率算法评测系统的实现

1、实现

为了能在自适应码率插件和服务器之间保持高效的数据传输,采用WebScoket + ProtoBuf方式进行数据传输。在进行自适应码率算法的A/B Test时,会随机选取一定区域的测试用户,实现在客户端的自适应码率插件会搜集实现自适应码率算法所需的相关数据,并将这些数据发送给算法代理模块,由算法代理模块决定该测试用户所对应的自适应码率算法,并将该用户的数据转发给相应的算法实现模块,算法实现模块根据这些数据选择一个合适的码率,并将该码率通过代理模块转发给客户端,最后由客户端完成码率切换。在这个过程中,客户端会将QoE指标数据发送给QoE计算模块,QoE计算模块根据收集到的指标数据计算出不同算法的QoE指标,并进行展示。


2、自适应码率算法评分模型

QoE是衡量流媒体体验质量的指标,由多个子指标组成,使用比较多的有清晰度、流畅度和平滑度。但是清晰度、流畅度和平滑度这三个指标并不是独立存在的,而是互相制约的,没有一个算法能够在这三个指标上均是最优的。换句话说,如果一个自适应码率算法总是返回用户所能支持的最高码率,则该算法的清晰度应该是最高的,而其流畅度应该是最低的;如果一个自适应码率算法总是返回用户所能支持的最低码率,则该算法的流畅度应该是最高的,而其清晰度应该是最低的;如果一个自适应码率算法总是返回用户当前所播放的码率,则算法的平滑度应该是最高的,而其流畅度和平滑度应该处于最低码率和最高码率之间。衡量一个算法的QoE需要综合考虑清晰度、流畅度和平滑度三个方面。目前比较常用的QoE计算方式如下:



公式的第一项为清晰度项,其中Rn为视频第n个分片的码率,q(Rn)为该码率所对应的清晰度得分;公式的第二项为流畅度项,Tn为播放第n个分片时的卡顿时间,μ为卡顿因子;公式的第三项为平滑度项,λ为平滑度因子。BOLA/MPC/Pensieve都采用了上面的QoE评分模型对算法的效果进行了评测,但不同的算法在评测时,所采取的参数值有所不同。在MPC中,q(Rn)=Rn,μ=4.3,λ=1;在BOLA中,q(Rn)=log(Rn/Rmin),μ=4.3,λ=1;在Pensieve中,分别用q(Rn)=Rnμ=4.3,λ=1和q(Rn)=log(Rn/Rmin),μ=4.3,λ=1做了评测。


上述QoE评分模型虽然在很多研究工作中得到了应用,但正如前面提到的,这些自适应码率算法在评测时都是使用开源的网络数据,对单个用户的播放过程进行模拟,因此上述QoE评分模型也是针对单个用户的。在评测过程中,使用了多个用户的真实播放数据,因此需要一个新的能将多个用户的清晰度、流畅度和平滑度综合到一起对自适应码率算法进行纷纷的QoE模型。


一个简单的解决方案是使用上述QoE模型计算出单个用户的QoE数据,最后再对所有用户的QoE数据进行平均作为整体的QoE得分。这样做的问题是,不同用户的播放时长会不一样,简单地对所有用户的QoE数据进行平均是不合理的。似乎利用播放时长进行加权平均是一个比较合理的方式,但是这样就需要等所有的用户都播放完成才能进行最终的计算,但实际是在任何时候都会有一些用户在观看视频,这样无法等到所有用户都完成播放的时间点,并且这种计算方式也无法进行实时计算。为了能够将多个用户的清晰度、流畅度和平滑度综合到一起,并且能够对算法的QoE得分进行实时计算,总结出下面的QoE评分模型:



该评分模型是基于时间片的,如五分钟、一个小时、一天等。Definition Score为该时间片内的清晰度得分,Fluency Score为该时间片内的流畅度得分,Smoothness Score为该时间片内的平滑度得分。相关参数的定义如下:

 无论是BOLA/MPC/Pensieve使用的针对单个用户的QoE模型还是针对多用户的QoE模型,都有一些可以调节的参数值,合理的确定这些参数的取值是确保QoE模型合理性的重要因素。在之前的研究中,一般都是根据过往经验,以及对清晰度、流畅度和平滑度的偏好来确定参数的取值。在下一章节,将介绍一种合理的确定QoE模型可调节参数的方法,该方法根据用户的观看体验来进行设置,不依赖于过往经验。


四、算法评测

在爱奇艺自适应码率算法评测平台上,对BOLA/MPC/Pensieve进行了评测。根据前面的介绍,以下面几个指标对自适应码率算法进行评测:


1.   清晰度

清晰度和用户观看的码率呈正相关,所以以用户的码率分布来衡量一个算法的清晰度指标。为了能够更好地展示不同自适应码率算法之间的清晰度对比,将720P以上的码率定义为高码率,算法的高码率时长占比越高,则清晰度也就越高。


2.   流畅度

流畅度和用户的卡顿次数以及卡顿时长呈负相关,所以我们以10-卡顿用户占比×卡顿时长占比×100来衡量一个算法的流畅度。


3.   平滑度

平滑度和用户的切换次数呈负相关,所以我们以10-切换次数/总播放分片数×100来衡量一个算法的平滑度。


在对BOLA/MPC/Pensieve进行评测前,先对三种特殊的自适应码率算法进行评测,这三种算法是:


1.   MAX算法

该算法将用户当前播放节目对应的最大码率作为目标码率返回。


2.   MIN算法

该算法将用户当前播放节目对应的最小码率作为目标码率返回。


3.   ECHO算法

该算法直接将用户的当前码率作为目标码率返回。


这三种算法都是比较极端的自适应码率算法,其评测结果如下:

图2. Evaluation of ECHO, MAX and MIN


从上面的评测结果中可以看出,MAX算法的清晰度最高,MIN算法的清晰度最低,ECHO算法的平滑度最高,这也符合对这三种算法的定义。此外,基于对用户的调研,这三种算法的QoE得分应符合以下规律:


1.   在ECHO模式下,用户会选择一个自己能够接受的码率来观看视频,该码率可能是默认的,也可能是用户手动调节的,而MIN和MAX为两种非常极端的自适应码率算法,因此ECHO模式的QoE得分应该大于MIN和MAX。


2.   相对于缓冲较快,但是低码率的视频,更多的用户倾向于多缓冲一段时间,以观看更高码率的视频。这从ECHO/MAX/MIN的平滑度图表中也可以得到印证,理论上MIN和MAX的切换占比应该比较接近,但是在图中我们可以看出,MIN的切换占比要高于MAX,这说明当我们给用户一个低清晰度的码率时,更多的用户会切回更高码率。因此MAX的QoE得分应稍高于MIN。


基于上面两点可以确定本文第三部分给出的自适应码率算法QoE评分模型中的可调参数α,β,γ,参数C是一个常数,并不会影响QoE的相对大小,可根据需要进行调节,防止在调节α,β,γ出现QoE为负的情况。最终我们选择的α,β,γ值如下:

α=35,β=50,γ=1000


在设置了α,β,γ之后,可以确定第三部分介绍的QoE评分模型,在该模型的基础上对

BOLA/MPC/Pensieve进行了评测。并且从清晰度、流畅度和平滑度三方面对BOLA/MPC/Pensieve进行评测,结果如图3。

(a) Resolution 

 (b) Fluency 

(c) Smoothness

(d) QoE

图3. Evaluation of BOLA, MPC and Pensieve


此外,对ECHO/MAX/MIN/BOLA/MPC/Pensieve整体QoE进行了对比,结果如图4。从图五中可以看出,ECHO模式的QoE要稍高于MAX,MAX的QoE要稍高于MIN,这符合对这三种模式QoE的预期。在所评估的三种ABR算法中,Pensieve的QoE最高,BOLA稍高于MPC,虽然这三种自适应码率算法相比较于ECHO模式的QoE都有所提升,但提升幅度并不是非常明显(Pensieve的QoE提升幅度最大,约为12%),这可能是两方面的原因造成的:


1.   为了满足“ECHO>MAX>MIN”的QoE模型限制要求,设置比较大的流畅度因子,这使得QoE得分受流畅度得分的影响较大。这也和爱奇艺一直使用的“单位时间内卡顿用户占比”作为评估CDN网络性能的主要指标一致。


2.   得益于爱奇艺庞大但很优秀的视频传输网络,卡顿用户占比在高峰期依然在5%以下,亦即在流畅度方面给自适应码率算法能够优化的空间并不大。


图4 ECHO/MAX/MIN/BOLA/MPC/Pensieve的QoE整体对比


五、可控制码率分布的自适应码率算法

从上面的分析中可以看出,除了流畅度之外,自适应码率算法还通过提高清晰度来提高流媒体服务的QoE。相比较于ECHO模式,自适应码率算法可以大幅提高高码率节目时长的占比。但是为了能够支持用户观看码率的提高,流媒体服务公司势必需要向网络运营商购买更高的网络带宽。为了评估自适应码率对带宽的影响,选择一个区域的用户采用Pensieve算法,来测试采用Pensieve算法之后,区域整体带宽的变化,结果如图5所示。

图5 Pensieve的带宽增长


采用Pensieve算法之后,高码率节目时长占比增加了41%,带宽增长了23%,带宽成本的增长时和带宽的增长成正比的,为了支持Pensieve算法,需要增加23%的带宽成本。并且因无法控制最终输出的码率占比,这种带宽成本的增加也是不可控的。


造成这种问题的原因是目前的自适应码率算法均是从用户的角度出发来提高QoE的,而未能考虑提高QoE带来的成本压力问题。为此,提出一种可以控制码率分布的自适应码率算法。通过该算法可以实时对用户的整体码率进行调整,从而在带宽不增长或增长可控的基础上实现自适应码率


Pensieve是基于强化学习的自适应码率算法,其优势在于无需对模型进行调参,可根据实际数据对模型进行训练。并且在第四部分可以看到,Pensieve在综合指标上要优于MPC和BOLA。为了能够解决自适应码率算法带来的带宽增加的问题,提出一种可以控制码率分布的自适应码率算法(Adaptive Bitrate Streaming with Bitrate Control, ABSbc),该算法基于强化学习,除了带宽、码率和buffer长度外,ABSbc还包括一个码率控制维度,用于控制最终输出的码率偏好,如图6。

图6  ABSbc示意图


为了使ABSbc能够在切换时有比较明显的码率偏好,对ABSbc的reward机制进行了如下设计。


  • 如果所选码率小于目标码率,则

  • 如果所选码率大于等于目标码率,则

bitrate为码率控制维度值所对应的目标码率


ABSbc的码率控制维度用于控制其最终的码率输出偏好。将码率控制维度的取值区间定义为[0,1],并且将该区间线性映射到用户的可选码率区间[最小码率,最大码率],通过这个线性映射关系,通过码率控制维度的取值来确定其所对应的目标码率取值,并从用户所支持的码率中,选择一个和目标码率最接近的码率作为该码率控制维度值所对应的最终目标码率。为了使ABSbc能够根据用户的网络状态和播放状态对用户的码率进行动态切换,根据上面的reward机制,我们对ABSbc进行了训练,并在线上对不同的码率偏好值对码率分布的影响进行了验证,结果如图7。从图中可以看出,码率偏好值可以对码率分布产生比较直接的影响,后续我们会对ABSbc进行更为详尽的线上测试。

图7  码率偏好值对码率分布的影响


设置码率偏好值的目的是为了能够在整体网络带宽可控的基础上提供自适应码率分布,由此可以根据整体的网络带宽和用户的优先级为不同的用户设置不同的码率偏好值,从而在整体网络带宽可控的基础上为不同的用户提供差异化的自适应码率服务。


六、总结

本文中爱奇艺实现了一个可在线实时评测多种自适应码率算法的系统,该系统能够对不同的自适应码率算法进行实时的测试评估,通过该评测系统,可以选择合适的自适应码率算法以提供合适的自适应码率服务。


为了使自适应码率算法有一个统一可靠的评估标准,故选取了清晰度、流畅度和平滑度三个指标作为评测自适应码率算法的标准,进而在这三个指标的基础上提出了一个综合所有用户播放数据的QoE评分标准,并依据用户实际的观看行为偏好来设置评分标准中的可调参数。相比较于常用的基于单个用户播放数据的QoE评分标准,QoE评分标准能够更全面地评估自适应码率算法的QoE,并且参数不依赖于经验设置,更符合用户的观看体验。


在自适应码率算法评测系统上,依据QoE评分标准对BOLA/MPC/Pensieve进行了详细的评测。从评测结果上来看,Pensieve的QoE要优于BOLA,BOLA要优于Pensieve。但是得益于高质量的视频分发网络,自适应码率算法对整体QoE的提升并不是非常明显。


在网络环境中,自适应码率算法通过提高用户观看视频的清晰度来提升整体QoE,因此QoE的提升也会带来大幅度的带宽提升。针对这个问题,提出一种可控制码率分布的自适应码率算法,通过给不同的用户设置不同的码率偏好值,在整体带宽可控的基础上为用户提供差异化的自适应码率服务。后续会对该算法进行全面的评测,并根据评测结果进行优化。


end

也许你还想看

开源|爱奇艺开源基于Android App Bundle动态化方案Qigsaw

干货|移动端小程序框架面面观


扫一扫下方二维码,更多精彩内容陪伴你!

爱奇艺技术产品团队

简单想,简单做


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

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