来源
:CVPR 2019

题目
:Practical Full Resolution Learned Lossless Image Compression

作者
:Fabian Mentzer、Eirikur Agustsson 等

链接
:https://arxiv.org/abs/1811.12817

内容整理
:杨晓璇

本文提出了第一个实用的学习无损图像压缩系统 L3C,并表明它优于流行的工程编解码器 PNG、WebP 和 JPEG2000。
目录
  • 引言
  • 方法
    • 无损压缩
    • 架构
    • 量化
    • 混合模型
    • 损失函数
  • 实验
    • 模型
    • 数据集
    • 训练
    • 消融实验
  • 结果
    • 压缩
    • 编解码时间
  • 结论

引言

本文的模型(模型概览见图 1)是基于一个完全平行学习的特征提取器和预测器的层次结构,这些特征提取器和预测器是为压缩任务共同训练的。特征提取器的作用是建立一个辅助性的分层特征表示,帮助预测器对图像和辅助特征本身进行建模。
为了对图像 x 进行编码,我们将其送入 S 个特征提取器 E(s) 和预测器  D(s)。在实际模型中 S=3,E(s) 和 D(s) 均为卷积网络。我们在一次前向扫描中并行获得 x 和辅助特征 z(s) 的概率分布 p 的预测值。然后预测值被应用于自适应算术编码器,以获得 x 和附加特征的压缩比特流。然而,算术解码器现在需要 p 才能解码比特流。从辅助特征 z(S) 的最低规模开始,假设其具有一致的先验,D(S) 获得下一规模 z(S−1) 的辅助特征的分布预测,从而可以从比特流中解码它们。预测和解码交替进行,直到算术解码器获得图像 x。
图1 L3C 模型概览
本文的贡献如下:
  • 提出了一个完全并行的分层概率模型,学习生成辅助特征表示以帮助预测任务的特征提取器,以及对所有变量的联合分布建模的预测器。
  • 基于针对离散对数似然优化的非自回归概率模型的熵编码可以获得优于 WebP、JPEG2000 和 PNG 的压缩率。我们仅略微优于最先进的 FLIF,同时在概念上要简单得多。
  • 同时,本文模型在运行时复杂度方面是实用的,比基于 PixelCNN 的方法快几个数量级。

方法

无损压缩

通常,在无损压缩中,一些独立同分布的符号流 是给定的,来自概率质量函数为 的集合 。无损压缩的目标是将符号流编码为最小长度的比特流,接收器可以解码比特流。理想情况下,编码器最小化每个符号的预期比特 ,其中 是编码符号 的长度。信息论证明了 的边界 ,其中 。
本文对自然图像的像素进行无损编码,这些像素已知是高度相关的,不是独立同分布的。令 为图像 的子像素, 为所有子像素的联合分布。考虑因式分解 。对 进行编码,可以将子像素 视为符号流并使用 对第 t 个符号进行编码。
确切的 通常是未知的,而是由模型估计的。因此,不使用长度为 的码流来编码符号 ,而是使用次优长度 。使用交叉熵来表示每个符号的比特数:
以下部分描述了如何使用自然图像的 分层因果分解来有效地进行学习无损图像压缩 (L3C)。

架构

图2 单个 s 的模型细节
图 1 给出了模型的概述,图 2 则表示一个分层 s 的详细架构。与 PixelCNN 和 PixelRNN 等自回归模型将子像素 上的图像分布分解为 不同,本文联合建模所有子像素并引入辅助特征表示的学习层次结构 z(1),…, z(S) 以简化建模任务。我们将 z(s) 的维度固定为 ,其中通道数 C 是一个超参数(在本文的模型中 C = 5),给定一个 的图像,。将图像 和特征表示 的联合分布建模为
其中 是均匀分布。特征表示可以是手工设计或学习的。对于学习特征,考虑使用特征提取器 。使用图 1 所示的模型,,其中 是特征提取器块,Q 是一个标量可微量化函数。图1中的 是预测器块,我们将 和 参数化为卷积神经网络。
令 ,将所有 的条件分布参数化为
使用预测器特征 ,注意 总结了 的信息。
预测器是基于 EDSR 的超分辨率架构,镜像预测器获得了特征提取器。没有使用 BatchNorm。在 的末端插入空洞卷积层:使用了三个平行的扩张率分别为 1,2,4 的空洞卷积,将生成的特征图串联到 3 维的特征图上。

量化

本文使用一种标量量化方法来量化 的输出。给定等级 ,使用最近邻分配来量化 :
使用可微的软量化:

混合模型

