BOLA (INFOCOM ‘16) ABR算法阅读笔记

这篇具有很好参考价值的文章主要介绍了BOLA (INFOCOM ‘16) ABR算法阅读笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

BOLA(Buffer Occupancy based Lyapunov Algorithm)是一种经典的基于播放缓冲区的(Buffer-based)ABR(自适应码率)算法,并且其改进版本是如今dash.js开源播放器的默认ABR算法1

BOLA算法基于李雅普诺夫(Lyapunov)优化方法设计,将ABR算法视作效用最大化问题,其效用通过提高视频质量和减少卡顿时间来提升。鉴于其初版论文包含了大量理论推导和公式建模,没有相关背景的人可能不易读懂,故本文可以作为便于理解的参考资料。至于BOLA在dash.js中的代码实现,可参考:BOLA dash.js代码实现。

描述BOLA的论文有以下五篇,本文仅关注第一篇INFOCOM '16初版论文

  1. BOLA: Near-optimal bitrate adaptation for online videos (INFOCOM '16) :BOLA的初版论文,对其建模和算法进行了详细描述,包含四种不同的版本(BOLA-BASIC、BOLA-FINITE、BOLA-O、BOLA-U),其中BOLA-O为2018年以前dash.js的默认BOLA算法。
  2. BOLA: Near-Optimal Bitrate Adaptation for Online Videos (TON '20):INFOCOM '16论文的期刊扩展版。
  3. From theory to practice: improving bitrate adaptation in the DASH reference player (MMSys '18):提出了BOLA的改进版本BOLA-E,引入占位符(placeholder)来解决缓冲区不足时的决策问题;将BOLA-E和基于吞吐量的(Rate-based)算法结合成为DYNAMIC,是如今dash.js的默认ABR算法1;引入了FAST SWITCHING算法,将低码率的视频块替换为高码率视频块。
  4. From Theory to Practice: Improving Bitrate Adaptation in the DASH Reference Player (TOMM '20):MMSys '18论文的期刊扩展版。
  5. Implementing BOLA-BASIC on Puffer: Lessons for the use of SSIM in ABR logic:在Puffer平台 (NSDI '20)上实现BOLA-BASIC的经验,将其衡量视频质量的效用函数替换为SSIM。

系列博文索引:

  • DASH标准&ABR算法介绍
  • dash.js的ABR逻辑
  • ABR算法研究综述阅读笔记
  • 经典ABR算法介绍:FESTIVE (CoNEXT '12) 论文阅读笔记
  • 经典ABR算法介绍:BBA (SIGCOMM ’14) 设计与代码实现
  • 经典ABR算法介绍:BOLA (INFOCOM '16) 核心算法逻辑
  • 经典ABR算法介绍:BOLA (INFOCOM '16) dash.js代码实现
  • 经典ABR算法介绍:Pensieve (SIGCOMM ‘17) 原理及训练指南

概述

BOLA的目标

BOLA的总体目标是最大化(平均)效用,其效用定义分为两部分:(1) 提高视频质量,(2) 减少卡顿时间

  • 注意:BOLA的效用定义中并不包含减少视频质量的切换2,其在BOLA-O中针对此项进行单独优化,详见下文
  • *BOLA的效用公式并不重要,其核心算法非常简单(见下文的BOLA-BASIC),所以这部分看不懂也可以略过

(1) 提高视频质量

在一个视频会话中,平均视频质量的效用为 v ˉ N \bar{v}_N vˉN,其效用公式为论文的式(4),即:
v ˉ N ≜ E { ∑ k = 1 K N ∑ m = 1 M a m ( t k ) v m } E { T e n d } (4) \tag{4} \bar{v}_N\triangleq\frac{\mathbb{E}\{\sum_{k=1}^{K_N}\sum_{m=1}^{M}a_m(t_k)v_m\}}{\mathbb{E}\{T_{end}\}} vˉNE{Tend}E{k=1KNm=1Mam(tk)vm}(4)

其中:

  • N N N:该会话中视频块总数量
  • M M M:码率级别,注意1表示最高码率级别, M M M表示最低码率级别
  • v m v_m vm:目标码率级别 m m m的效用,下文给出定义,注意视频码率越高,视频块越大,效用越高(式(1))
  • a m ( t k ) a_m(t_k) am(tk):BOLA将视频会话划分为若干个时隙,则 a m ( t k ) a_m(t_k) am(tk)表示在第 k k k个时隙内的播放器请求行为
    • 若播放器在该时隙内请求视频块,则 a m ( t k ) = 1 a_m(t_k)=1 am(tk)=1,且该时隙时长等于该视频块的下载时间
    • 若播放器在该时隙内不请求视频块(仅播放),则 a m ( t k ) = 0 a_m(t_k)=0 am(tk)=0,且该时隙时长为固定值 Δ \Delta Δ
  • T e n d T_{end} Tend:该会话持续总时长(这个不重要)

这个公式的形式看起来复杂,但其含义非常简单:分母为整个会话的持续时间,分子表示整个会话中视频质量的效用之和(可以简单理解为视频块码率之和,但并不是),因此整个公式就是计算平均视频质量(效用)。

(2) 减少卡顿时间

在一个视频会话中,平均不卡顿(流畅播放)的效用为 s ˉ N \bar{s}_N sˉN,其效用公式为论文的式(5),即:
s ˉ N ≜ N p E { T e n d } = E { ∑ k = 1 K N ∑ m = 1 M a m ( t k ) p } E { T e n d } (5) \tag{5} \bar{s}_N\triangleq\frac{Np}{\mathbb{E}\{T_{end}\}}=\frac{\mathbb{E}\{\sum_{k=1}^{K_N}\sum_{m=1}^{M}a_m(t_k)p\}}{\mathbb{E}\{T_{end}\}} sˉNE{Tend}Np=E{Tend}E{k=1KNm=1Mam(tk)p}(5)

其中, p p p表示每个视频块的时长。因此,该公式表示的是视频播放总时长占会话总时长的比例,在完全没有任何卡顿发生的情况下, s ˉ N \bar{s}_N sˉN最大为1。

  • 注意:与MPC (SIGCOMM '15)不同,BOLA并没有对卡顿时间的计算进行建模,而是通过对视频块的总播放时间来表征不卡顿的总时间
  • 式(4)和(5)的具体形式不重要,重要的是二者的差异,即分子中的 v m v_m vm p p p

效用最大化

BOLA效用最大化的目标即最大化下式,表示提升视频质量的同时减少卡顿时间:
v ˉ N + γ s ˉ N \bar{v}_N+\gamma \bar{s}_N vˉN+γsˉN

其中, γ \gamma γ为调整参数,类似于MPC的QoE公式中的卡顿项系数,不过取值有所不同。

BOLA的四个版本

BOLA总共有四个版本:

  • BOLA-BASIC:基础版本,假设视频块数量N趋近于无穷大
  • BOLA-FINITE:在BOLA-BASIC的基础上,考虑了有限视频长度的情形
  • BOLA-O:在BOLA-FINITE的基础上,尽可能避免码率切换(Oscillations)
  • BOLA-U:在BOLA-FINITE的基础上,尽可能保持效用(Utility)

注意,BOLA实际上不止是ABR算法,其还包括了视频请求控制(基于时隙)与放弃请求(BOLA-FINITE)的逻辑3

BOLA-BASIC【关键】

BOLA-BASIC是最基本的BOLA版本,也体现了BOLA的核心算法,是其他三个版本的基础。

*简便起见,本文仅叙述BOLA的直观设计理念,略去其理论推导的部分。若对其基础理论有兴趣,可以参考原论文及其引用文献[17]:M. J. Neely, Stochastic network optimization with application to communication and queueing systems. Morgan & Claypool, 2010

核心算法

略去一些列理论分析与简化(§III.A),BOLA-BASIC基于李雅普诺夫方法,将最大化 v ˉ N + γ s ˉ N \bar{v}_N+\gamma \bar{s}_N vˉN+γsˉN转为:

最大化 ∑ m = 1 M a m ( t k ) ( v m + γ p ) \sum_{m=1}^{M}a_m(t_k)(v_m+\gamma p) m=1Mam(tk)(vm+γp)的同时最小化 Q ( t k ) Q(t_k) Q(tk),联合起来表征为式(9):
max ⁡ ∑ m = 1 M a m ( t k ) ( V v m + V γ p − Q ( t k ) ) ∑ m = 1 M a m ( t k ) S m s . t . ∑ m = 1 M a m ( t k ) ≤ 1 , a m ( t k ) ∈ { 0 , 1 } (9) \tag{9} \max \quad\frac{\sum_{m=1}^{M}a_m(t_k)(Vv_m+V\gamma p-Q(t_k))}{\sum_{m=1}^{M}a_m(t_k)S_m} \\ s.t.\quad\sum_{m=1}^{M}a_m(t_k)\leq1,a_m(t_k)\in\{0,1\} maxm=1Mam(tk)Smm=1Mam(tk)(Vvm+pQ(tk))s.t.m=1Mam(tk)1,am(tk){0,1}(9)

其中:

  • V V V:调整参数(与最大buffer时长有关)
  • Q ( t k ) Q(t_k) Q(tk) t k t_k tk时刻(时隙 k k k开始时)buffer中的视频块数量(表征缓冲时长)
  • S m S_m Sm m m m级别码率对应的视频块大小

具体而言,式(9)有两个分支:

  • 当buffer水平足够高时,即 Q ( t k ) > V ( v m + γ p ) Q(t_k)>V(v_m+\gamma p) Q(tk)>V(vm+γp)时,BOLA在该时隙中不请求视频块
    • 注意:BOLA会涉及视频块的请求控制4
  • 否则,BOLA求解 ( V v m + V γ p − Q ( t k ) ) / S m (Vv_m+V\gamma p-Q(t_k))/S_m (Vvm+pQ(tk))/Sm的最大值,为下一视频块选择码率
    • 此式为BOLA的核心ABR算法,包含两个参数 V V V γ \gamma γ

效用计算

BOLA认为每个码率对应的效用函数是一个收益递减(diminishing returns)的凹(concave)函数。
直观上来说,码率的提升带来的QoE提升并非线性,而是会收益递减。举例而言,2K相对于1080p的画质提升,很可能不如720p相对于480p的画质提升大。

因此,为了体现码率对于视频质量带来的非线性效用提升,BOLA选择对数函数(以e为底)作为码率的效用函数5,其形式为:

v m = l n S m S M v_m=ln \frac{S_m}{S_M} vm=lnSMSm

其中, M M M表示最低码率的级别,因此某档码率的效用为其码率与最低码率的比值的自然对数

决策示例

当BOLA-BASIC的两个参数的取值为 γ = 5.0 / p \gamma = 5.0/p γ=5.0/p V = 0.93 V = 0.93 V=0.93时,其每个码率级别对应的 ( V v m + V γ p − Q ( t k ) ) / S m (Vv_m+V\gamma p-Q(t_k))/S_m (Vvm+pQ(tk))/Sm的数值随buffer大小(buffer内视频块数量)的变化如下图所示:
image.png
可以看出,每个码率在不同buffer下对应一条直线,而两条直线的交点对应的buffer大小,则表示切换码率的buffer阈值。因此BOLA-BASIC的决策函数类似于阶梯状,如下图所示:
image.png
作为对比,同为buffer-based方法的BBA (SIGCOMM '14)的决策函数完全是线性的:
image.png

参数设置

  • γ \gamma γ:控制避免卡顿的权重,在BOLA文章中经常设置为 γ = 5.0 / p \gamma = 5.0/p γ=5.0/p
  • V V V:给定buffer能容纳的视频块最大数量(表征最大buffer大小) Q m a x Q_{max} Qmax,有 V = ( Q m a x − 1 ) / ( v 1 + γ p ) V=(Q_{max}-1)/(v_1+\gamma p) V=(Qmax1)/(v1+γp)
    • 注意: v 1 v_1 v1表示最高码率级别的效用

如果需要指定一个阈值(类似于BBA的reservoir),使得当buffer低于该阈值时持续选择最低码率,则可以通过计算相应的 γ \gamma γ V V V实现。

BOLA-FINITE

BOLA-BASIC假设了一个无穷大的视频长度(视频块数量),但这对于真实视频而言显然是不成立的。因此,作者提出BOLA-FINITE作为对于较短视频的改进版本,其与BOLA-BASIC的差异在于以下两个方面:

  • 动态调整 V V V的取值,以避免buffer过多或者过少: V D = ( Q m a x D − 1 ) / ( v 1 + γ p ) V^D=(Q_{max}^D-1)/(v_1+\gamma p) VD=(QmaxD1)/(v1+γp)
    • 其中,最大buffer大小 Q m a x D Q_{max}^D QmaxD也是动态的(*论文似乎没说怎么实现,不过在dash.js中,这个值会随着视频总时长和码率级别进行调整)
  • 放弃下载:当所选码率过高而网络突然变差,无法在短时间内完成下载时,BOLA-FINITE会考虑放弃当前视频块下载并重新请求更低码率的视频块3

BOLA-O & BOLA-U

尽管BOLA-FINITE可以应用于较短的视频上,但鉴于BOLA所优化的效用仅包括视频质量和卡顿,并不包括质量切换,所以BOLA-FINITE可能会产生频繁的码率切换。为了减少码率切换,作者在BOLA-FINITE的基础上提出了两个版本:BOLA-O和BOLA-U。

对于BOLA-FINITE而言,码率切换由以下三方面原因触发:

  1. 带宽变化:BOLA-FINITE为了适应网络变化,会调整码率决策,这种情况下引起的码率切换不必调整
  2. 密集的buffer阈值:当buffer上限过低时,选择不同码率的对应的buffer阈值可能太过密集(如间隙小于1个视频块时长),则会导致buffer在多个阈值上剧烈变化(*BBA也有这种情况)
  3. 离散码率的影响:码率级别不是连续的而是离散的,当网络带宽刚好处于两个码率之间,则BOLA-FINITE可能会在这两档码率间反复切换,因为平均buffer是会稳定在某个数值附近

在第3种情况下,依据用户的不同偏好,有两种不同的选择,对应两个BOLA的版本:

  • BOLA-O(oscillations):处理第2、3类切换,倾向于选择较低的码率以避免码率切换(需要将所选码率与吞吐量进行比较),但会牺牲部分效用
    • BOLA-O会比较码率和吞吐量,不过伪代码写了一堆if-else判断,具体逻辑就不展开分析了
    • BOLA-O选择低码率会导致buffer增长比较快,因此BOLA-O会通过延迟请求(等待buffer下降)来缓解这个问题
  • BOLA-U(utility):仅处理第2类切换(不处理第3类),倾向于选择较高的码率以最大化效用

具体机制可以结合论文和伪代码(图4)一起看。从理论和实验结果上来看,BOLA-O避免码率切换的效果更好,但BOLA-U的效用更高(也高于BOLA-FINITE)。
image.png


  1. 参见:dash.js的ABR逻辑 ↩︎ ↩︎

  2. MPC (SIGCOMM '15)给出的经典QoE线性公式中,同时考虑了视频质量、卡顿时间和视频质量切换(以及启动时延) ↩︎

  3. dash.js中视频块的请求与放弃请求逻辑,可参见:dash.js (v4.1.0) 的请求&放弃请求逻辑,不过其实现可能与BOLA的论文描述存在一些差异 ↩︎ ↩︎

  4. 缓存的视频块数量不能超过一定的阈值,否则播放器会通过播放视频来消耗buffer,直到buffer低于阈值后再请求新的视频块,这也被称为视频流的ON-OFF行为。在dash.js中,对于10min以内的视频,这个阈值最大为30s,否则为60s ↩︎

  5. 学术界对于如何建模及衡量视频质量已有广泛的研究,常用的指标包括:PSNR、SSIM、VMAF、ITU-T P.1203等,可参见:DASH标准&ABR算法介绍 ↩︎文章来源地址https://www.toymoban.com/news/detail-433588.html

到了这里,关于BOLA (INFOCOM ‘16) ABR算法阅读笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图像生成论文阅读:GLIDE算法笔记

    标题:GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models 会议:ICML2022 论文地址:https://proceedings.mlr.press/v162/nichol22a.html 官方代码:https://github.com/openai/glide-text2im 作者单位:OpenAI 扩散模型最近已被证明可以生成高质量的合成图像,特别是在与引导技术结合

    2024年02月02日
    浏览(48)
  • 对比学习论文阅读:CoCLR算法笔记

    标题:Self-supervised Co-training for Video Representation Learning 会议:NIPS2020 论文地址:https://dl.acm.org/doi/abs/10.5555/3495724.3496201 官方代码:https://www.robots.ox.ac.uk/~vgg/research/CoCLR/ 作者单位:牛津大学 本文的研究目标是纯视觉的自监督视频表征学习。我们做出了以下贡献:①我们研究了在

    2024年02月03日
    浏览(62)
  • 【论文笔记】A Simple Framework for 3D Occupancy Estimation in Autonomous Driving (SimpleOccupancy)

    原文链接:https://arxiv.org/abs/2303.10076 本文提出基于环视图像进行3D占用估计的简单框架,探索了网络设计、优化和评估。网络设计方面,虽然输出形式与单目深度估计和立体匹配不同,但网络结构与立体匹配网络相似(如下图所示),可以使用立体匹配的经验设计网络。优化

    2024年02月02日
    浏览(59)
  • 【阅读笔记】一种暗通道优先的快速自动白平衡算法

    自动白平衡算法中存在白色区域检测错误导致白平衡失效的问题,作者提出了一种基于暗通道优先的白平衡算法。 图像中白色区域或者高饱和度区域的光线透射率较低,根据以上特性利用暗通道法计算图像中白色区域。 作者使用何凯明提出的基于暗通道优先的方法来估计光

    2024年02月15日
    浏览(44)
  • 论文阅读笔记 | 三维目标检测——PV-RCNN++算法

    如有错误,恳请指出。 paper:《PV-RCNN++: Point-Voxel Feature Set Abstraction With Local Vector Representation for 3D Object Detection》(2022 IJCV) 做点云检测的肯定知道了,这又是Shaoshuai Shi大佬的另外一篇文章,Shaoshuai Shi大佬的主页介绍:https://shishaoshuai

    2023年04月08日
    浏览(90)
  • C++标准库 -- 泛型算法 (Primer C++ 第五版 · 阅读笔记)

    顺序容器只定义了很少的操作:在多数情况下,我们可以添加和删除元素访问首尾元素、确定容器是否为空以及获得指向首元素或尾元素之后位置的迭代器。 我们可以想象用户可能还希望做其他很多有用的操作:查找特定元素、替换或删除一个特定值、重排元素顺序等。 标准库

    2023年04月21日
    浏览(43)
  • 《智能手机心率和呼吸率测量算法的前瞻性验证》阅读笔记

    目录 一、论文摘要 1.背景 2.方法 3.结果 4.结论 二、论文十问

    2024年02月11日
    浏览(41)
  • Kernelized Correlation Filters KCF算法原理详解(阅读笔记)(待补充)

    参考博文: 【KCF算法解析】High-Speed Tracking with Kernelized Correlation Filters笔记 KCF论文理解与源码解析 KCF算法公式推导 KCF(High-Speed Tracking with Kernelized Correlation Filters)论文详解 KCF目标跟踪方法分析与总结 1. 岭回归 首先温习一下最小二乘法. 在矩阵形式下,最小二乘法的解 w = ( X

    2024年02月21日
    浏览(35)
  • 【算法与数据结构】--前言

    欢迎来到《算法与数据结构》专栏!这个专栏将引领您进入计算机科学领域中最重要、最精彩的领域之一:算法与数据结构。不管您是一名初学者,还是已经拥有一定编程经验的开发者,都可以从这里找到有益的知识和实践。 在计算机科学的世界里,算法和数据结构是至关重

    2024年02月07日
    浏览(246)
  • 【论文笔记】3DOPFormer: 3D Occupancy Perception from Multi-Camera Images with Directional and Distance Enh

    【论文笔记】3DOPFormer: 3D Occupancy Perception from Multi-Camera Images with Directional and Distance Enhancement 原文链接:https://ieeexplore.ieee.org/abstract/document/10363646 本文的3DOPFormer使用空间交叉注意力机制和反卷积恢复3D占用,然后基于激光雷达射线方向特征提出优化3D占用感知模型的新方法。使

    2024年01月25日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包