摘要
快速增长的智能应用需要优化图像/视频编码中的位分配,以支持特定的任务驱动场景,如检测、分类、分割等。一些基于学习的框架已经被提出来用于他的目的,或者用于其他内部优化机制。由于其固有的端到端优化机制,一些基于学习的框架已经被提出用于此目的。然而,将这些任务驱动的度量标准完美无缝集成到传统的混合编码框架中仍然是相当具有挑战性的。目前这篇文章是第一篇尝试使用基于强化学习方法来解决这一问题的论文。特别地,我们将比特分配问题表示为一个MDP,并且训练RL代理实现根据任务驱动的语义失真度量在HEVC帧内编码中自动为每个编码树(CTU)选择QP。这种比特分配方案可以最大化任务的语义级保真度,例如分类精度,同时最小化比特率。同时采用Grad-CAM和Mask R-CNN工具无提取任务相关的重要图去帮助agent代理做出决策。大量实验结果显示,我们的方法在相同的任务相关的失真情况下,相较于HEVC的anchor节约了43.1%-73.2%的比特率。
1、引言
如何定义失真比较难,一般失真的定义根据人类对图像/视频信号的不同认知水平分为三个级别:像素保真,感知保真和语义保真(Pixel Fidelity,Perceptual Fidelity, andSemantic Fidelity)。
Pixel Fidelity,MSE和PSNR这样的像素保真度的度量已经被广泛应用在很多编码技术和标准(HEVC)里面了,而且很容易作为率失真优化的环内度量整合到图像/视频的混合编码框架中。但是像素保真度很明显不能完全反映人类的感知观看体验。因此,很多研究人员开发了Perceptual Fidelity度量来作为研究测量人类主观观看体验的客观度量,例如显著性引导的PSNR。基于这个新的度量,很多优化比特分配的方法提供了更好的感知体验。在这些方法中,实现这一目标的常见方法是在感兴趣区域(ROI)中分配相对更多的比特,以确保这些区域中可接受的质量。随着上述智能应用的发展,图像/视频信号将不仅被人眼捕获和处理,而且被用于语义分析。因此,对(Semantic Fidelity)语义保真度度量的研究将有更多的要求,来研究原始图像/视频和合成图像之间的语义差异(例如,特定智能任务的精度差异)。
网络框架:将为序列中每个CTU选取QP看做一个马尔科夫决策过程。然后引入RL来确定每个编码树单元(CTU)的QP,为包括分类、检测和分类在内的不同视觉任务提供更好的比特分配方案。
2、TASK-DRIVEN BIT ALLOCATION FRAMEWORK
2.1、Importance Map Generation
虽然仅基于帧本身就可以训练RL代理直接输出比特分配方案,但是这样agent难以训练,并且缺乏通用性和可扩展性。因此,我们使用现有的方法来生成重要性图,这可以帮助和简化代理做出决策,如下图所示。首先,我们实现了Grad-CAM,它使用梯度反向传播流入CNN模型的最终卷积层,以产生一个定位图,突出用于预测概念的重要区域。我们采用的具体CNN模型是VGG-16,因此我们可以获得用于分类任务的帧的重要性图。然后,我们使用Mask R-CNN得到原始帧的检测和分割结果。这可以帮助agent区分前景和背景,并进一步获得实例的密度分布。这些重要性图可用于检测和分割任务。基于这些预处理信息,RL代理能够精确地做出QP决策。
2.2、Reinforcement Learning for Bit Allocation
在得到帧的重要性图后,一个优化任务导向失真度量的简单方法就是给高权重区域分配更高的比特率,但是不仅很难获得最优结果,而且会引入限制。
RL结构:
问题规划:DQN训练一个从环境中观察状态的agent,然后执行一系列的action(QP决策)来优化目标。一般来说,目标可以用期望累积量最大化来描述。在比特分配方面,具体的目标是,给定一个帧包含i个CTU,为每个CTU生成一个QP,这样我们就可以在最小的任务驱动失真下实现最大的比特率降低。MDP的所有要素详述如下。
state:agent需要观察CTU,然后选出QP。CTU信息按照从左到右和从上到下的编码顺序发送给agent。在本文中,当前CTU的亮度和重要性图是state的一部分。我们还在状态中包含一个15-d特征向量来反映全局信息。特征向量的宽度保持不变。
action:HEVC的原始QP从1到51不等。QP越低意味着比特率越高,比特率越高意味着失真越小。然而,我们不需要所有的QP。当比特率足够高时,几乎没有语义失真,这意味着更多的比特率是无用的,尽管它仍然可以提高像素级性能,例如PSNR。在我们的实验中,我们观察到在QP达到22之后,与原始的未压缩图像相比,语义失真变得可以忽略不计。因此,本文将动作空间设置为QP 22到51。
Reward:累积奖励是RL agent 的优化目标。像HEVC编码中的率失真成本一样,设计的奖励也有类似的格式:
其中表示在当前的CTU每像素位数的减少(BPP),从QP = 22到所决定的QP。
表示结果的语义差异,例如检测任务的检测数量差异,λ则受拉格朗日参数用来平衡BBP的减少和语义丢失的风险。
Agent:agent是Q-network,用于最佳QP预测。将状态作为输入,,Q-network将输出每个动作a的衰减累计奖励,写作Q(
, a),可以得到最优的动作
,即:
在Q-network的结构中,有两个输入分支:当前CTU部分和全局特征向量。CTU的信息通过四层卷积层提取出特征,然后在一起提升维度后和全局特征结合起来。这些结合后的特征有助于更好的理解内容。然后,全部的特征将会经过三个全连接层,包括两个隐藏层和一个输出层。所有的卷积层个隐藏的全连接层都使用LeakyReLU激活单元,除了最后的输出层。
实验结果:
结论:
在这篇文章中,我们基于强化学习提出了一个自动优化的任务驱动比特分配方案,用于HEVC帧内编码。我们将连续CTU的QP决策表述为马尔可夫决策过程,然后训练RL agent将视觉任务驱动的失真度量集成到HEVC中。得益于Grad-CAM 和Mask R-CNN工具,我们在比特分配之前获得原始帧的任务相关重要性图。这些重要性图对RL的agent很有帮助。此外,我们还在BAdataset上建立了一个离线培训效率。与最初的HEVC相比,我们的方案可以有大约43%到73%的比特失真。在未来的工作中,我们将考虑扩展我们的计划来进行进一步的优化。此外,我们还建立了一个数据库,通过这个数据库,离线训练变得非常有效。与最初的HEVC相比,我们的方案可以节约大约43%到73%的比特在相同的任务驱动失真下。在未来的工作中,我们将考虑扩展我们的计划来进行进一步的优化。在未来的工作中,我们将考虑将我们的方案扩展到帧间编码模式进行进一步优化。