文/徐媛媛 朱艳丽
虚拟桌面、无线显示器、云游戏和大规模在线课程等兴起的新应用对终端设备之间的屏幕共享提出了越来越高的要求。与传统相机拍摄的视频相比,屏幕内容视频具有大量计算机生成的图形和文本,有着颜色种类有限、无传感器噪声、存在重复出现的图案等特性。这些特性促进了高效视频编码(HEVC)标准[1]中的屏幕内容编码(SCC)的扩展标准的制定[2,3]。与之前的H.264 等视频编码标准相比,HEVC 的计算复杂度已大幅增加。由于在HEVC-SCC 中使用了新的编码工具,例如块内复制(IBC)和调色板(PLT)模式,这使得屏幕内容的帧内编码比起HEVC 显得更加复杂。这对于计算能力有限的设备进行屏幕内容编码提出了巨大的挑战。
为了解决屏幕内容帧内编码的复杂性问题,有人提出了一种基于哈希值的块匹配方法,从具有相同哈希值的多个图像块中选择当前块的预测块。此方法具有低时延,且进一步增强了屏幕内容编码的压缩性能。还有人提出了一个根据熵和编码比特快速决定编码树单位的划分方法,大大节约了编码时间。然而,上述屏幕内容编码方法并未考综合考虑编码效率和编码复杂度。为此,本文提出了利用Q-learning强化学习方法,对低复杂度的屏幕内容编码算法进行设计。本文设计了强化学习的回报函数、动作、特征设计,使用Q-learning 对测试数据进行离线编码策略学习,然后在设备的屏幕内容编码中使用该决策来减少需要搜索的编码模式。
本文提出的基于强化学习的屏幕内容编码框架如图1所示。在此框架中,终端设备将编码偏好即率失真性能和计算复杂度之间的权衡系数μ 传递给强化学习模块。对于给定的μ,使用屏幕内容视频训练集通过强化学习离线学习编码策略。终端设备可以将学习到的编码策略用作编码的静态部分,以加快其帧内编码模式决策过程。根据终端设备的编码偏好,可使用不同的权衡系数。计算资源较少的终端设备传递较大的μ 值,而较小的μ 值与充足的计算资源相关联。对于相同类型的终端设备,编码策略只需要学习一次、便可将学习到的编码策略用于其他设备上。
表1:编码策略学习算法
表2:与HM-16.18 SCM 8.7 的编码性能比较
在强化学习模块中,学习代理反复与学习环境互动(使用屏幕内容视频训练集进行编码)。帧内编码过程可以看作是一系列编码决策情节,可以重复评估所选的帧内编码模式。在时间点t,学习代理基于环境状态信息(样本特征)st从可用动作集合中选择一个动作a(评估选择的编码模式)以对学习环境进行动作。执行动作后,解释器会反馈有关环境的新状态的信息st+1,并反馈与执行动作相关的回报(目标优化函数的值)信息rt+1。通过这个反复学习的过程,强化学习模块能习得编码策略。
下面对强化学习模块的动作、特征、回报函数设计进行详细介绍。
HEVC-SCC 的编码模式大致分为三类:HEVC 编码模式,IBC 模式和PLT 模式,相应地可定义三个动作,分别对应于评估HEVC帧内模式、IBC 模式和PLT 模式。
特征设计主要依据动作所对应的编码单元统计信息。在屏幕内容编码中,对颜色数量有限的CB 和边界清晰的编码单元通常使用PLT 模式进行编码。对色调不连续的屏幕内容区域通常使用IBC 或调色板模式进行编码。均匀区域通常使用帧内编码模式。因此,本文使用了如下特征:像素方差、颜色数量、具有相同值的最大像素数量,水平像素值的最大游程长度和垂直像素值的最大游程长度。
在本方案中,强化学习的回报函数设计综合地考虑了编码效率和编码复杂度,设计如下:
Q-learning 是强化学习中基础的算法,它是一种无模型学习并且能收敛到最优Q 函数。在上述特征、动作和回报函数的设计后,本文提出了一种基于Q-learning 的编码策略学习算法。该算法(算法1)如表1所示,可以学习到编码模式分类的网络参数。在编码策略学习后,即得到分类器的网络参数θ 后,将其发送到终端设备上。在终端设备上,网络参数θ 以编码器的静态部分这种方式实现。在终端设备上的帧内编码过程中,每个CU 仅评估对应最大回报的编码模式。
笔者将本文提出的编码方案基于HEVCSCC 参考软件HM-16.18 SCM 8.7 进行了实现。在编码中,使用全帧内(AI)配置文件,编码偏好的权重设置为0.5。通过对六个不同分辨率、不同特点的视频序列进行屏幕内容编码,获得了Q-learning 所需要的训练数据。在训练数据上使用算法1 学习了编码策略。
为了验证本文方案有效性,选取了另外五个不同的屏幕内容序列作为测试序列,然后将本文提出的编码方案与HM-16.18 SCM 8.7 的参考测试软件中实现的编码方案进行了比较。由于大小为64×64 的编码单元编码模式选择较少,笔者只对大小为32×32,16×16 的编码块应用了习得的编码策略。表2中列出了不同视频序列的比较结果。编码方案率失真性能的下降用 Bjøntegaard 增量速率(BD-rate)来衡量,其中负值表示节省比特率,正值表示增加比特率。编码复杂度通过节省编码时间的百分比来衡量。从表2中可以看出,本文的编码算法在BD-rate 平均上升3.54%的情况下,平均上节约了10.52%的编码时间。换句话说,在编码效率损失较小的情况下,有效得节约了编码时间。
图1:基于强化学习的屏幕内容编码框架
为了能在计算资源受限的设备上进行需要搜索较多编码模式的屏幕内容视频编码,本文提出了一种基于Q-learning 的屏幕内容编码算法。该算法将帧内编码模式的选择作为一个决策问题,利用Q-learning 强化学习对测试数据进行离线训练,获得的模型参数作为决策的依据,然后在编码器中使用该决策来减少需要搜索的屏幕内容帧内编码模式数目。实验结果验证了本文方案的有效性。