IMAGE CODING FOR MACHINES: AN END-TO-END LEARNED APPROACH 2021

1.1 摘要

在本文中,我们提出了一种基于神经网络(NN)的、基于端到端学习的机器的图像编解码器。特别地,我们提出了一套训练策略,以解决平衡竞争损失函数的微妙问题,如计算机视觉任务损失、图像失真损失和速率损失。我们的实验结果表明,我们的基于nn的编解码器在目标检测和实例分割任务上优于最先进的通用视频编码(VVC)标准,分别实现了-37.87%和-32.90%的bd率增益。

以下游任务为主导的编解码系统

1.2 模型

我们提出了一种针对任务性能(ICM)系统的图像编码,而不是像素域保真度。我们的编解码器包括一个神经自动编码器,一个学习的概率模型和一个熵编解码器。所提议的管道如下图所示。

基于神经网络的编码器将未压缩的图像\(x\)转换为一个新的数据表示\(y=E(x;\theta_{E})\),然后将其量化为\(\hat{y}=Q(y)\),然后由熵编码器利用概率模型估计的概率分布对熵编码器进行无损压缩。输出比特流在解码器端被解压缩,并由NN解码器解码回像素域,称为\(\hat{x}=D(\hat{y};\theta_D)\)。任务NN以\(\hat{x}\)作为输入,并返回相应的任务结果。

1.2.1 Auto-encoder

与普通的自动编码器不同,我们提出的自动编码器的目的不是重建输入图像。相反,它的目标是解码一个数据张量,可以提供一个良好的任务性能,而编码器的输出可以被熵编解码器有效地压缩。这两个目标分别被称为任务损失\(L_{task}\)、和速率损失\(L_{rate}\)。下游任务使用经过预先训练的模型,因此它们接受图像格式的输入数据,即三个通道。因此,解码器的输出需要是与图像形状相同的张量。对于编码器和解码器的结构,使用了带有残余连接的卷积神经网络(CNN)结构,如图2所示。

1.2.2 Probability model

非对称数字系统(ANS)[11]编解码器首先根据每个符号的概率将一个符号流编码为单个自然数,然后将该数字转换为一个二进制位流。给定量化的潜在张量\(\hat{y}\)及其估计的分布\(p_{\hat{y}}(\hat{y})\),我们有兴趣用最小编码长度对\(\hat{y}\)的符号进行编码。如果边缘分布\(m_{\hat{y}}\)\(p_{\hat{y}}\)相同,则得到了下界。由于\(m_{\hat{y}}\)来源于未知的输入图像分布\(p_x\)和变换方法\(Q(E(,\theta_{E}))\),因此码长r只能通过香农交叉熵来估计:

\[r=E_{\hat{y}-m_{\hat{y}} }[-log_2p_{\hat{y}}(\hat{y})] \\ =E_{\hat{x}-p_{x}}[-log_2p_{\hat{y}}(Q(E(x;\theta_E)))] \tag 1 \]

概率模型的目的是学习分布\(p_{\hat{y}}\),以最小化r。对于这个模块,我们使用[9]中提出的“Mean&Scale Hyperprior”结构,该结构通过高斯混合模型建模潜在的分布,并学习这些分布的参数。利用这些参数以封闭的方式动态得到分布\(p_{\hat{y}}\)。为了解压缩编码的\(\hat{y}\),一个携带估计概率信息的附加码流\(\hat{z}\)被发送到接收器侧。因此,速率损失项\(L_{rate}\)由两个位流的总长度给出:

\[L_{rate}=\underbrace{E_{\hat{y}-m_{\hat{y}}}[-log_2p_{\hat{y}}(\hat{y})]}_{latebts\ rate}+\underbrace{E_{\hat{z}-m_{\hat{z}}}[-log_2p_{\hat{z}}(\hat{z})]}_{hyper-latents\ rate}\tag 2 \]

将概率模型与自动编码器以端到端训练的方式进行联合优化。在训练过程中,量化步骤被附加的均匀噪声所取代,使基于梯度的优化成为可能.

1.2.3 Training strategy

我们分别训练和评估了两种计算机视觉任务的两种不同的压缩模型:目标检测,使用Faster R-CNN[13],和实例分割,使用Mask R-CNN[14]。在每种情况下,我们冻结相应的预训练任务网络,并将\(L_{task}\)定义为各自的训练任务损失。因此,\(L_{task}\)的梯度只计算关于编解码器的参数。

考虑到解码后的图像是被机器运用,就没有必要拥有在视觉上吸引人类的高保真输出图像。相反,我们通过在模型训练中施加任务损失和任务最小化来优先考虑良好的任务性能。我们的ICM系统将RDO方法进行了扩展,将任务损失\(L_{task}\)添加到“失真”D中。一般的训练损失函数由:

\[L_{total}=w_{rate}L_{rate}+w_{mse}L_{mse}+w_{task}L_{task} \tag 3 \]

其中,wrate、wmse、wtask分别为每个损失项Lrate、Lmse、Ltask的标量权值

Loss weighting strategy:

我们没有使用固定的损失权重,而是提出了一个动态损失权重策略来进行有效的多任务训练,因为:

  1. 损失项的竞争性质使它们各自的梯度恶化了其他‘的性能。在每次更新中,在目标之间保持正确的平衡是至关重要的,由于其缺乏灵活性,这对于固定损失权重来说是非常具有挑战性的。

  2. 对最优权重的详尽搜索是非常耗时的

1.3 结果

Loss weighting

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZdjNdby-1648623225848)(C:\Users\Liujiawang\AppData\Roaming\Typora\typora-user-images\image-20220330002246155.png)]

可以看到,针对机器的编码在下游任务上的效果甚至比原高分辨率的效果都要好。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IezVMJZz-1648623225849)(C:\Users\Liujiawang\AppData\Roaming\Typora\typora-user-images\image-20220330002426026.png)]

posted @ 2022-03-30 14:58  为红颜  阅读(99)  评论(0编辑  收藏  举报