本文出自论文Learning in situ: a randomized experiment in video streaming,作者提出Fugu算法,通过结合经典控制策略和一个学习网络预测器,并将来自真实部署环境下的数据使用监督学习的方法进行现场训练,从而使自适应码率选择性能更优。


在视频流中的一个关键技术问题便是自适应码率选择ABR,来决定每个chunk或者segment的压缩率选择,从而来优化用户的体验质量。这里作者通过结合经典控制策略和一个学习网络预测器,并将来自真实部署环境下的数据使用监督学习的方法进行现场训练,提出合适的ABR算法。


文章目录

  • 一、简介
  • 二、背景知识
  • 三、Puffer:ABR研究平台
  • 四、Fugu:设计和实现
  • 五、实验结果
  • 六、约束
  • 七、结论

一、简介

  1. 一个ABR决策主要依赖于最近的吞吐量、客户端边的缓存占有率,延迟,在相似ISPs上客户端经验或者连接类型等。在模拟环境中表现良好的ABR决策算法,而在真实网络环境中的表现却经常出现不一致的结果,因此本文的目的在于说明:如何创造一个可学习的ABR算法,从而使在广域网中可以表现良好?这里作者提出了一个Puffer学习研究平台,它随机指定每个session给一组ABR算法中的任意一个,且用户对于其指定方法是未知的。
  2. 在真实环境设置中,基于控制策略或者强化学习方法的复杂算法并没有比buffer-based的简单控制方法表现更好。在量化算法性能的统计误差边际也是值得考虑的一件事情,这些不确定性在一定程度上影响了机器学习方法的设计空间。在观察研究中,我们发现通过将经典的控制策略和一个在真实数据上直接训练得到的ML预测器进行结合,可以鲁棒地优于目前已有方案。这里提出了一个数据驱动的ABR算法Fugu,它将几种技术结合在一起,基于模型可预测的控制策略MPC,并利用一个深度学习网络(在真实环境下进行训练)来预测吞吐量。Fugu预测器有一些不同寻常的特征:给定一个被提出的chunk文件大小,来预测传输时间;它输出一个概率分布;它考虑输入信号之间的低级别拥塞控制统计信息。

二、背景知识

  1. 对于视频流来说,由于存在很多个客户端,使视频服务可以实时调整编码器配置来适应任意一个客户端是不现实的,而服务方却可以将视频编码成多个可替代的压缩视频版本,以供客户端进行选择播放。整个过程可以被简述为如下:service将一个视频分成多个chunk,每个chunk通常为2-6s,并独自对每个chunk进行编码,因此客户端可以选择不同版本的chunk进行播放,但是如何进行合理的版本决策才是关键问题,这也是ABR方法提出的由来。ABR算法的目标通常是选择最优的chunk序列来进行获取或替换,在给定最近经验和未来猜测情况下,来减少启动时间和卡顿次数,最大化chunk播放质量,以及最小化一定时间内的质量变化。
  2. 自适应码率选择方法:(1)rate-based:将视频码率和网络吞吐量相匹配;(2)buffer-based:控制回放缓冲区的持续时间;(3)控制策略方法:在给定下一个chunk大小和未来吞吐量预测的情况下最大化期望QoE;(4)模型预测控制(MPC):它由两个模块组成,一个吞吐量预测器来通知一个预测模型缓存占有率的发生变化情况,以及未来的QoE变化,这个主要依赖于所获取的chunk质量和大小。
  3. Fugu:它使用MPC作为控制策略,根据在真实数据下训练得到的网络预测器来进行通知,被称为传输时间预测器TTP。TTP预测一个被给定文件大小的chunk传输时间,它的预测器也是概率性的,即输出不是一个简单的预测传输时间,而是一个可能输出的概率分布。TTP通过使用监督学习方法来训练,基于历史数据来预测chunk的传输时间。

三、Puffer:ABR研究平台

  1. Puffer使用10种不同的H.264版本来编码每个视频chunk,并使用ffmpeg来计算每个编码chunk的SSIM从而来作为视频质量的一种衡量。实际情况中,码率和质量之间的关系在不同chunk之间进行变化,用户不会直接感受到压缩chunk的大小。
  2. Puffer不是一个客户端边缘的DASH(在HTTP上的动态自适应流)系统,它是一个通过TCP连接传输分块视频的ABR系统。
  3. 准则和统计不确定度:视频流中记录第一个和最后一个事件的时间,启动时间,视频流中成功播放部分中第一个和最后一个的总观看时间,视频播放停止等待rebuffer的总时间,平均SSIM,在SSIM中的chunk-by-chunk变化。