对条件分布 使用 Pixel-CNN++ 中提出的具有 K 个分量的离散 logistic 混合模型的泛化进行建模。
令 表示通道, 表示空间位置。对所有特征提取层,假设 在 之间是独立的。给定 ,对于 RGB 层(s=0),定义:
我们在 RGB 通道上使用弱自回归通过混合 定义联合概率分布(简短表示删除索引 uv):
将 定义为 logistic 分布 的混合。从 中得到混合权重 ,均值 ,方差 和系数
使用对先前 的条件依赖来获得更新的 。
对于 的特征层,不使用自回归,对前通道没有条件依赖,公式简化为:
对于所有层,logistics 函数 为:
b 是量化网格的宽度(对于 s = 0,b = 1,否则 b = 1/12)。
对所有层,我们通过 个输出通道的 1x1 卷积从 获得 的参数。对于 RGB 层,特征图包含 3 个 RGB 通道和 K 个混合通道中的三个参数 ,以及每个混合通道的 ,因此需要 个通道。对于 的特征层,需要 个通道,不需要 。有了这些参数,可以获得 ,对于 RGB 层,尺寸为 ;对于特征层,尺寸为 。

损失函数

损失函数的定义是 Pixel-CNN++ 中离散 logistic 混合损失的泛化。针对样本上的特征提取块 和预测器块 直接最小化交叉熵 。具体来说,给定 N 个 训练样本 ,令 为第 i 个样本的特征表示,损失函数为:

实验

模型

将 L3C 模型与两个学习的 baseline 进行比较:RGB shared(图 3)和 RGB(图 4)。对于 RGB shared 模型采用了双三次插值下采样作为特征提取器,即 ,并且只训练一个预测器 。RGB baseline 也是用双三次插值下采样,但是使用 个预测器。主要模型 L3C,使用 个学习的特征提取器 。训练 700k 个 iterations 直到收敛。
图3 RGB shared baseline 架构
图4 RGB baseline 架构

数据集

从 Open Images 训练数据集中随机选择的 362,551 张图像上训练模型,并对图片做了一些前处理。验证集包括 500 张从 Open Images 中随机选取的图片,来自常用超分辨率数据集 DIV2K 的 100 张图像,以及 RAISE-1k,一个包含 1000 张图像的“真实世界图像数据集”。如果图像像素过大超过 GPU 内存,则会自动将图像分割切块。

训练

论文作者使用 RMSProp 优化器,batchsize 为 30。训练 128 × 128 随机切片,并应用随机水平翻转。我们从学习率 开始,每 5 个 epochs 将其衰减 0.75 倍。在 ImageNet32/64 上,由于图像较小,我们每个时期都会衰减 。

消融实验

添加 BatchNorm 会稍微降低性能。此外,用单个卷积替换堆叠的空洞卷积 也会稍微降低性能。
发现为 Q 选择 对训练有影响:让 稍微平滑一点是有益的(这会为编码器产生更好的梯度)。论文模型使用 。
此外,作者探索了变化的 C (z(s) 的通道数)和 L 的影响,发现增加 L 更有益,即更精细的量化网格有利于训练。

结果

压缩

表 1 显示了 L3C 和 baseline 与其他编解码器的比较。在测试集上,以每子像素的比特数(bpsp)来评估。L3C 大幅优于广泛使用的 PNG,以较小的幅度超过了 WebP 和 JPEG2000 的性能。FLIF 仍然略微优于 L3C。在所有的数据集上,具有 S=3 个学习的预测器的 RGB baseline 优于 RGB Shared baseline,显示了为每个特征层学习一个预测器的重要性。L3C 的表现超过了两个 baseline,显示了学习表示法的好处。
表1 L3C、Baseline 和非学习方法的压缩性能,单位为 bpsp。

编解码时间

为了用 L3C 对图像进行编解码,需要通过熵编码器。在附录 A.2 节中进行了描述。结果见 表 2。在 A.2 节中提到没有对代码进行速度优化,但仍然获得了实用的运行时间。需要注意的是,要使用其他基于似然的方法进行无损压缩,需要类似的步骤。虽然 L3C 的编码时间与经典方法相近,但解码器却比其他方法慢。这可以归因于更多的优化代码和将复杂从编码器卸载 —— 而在论文的方法中,解码基本上反映了编码。然而,结合编码和解码时间,论文模型要么更快(FLIF),要么有更好的比特率(PNG、WebP、JPEG2000)。
表2 与经典方法相比,在DIV2K的512×512作物上的编码和解码时间

结论

本文提出并评估了一个带有辅助特征表示的完全并行的分层概率模型。L3C模型在所有数据集上的表现都优 于PNG、JPEG2000 和 WebP。此外,它明显优于依赖于预定义启发式特征表示的 RGB Shared 和RGB baseline,这表明学习表示是至关重要的。
为了进一步改善 L3C,未来的工作可以研究跨像素的弱自回归形式和/或模型网络对当前图像的动态适应。此外,探索特定领域的应用将是有趣的,例如,医疗图像压缩。
继续阅读
阅读原文