Fork me on GitHub

论文笔记2-TransGAN:-Two Pure Transformers Can Make One Strong GAN, and That Can Scale Up

TransGAN

       文章开篇的模型命名缩写就明示了该模型的构成,即又突然说form构成的Gan网络,这里我们对其中相关前置知识会简单提及,包括Gan训练的一些改进和transform的结构更改。但是关于Gan和Transformer的基础知识我们不会过多提及,网络上有大量的帖子,肯定理解和阐述都比我清楚的多。关于tf,这里推荐一下帖子The Annotated Transformer

contributions

       作者的贡献自己总结为三点:

1). 第一个由完全非卷积构成的Gan网络模型,调整了attention机制细节,平衡了内存,全局特征和空间差异。

2). 一些训练角度的小trick。

3). STL-10和CIFAR-10等数据集达到SOTA效果。

       在这里不仅介绍一些文中用到的,还会介绍一下在Transformer和Gan领域比较有名的同时也是文中提到的相关方法。

Wasserstein GAN

       众所周知,Gan和强化学习都是出了名的难训练。从14年被提出开始,Gan一直有着众多问题,比如训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等。DCGAN依靠枚举搜索更好的架构,没有解决问题,而是避开差的结果。作者在两篇论文里——第一篇《Towards Principled Methods for Training Generative Adversarial Networks》从数学理论上分析了原始GAN的问题所在,从而针对性地给出了改进要点;第二篇《Wasserstein GAN》里面,又再从这个改进点出发推了公式定理,最终给出了改进的算法实现流程。具体的数学推导我实话实说搞不太懂,有兴趣可以自己去搜一下。

       长话短说,原始GAN问题的根源可以归结为两点,一是等价优化的距离衡量(KL散度、JS散度)不合理,二是生成器随机初始化后的生成分布很难与真实分布有不可忽略的重叠。最后对原始模型修改如下:判别器去掉sigmod,loss不取log,更新判别器参数后绝对值截断,淘汰使用动量的优化算法。文中引入了Wasserstein距离,由于它相对KL散度与JS散度具有优越的平滑特性,理论上可以解决梯度消失问题。接着通过数学变换将Wasserstein距离写成可求解的形式,利用一个参数数值范围受限的判别器神经网络来最大化这个形式,就可以近似Wasserstein距离。在此近似最优判别器下优化生成器使得Wasserstein距离缩小,就能有效拉近生成分布与真实分布。WGAN既解决了训练不稳定的问题,也提供了一个可靠的训练进程指标,而且该指标确实与生成样本的质量高度相关。

Style-Based generator

       典型的风格迁移工作,在判别器中,本文提出了感知路径长度(perceptual path length )和线性可分性(linear separability)来评估生成器。通过这种评估方法发现本文比传统的生成网络允许更加线性的、耦合性更低的变量因子。最后还提出了一个新人脸数据集,这里略过。



Progressive Training

       核心思想是逐步训练生成器和分别器:从低分辨率开始,随着训练进程推进,逐步增加新的层来提炼细节。这种方法不仅加快了训练速度并且更加稳定,可以产生高质量的图像。同时提出了一些实施的细节对于消除生成器和分辨器的不好的竞争,也就是训练的小trick。

       这种递进训练的方法保存了图像粗粒度的特征同时用残差结构和结合新训练的细粒度特征,最后用线性叠加整合,小尺寸用插值法直接增大。另外,本文在提高生产图片多样性方面,人工的在网络加入一些信息,如方差或者标准差。在应对信号幅值过大的问题上,还提出了pixel-normalization,抑制信号的幅值。

Spectral Normalization

       上面提到过的Wasserstein-Gan从每层神经网络的参数矩阵的谱范数角度,引入利普希茨连续性约束,使神经网络对输入扰动具有较好的非敏感性,从而使训练过程更稳定,更容易收敛。比如:深度学习模型存在“对抗攻击样本”,比如图片只改变一个像素就给出完全不一样的分类结果,这就是模型对输入过于敏感的案例。也就是说,在局部最小点附件,一点小小的变动将产生较大的影响,导致泛化性能不好。

       而本文即在上述工作基础上的延续,Spectral normalization for generative adversarial network” (以下简称 Spectral Norm) 使用一种更优雅的方式使得判别器 D 满足利普希茨连续性,限制了函数变化的剧烈程度,从而使模型更稳定。

20211201200248

       在一维空间中,很容易看出 y=sin(x) 是 1-Lipschitz的,它的最大斜率是 1。对于一个矩阵A,除以它的 spectral norm(即A^tA最大特征值的开根号)可以使其具有 1-Lipschitz continuity。(证明参考here)

       对于整个网络,由于激活函数通常都是满足 1-Lipschitz的,所以只需要保证卷积部分也满足,就可以推至整个网络。这里需要对各层的卷积核W除以其最大奇异值,但是由于每个迭代对层做SVD分解计算量过于离谱,文中使用了power iteration 的方法去迭代得到奇异值的近似解。很显然,为了保证得到的Lipschitz 连续性,就不能继续使用BatchNorm。

Technical Approach

Memory-friendly Generator

       众所周知,原始的transformer模型的自注意力有着O(n^2)的成本,如果直接将图片展成词向量,那么即使是32*32的低分辨率图像,也会生成1024长度的词向量,这种方案不具有可伸缩性。因此,逐渐增加序列减少嵌入维度不仅可以提取粗细粒度,同时也解决第一步图像的序列转化问题。

20211201202515

       每个阶段最后有一个上采样模块,使用双三次上采样将图片分辨率改变,分辨率更高的阶段将抛弃双三次采样而使用pixivshuffle,这是为了将嵌入维度减少到1/4,。总体来说,这种升级的金字塔结构减轻了内存和计算爆炸,不停重复直到达到需要的分辨率。