四、Fugu:设计和实现

  1. Fugu是一个用于码率选择的控制算法,被设计来在真实部署环境中进行实地训练。它由一个典型控制器模块(MPC)组成,由一个非线性预测器可以使用监督学习来被训练。Fugu运行在服务器端,可以更容易更新它的模型和聚合来自客户端的表现数据。控制器模块使用控制算法来优化目标QoE函数,它基于对每个chunk传输所需时间的预测来做出决策。传输时间预测器(TTP)提供预测数据,它是一个神经网络来预估给定文件大小的chunk传输时间的一个概率分布。

  2. 目标函数:Fugu将视频质量、视频质量变化和卡顿时间线性结合来作为每个chunk的QoE量化函数。我们将一个chunk K K K的质量用 Q ( K ) Q(K) Q(K)表示,其不确定性传输时间用 T ( K ) T(K) T(K)表示,当前播放的buffer大小用 B i B_i Bi​表示,同一个chunk的不同大小用 K i s K_i^s Kis​进行表示,则其QoE可以表示为:
    Q o E ( K i s , K i − 1 ) = Q ( K i s ) − λ ∣ Q ( K i s ) − Q ( K i − 1 ) ∣ − μ . max ⁡ { T ( K i s ) − B i , 0 } . QoE(K_i^s,K_{i-1})=Q(K_i^s)-\lambda|Q(K_i^s)-Q(K_{i-1})|-\mu.\max\{T(K_i^s)-B_i,0\}. QoE(Kis​,Ki−1​)=Q(Kis​)−λ∣Q(Kis​)−Q(Ki−1​)∣−μ.max{T(Kis​)−Bi​,0}.
    其中, λ \lambda λ和 μ \mu μ分别表示视频质量变化和rebuffering的权重比例。

  3. 传输时间预测器TTP:Fugu使用一个训练的神经网络传输时间预测器来预估,对于固定范围内的每个chunk,我们训练一个独立的预测器。如果需要去优化接下5个chunk的总QoE,则有5个神经网络要被训练。每个TTP网络输入向量包括:(1)过去t个chunk的大小;(2)过去t个chunk的传输时间;(3)内部TCP统计信息;(4)需要被传输chunk的大小。

  4. TTP训练:Puffer采集真实的训练数据 D D D,并聚合输入的4-vector和chunk的真实传输时间对,使用标准的监督学习进行训练。

  5. Model-based控制器:它是一个随机优化控制器,用来最大化期望累计QoE。它查询TTP的预测时间,并通过值迭代来输出一个计划 K i s , K i + 1 s , . . . K i + H − 1 s K_i^s,K_{i+1}^s,...K_{i+H-1}^s Kis​,Ki+1s​,...Ki+H−1s​。在发送完 K i s K_i^s Kis​后,控制器观察和更新输入向量传递到TTP,等待着下一个chunk的安排。给定当前播放缓存级别,我们令 v i ∗ ( B i , K i − 1 ) v_i^*(B_i,K_{i-1}) vi∗​(Bi​,Ki−1​)表示为在给定最后一个发送的chunk情况下最大期望QoE总和。整个值迭代过程可以表示为:
    v i ∗ ( B i , K i − 1 ) = max ⁡ K i s { ∑ T i P r [ T ^ ( K i s ) = T i ] . ( Q o E ( K i s , K i − 1 ) + v i + 1 ∗ ( B i + 1 , K i s ) ) } v_i^*(B_i,K_{i-1})={\max}_{K_i^s}\{\sum_{T_i}Pr[\hat{T}(K_i^s)=T_i].(QoE(K_i^s,K_{i-1})+v_{i+1}^*(B_{i+1},K_i^s))\} vi∗​(Bi​,Ki−1​)=maxKis​​{Ti​∑​Pr[T^(Kis​)=Ti​].(QoE(Kis​,Ki−1​)+vi+1∗​(Bi+1​,Kis​))}
    控制器模块通过使用动态规划方法求解上述公式来计算最优路径。

  6. 低级别拥塞控制统计的使用:我们将TCP信息输入到TTP网络中去,发现相关信息对于提高TTP的准确率有着积极影响,比如RTT,CWND,正在发送的数据包数量。不管位于何处,这些相关结果可以促进更丰富数据的交流。

  7. 传输时间预测:TTP直接考虑chunk的大小,并输出一个预测时长。在ABR流系统和拥塞控制中,传输时间并不能随着文件大小而呈线性变化。

  8. 不确定性预测:TTP输出一个传输时间的概率分布,相比无不确定性的单点估计,这个额外信息允许更好的决策任务。

  9. 在移除TTP的输入、输出或者特征后,将会减少它的能力去预测一个视频chunk的传输时间。一个无概率分布的TTP(点估计)和不考虑chunk大小的吞吐量预测都表现的较差。同时可以发现,TCP层的统计信息比如RTT或CWND都是有益的。

