Neural Adaptive Content-aware Internet Video Delivery(读论文)
这篇论文是由 KAIST 的团队提出的,充分利用客户端的计算能力,在客户端将低分辨率的视频转化为高分辨率的视频提高服务质量。
问题背景
视频流量预计将在未来五年内翻两番,但是视频传输质量受到网络带宽资源的极大影响,而视频传输质量也会影响到用户体验质量(QoE)。现有内容分发网络(CDN)的局限性在于其质量在很大程度上取决于服务器和客户端之间的带宽。当带宽资源变得稀缺时,用户QoE直接受到影响。ABR 一直被用于解决带宽资源不均匀的问题,但它对网络资源的唯一依赖是一个根本的限制。
动机
-
客户端算力没有得到充分利用:
-
现有的视频编码只能利用帧间或 GOP 内的信息冗余,没有充分利用大时间尺度下的冗余。
目标
实现一个将低分辨率作为输入,在客户端上通过 DNN 模型得到高分辨率视频的系统 NAS,使得在低质量的传输下,能获得高质量的视频和用户体验。
挑战
- CDN 服务器必须为它们提供的内容提供DNN模型,但是,很难保证DNN预测的测试性能。
- 客户端设备是异构的。它们的计算能力变化很大,甚至可能由于多路复用而表现出时间变化。但是视频质量的提升必须支持实时。
- 基于DNN的视频质量优化对ABR算法会造成级联影响。
解决方案
针对挑战,做的三个解决方案:
- 为了保证 DNN 提供可靠的质量增强,使用内容感知的方法,针对每个视频集训练一个 DNN 模型。
- 实现可选、可扩展 DNN 模型:提供多个 DNN 模型供用户自行选择,这些 DNN 模型的计算时间不一样。用户不需要下载所有的 DNN 就能自行选择最适合自己的 DNN。而且因为有些 DNN 模型很大,需要花费较长的时间进行传输,因此,NAS 设计了一个增量式的 DNN 传输,先传输一部分的 DNN 模型,且这种部分模型是可以直接使用的。
- 考虑到 DNN 模型的传输会与视频资源的传输进行带宽资源的竞争,使用强化学习来进行决策。
系统设计
内容感知 DNN
要求:
- 满足多种分辨率作为输入;
- 视频质量提升满足实时播放的要求;
- 为了满足实时,要牺牲一些计算时间,平衡视频质量提升与时间开销。
传统的 MDSR 能实现多种分辨率作为输入,并且通过共享中间层来减少空间。
由于高分辨率的计算开销大,低分辨率的计算开销小,为了满足某些实时的要求,可能需要减少高分辨率的计算,如果减少中间层,会导致低分辨率的视频质量显著下降,因此针对不同分辨率,设置独立的 DNN:
优化:
为每个视频集训练单独的 DNN 时间开销和计算开销都很大,可以首先使用流行的标准基准来训练通用 DNN 模型,然后针对每个视频集单独训练,这减少了5-6倍的训练计算成本,同时实现了与随机初始化类似的质量增强。
根据算力选择 DNN
服务端:
提供四种不同质量的 DNN:Low,Medium,High,Ultra-high
客户端:
- 下载 manifest list,获取四种 DNN 模型的信息(layors , channels)
- 根据四种模型的信息,随机初始化权值来构建四种 DNN(不需要进行计算,所以随机初始化权值,只需要测试时间)
- 找到能满足实时要求且质量最高的 DNN 模型。
可扩展 DNN
服务端:
- 高需求的 DNN 较大,不可能全部下载下载后再去使用,可让客户端边下边播,已下载的 DNN 部分也可用于视频的质量提升,随着 DNN 的下载越来越完全,视频的质量提升的也越来越高。
- DNN 的中间层是许多残差块,一个残差块包含两个卷积层,DNN 运算可以绕过连续的残差块进行计算。
- 训练的时候,50% 的几率运算完整的 DNN,50% 的概率随机绕过残差块,然后反向传播更新参数。
- 将 DNN 分成一个个块,第一块是基本块,接受多种分辨率作为输入。
客户端:
- 下载第一个 DNN 块,构造 DNN。
- 能从部分下载的 DNN 块中得到质量提升, DNN 下载越完全,得到的质量提升越大。
- 固定时间间隔计算 DNN 的计算时间,得到满足实时要求的 DNN 最大层数。
集成 ABR
决策:
-
先取 DNN 还是先取视频?
先下 DNN,这会带来未来的质量提升,同时牺牲当前视频的流媒体质量。
第二种策略优化当前视频的比特率,并延迟DNN的下载。
-
如果先取视频,比特率大小选择。
使用强化学习(RL)框架通过全面的“经验”来直接优化目标(没有使用间接决策)。特别采用 A3C 的演员评论框架,从观察中学习策略(或策略),并从原始观察中产生映射,例如下载的 DNN 模型、由 DNN 引起的质量改进、网络吞吐量样本以及回放缓冲,到上述决策。
RL 设计
对于每个迭代 t,观察在状态 s t s_{t} st 做出的反应 a t a_{t} at,以及得到的回报 r t r_{t} rt,同时更新到状态 s t + 1 s_{t + 1} st+1。
将策略定义为对于状态 s t s_{t} st 做出的动作 a t a_{t} at 的概率 π ( s t , a t ) : → [ 0 , 1 ] π(s_{t}, a_{t}) :→[0, 1] π(st,at):→[0,1],目标是通过学习策略使得总回报 ∑ t = 0 ∞ γ t r t \sum^{∞}_{t = 0}γ^{t}r_{t} ∑t=0∞γtrt 最大。
其中
a
t
a_{t}
at 是指下载 DNN 块还是下载特定比特率的视频块,
s
t
s_{t}
st 有如下几种情况:
γ
γ
γ 是回报率,
r
t
r_{t}
rt 是用来衡量用户体验质量 QoE 的(是比特率效用、回退时间和所选比特率的平滑度的函数),定义如下:
其中
R
n
R_{n}
Rn 和
T
n
T_{n}
Tn 是第 n 块视频块的比特率和由其下载导致的回退时间,
μ
μ
μ 表示回退惩罚,
q
(
R
n
)
q(R_{n})
q(Rn) 是接受的比特率
R
n
R_{n}
Rn 的质量。
为了显示 NAS 的基于 DNN 的质量提升,使用有效比特率
R
e
f
f
e
c
t
i
v
e
R_{effective}
Reffective 代替比特率
R
n
R_{n}
Rn,对于每一个视频块
C
n
C_{n}
Cn 有:
其中,
D
N
N
m
(
C
n
)
DNN_{m}(C_{n})
DNNm(Cn) 是视频块
C
n
C_{n}
Cn 在下载
D
N
N
m
DNN_{m}
DNNm 之后提升的质量,
S
S
I
M
SSIM
SSIM 用于检测视频质量的平均结构相似度,
S
S
I
M
−
1
SSIM^{-1}
SSIM−1 将
S
S
I
M
SSIM
SSIM 值映射到视频比特率。因此可以创建映射:在每个比特率下测原始视频的
S
S
I
M
SSIM
SSIM 值,然后使用分段线性插值。
强化学习框架使用两个神经近似器,一个是 actor 用于策略,一个是 critic 用于评估策略,并使用策略梯度方法。
优化:
使用一个使用类似于 Pensieve 的块级模拟器来加速 ABR 的训练,它跟踪网络吞吐量,模拟 NAS 的视频流动态。此外,对每个DNN 质量的所有视频进行平均,从而预先计算基于 DNN 的质量增强。然后使用这些值来生成一个通用的ABR模型。
当下载 DNN 时,模拟器更新下载的 DNN 块数量。当下载视频块时,它将块添加到回放缓冲区。然后,它使用每个块的(有效)比特率效用和拒绝时间,计算要求基于 DNN 的质量增强的 QoE。注意,模拟器既不执行实际的视频下载,也不进行任何推断。因此,与实时仿真相比,它减少了97.12%的训练时间。
方法论
这部分做了很多实验,论文写得很详细,就不赘述了。
最后根据论文中的客户端运行示例,描述一下过程:
服务端:
视频上传时,服务端训练内容感知 DNN。
客户端:
- 下载一个 manifest list,上面是 DNN 的信息;
- DNN processor 根据 manifest file 的信息开始模拟四种 DNN 的开销,选择能满足实时要求质量最高的一种 DNN 模型,同时 player 已经下载了 1-7 个视频块;
- 根据 ABR 算法选择开始下载视频块和 DNN 块,这里是下载了第一个 DNN 块,同时 player 已经播放了 1-5 的视频块了;
- 第一个 DNN 块开始优化 6-7 视频块,并实时播放,同时 player继续根据 ABR 算法下载视频块和 DNN 块;
- 在 32 sec 的时候,已经使用了两个 DNN 块进行视频质量提升了;
… - 在 60 sec 的时候,已经使用了完整的 DNN 模型进行优化。
最后一点点个人想法吧,感觉这篇论文很清晰很详细,但是这个系统就个人感觉,商用实现有点点难,作为用户,我只想看个视频,却要在我的机器上下一堆东西进行转换,而且客户端虽然有很大的计算能力,但是并不是所有用户都愿意给它全部拿出来跑视频,这只是一项娱乐活动而已,况且我可不想才看了一小时视频,我的电脑就热到不行。
下一篇可能读一下 Supremo: Cloud-Assisted Low-Latency Super-Resolution in Mobile Devices 这篇论文吧。加油油