Multi-scale Discriminator

       分成不同大小的patch作为输入,每个尺度的做法与生成器类似,将一维句子重塑为二维特征图,并在每个阶段之间采用平均池化层对特征图分辨率进行下采样。 通过在每个阶段递归地形成变换器块,形成了一个金字塔架构,其中提取了多尺度表示。 在这些块的末尾,一个 [cls] 标记被附加到一维序列的开头,然后由分类头获取以输出真/假预测。

Grid Self-Attention: A Scalable Variant of Self-Attention for Image Generation

       self-attention代价太大了,不利于长序列建模,因此本文在这里为高分辨率的生成任务设计了Grid-attention。这里叫做网格注意力,字面意思,在分辨率小时候保持标准自注意力机制,分辨率较大时,将图片分割成不同的片,每个片内进行qkv的计算。这种边界造成的影响在训练前期比较明显,但是随着迭代进行,它会逐渐消失。

20211203152345

Exploring the Training Recipe

数据增强

       在本文设计上使用饿了3个基本的数据增强基线,{translation,Cutout,Color}给TransGan带来巨大的提升,反之CNN构成的Gan网络就几乎没有提升。

相对位置编码

       与绝对位置相比,相对位置编码学习了本地内容之间更强的“关系”,在大规模案例中带来了重要的性能提升,并从那时起得到广泛使用。我们还观察到它不断改进 TransGAN,尤其是在更高分辨率 解决方案数据集。 因此,我们将其应用于生成器和鉴别器的可学习绝对位置编码之上。

归一化层修改

       原始Transformer默认使用normalize层,但是本文增寻一项前者的工作,将其替换为令牌规模缩放层,即:

20211203154235

       这里C是词嵌入的维度,X和Y对应令牌缩放前后的大小。
和一些最新的有学习参数的normaliztion层不同,对于transGan来说,这种简单的缩放效果最好,也进一步提升了FID。

参考

  1. Spectral Normalization 谱归一化
  2. 《Progressive Training of Multi-level Wavelet Residual Networks for Image Denoising》阅读笔记
  3. 令人拍案叫绝的Wasserstein GAN
  4. [Style Transfer]——A Style-Based Generator Architecture for Generative Adversarial Networks

Attention入门笔记(一)

Attenetion

       提到attention机制,就得先对他的使用对象进行说明,讨论Attention机制提出的原因和解决的问题。所以我在这里对一些前置知识简单介绍一下。

LSTM和GRU

RNN

       首先说一下循环神经网络(RNN),它现在广泛的运用于各种序列处理的场景下。因为对于DNN来说,它无法感知时间序列上的变化,因此在RNN的设计中,神经元的输出会在下一个时间段直接作用于自身。RNN一般被看作一个在时间上传递的神经网络,深度代表着时间。



LSTM

       类似于DNN,RNN依旧存在梯度消失和梯度爆炸的问题,因此LSTM应运而生。



       如上图所示,LSTM采用了两个传递状态,其中c^t的变化幅度比较小,h^t类似于RNN中的h^t。具体的状态传递如下图:



       其中z^f状态对上个状态进行筛选,选择保留哪些特征。然后,z^i对当前输入选择性筛选记忆,作为选择门控控制。最终,z^o控制哪些特征作为当前状态输出,并对上个阶段的c^o进行放缩。

       所以,简单来说LSTM选择性的选择哪些需要记忆,哪些可以忘记。但是同样,这样也加入了更多的参数,加大硬件负担。因此,我们下面介绍一下参数更少的GRU。

GRU

       GRU参数少的重要原因是它的输入输出和RNN相同,没有增加多余的传递状态。



       图中h’是h^(t-1)’和x^t拼接再通过tanh激活函数缩放到(-1~1)。因此,GRU仅仅用一个门控同时进行遗忘上一轮并记忆本轮。最终表达式如下:



       z规定了对于上一轮特征遗忘的权重。

Attention

       Attention本质就是对于一个序列的每个单词编码一个权重,最终和学习得到的注意力权重线性组合用于下个词的预测。其实就是告诉模型哪些地方是重点,哪些可以略过。

       对于每个语素的注意力权重,通过RNN的训练得到。是Aattention的核心,不同的attention方法主要用不同的方法学习该权重。具体的比如:多层感知机、Bilinear、Dot Product、scaled-dot Product。有兴趣的可以自行深入搜索学习。

self-attention

       self-attention将句子中的每个词都能与句子中任意距离的其他词建立一个敏感的关系。也就是说self-attention是在一个序列内部做attention计算,目的是了解句子内部的依赖关系,捕捉句子结构特征。



Multi-head attention

       Multi-head attention在self-attention的基础上更进一步,通过多个权重矩阵,从多个角度得到权重向量,按列拼接。当然,拼接时要做维度处理。



后续

       除了这些简单介绍外,还有很多行之有效的复杂方法没有提及,比如global attention,local attention,hard attention和hierarchical attention。后续尽量挑时间仔细阅读论文,这一部分在论文笔记里再深入。

参考链接:1.https://www.leiphone.com/category/yanxishe/ZwcjmiJ45aW27ULB.html
2.https://zhuanlan.zhihu.com/p/32085405
3.https://zhuanlan.zhihu.com/p/32481747
4.https://zhuanlan.zhihu.com/p/46313756

图形学GAMES-101 课堂笔记(三)- 《相对简单》

图形学后续(part-3)

前言

GAMES101 现代计算机图形学入门

主讲老师:闫令琪,UCSB

课程主页:https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html



该笔记对应此课程Lecture17之后的内容,用闫老师的话来说,属于相对简单的后续部分。

材质表现

BRDF

       对于一个不存在吸收的朗伯表面————入射能量在所有方向均匀反射,那么入射与出射的辐射率遵循能量守恒。在这样的条件下,渲染方程可以解出:



       最终BRDF解得为1/Π。考虑到不同颜色的吸收率不同,因此我们引入albedo作为吸收率,不同的颜色就会得到不同的BRDF.