五、实验结果

  1. 除了和RobustMPC-HM相比,Fugu减少了卡顿时间的比例,增加了SSIM,并减少了每个视频流的SSIM变化。在Slow网络路径中,它有着不少于6Mb/s的平均TCP发送率,这些路径可能更需要非平凡的码率自适应逻辑规则。

  2. TTP对于低级别TCP统计信息的使用对一个cold start的新会话是有帮助的,可以允许Fugu以一个较高的质量来开始。在一个cold start中,Fugu从拥塞控制信息数据(例如RTT)中引导ABR算法的能力提高了初始质量。

  3. 选择Fugu的用户流媒体观看时间更长:随机分配Fugu算法的用户选择在Puffer视频播放器上的停留时间大约长10%-20%,与那些被分配到其他方法的用户相比。其平均差异由上方5%的tail所驱动产生的结果。

  4. 模拟环境和真实环境中的算法性能差异:最左边图为在mahimahi仿真环境下使用FCC traces运行的结果,中间图为来自Puffer的实验结果,最右边图为在FCC traces和Puffer下的吞吐量分布比较。在仿真环境下,几乎每个被测试的算法都位于SSIM/stall的边界处,其中Pensieve的rebuffer最少,MPC发送最高质量的视频,其他算法位于两者中间。而在真实环境下,Fugu在质量和卡顿时间评估标准下都优于其他算法。

  5. 关于ABR算法Pensieve和RL的对比:(1)仿真训练和测试并没有捕捉到在Puffer研究中所看到的真实路径的变幻无常;(2)大部分Pensieve的评估实验主要集中于使用一个单一的测试视频来进行训练和评估,其状态空间具有一定的限制;(3)Pensieve优化了以比特率为中心的QoE准则作为视频质量的proxy。

六、约束

  1. 实验约束:(1)整个随机控制训练实验是一个black box,对其网络内部状态以及实验过程无法完全获悉;(2)结果可以展示出原地学习的工作效果,但是并不能知道situs需要多特殊化。
  2. Fugu方法的约束:(1)当一个部署环境偏离了算法过去训练的环境时,严重挤压性能增益的以数据为驱动的算法可能具有一定的风险。在Fugu算法被重训练之前,来自未知网络的新用户将不会发送Fugu到环境中去,我们不能保证它对于改变环境的鲁棒性。(2)Fugu并没有考虑到以下几个问题:能否用高质量的chunk版本替换buffer中已经下载的chunks;如何优化多个共享一个拥塞瓶颈的客户端的联合QoE。(3)Fugu并不能对chunks的传输进行调度,它总是发送下一个chunk,只要客户端在playback buffer中有空间。

七、结论

  1. 由于网络环境的变化性和heavy-tailed分布,在仿真环境中好的或者较优的性能并不能在整个真实网络中也表现出好的性能。因此,使用来自真实部署环境中的数据原地训练算法,并采用神经网络结构或者一个监督学习预测器并输入经典控制器,可以从这种训练方法中获益。Fugu算法在目标衡量标准(SSIM,卡顿时间,SSIM变化性)上鲁棒性地优于其他算法,并增加了用户选择继续观看视频流的持续时间。
  2. 这里作者推出了一个Puffer研究平台,可以获取真实环境下的训练数据,便于部署和验证新算法的性能,大家可以去观看尝试一下,其网址为:Puffer研究平台