折射(Specular refraction)

       通过折射率可以计算出折射角的余弦:



       当根号内部小于零时,我们无法求得一个有意义的实数解,这时则说明光线发生了全反射,不再存在折射光(经典回顾高中嗷)。条件由ηi和ηt决定,即当入射介质折射率大于出射介质折射率时,可能发生全反射。其中一个经典例子是水底向上看只能得到一个锥形区域的入射光,叫做Snell's Window:


       

图形学GAMES-101 课堂笔记(二)- Ray Tracing

Ray Tracing(part-2)

前言

GAMES101 现代计算机图形学入门

主讲老师:闫令琪,UCSB

课程主页:https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html



该笔记对应此课程Lecture13-16内容,一方面便于自己后续回忆,另一方面希望给予读者简洁的重点一览。

后面我会抽空补上前面关于光栅化等一系列成像操作pipeline的总结作为课程笔记(一)的内容。

Why Ray Tracing

       光栅化在阴影生成时一般使用shadow mapping方法通过深度测量来计算投射阴影,虽然改进后可以支持软阴影,但是计算依然比较复杂。

       此外,Glossy reflection和Indirect illumination等情况下,即光线反射多次时,体现了光栅化传统方法的局限性。

基本算法

关于光线:

  1. 直线传播
  2. 相互之间不存在碰撞
  3. 从光源通过反射,最终进入摄像机(遵从光路可逆)

Recursive Ray Tracing

       也叫做Whitted-Style ray tracing

       从eye point出发,沿着直线光路找到primay ray与物体的交点,然后计算通过反射、折射等形成的secondary rays,以此类推。再通过光源与前面得到的所有交点计算shadow rays是否可以照射到,然后沿着光路正向传播并计算衰减,最后汇总成每个点在eye point中的着色。如下图:


图1 :Whitted-Style ray tracing

表面交点

       以光线与球体交点求解为例子:


       求解t如下:


       同样,这样的计算方法也可以应用于隐式表面的表达方式。此外,通过光线上的交点奇数还是偶数个,可以判断其中一点在物体内部还是外部。

       对于一个三角面所在的平面,定义这个平面过点p’且法线为N,在结合光线的限制,我们得到了关于交点p的两个限制条件:


       从而解出光线与平面的交点,再通过叉乘判断点是否在三角内部。另一种Moller Trumbore算法可以直接计算三角和点关系,有兴趣可以自己查一下,本质和上面是相同的,这里就不贴图了。

加速

       很显然,如果直接按照以上的方法计算所有的线路和物体,那么开销实在是过于离谱。因此人们通过引入包围盒(Bounding volume)来加速交点计算————无法照射到包围盒的光线,也无法达到其内部包住的简单物体。


       大多数情况下,轴对称包围盒(Axis-Aligned Bounding Box)的使用比较广泛,也称为AABB。这种包围盒的3个轴对应xyz坐标轴,计算起来比较简单。

       这种情况下,包围盒的应用就等同于空间划分,其实中三个例子是:八叉树,KD树和BSP树。(注意BSP-Tree已经不是AABB的做法)


       KD-Tree中,仅仅在叶子节点上存储对象列表,所有的空间划分都在中间节点里存放。计算光线时,从顶点向下递归计算,每当光线通过路径上叶子节点空间时,将其中每个对象物体和它求交点,这样,对于和光线没有交点的空间中的物体就省去了多余的计算操作。

       但是,KD-Tree的缺陷在于,对于一个三角面,我们很难判定它和空间的分割面是否存在交集。所以,后来广泛采取的划分方法不再使用空间划分而采用物体划分。

       物体划分的BVH方法大致思想与空间并无不同,仅仅在划分标准上有所区别。


       BVHs的数据结构中,中间节点存放Bounding Box和孩子节点指针,叶子节点上存放Bounding Box和对象列表。

辐射度量学(Radiometry)

       
这里引入了两个度量,辐射强度(Radiant intensity)
,代表单位立体角内通过的能量。立体角是角度投影到3维空间中的概念,计算表示为面积和半径平方的比

       另外,视频中还提到了微分立体角的概念(Differential Solid Angles),对这个概念有疑惑的可以参考高等数学中的球面积分,有助于理解。


       辐照度(Irradiance)表示单位面积上的辐射通量。相比于辐射密度而言,前者对应单位面积,后者对应单位立体角。 计算对应面积内的辐照度时,如果光照不垂直于平面,则先将其投影到法线方向,再进行计算。


       辐射率(Radiance)同时考虑立体角和照射面积,做了两次微分。


       双向反射分布函数(BRDF)描述了平面上的一个部分面积在接收了一个立体角的辐射率后,计算这个部分的辐照度对于不同射出角度的比例。


       渲染方程(Rendering Equation)表述了一个点的出射光由两部分组成:自身光源和通过BRDF的反射光。作为一个完备的定义总结了所有点的光线传播情况,简单但是普适。


       对其简写为算子形式,L则会表现类似为泰勒展开的形式:


       这样的分解可以将渲染方程积分的形式表现成多次弹射的结果的集合,即全局光照。

蒙特卡罗路径追踪

蒙特卡罗积分


       关于蒙特卡洛积分,老师虽然讲的很简短,但是也大概说明白了做法。想要深入了解的话,网络上有许多相关内容的详细介绍,在这里就不在复制黏贴一遍了,简单推荐一个: 蒙特卡洛方法与定积分计算

路径追踪

       路径追踪不同于最开始提到Whitted方法,它严格遵循之前所提到的渲染方程,用蒙特卡洛方法计算该积分方程。

       对于直接光照的计算:


       更进一步,我们将间接光照和直接光照结合起来,这样就能计算全局光照的结果,得到以下递归算法:


       但是,可以很容易想到的是,在这样的递归情况下,光线数量会在几次反射之后指数爆炸。于是,我们假设,对于一个点,我们反射后只追踪一条光线,这样就能避免指数爆炸的情况,于是我们的路径追踪中默认N=1。(N!=1时,成为分布式光线追踪)

       此外,我们不人为的规定一个反射次数来限制,而是采用俄罗斯轮盘赌(Russian Roulette)的方式以一个概率P_RR进行反射。最终结果/P_RR,这样就能收敛到期望值。我们改进算法如下图:


光线采样

       考虑到对每个点盲目均匀采样过于浪费,因此我们希望直接对于光源进行采样。但是,渲染方程规定的是在一个接受点的的反射积分,又因为蒙特卡洛算要求对于积分域进行采样,因此我们无法直接使用光源的采样结果计算蒙特卡洛积分,所以我们设法将渲染方程改写成对于光源的形式。


       只需要计算da和dω的关系并进行变量替换即可:


       结合以上简化,我们将全局光照的计算再次分开,对于光源的反射,我们采取改写方法直接采样光源计算,而对于其他非光源的光线,我们依旧采取俄罗斯轮盘赌的方式进行计算。最终路径追踪算法如下:


小结

       之前的光线追踪一般指代Whitted-style方法。然而经过多年的演化,如今现代化的光追技术已经变成包含一系列光线传播相关的方法和模型的集合。比如作为例子提到的path tracing,更多的还有Photon mapping、Metropolis light transport、VCM/UPBP。

       同时,在这几节课的例子中,还有很多问题没有深入说明:重要性采样(importance sampling)、低差异度序列(low discrepancy sequences)、像素重建过滤器(pixel reconstruction filter)、伽马矫正(gamma correction)等。希望深入了解的朋友可以自己沿着这些点继续学习下去。

论文笔记-1-A Survey of Rate Adaptation Techniques for Dynamic Adaptive Streaming Over (下)

A Survey of Rate Adaptation Techniques for Dynamic Adaptive Streaming Over HTTP(下)

服务器端应用层、传输层以及网络层优化方案

       在这个部分,文章讨论了一些现有用来优化基于DASH的多媒体流的服务器端、传输层和网络层方案。尽管由于其易于实现和可扩展性,大多数工作都在客户端提出了自适应比特率选择,但是在优化服务器端比特率选择和拥塞控制方面也做了一些工作。

       文章排除了基于改变表示编码方案的服务器端优化,例如从H.264/AVC(高级视频编码)编解码器转移到SVC(可伸缩视频编码)或HEVC(高效视频编码)编码,以减少存储需求并提高缓存效率。而是只关注服务器端应用层和传输层的优化,以服务于存储在常规Web服务器中的预编码视频块,并研究最近研究文献中提出的替代传输协议和网络解决方案。这里我们对其中一些做记录。

应用层

比特率切换

       Akhshabi等人提出了一种纯基于服务器的流量整形方法,以减少由于多个播放器争夺瓶颈容量而导致的视频比特率振荡和不稳定性。根本原因是开-关活动模式(取决于播放器开-关周期的时间重叠)导致带宽高估和视频比特率水平之间的振荡。他们开发了一个成形模块,将每个区块的吞吐量限制为区块的编码速率,这样下载持续时间将大致等于区块持续时间,减少/消除了关闭周期(只要可用带宽高于成形速率)。他们的方法旨在稳定播放器,并允许播放器要求最高的视频比特率,而不会导致振荡。

       De Cicco等。提出了一种使用质量自适应控制器 (QAC) 的控制理论服务器端流交换技术。 该方法采用基于客户端反馈的反馈控制理论来提供特定的视频比特率。 QAC 使用两个控制器:播放缓冲区级别控制器,其目标是将缓冲区长度驱动到目标长度; 以及一个流切换逻辑,用于选择要流式传输的适当视频级别。

视频配速

        Satoda等人。引入了一种服务器端自适应视频起搏算法,该算法可以及时提供视频数据,称为“敏捷配速”。 该技术在视频服务器完成发送前一个块后延迟块的传送。 首先,视频服务器立即发送视频块,直到播出缓冲区达到足够的数据量。 随后计算速度延迟。它试图通过控制视频块的发送来使播出缓冲区大小尽可能接近配置值。 该方法解决了由于不必要的数据下载(用户一直看不完视频流)造成的带宽浪费问题。

        该算法处理了预测TCP吞吐量未来随机扩散的特性。 他们的方法不是预测决定性的值,而是通过使用布朗运动模型作为随机过程模型来预测随机吞吐量的扩散。 它在考虑未来吞吐量的同时控制目标播放缓冲区大小。 这种方法允许网络运营商更好地管理视频流量的带宽,同时保持QoE。

传输层

选择TCP对DASH的影响

       根据网络带宽、RTT 延迟、队列管理和其他竞争路径容量的交叉流量,块传送的及时性(以及因此的速率)可能会有很大差异。

       Huang等,通过分析主要流媒体服务产生的流量来分析 TCP 和 DASH 流量之间的相互作用,并确定了一个他们称之为“下降螺旋”的恶性循环。 这种现象是由于 TCP 将 cwnd 重置为其初始值的事实,因为在 OFF 期间不活动时间长于当前的重传超时(在他们的实验中约为 200 毫秒)。 因此,cwnd 以慢启动模式加速以检索每个新块。 在没有竞争流的情况下,客户端仍然选择最高的可持续视频比特率。 然而,当存在竞争流时,视频流会受到高数据包丢失和低吞吐量的影响,导致客户端选择较低的视频比特率(较小的视频块)。 对于较小的块,TCP 在完成每个块下载之前达到其公平份额的时间较短,从而导致进一步低估可用带宽,从而导致螺旋式下降。

避免猝发的TCP修饰

       为了解决传输视频时 TCP 突发性问题导致队列拥塞和数据包丢失,Ghobadi等人设计了 Trickle,通过在 TCP 拥塞窗口上设置一个上限作为流传输速率和 RTT 的函数来调整视频流的速度。 服务器根据观察到的 RTT 和目标流传输速率计算 cwnd 边界,并使用套接字选项应用于 TCP。