Learning in situ: 视频流媒体中真实环境下训练的自适应码率选择算法Fugu相关推荐

  1. 基于稀疏点云地图实现Turtlebot2真实环境下导航

    最近在完成基于稀疏点云地图实现turtlebot导航的工作,大致实现路线为稀疏地图->稠密点云地图->离线八叉树地图->二维栅格地图->保存地图并基于turtlebot完成真实 ...

  2. Windows环境下训练OpenCV分类器

    首先说一下我的经历吧!不想看的可以直跳到教程.之前在树莓派上训练分类器,发现树莓派内存过小,训练几张照片还ok,但是训练十几张照片进程直接就被系统扼杀掉,,所以这次选择用笔记本训练.经过测试,用400 ...

  3. application terminated怎么解决_优雅解决 SpringBoot 工程中多环境下 application.properties 的维护问题...

    个人微信号:geekoftaste, 期待与大家一起探讨! 背景 我们知道 SpringBoot 有一个全局的配置文件 application.properties, 可以把工程里用到的占位符,第三方 ...

  4. python中import requests是什么意思_Ubuntu中python环境下import requests错误的解决(学习过程问题记录)...

    python中导入模块:import requests提示错误,错误信息描述如下:>>>import requests Traceback (most recent last): F ...

  5. 扫地机器人遇见台阶_我就想告诉你 米家扫地机器人在真实环境下的表现

    提起扫地机器人,大家的第一赶脚是啥?反正在不少童鞋的印象里,扫地机器人是满满黑科技的存在,而且属于冰火两重天的境遇中.为啥?君不见国产品牌大都千元出头,而国际品牌却很少低于5K吗? 最近小米推出了一款 ...

  6. 微信小程序中开发环境下的POST请求

    写在前面 不得不说,开发环境下,微信小程序要是在发起网络请求的话,遇到的坑也是有的.尽管,微信提供了十分便捷的API 供开发者调用.今天在小程序中写了一个表单,需要提交到服务器上,于是发起了一个 PO ...

  7. VMware中linux环境下oracle安装图文教程(一)

    安装流程:前期准备工作--->安装ORACLE软件--->安装升级补丁--->安装odbc创建数据库--->安装监听器--->安装EM <前期准备工作> 安装 ...

  8. 在xp中tc环境下实现的 销售管理系统(可切换繁体和简体,可设密码,可通过修改代码修改字体颜色)

    第一部分 需要注意编译时,应当在源代码所处目录下新建peizhi.txt文件,在tc中提取Egavga.bgi文件,使用点阵字模工具生成两个32*32点阵的字库,一个是繁体改名为2hzk32,一个是简 ...

  9. 解决51单片机学习过程中mac环境下虚拟机不能安装ch341驱动的问题

    本人使用Mac M1,虚拟机为Parallels Desktop. 在反复安装CH34SER.exe失败,尝试了普中公司给的学习手册中方法无果后,突然觉得虚拟机从win11虚拟机可能不能解决该问题,但 ...

最新文章

  1. sql server where 条件 区分大小写查询
  2. Explore the Service Console
  3. linux更新命令yum,Linux中升级更新命令yum upgrade和yum update的区别
  4. Unity 之 如何删除Unity项目里面没用的东西??
  5. 几种不同的邮件发送解决方案
  6. 【每日一练 088】性能优化-SQL tuning(一)
  7. [程序设计]C++中extern “C”含义深层探索(转载)
  8. 计算机曝光模式有哪些,摄影:单反相机中P、A、S、M四种曝光模式的用法详解 -电脑资料...
  9. 用计算机弹雅俗共赏,聊聊雅俗共赏:钢琴、饺子和面
  10. mysql 超时连接错误码_mysql链接超时错误
  11. ZT“老师说,如果想念一个人,就响两下他/她的手机。”
  12. xml绑定省市,并实现二级联动
  13. APP端上通用安全体系建设
  14. js替换url指定参数的值
  15. matlab的发展历史,仿真的发展历程以及目前现状
  16. Habor数据迁移方式有多少,skopeo效率最好
  17. 数字内容安全实验一:使用Matlab编程实现 RSA 加密算法
  18. 408 操作系统 操作系统概述
  19. 手把手教你如何通过大厂面试
  20. 如果你真的想要做好互联网项目 请不要将项目的技术外包

热门文章

  1. iOS App提交被拒理由分享汇
  2. Excel VBA基础与应用5
  3. ABAP 新语法简述
  4. 玩转mini2440开发板之【下载编译安装运行QT lib/QT Creator/QT程序全过程】
  5. HRP标记-纯化兔抗鸡IgY功能与参数
  6. AMBA AHB面试题连载(一)
  7. Windows 7 系统屏幕切换
  8. pycharm和ipython的区别_对PyCharm、WinPython和IPython感到困惑
  9. notifyDataSetChanged方法
  10. 十进制小数转二进制要乘二取整转换的原理?