多路径TCP(MPTCP)

       在 MPTCP 上运行 DASH 的工作很少。 这部分是由于当底层路径是异构的时多媒体内容的潜在性能会产生下降。

       在最近的一项工作中,Corbillon等人利用MPTCP的应用层和传输层之间的相互作用来支持视频流。因此,他们引入了一个跨层调度程序,它利用来自应用程序层和传输层的信息来重新排序数据传输,并对视频中最重要的部分进行优先级排序。他们评估了跨层调度器的性能,这些调度器包含从实际MPTCP会话(以太网、WiFi和蜂窝访问)聚合的跟踪。结果表明,跨层调度器提高了实现的QoE(客户端检索的视频比特率),但仍有效率限制。然而,作者没有考虑DASH中实现的自适应机制。他们工作的基础上,ABR已经选择了视频块表示交付MPTCP。

       Han等人最近的另一项工作通过提出多路径DASH(MP-DASH)填补了这一空白,MP-DASH是一种用于DASH流的多路径框架,能够感知用户的网络接口偏好。其基本思想是策略性地安排区块交付,以满足用户的偏好,例如优先选择WiFi而不是蜂窝连接。作者的目标不是用MPTCP改善视频流质量,而是降低整体流成本(例如,按流量计费的蜂窝使用)。MP-DASH设计用于多种ABR,有两个组件:MP-DASH调度程序和视频适配器。调度程序覆盖在MPTCP堆栈的顶部。它根据用户的界面偏好和播放器的视频传输截止时间,在满足用户偏好的前提下,智能地确定多路径下的最佳分块下载策略。视频适配器是一个附加组件,位于DASH ABR和MP-DASH sched  uler之间,通知调度程序请求块的块大小和截止日期。作者将MP-DASH适配器集成到基于吞吐量和基于缓冲区的ABR中。

TCP-Hollywood和僵化的传输网络

       McQuistin等人提出了TCP-Hollywood,一种无序的、有时间限制的TCP变体,旨在支持实时多媒体通信。他们的分析表明,在时延要求受限的有损条件下(VoIP、视频流),它提高了网络的利用率。

       TCP Hollywood与标准TCP兼容,但消除了两种传输引起的延迟,并提供了适合多媒体流应用的可靠性措施。它消除了接收器处的线头(HoL)阻塞,并立即将接收到的数据传递给应用程序,而不管它们的顺序如何,并且放松了可靠性以尊重应用程序提供的时间线,因此只有将及时到达的数据才被重传,否则重传携带新数据。

网络层

       Houdaille和Gouache提出了一种流量整形机制(带宽管理器),允许在住宅家庭网关处进行带宽仲裁,以解决存在并发视频流时比特率不稳定和不公平的问题。流量整形器截获清单文件,为每个流确定理想的目标比特率,然后将客户机限制在其限制范围内。这被描述为为为最大数量的用户提供最佳的QoE。在家庭网关上实现带宽管理器的优点是能够看到和控制进入家庭的所有通信量,并且可以根据设备角色和特性来分配带宽。

       利用Microsoft Smooth Streaming player对上面的方法进行了验证,该方法捕捉到了竞争流的随机性、高比特率变化、不公平的带宽共享。他们表明,他们的方法在稳定性(低比特率切换)、带宽共享精度和收敛速度(达到稳定比特率所需的时间)方面具有优势。

       Mok等人提出了一种使用带宽测量代理的QoE感知DASH系统(QDASH)。他们还在adobeosmf下进行了主观实验,Apache服务器在Linux-Debian上运行,得出的结论是,用户更喜欢在切换时逐渐改变质量。

       QDASH由两个模块组成–QDASH abw和QDASH qoe。QDASH abw是在服务器前面的一个测量代理中实现的,它探测并检测当前网络条件所能支持的最高质量级别。它通过将测量流与视频数据流耦合,操纵视频数据包以形成内联测量。它通过RTT估计来测量可用带宽。在客户端,QDASH qoe帮助客户选择最合适的质量级别,接收QDASH abw测量结果的更新。

其他

       后续文章还讨论了主动队列管理、网络和服务辅助DASH和服务器预选择系统,以及使用Google SPDY、HTTP/2和QUIC的DASH流媒体,在这里我们不再做展开描述。

流量评估模型和特性研究

       在本节中,文章讨论了在测量和描述使用DASH技术提供的视频流量方面所进行的一些关键工作。

交通模式特征

       为了设计和评估不同的速率自适应方案,有必要了解该方案所要处理的业务的性质。本节讨论的研究探讨长时间和短时间尺度上的视频流量。在长时间尺度上,流行模式(所选视频的分布)最受关注,而在短时间尺度上,流会话期间的交付模式最受关注。这些研究表明,大型数据集中的视频流行度似乎很符合Zipf定律,但对于一些较小的人群,例如单个大学校园,全球流行度和本地流行度之间的相关性很小。而且,许多视频在数据收集期间只被选中一次。在较短的时间尺度上,已经观察到了一些关于如何在会话期间传送视频的策略。策略选择的主导因素似乎是客户端软件。

商业技术

1)逆向工程:一些研究侧重于通过对整个视频流网络体系结构的逆向工程来理解流行的商业流服务的操作。

一个例子:Adhikari等人[159]通过使用分布式主动测量基础设施(使用PlanetLab节点的多个有利点),分析大量视频播放日志、DNS映射和延迟数据,推断出YouTube内容交付系统背后的关键设计特征。他们揭示了多个DNS名称空间(反映了视频服务器的多层逻辑组织)、三层物理缓存层次结构、处理缓存未命中(后端抓取)和负载平衡的复杂机制。Torres等人[160]使用被动收集的数据来剖析同一服务的服务器选择策略,并试图了解其负载平衡/多宿主策略。

2)从客户身上衡量:这部分研究侧重于了解更接近客户端的行为。

一个例子:Liu等人[165]利用服务器端日志分析和客户端实验,对Android和iOS(在移动设备上)访问流媒体服务进行了对比研究。Android和iOS媒体播放器使用不同的内容请求方法和不同的缓冲区管理方法,导致接收到的数据量不同。iOS设备发送的HTTP请求比Android设备多,并且总是使用HTTP范围请求,这与Android设备使用的标准HTTP请求不同。

结论

文章总结

       由于其可扩展性和可行性,DASH已经成为Internet上按需和实时多媒体流的一个引人注目的标准。DASH的核心本质是它的ABR算法,能够选择合适的视频比特率来匹配动态变化的网络条件。DASH规范为研究人员和开发人员探索和实现各种abr提供了灵活性。由于网络条件在客户端最为人所知,因此大多数abr都集中在客户端启发式算法上。然而,也有其他技术利用服务器端算法和网络级解决方案来帮助客户进行速率自适应。

       本文综述了关键的码率适配技术,并根据用于视频码率选择的反馈信号对其进行了分类。基于吞吐量的ABR根据过去的数据块下载速率预测未来的网络状况。纯基于缓冲区的算法使用过去和现在的缓冲区占用情况来确定网络状态,并选择与网络容量匹配的视频比特率。大多数实现的算法都是混合算法,将吞吐量和缓冲区结合起来作为反馈信号,以获得更精确的估计。

       基于控制理论的算法将比特率选择过程和各种QoE度量表示为一个随机优化问题。然后,它尝试解决这个问题,并用网络带宽预测范围来驱动比特率选择。

       尽管服务器和网络级别的解决方案提供了显著的优势,但它们要复杂得多,而且不太可能立即部署。

       另外文中还介绍了一些重要的流量测量和著名商业流媒体公司的特性研究。由于大多数公司拥有专有的流媒体技术,这些研究试图揭示所使用的自适应技术以及DASH在现实世界中的流量模式、行为和影响。其他研究试图了解短跑交通在与各种交叉交通竞争时的特征。

展望

仍然存在一些开放的研究挑战和问题,例如:•了解各种ABR算法和不同底层TCP算法之间的相互作用。例如,实验性地分析和描述MPTCP、googlequic或BBR等替代传输协议对基于DASH的内容交付的影响将是流媒体社区非常感兴趣的。

•在客户端耦合应用程序和传输层,以便DASH客户端使用传输层RTT估计值了解底层路径的延迟。

•设计客户端ABR算法,与现代瓶颈AQMs进行最佳交互。

•CDN服务器和代理的战略布局。

•服务器端带宽管理、资源分配和调整TCP数据包的速度,以平滑流量突发。

•当多个客户端共享一个瓶颈时,公平地共享数据流和其他交叉流量的资源。

2

论文笔记-1-A Survey of Rate Adaptation Techniques for Dynamic Adaptive Streaming Over HTTP(上)

A Survey of Rate Adaptation Techniques for Dynamic Adaptive Streaming Over HTTP(上)

写在前面的话

       这是论文笔记系类的第一篇博客,同时也是实际意义上我博客的第一篇博文。这个系列一方面是为了做个记录在以后遗忘了看过的文献后回来看看,便于回顾;另一方面也是丰富博客内容的同时加深对文献的理解。

       在本文中,翻译性文字会以颜色显示。另外因为原文本身就是点到为止的综述文章,所以在此基础上的论文笔记会比较简略,对于其中部分技术甚至会略过不再提及。

       如果想要更加详细的阅读原文,请自行前往地址查看:A Survey of Rate Adaptation Techniques for Dynamic Adaptive Streaming Over HTTP


主题与摘要

主题

HTTP动态自适应流技术综述

摘要

       在过去的十年中,视频流已经从用户数据报协议过渡到基于传输控制协议的技术。HTTP上的动态自适应流(DASH)最近成为互联网视频流的标准。提出了一系列适用于DASH系统的速率自适应机制,以提供与动态网络条件下的吞吐量相匹配的视频质量,从而获得更丰富的用户体验。这篇综述文章着眼于正在兴起的关于客户端、服务器端和网络速率适配器技术在支持基于DASH的内容交付方面的应用的研究。我们提供了应用这些技术的背景和动机,并回顾了过去十年文献中的重要工作。这些工作根据所使用的反馈信号和执行或协助自适应的终端节点进行分类。我们还回顾了几个值得注意的视频传输测量和特性研究,并概述了该领域的开放性研究问题。

       本文作为动态自适应流媒体的综述文章,整体围绕着DASH展开,分析行业的发展过程和DASH的优势以及相关技术,并对后续开放性问题做了展望。

       本文结构分为7个部分,其中介绍、背景和最后的总结占3个部分,另外4个部分主要内容分别是:

1)DASH技术的结构设计、标准化和应用说明(第三部分)

2)基于客户端自适应技术,主要从基于吞吐量、基于缓冲区和基于混合/控制理论三个方面比较(第四部分)

3)服务器端应用层,传输层和网络层优化基于DASH的方案(第五部分)

4)对于基于DASH的几个著名视频流的流量评估模型和特性研究(第六部分)

       下面我们将分别对这这7个部分的内容做进一步的梳理性记录。

介绍与背景

介绍

       大多数早期的工作集中在增强用户数据报协议(UDP)以实现多媒体的传输。这是因为TCP更倾向于可靠性而不是及时性,并且它的拥塞控制倾向于引起高排队延迟。但是另一方面来说,它可以穿越任何支持基于HTTP的常规通信的网络路径。因此,近年来TCP已迅速取代UDP成为多媒体传输的标准。

       随之应运而生的MPEG-DASH(Dynamic Adaptive Streaming over HTTP)已经成为一个标准,其目的是使用应用层自适应比特率(ABR)算法向具有动态网络条件和异构设备的用户提供不间断的视频流服务。DASH规范不强制执行任何特定的自适应算法,这为ABR开发提供了灵活性。这篇文章根据这些算法使用的反馈信号和用来服务应用的终端节点对这些速率自适应技术进行分类。

背景

网络视频传输

       为了避免网络视频卡顿,而不必引入昂贵和复杂的保证带宽机制,目前提出了以下解决方案用于尝试将视频比特率与可用网络带宽相匹配:

1)使用播放缓冲区:使用播放缓冲区可以克服网络吞吐量的短期变化。
视频播放器可以对存储在播放缓冲区中的预取数据进行解码。

2)基于转码的解决方案:这些解决方案改变原始视频数据压缩算法的一个或多个参数,以改变结果比特率。示例包括改变视频分辨率、压缩比或帧速率。然而,这个过程是计算密集型的,需要复杂的硬件支持。

3)可扩展编码解决方案:这些解决方案通过处理编码视频数据来实现。因此,可以通过使用编码器的可伸缩性特征来动态地调整编码视频。一些技术包括调整图片分辨率或帧速率(通过利用编码数据中的空间或时间可伸缩性)。但是,需要专门的服务器来实现这些解决方案。

4)流交换解决方案:此技术是CDN中实现和使用最简单的技术。对原始视频数据进行预处理,以产生多个编码流,每个流的比特率不同,从而产生相同内容的多个版本。然后使用客户端自适应算法根据传输过程中的网络条件选择最合适的速率。这些解决方案不需要专门的服务器,并且使用最少的处理能力。

       考虑到部署的可行性,业界已着手使用播放缓冲区和流交换解决方案。文章还简述了速率适配协议(RAP)和TCP友好速率控制(TFRC)之类配置在传输层顶的协议使得发送方负责根据从网络或接收器接收到的反馈来改变发送速率,从而保证缓冲区不被耗尽。

视频流发展

       互联网最初不是为高质量多媒体流等现代带宽密集型应用的稳定传输而设计的。传统数据流量与视频流量的根本区别在于对视频流量的实时性约束。早期关于分组视频传输的大部分工作集中于使用支持资源预留和服务质量(QoS)的技术提供实时传输,例如资源预留协议(RSVP)和综合服务(IntServ)。其他协议,如实时传输协议(RTP)、实时流协议(RTSP)、会话描述协议(SDP)、RTP控制协议(RTCP)是多年来开发的,以支持UDP上的实时流,并配置/控制支持视频流的终端系统。然而,这些技术在穿越nat和防火墙时存在问题,它们需要专用的服务器和网络基础设施,这增加了部署成本和复杂性。

       反之,TCP是一种可靠的协议,保证了数据的传输。然而,这种可靠性是以发送方等待确认(ACK)和重新传输丢失数据时的可变延迟为代价的。由于视频通常不允许延迟,并且通常不需要高可靠性才能被接受,TCP最初被认为不适合多媒体传输。

       这激发了大量的工作来扩展UDP承载视频流并与常规TCP通信共存的能力。

如:

1)RTP和多播

2)P2P点对点流媒体

3)HTTP视频流


       DASH和早期的这些多媒体流协议的主要区别在于:

1)与早期的基于UDP的方案不同,DASH构建在TCP传输之上。

2)客户机驱动算法。根据其ABR,客户机通常根据观察到的网络条件请求视频比特率,从而调节服务器的传输速率。

3)DASH以多秒视频块而不是连续的视频数据包流的形式请求和接收视频数据。

       尽管上述各种视频流技术仍在使用中,但视频流行业目前已将DASH作为互联网视频传输的主要组成部分。文章在第三节详细介绍了当前的DASH架构和生态系统。

DSAH

       这一节介绍DASH及其应用程序的体系结构概述、使用HTTP的好处以及驱动速率自适应算法的一般原则。

结构概述

dash

       在DASH系统中,视频被不同的比特率编码成多个版本,然后将每个视频编码分为许多含有几秒钟视频的小视频段或块。随后将来自不同比特率的视频块在时间线上对其,以便客户端切换比特率。

       DASH并不直接控制视频传输速率,而是依赖于底层的TCP算法。当流会话启动时,客户端先请求MPD文件,再请求视频块,以尽可能快的速度用视频块填充满播放缓冲区。一旦缓冲区被填满,就会进入一个稳定的状态。在稳定状态下,播放器在下载块时处于打开状态,否则处于关闭状态。客户端通常在缓冲区中保留一些块,以保持足够的播放。

       客户机在启动期间快速提升其视频比特率请求,以预填充其播放缓冲区。当客户机检测到带宽容量减少时(通过利用以前块的反馈信号),它通过请求较低的视频比特率来“回退”。当网络容量再次增加时,它将恢复其视频质量。因此,客户端能够无限制地流式传输视频接缝,而不必过度配置网络或保留超大的播放缓冲区。

实时流媒体

       点播流媒体和直播流媒体的主要区别在于内容生成时间。在点播流中,服务器上的所有内容都是在流到客户端之前预先生成的,而在直播流中,媒体内容是动态生成的。

移动端流媒体

       移动/蜂窝流媒体移动视频流量占移动总流量的比例越来越大,2015年占移动总流量的一半以上,预计2020年将达到75%。 由于有限的蜂窝覆盖、导致高延迟的路径特性的不可预测性以及移动设备的异质性(例如,不同的CPU功率、屏幕分辨率),使用快速移动/蜂窝网络到移动设备(如智能手机、平板电脑、膝上型电脑)的流媒体带来了额外的挑战。与固定网络相比,移动网络中带宽的高度可变和资源的有限意味着TCP的行为可能不同,进而影响ABR的选择过程。与有线网络相比,移动网络通常具有更高的延迟、更大的拥塞和更高的丢包率,从而导致更多的TCP重传,从而降低了视频数据包到达的及时性。参考文献概述了移动内容交付体系结构,并讨论了各种方法,包括传统的RTSP/RTP、渐进式HTTP下载、有节奏的HTTP下载、用于向移动设备交付点播和实时视频内容的基于HTTP的自适应流。

标准化

       MPEG-DASH已被3GPP标准化(2009年1月首次作为工作项开放,2010年3月最终确定),并于2012年成为自适应流媒体的ISO/IEC(国际电工委员会)标准。        该标准定义了媒体表示、分段和清单文件(MPD)的标准XML格式集合的准则。然而,特定的客户端实现和速率适配技术不是标准的一部分。因此,使用DASH的商业流服务实现了自己的专有技术,用于媒体表示和客户端适配。

http的优势

       通过在TCP之上使用HTTP,DASH相较于其他方案有以下优势:

1)客户端使用标准HTTP协议,该协议提供了更普遍的覆盖范围,因为HTTP流量可以穿越NAT和防火墙。

2)DASH服务器是常规的商品Web服务器,可显著降低运营成本,并允许部署缓存以提高性能和降低网络负载。

3)客户端独立请求每个视频块,并维护回放会话状态,因此服务器不需要跟踪会话状态。在客户端维护会话状态意味着客户端可以从多个服务器检索视频块,并在商品HTTP服务器之间进行负载平衡和容错。

4)依赖于TCP可靠性和流间友好性,提高了流式传输流量与其他流量共享时仅消耗相当一部分网络带宽的可能性。

其他

       此外,这一章还讨论了QoE指标ABR的一般原则和目标。但是这两项在很多地方可以了解到,在此不做赘述说明。

客户端自适应速率

       客户端ABR算法可以根据其使用的反馈信号大致分为三类:基于吞吐量的、基于缓冲区的和基于混合/控制理论的。

吞吐量

1)基于TCP-Like-AIMD

       Liu等人提出了一种使用平滑的HTTP/TCP吞吐量度量和TFRC/TCP-Like-AIMD(表示的保守逐步向上切换和主动向下切换)速率自适应的方法。

       这种方法不需要传输层信息,如丢包率和RTT。该方法能够使用平滑的吞吐量测量来探测空闲网络容量和检测拥塞。它将区块传输(获取)时间与区块中包含的媒体播放时间进行比较。其基本原理是,多秒钟的数据块足以消除TCP吞吐量的短期变化。采用逐级切换法(加法递增法)选择更高的表示法来探测备用网络容量。在检测到网络拥塞时,采用了一种积极的关闭(乘法减少)方法来防止断流。该算法还考虑了空闲时间的计算,以防止客户端缓冲区溢出,从而节省网络带宽和内存资源。

2)Festival

       使用Adobe的开放源代码媒体框架(OSMF)实现,实现开销低,不需要修改网络或服务器。并且对于共享瓶颈的玩家数量、带宽变化的增加以及可用的比特率集都具有很强的鲁棒性。

3)CS2P

       通过使用数据驱动的吞吐量预测算法来改进视频客户端的比特率选择和自适应。

缓冲区

1)基于缓冲区的速率选择

2)基于阈值的缓冲区

       Miller等人提出了一种算法,使用三个阈值级别作为播放缓冲区.目标间隔Btarget介于Blow和Bhigh之间,最佳间隔Boptimum是目标间隔的中心。

3)基于缓冲区占用的Lyapunov算法

       Spiteri等人将ABR描述为效用最大化问题,并设计了一种在线控制算法,使用Lyapunov优化技术最小化回馈和干扰

4) ABMA+(自适应和缓冲区管理算法)

       根据预先设定的视频冻结概率(从缓冲区占用情况推断)选择视频表示速率。它连续估计段下载时间特性,并使用预先计算的播放缓冲区映射来选择最大的视频表示,以保证内容播放的平滑。使用预先计算的缓冲区映射可以最大限度地降低计算成本,并简化在不同终端上的部署。

混合控制理论

       基于控制理论的ABR启发式算法将吞吐量估计和缓冲区占用作为网络条件的指标,并反复(重新)求解控制理论/随机最优控制方程,以选择满足用户QoE偏好的表示率。

1)平滑速率自适应

       控制播放缓冲区占用,使其保持在一个参考水平,并使用当前缓冲区水平和参考水平之间的差异来驱动控制回路。然后,可以导出预测视频速率的方程,作为缓冲区大小差和估计TCP吞吐量的函数,而估计TCP吞吐量又结合实际TCP吞吐量来确定缓冲区占用水平,从而关闭控制环路。

2)PANDA

       通过设置目标平均数据速率来探测网络,然后该数据速率随后用于确定下一个视频块比特率和随后的请求间隔。其AIMD探测机制类似于TCP拥塞控制。

3)SQUAD

       基于频谱的DASH质量自适应(SQUAD)技术,该技术同时使用了吞吐量和缓冲区反馈来开发基于频谱的质量自适应技术,以确保高QoE。

4) SABRE

       从应用层动态地调整DASH客户机中的TCP接收窗口(rwnd),以便从服务器到客户机的突发大小有效地减少到家庭路由器的平均队列大小。其关键技术有:HTTP流水线、视频块下载速率控制和双退避或重填充操作模式。

5)模型预测控制

       一种基于模型预测控制(MPC)的算法,可以将吞吐量和缓冲区占用反馈信号进行最优组合,并将速率选择问题描述为随机最优控制问题。

6)ELASTIC(反馈线性化自适应流控制器)

       它使用的反馈控制理论不会产生开关流量模式,与使用两个控制器(一个用于调节视频比特率,另一个用于调节缓冲区级别)的传统方法不同,ELASTIC仅使用一个计算视频比特率级别的控制器来将播放缓冲区驱动到固定的设置点。

后续部分请见 论文笔记1-下

1

My first blog

Markdown记录

小标题

小小标题

正文直接输入

空行换行


斜体文本

斜体文本

粗体文本

粗体文本

粗斜体文本

粗斜体文本


代码段用```框住,如下

1
printf("Hello world")

段落中的代码段hellow word用``
括住表示


Markdown image, 不行

Picgo,行:

7e322009aa0a1edf482ce25c59d04c38102851866f54332347efef529445b7ca

5月25日

今天也是慵懒的单推人帅酱呢

  • Copyrights © 2015-2023 Tritonchen
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

微信